Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Locale/CountryManager.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Locale/CountryManager.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,325 @@ +<?php + +namespace Drupal\Core\Locale; + +use Drupal\Core\Extension\ModuleHandlerInterface; + +/** + * Provides list of countries. + */ +class CountryManager implements CountryManagerInterface { + + /** + * The module handler service. + * + * @var \Drupal\Core\Extension\ModuleHandlerInterface + */ + protected $moduleHandler; + + /** + * An array of country code => country name pairs. + */ + protected $countries; + + /** + * Constructor. + * + * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler + */ + public function __construct(ModuleHandlerInterface $module_handler) { + $this->moduleHandler = $module_handler; + } + + /** + * Get an array of all two-letter country code => country name pairs. + * + * @return array + * An array of country code => country name pairs. + */ + public static function getStandardList() { + $countries = [ + 'AC' => t('Ascension Island'), + 'AD' => t('Andorra'), + 'AE' => t('United Arab Emirates'), + 'AF' => t('Afghanistan'), + 'AG' => t('Antigua and Barbuda'), + 'AI' => t('Anguilla'), + 'AL' => t('Albania'), + 'AM' => t('Armenia'), + 'AN' => t('Netherlands Antilles'), + 'AO' => t('Angola'), + 'AQ' => t('Antarctica'), + 'AR' => t('Argentina'), + 'AS' => t('American Samoa'), + 'AT' => t('Austria'), + 'AU' => t('Australia'), + 'AW' => t('Aruba'), + 'AX' => t('Åland Islands'), + 'AZ' => t('Azerbaijan'), + 'BA' => t('Bosnia and Herzegovina'), + 'BB' => t('Barbados'), + 'BD' => t('Bangladesh'), + 'BE' => t('Belgium'), + 'BF' => t('Burkina Faso'), + 'BG' => t('Bulgaria'), + 'BH' => t('Bahrain'), + 'BI' => t('Burundi'), + 'BJ' => t('Benin'), + 'BL' => t('Saint Barthélemy'), + 'BM' => t('Bermuda'), + 'BN' => t('Brunei'), + 'BO' => t('Bolivia'), + 'BQ' => t('Caribbean Netherlands'), + 'BR' => t('Brazil'), + 'BS' => t('Bahamas'), + 'BT' => t('Bhutan'), + 'BV' => t('Bouvet Island'), + 'BW' => t('Botswana'), + 'BY' => t('Belarus'), + 'BZ' => t('Belize'), + 'CA' => t('Canada'), + 'CC' => t('Cocos [Keeling] Islands'), + 'CD' => t('Congo - Kinshasa'), + 'CF' => t('Central African Republic'), + 'CG' => t('Congo - Brazzaville'), + 'CH' => t('Switzerland'), + 'CI' => t('Côte d’Ivoire'), + 'CK' => t('Cook Islands'), + 'CL' => t('Chile'), + 'CM' => t('Cameroon'), + 'CN' => t('China'), + 'CO' => t('Colombia'), + 'CP' => t('Clipperton Island'), + 'CR' => t('Costa Rica'), + 'CU' => t('Cuba'), + 'CV' => t('Cape Verde'), + 'CW' => t('Curaçao'), + 'CX' => t('Christmas Island'), + 'CY' => t('Cyprus'), + 'CZ' => t('Czech Republic'), + 'DE' => t('Germany'), + 'DG' => t('Diego Garcia'), + 'DJ' => t('Djibouti'), + 'DK' => t('Denmark'), + 'DM' => t('Dominica'), + 'DO' => t('Dominican Republic'), + 'DZ' => t('Algeria'), + 'EA' => t('Ceuta and Melilla'), + 'EC' => t('Ecuador'), + 'EE' => t('Estonia'), + 'EG' => t('Egypt'), + 'EH' => t('Western Sahara'), + 'ER' => t('Eritrea'), + 'ES' => t('Spain'), + 'ET' => t('Ethiopia'), + 'FI' => t('Finland'), + 'FJ' => t('Fiji'), + 'FK' => t('Falkland Islands'), + 'FM' => t('Micronesia'), + 'FO' => t('Faroe Islands'), + 'FR' => t('France'), + 'GA' => t('Gabon'), + 'GB' => t('United Kingdom'), + 'GD' => t('Grenada'), + 'GE' => t('Georgia'), + 'GF' => t('French Guiana'), + 'GG' => t('Guernsey'), + 'GH' => t('Ghana'), + 'GI' => t('Gibraltar'), + 'GL' => t('Greenland'), + 'GM' => t('Gambia'), + 'GN' => t('Guinea'), + 'GP' => t('Guadeloupe'), + 'GQ' => t('Equatorial Guinea'), + 'GR' => t('Greece'), + 'GS' => t('South Georgia and the South Sandwich Islands'), + 'GT' => t('Guatemala'), + 'GU' => t('Guam'), + 'GW' => t('Guinea-Bissau'), + 'GY' => t('Guyana'), + 'HK' => t('Hong Kong SAR China'), + 'HM' => t('Heard Island and McDonald Islands'), + 'HN' => t('Honduras'), + 'HR' => t('Croatia'), + 'HT' => t('Haiti'), + 'HU' => t('Hungary'), + 'IC' => t('Canary Islands'), + 'ID' => t('Indonesia'), + 'IE' => t('Ireland'), + 'IL' => t('Israel'), + 'IM' => t('Isle of Man'), + 'IN' => t('India'), + 'IO' => t('British Indian Ocean Territory'), + 'IQ' => t('Iraq'), + 'IR' => t('Iran'), + 'IS' => t('Iceland'), + 'IT' => t('Italy'), + 'JE' => t('Jersey'), + 'JM' => t('Jamaica'), + 'JO' => t('Jordan'), + 'JP' => t('Japan'), + 'KE' => t('Kenya'), + 'KG' => t('Kyrgyzstan'), + 'KH' => t('Cambodia'), + 'KI' => t('Kiribati'), + 'KM' => t('Comoros'), + 'KN' => t('Saint Kitts and Nevis'), + 'KP' => t('North Korea'), + 'KR' => t('South Korea'), + 'KW' => t('Kuwait'), + 'KY' => t('Cayman Islands'), + 'KZ' => t('Kazakhstan'), + 'LA' => t('Laos'), + 'LB' => t('Lebanon'), + 'LC' => t('Saint Lucia'), + 'LI' => t('Liechtenstein'), + 'LK' => t('Sri Lanka'), + 'LR' => t('Liberia'), + 'LS' => t('Lesotho'), + 'LT' => t('Lithuania'), + 'LU' => t('Luxembourg'), + 'LV' => t('Latvia'), + 'LY' => t('Libya'), + 'MA' => t('Morocco'), + 'MC' => t('Monaco'), + 'MD' => t('Moldova'), + 'ME' => t('Montenegro'), + 'MF' => t('Saint Martin'), + 'MG' => t('Madagascar'), + 'MH' => t('Marshall Islands'), + 'MK' => t('Macedonia'), + 'ML' => t('Mali'), + 'MM' => t('Myanmar [Burma]'), + 'MN' => t('Mongolia'), + 'MO' => t('Macau SAR China'), + 'MP' => t('Northern Mariana Islands'), + 'MQ' => t('Martinique'), + 'MR' => t('Mauritania'), + 'MS' => t('Montserrat'), + 'MT' => t('Malta'), + 'MU' => t('Mauritius'), + 'MV' => t('Maldives'), + 'MW' => t('Malawi'), + 'MX' => t('Mexico'), + 'MY' => t('Malaysia'), + 'MZ' => t('Mozambique'), + 'NA' => t('Namibia'), + 'NC' => t('New Caledonia'), + 'NE' => t('Niger'), + 'NF' => t('Norfolk Island'), + 'NG' => t('Nigeria'), + 'NI' => t('Nicaragua'), + 'NL' => t('Netherlands'), + 'NO' => t('Norway'), + 'NP' => t('Nepal'), + 'NR' => t('Nauru'), + 'NU' => t('Niue'), + 'NZ' => t('New Zealand'), + 'OM' => t('Oman'), + 'PA' => t('Panama'), + 'PE' => t('Peru'), + 'PF' => t('French Polynesia'), + 'PG' => t('Papua New Guinea'), + 'PH' => t('Philippines'), + 'PK' => t('Pakistan'), + 'PL' => t('Poland'), + 'PM' => t('Saint Pierre and Miquelon'), + 'PN' => t('Pitcairn Islands'), + 'PR' => t('Puerto Rico'), + 'PS' => t('Palestinian Territories'), + 'PT' => t('Portugal'), + 'PW' => t('Palau'), + 'PY' => t('Paraguay'), + 'QA' => t('Qatar'), + 'QO' => t('Outlying Oceania'), + 'RE' => t('Réunion'), + 'RO' => t('Romania'), + 'RS' => t('Serbia'), + 'RU' => t('Russia'), + 'RW' => t('Rwanda'), + 'SA' => t('Saudi Arabia'), + 'SB' => t('Solomon Islands'), + 'SC' => t('Seychelles'), + 'SD' => t('Sudan'), + 'SE' => t('Sweden'), + 'SG' => t('Singapore'), + 'SH' => t('Saint Helena'), + 'SI' => t('Slovenia'), + 'SJ' => t('Svalbard and Jan Mayen'), + 'SK' => t('Slovakia'), + 'SL' => t('Sierra Leone'), + 'SM' => t('San Marino'), + 'SN' => t('Senegal'), + 'SO' => t('Somalia'), + 'SR' => t('Suriname'), + 'SS' => t('South Sudan'), + 'ST' => t('São Tomé and Príncipe'), + 'SV' => t('El Salvador'), + 'SX' => t('Sint Maarten'), + 'SY' => t('Syria'), + 'SZ' => t('Swaziland'), + 'TA' => t('Tristan da Cunha'), + 'TC' => t('Turks and Caicos Islands'), + 'TD' => t('Chad'), + 'TF' => t('French Southern Territories'), + 'TG' => t('Togo'), + 'TH' => t('Thailand'), + 'TJ' => t('Tajikistan'), + 'TK' => t('Tokelau'), + 'TL' => t('Timor-Leste'), + 'TM' => t('Turkmenistan'), + 'TN' => t('Tunisia'), + 'TO' => t('Tonga'), + 'TR' => t('Turkey'), + 'TT' => t('Trinidad and Tobago'), + 'TV' => t('Tuvalu'), + 'TW' => t('Taiwan'), + 'TZ' => t('Tanzania'), + 'UA' => t('Ukraine'), + 'UG' => t('Uganda'), + 'UM' => t('U.S. Outlying Islands'), + 'US' => t('United States'), + 'UY' => t('Uruguay'), + 'UZ' => t('Uzbekistan'), + 'VA' => t('Vatican City'), + 'VC' => t('Saint Vincent and the Grenadines'), + 'VE' => t('Venezuela'), + 'VG' => t('British Virgin Islands'), + 'VI' => t('U.S. Virgin Islands'), + 'VN' => t('Vietnam'), + 'VU' => t('Vanuatu'), + 'WF' => t('Wallis and Futuna'), + 'WS' => t('Samoa'), + 'XK' => t('Kosovo'), + 'YE' => t('Yemen'), + 'YT' => t('Mayotte'), + 'ZA' => t('South Africa'), + 'ZM' => t('Zambia'), + 'ZW' => t('Zimbabwe'), + ]; + + // Sort the list. + natcasesort($countries); + + return $countries; + } + + /** + * Get an array of country code => country name pairs, altered by alter hooks. + * + * @return array + * An array of country code => country name pairs. + * + * @see \Drupal\Core\Locale\CountryManager::getStandardList() + */ + public function getList() { + // Populate the country list if it is not already populated. + if (!isset($this->countries)) { + $this->countries = static::getStandardList(); + $this->moduleHandler->alter('countries', $this->countries); + } + + return $this->countries; + } + +}