1<?php 2 3/** 4 * webtrees: online genealogy 5 * Copyright (C) 2019 webtrees development team 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * You should have received a copy of the GNU General Public License 15 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 */ 17declare(strict_types=1); 18 19namespace Fisharebest\Webtrees\Statistics\Service; 20 21use Fisharebest\Webtrees\I18N; 22 23/** 24 * Functions for managing country codes and names. 25 */ 26class CountryService 27{ 28 /** 29 * Country codes and names 30 * 31 * @return string[] 32 */ 33 public function getAllCountries(): array 34 { 35 return [ 36 /* I18N: Name of a country or state */ 37 '???' => I18N::translate('Unknown'), 38 /* I18N: Name of a country or state */ 39 'ABW' => I18N::translate('Aruba'), 40 /* I18N: Name of a country or state */ 41 'AFG' => I18N::translate('Afghanistan'), 42 /* I18N: Name of a country or state */ 43 'AGO' => I18N::translate('Angola'), 44 /* I18N: Name of a country or state */ 45 'AIA' => I18N::translate('Anguilla'), 46 /* I18N: Name of a country or state */ 47 'ALA' => I18N::translate('Aland Islands'), 48 /* I18N: Name of a country or state */ 49 'ALB' => I18N::translate('Albania'), 50 /* I18N: Name of a country or state */ 51 'AND' => I18N::translate('Andorra'), 52 /* I18N: Name of a country or state */ 53 'ARE' => I18N::translate('United Arab Emirates'), 54 /* I18N: Name of a country or state */ 55 'ARG' => I18N::translate('Argentina'), 56 /* I18N: Name of a country or state */ 57 'ARM' => I18N::translate('Armenia'), 58 /* I18N: Name of a country or state */ 59 'ASM' => I18N::translate('American Samoa'), 60 /* I18N: Name of a country or state */ 61 'ATA' => I18N::translate('Antarctica'), 62 /* I18N: Name of a country or state */ 63 'ATF' => I18N::translate('French Southern Territories'), 64 /* I18N: Name of a country or state */ 65 'ATG' => I18N::translate('Antigua and Barbuda'), 66 /* I18N: Name of a country or state */ 67 'AUS' => I18N::translate('Australia'), 68 /* I18N: Name of a country or state */ 69 'AUT' => I18N::translate('Austria'), 70 /* I18N: Name of a country or state */ 71 'AZE' => I18N::translate('Azerbaijan'), 72 /* I18N: Name of a country or state */ 73 'AZR' => I18N::translate('Azores'), 74 /* I18N: Name of a country or state */ 75 'BDI' => I18N::translate('Burundi'), 76 /* I18N: Name of a country or state */ 77 'BEL' => I18N::translate('Belgium'), 78 /* I18N: Name of a country or state */ 79 'BEN' => I18N::translate('Benin'), 80 // BES => Bonaire, Sint Eustatius and Saba 81 /* I18N: Name of a country or state */ 82 'BFA' => I18N::translate('Burkina Faso'), 83 /* I18N: Name of a country or state */ 84 'BGD' => I18N::translate('Bangladesh'), 85 /* I18N: Name of a country or state */ 86 'BGR' => I18N::translate('Bulgaria'), 87 /* I18N: Name of a country or state */ 88 'BHR' => I18N::translate('Bahrain'), 89 /* I18N: Name of a country or state */ 90 'BHS' => I18N::translate('Bahamas'), 91 /* I18N: Name of a country or state */ 92 'BIH' => I18N::translate('Bosnia and Herzegovina'), 93 // BLM => Saint Barthélemy 94 /* I18N: Name of a country or state */ 95 'BLR' => I18N::translate('Belarus'), 96 /* I18N: Name of a country or state */ 97 'BLZ' => I18N::translate('Belize'), 98 /* I18N: Name of a country or state */ 99 'BMU' => I18N::translate('Bermuda'), 100 /* I18N: Name of a country or state */ 101 'BOL' => I18N::translate('Bolivia'), 102 /* I18N: Name of a country or state */ 103 'BRA' => I18N::translate('Brazil'), 104 /* I18N: Name of a country or state */ 105 'BRB' => I18N::translate('Barbados'), 106 /* I18N: Name of a country or state */ 107 'BRN' => I18N::translate('Brunei Darussalam'), 108 /* I18N: Name of a country or state */ 109 'BTN' => I18N::translate('Bhutan'), 110 /* I18N: Name of a country or state */ 111 'BVT' => I18N::translate('Bouvet Island'), 112 /* I18N: Name of a country or state */ 113 'BWA' => I18N::translate('Botswana'), 114 /* I18N: Name of a country or state */ 115 'CAF' => I18N::translate('Central African Republic'), 116 /* I18N: Name of a country or state */ 117 'CAN' => I18N::translate('Canada'), 118 /* I18N: Name of a country or state */ 119 'CCK' => I18N::translate('Cocos (Keeling) Islands'), 120 /* I18N: Name of a country or state */ 121 'CHE' => I18N::translate('Switzerland'), 122 /* I18N: Name of a country or state */ 123 'CHL' => I18N::translate('Chile'), 124 /* I18N: Name of a country or state */ 125 'CHN' => I18N::translate('China'), 126 /* I18N: Name of a country or state */ 127 'CIV' => I18N::translate('Cote d’Ivoire'), 128 /* I18N: Name of a country or state */ 129 'CMR' => I18N::translate('Cameroon'), 130 /* I18N: Name of a country or state */ 131 'COD' => I18N::translate('Democratic Republic of the Congo'), 132 /* I18N: Name of a country or state */ 133 'COG' => I18N::translate('Republic of the Congo'), 134 /* I18N: Name of a country or state */ 135 'COK' => I18N::translate('Cook Islands'), 136 /* I18N: Name of a country or state */ 137 'COL' => I18N::translate('Colombia'), 138 /* I18N: Name of a country or state */ 139 'COM' => I18N::translate('Comoros'), 140 /* I18N: Name of a country or state */ 141 'CPV' => I18N::translate('Cape Verde'), 142 /* I18N: Name of a country or state */ 143 'CRI' => I18N::translate('Costa Rica'), 144 /* I18N: Name of a country or state */ 145 'CUB' => I18N::translate('Cuba'), 146 // CUW => Curaçao 147 /* I18N: Name of a country or state */ 148 'CXR' => I18N::translate('Christmas Island'), 149 /* I18N: Name of a country or state */ 150 'CYM' => I18N::translate('Cayman Islands'), 151 /* I18N: Name of a country or state */ 152 'CYP' => I18N::translate('Cyprus'), 153 /* I18N: Name of a country or state */ 154 'CZE' => I18N::translate('Czech Republic'), 155 /* I18N: Name of a country or state */ 156 'DEU' => I18N::translate('Germany'), 157 /* I18N: Name of a country or state */ 158 'DJI' => I18N::translate('Djibouti'), 159 /* I18N: Name of a country or state */ 160 'DMA' => I18N::translate('Dominica'), 161 /* I18N: Name of a country or state */ 162 'DNK' => I18N::translate('Denmark'), 163 /* I18N: Name of a country or state */ 164 'DOM' => I18N::translate('Dominican Republic'), 165 /* I18N: Name of a country or state */ 166 'DZA' => I18N::translate('Algeria'), 167 /* I18N: Name of a country or state */ 168 'ECU' => I18N::translate('Ecuador'), 169 /* I18N: Name of a country or state */ 170 'EGY' => I18N::translate('Egypt'), 171 /* I18N: Name of a country or state */ 172 'ENG' => I18N::translate('England'), 173 /* I18N: Name of a country or state */ 174 'ERI' => I18N::translate('Eritrea'), 175 /* I18N: Name of a country or state */ 176 'ESH' => I18N::translate('Western Sahara'), 177 /* I18N: Name of a country or state */ 178 'ESP' => I18N::translate('Spain'), 179 /* I18N: Name of a country or state */ 180 'EST' => I18N::translate('Estonia'), 181 /* I18N: Name of a country or state */ 182 'ETH' => I18N::translate('Ethiopia'), 183 /* I18N: Name of a country or state */ 184 'FIN' => I18N::translate('Finland'), 185 /* I18N: Name of a country or state */ 186 'FJI' => I18N::translate('Fiji'), 187 /* I18N: Name of a country or state */ 188 'FLD' => I18N::translate('Flanders'), 189 /* I18N: Name of a country or state */ 190 'FLK' => I18N::translate('Falkland Islands'), 191 /* I18N: Name of a country or state */ 192 'FRA' => I18N::translate('France'), 193 /* I18N: Name of a country or state */ 194 'FRO' => I18N::translate('Faroe Islands'), 195 /* I18N: Name of a country or state */ 196 'FSM' => I18N::translate('Micronesia'), 197 /* I18N: Name of a country or state */ 198 'GAB' => I18N::translate('Gabon'), 199 /* I18N: Name of a country or state */ 200 'GBR' => I18N::translate('United Kingdom'), 201 /* I18N: Name of a country or state */ 202 'GEO' => I18N::translate('Georgia'), 203 /* I18N: Name of a country or state */ 204 'GGY' => I18N::translate('Guernsey'), 205 /* I18N: Name of a country or state */ 206 'GHA' => I18N::translate('Ghana'), 207 /* I18N: Name of a country or state */ 208 'GIB' => I18N::translate('Gibraltar'), 209 /* I18N: Name of a country or state */ 210 'GIN' => I18N::translate('Guinea'), 211 /* I18N: Name of a country or state */ 212 'GLP' => I18N::translate('Guadeloupe'), 213 /* I18N: Name of a country or state */ 214 'GMB' => I18N::translate('Gambia'), 215 /* I18N: Name of a country or state */ 216 'GNB' => I18N::translate('Guinea-Bissau'), 217 /* I18N: Name of a country or state */ 218 'GNQ' => I18N::translate('Equatorial Guinea'), 219 /* I18N: Name of a country or state */ 220 'GRC' => I18N::translate('Greece'), 221 /* I18N: Name of a country or state */ 222 'GRD' => I18N::translate('Grenada'), 223 /* I18N: Name of a country or state */ 224 'GRL' => I18N::translate('Greenland'), 225 /* I18N: Name of a country or state */ 226 'GTM' => I18N::translate('Guatemala'), 227 /* I18N: Name of a country or state */ 228 'GUF' => I18N::translate('French Guiana'), 229 /* I18N: Name of a country or state */ 230 'GUM' => I18N::translate('Guam'), 231 /* I18N: Name of a country or state */ 232 'GUY' => I18N::translate('Guyana'), 233 /* I18N: Name of a country or state */ 234 'HKG' => I18N::translate('Hong Kong'), 235 /* I18N: Name of a country or state */ 236 'HMD' => I18N::translate('Heard Island and McDonald Islands'), 237 /* I18N: Name of a country or state */ 238 'HND' => I18N::translate('Honduras'), 239 /* I18N: Name of a country or state */ 240 'HRV' => I18N::translate('Croatia'), 241 /* I18N: Name of a country or state */ 242 'HTI' => I18N::translate('Haiti'), 243 /* I18N: Name of a country or state */ 244 'HUN' => I18N::translate('Hungary'), 245 /* I18N: Name of a country or state */ 246 'IDN' => I18N::translate('Indonesia'), 247 /* I18N: Name of a country or state */ 248 'IND' => I18N::translate('India'), 249 /* I18N: Name of a country or state */ 250 'IOM' => I18N::translate('Isle of Man'), 251 /* I18N: Name of a country or state */ 252 'IOT' => I18N::translate('British Indian Ocean Territory'), 253 /* I18N: Name of a country or state */ 254 'IRL' => I18N::translate('Ireland'), 255 /* I18N: Name of a country or state */ 256 'IRN' => I18N::translate('Iran'), 257 /* I18N: Name of a country or state */ 258 'IRQ' => I18N::translate('Iraq'), 259 /* I18N: Name of a country or state */ 260 'ISL' => I18N::translate('Iceland'), 261 /* I18N: Name of a country or state */ 262 'ISR' => I18N::translate('Israel'), 263 /* I18N: Name of a country or state */ 264 'ITA' => I18N::translate('Italy'), 265 /* I18N: Name of a country or state */ 266 'JAM' => I18N::translate('Jamaica'), 267 //'JEY' => Jersey 268 /* I18N: Name of a country or state */ 269 'JOR' => I18N::translate('Jordan'), 270 /* I18N: Name of a country or state */ 271 'JPN' => I18N::translate('Japan'), 272 /* I18N: Name of a country or state */ 273 'KAZ' => I18N::translate('Kazakhstan'), 274 /* I18N: Name of a country or state */ 275 'KEN' => I18N::translate('Kenya'), 276 /* I18N: Name of a country or state */ 277 'KGZ' => I18N::translate('Kyrgyzstan'), 278 /* I18N: Name of a country or state */ 279 'KHM' => I18N::translate('Cambodia'), 280 /* I18N: Name of a country or state */ 281 'KIR' => I18N::translate('Kiribati'), 282 /* I18N: Name of a country or state */ 283 'KNA' => I18N::translate('Saint Kitts and Nevis'), 284 /* I18N: Name of a country or state */ 285 'KOR' => I18N::translate('Korea'), 286 /* I18N: Name of a country or state */ 287 'KWT' => I18N::translate('Kuwait'), 288 /* I18N: Name of a country or state */ 289 'LAO' => I18N::translate('Laos'), 290 /* I18N: Name of a country or state */ 291 'LBN' => I18N::translate('Lebanon'), 292 /* I18N: Name of a country or state */ 293 'LBR' => I18N::translate('Liberia'), 294 /* I18N: Name of a country or state */ 295 'LBY' => I18N::translate('Libya'), 296 /* I18N: Name of a country or state */ 297 'LCA' => I18N::translate('Saint Lucia'), 298 /* I18N: Name of a country or state */ 299 'LIE' => I18N::translate('Liechtenstein'), 300 /* I18N: Name of a country or state */ 301 'LKA' => I18N::translate('Sri Lanka'), 302 /* I18N: Name of a country or state */ 303 'LSO' => I18N::translate('Lesotho'), 304 /* I18N: Name of a country or state */ 305 'LTU' => I18N::translate('Lithuania'), 306 /* I18N: Name of a country or state */ 307 'LUX' => I18N::translate('Luxembourg'), 308 /* I18N: Name of a country or state */ 309 'LVA' => I18N::translate('Latvia'), 310 /* I18N: Name of a country or state */ 311 'MAC' => I18N::translate('Macau'), 312 // MAF => Saint Martin 313 /* I18N: Name of a country or state */ 314 'MAR' => I18N::translate('Morocco'), 315 /* I18N: Name of a country or state */ 316 'MCO' => I18N::translate('Monaco'), 317 /* I18N: Name of a country or state */ 318 'MDA' => I18N::translate('Moldova'), 319 /* I18N: Name of a country or state */ 320 'MDG' => I18N::translate('Madagascar'), 321 /* I18N: Name of a country or state */ 322 'MDV' => I18N::translate('Maldives'), 323 /* I18N: Name of a country or state */ 324 'MEX' => I18N::translate('Mexico'), 325 /* I18N: Name of a country or state */ 326 'MHL' => I18N::translate('Marshall Islands'), 327 /* I18N: Name of a country or state */ 328 'MKD' => I18N::translate('Macedonia'), 329 /* I18N: Name of a country or state */ 330 'MLI' => I18N::translate('Mali'), 331 /* I18N: Name of a country or state */ 332 'MLT' => I18N::translate('Malta'), 333 /* I18N: Name of a country or state */ 334 'MMR' => I18N::translate('Myanmar'), 335 /* I18N: Name of a country or state */ 336 'MNG' => I18N::translate('Mongolia'), 337 /* I18N: Name of a country or state */ 338 'MNP' => I18N::translate('Northern Mariana Islands'), 339 /* I18N: Name of a country or state */ 340 'MNT' => I18N::translate('Montenegro'), 341 /* I18N: Name of a country or state */ 342 'MOZ' => I18N::translate('Mozambique'), 343 /* I18N: Name of a country or state */ 344 'MRT' => I18N::translate('Mauritania'), 345 /* I18N: Name of a country or state */ 346 'MSR' => I18N::translate('Montserrat'), 347 /* I18N: Name of a country or state */ 348 'MTQ' => I18N::translate('Martinique'), 349 /* I18N: Name of a country or state */ 350 'MUS' => I18N::translate('Mauritius'), 351 /* I18N: Name of a country or state */ 352 'MWI' => I18N::translate('Malawi'), 353 /* I18N: Name of a country or state */ 354 'MYS' => I18N::translate('Malaysia'), 355 /* I18N: Name of a country or state */ 356 'MYT' => I18N::translate('Mayotte'), 357 /* I18N: Name of a country or state */ 358 'NAM' => I18N::translate('Namibia'), 359 /* I18N: Name of a country or state */ 360 'NCL' => I18N::translate('New Caledonia'), 361 /* I18N: Name of a country or state */ 362 'NER' => I18N::translate('Niger'), 363 /* I18N: Name of a country or state */ 364 'NFK' => I18N::translate('Norfolk Island'), 365 /* I18N: Name of a country or state */ 366 'NGA' => I18N::translate('Nigeria'), 367 /* I18N: Name of a country or state */ 368 'NIC' => I18N::translate('Nicaragua'), 369 /* I18N: Name of a country or state */ 370 'NIR' => I18N::translate('Northern Ireland'), 371 /* I18N: Name of a country or state */ 372 'NIU' => I18N::translate('Niue'), 373 /* I18N: Name of a country or state */ 374 'NLD' => I18N::translate('Netherlands'), 375 /* I18N: Name of a country or state */ 376 'NOR' => I18N::translate('Norway'), 377 /* I18N: Name of a country or state */ 378 'NPL' => I18N::translate('Nepal'), 379 /* I18N: Name of a country or state */ 380 'NRU' => I18N::translate('Nauru'), 381 /* I18N: Name of a country or state */ 382 'NZL' => I18N::translate('New Zealand'), 383 /* I18N: Name of a country or state */ 384 'OMN' => I18N::translate('Oman'), 385 /* I18N: Name of a country or state */ 386 'PAK' => I18N::translate('Pakistan'), 387 /* I18N: Name of a country or state */ 388 'PAN' => I18N::translate('Panama'), 389 /* I18N: Name of a country or state */ 390 'PCN' => I18N::translate('Pitcairn'), 391 /* I18N: Name of a country or state */ 392 'PER' => I18N::translate('Peru'), 393 /* I18N: Name of a country or state */ 394 'PHL' => I18N::translate('Philippines'), 395 /* I18N: Name of a country or state */ 396 'PLW' => I18N::translate('Palau'), 397 /* I18N: Name of a country or state */ 398 'PNG' => I18N::translate('Papua New Guinea'), 399 /* I18N: Name of a country or state */ 400 'POL' => I18N::translate('Poland'), 401 /* I18N: Name of a country or state */ 402 'PRI' => I18N::translate('Puerto Rico'), 403 /* I18N: Name of a country or state */ 404 'PRK' => I18N::translate('North Korea'), 405 /* I18N: Name of a country or state */ 406 'PRT' => I18N::translate('Portugal'), 407 /* I18N: Name of a country or state */ 408 'PRY' => I18N::translate('Paraguay'), 409 /* I18N: Name of a country or state */ 410 'PSE' => I18N::translate('Occupied Palestinian Territory'), 411 /* I18N: Name of a country or state */ 412 'PYF' => I18N::translate('French Polynesia'), 413 /* I18N: Name of a country or state */ 414 'QAT' => I18N::translate('Qatar'), 415 /* I18N: Name of a country or state */ 416 'REU' => I18N::translate('Reunion'), 417 /* I18N: Name of a country or state */ 418 'ROM' => I18N::translate('Romania'), 419 /* I18N: Name of a country or state */ 420 'RUS' => I18N::translate('Russia'), 421 /* I18N: Name of a country or state */ 422 'RWA' => I18N::translate('Rwanda'), 423 /* I18N: Name of a country or state */ 424 'SAU' => I18N::translate('Saudi Arabia'), 425 /* I18N: Name of a country or state */ 426 'SCT' => I18N::translate('Scotland'), 427 /* I18N: Name of a country or state */ 428 'SDN' => I18N::translate('Sudan'), 429 /* I18N: Name of a country or state */ 430 'SEA' => I18N::translate('At sea'), 431 /* I18N: Name of a country or state */ 432 'SEN' => I18N::translate('Senegal'), 433 /* I18N: Name of a country or state */ 434 'SER' => I18N::translate('Serbia'), 435 /* I18N: Name of a country or state */ 436 'SGP' => I18N::translate('Singapore'), 437 /* I18N: Name of a country or state */ 438 'SGS' => I18N::translate('South Georgia and the South Sandwich Islands'), 439 /* I18N: Name of a country or state */ 440 'SHN' => I18N::translate('Saint Helena'), 441 /* I18N: Name of a country or state */ 442 'SJM' => I18N::translate('Svalbard and Jan Mayen'), 443 /* I18N: Name of a country or state */ 444 'SLB' => I18N::translate('Solomon Islands'), 445 /* I18N: Name of a country or state */ 446 'SLE' => I18N::translate('Sierra Leone'), 447 /* I18N: Name of a country or state */ 448 'SLV' => I18N::translate('El Salvador'), 449 /* I18N: Name of a country or state */ 450 'SMR' => I18N::translate('San Marino'), 451 /* I18N: Name of a country or state */ 452 'SOM' => I18N::translate('Somalia'), 453 /* I18N: Name of a country or state */ 454 'SPM' => I18N::translate('Saint Pierre and Miquelon'), 455 /* I18N: Name of a country or state */ 456 'SSD' => I18N::translate('South Sudan'), 457 /* I18N: Name of a country or state */ 458 'STP' => I18N::translate('Sao Tome and Principe'), 459 /* I18N: Name of a country or state */ 460 'SUR' => I18N::translate('Suriname'), 461 /* I18N: Name of a country or state */ 462 'SVK' => I18N::translate('Slovakia'), 463 /* I18N: Name of a country or state */ 464 'SVN' => I18N::translate('Slovenia'), 465 /* I18N: Name of a country or state */ 466 'SWE' => I18N::translate('Sweden'), 467 /* I18N: Name of a country or state */ 468 'SWZ' => I18N::translate('Swaziland'), 469 // SXM => Sint Maarten 470 /* I18N: Name of a country or state */ 471 'SYC' => I18N::translate('Seychelles'), 472 /* I18N: Name of a country or state */ 473 'SYR' => I18N::translate('Syria'), 474 /* I18N: Name of a country or state */ 475 'TCA' => I18N::translate('Turks and Caicos Islands'), 476 /* I18N: Name of a country or state */ 477 'TCD' => I18N::translate('Chad'), 478 /* I18N: Name of a country or state */ 479 'TGO' => I18N::translate('Togo'), 480 /* I18N: Name of a country or state */ 481 'THA' => I18N::translate('Thailand'), 482 /* I18N: Name of a country or state */ 483 'TJK' => I18N::translate('Tajikistan'), 484 /* I18N: Name of a country or state */ 485 'TKL' => I18N::translate('Tokelau'), 486 /* I18N: Name of a country or state */ 487 'TKM' => I18N::translate('Turkmenistan'), 488 /* I18N: Name of a country or state */ 489 'TLS' => I18N::translate('Timor-Leste'), 490 /* I18N: Name of a country or state */ 491 'TON' => I18N::translate('Tonga'), 492 /* I18N: Name of a country or state */ 493 'TTO' => I18N::translate('Trinidad and Tobago'), 494 /* I18N: Name of a country or state */ 495 'TUN' => I18N::translate('Tunisia'), 496 /* I18N: Name of a country or state */ 497 'TUR' => I18N::translate('Turkey'), 498 /* I18N: Name of a country or state */ 499 'TUV' => I18N::translate('Tuvalu'), 500 /* I18N: Name of a country or state */ 501 'TWN' => I18N::translate('Taiwan'), 502 /* I18N: Name of a country or state */ 503 'TZA' => I18N::translate('Tanzania'), 504 /* I18N: Name of a country or state */ 505 'UGA' => I18N::translate('Uganda'), 506 /* I18N: Name of a country or state */ 507 'UKR' => I18N::translate('Ukraine'), 508 /* I18N: Name of a country or state */ 509 'UMI' => I18N::translate('US Minor Outlying Islands'), 510 /* I18N: Name of a country or state */ 511 'URY' => I18N::translate('Uruguay'), 512 /* I18N: Name of a country or state */ 513 'USA' => I18N::translate('United States'), 514 /* I18N: Name of a country or state */ 515 'UZB' => I18N::translate('Uzbekistan'), 516 /* I18N: Name of a country or state */ 517 'VAT' => I18N::translate('Vatican City'), 518 /* I18N: Name of a country or state */ 519 'VCT' => I18N::translate('Saint Vincent and the Grenadines'), 520 /* I18N: Name of a country or state */ 521 'VEN' => I18N::translate('Venezuela'), 522 /* I18N: Name of a country or state */ 523 'VGB' => I18N::translate('British Virgin Islands'), 524 /* I18N: Name of a country or state */ 525 'VIR' => I18N::translate('US Virgin Islands'), 526 /* I18N: Name of a country or state */ 527 'VNM' => I18N::translate('Vietnam'), 528 /* I18N: Name of a country or state */ 529 'VUT' => I18N::translate('Vanuatu'), 530 /* I18N: Name of a country or state */ 531 'WLF' => I18N::translate('Wallis and Futuna'), 532 /* I18N: Name of a country or state */ 533 'WLS' => I18N::translate('Wales'), 534 /* I18N: Name of a country or state */ 535 'WSM' => I18N::translate('Samoa'), 536 /* I18N: Name of a country or state */ 537 'YEM' => I18N::translate('Yemen'), 538 /* I18N: Name of a country or state */ 539 'ZAF' => I18N::translate('South Africa'), 540 /* I18N: Name of a country or state */ 541 'ZMB' => I18N::translate('Zambia'), 542 /* I18N: Name of a country or state */ 543 'ZWE' => I18N::translate('Zimbabwe'), 544 ]; 545 } 546 547 /** 548 * ISO3166 3 letter codes, with their 2 letter equivalent. 549 * NOTE: this is not 1:1. ENG/SCO/WAL/NIR => GB 550 * NOTE: this also includes champman codes and others. Should it? 551 * 552 * @return string[] 553 */ 554 public function iso3166(): array 555 { 556 return [ 557 'ABW' => 'AW', 558 'AFG' => 'AF', 559 'AGO' => 'AO', 560 'AIA' => 'AI', 561 'ALA' => 'AX', 562 'ALB' => 'AL', 563 'AND' => 'AD', 564 'ARE' => 'AE', 565 'ARG' => 'AR', 566 'ARM' => 'AM', 567 'ASM' => 'AS', 568 'ATA' => 'AQ', 569 'ATF' => 'TF', 570 'ATG' => 'AG', 571 'AUS' => 'AU', 572 'AUT' => 'AT', 573 'AZE' => 'AZ', 574 'BDI' => 'BI', 575 'BEL' => 'BE', 576 'BEN' => 'BJ', 577 'BFA' => 'BF', 578 'BGD' => 'BD', 579 'BGR' => 'BG', 580 'BHR' => 'BH', 581 'BHS' => 'BS', 582 'BIH' => 'BA', 583 'BLR' => 'BY', 584 'BLZ' => 'BZ', 585 'BMU' => 'BM', 586 'BOL' => 'BO', 587 'BRA' => 'BR', 588 'BRB' => 'BB', 589 'BRN' => 'BN', 590 'BTN' => 'BT', 591 'BVT' => 'BV', 592 'BWA' => 'BW', 593 'CAF' => 'CF', 594 'CAN' => 'CA', 595 'CCK' => 'CC', 596 'CHE' => 'CH', 597 'CHL' => 'CL', 598 'CHN' => 'CN', 599 'CIV' => 'CI', 600 'CMR' => 'CM', 601 'COD' => 'CD', 602 'COG' => 'CG', 603 'COK' => 'CK', 604 'COL' => 'CO', 605 'COM' => 'KM', 606 'CPV' => 'CV', 607 'CRI' => 'CR', 608 'CUB' => 'CU', 609 'CXR' => 'CX', 610 'CYM' => 'KY', 611 'CYP' => 'CY', 612 'CZE' => 'CZ', 613 'DEU' => 'DE', 614 'DJI' => 'DJ', 615 'DMA' => 'DM', 616 'DNK' => 'DK', 617 'DOM' => 'DO', 618 'DZA' => 'DZ', 619 'ECU' => 'EC', 620 'EGY' => 'EG', 621 'ENG' => 'GB', 622 'ERI' => 'ER', 623 'ESH' => 'EH', 624 'ESP' => 'ES', 625 'EST' => 'EE', 626 'ETH' => 'ET', 627 'FIN' => 'FI', 628 'FJI' => 'FJ', 629 'FLK' => 'FK', 630 'FRA' => 'FR', 631 'FRO' => 'FO', 632 'FSM' => 'FM', 633 'GAB' => 'GA', 634 'GBR' => 'GB', 635 'GEO' => 'GE', 636 'GHA' => 'GH', 637 'GIB' => 'GI', 638 'GIN' => 'GN', 639 'GLP' => 'GP', 640 'GMB' => 'GM', 641 'GNB' => 'GW', 642 'GNQ' => 'GQ', 643 'GRC' => 'GR', 644 'GRD' => 'GD', 645 'GRL' => 'GL', 646 'GTM' => 'GT', 647 'GUF' => 'GF', 648 'GUM' => 'GU', 649 'GUY' => 'GY', 650 'HKG' => 'HK', 651 'HMD' => 'HM', 652 'HND' => 'HN', 653 'HRV' => 'HR', 654 'HTI' => 'HT', 655 'HUN' => 'HU', 656 'IDN' => 'ID', 657 'IND' => 'IN', 658 'IOT' => 'IO', 659 'IRL' => 'IE', 660 'IRN' => 'IR', 661 'IRQ' => 'IQ', 662 'ISL' => 'IS', 663 'ISR' => 'IL', 664 'ITA' => 'IT', 665 'JAM' => 'JM', 666 'JOR' => 'JO', 667 'JPN' => 'JA', 668 'KAZ' => 'KZ', 669 'KEN' => 'KE', 670 'KGZ' => 'KG', 671 'KHM' => 'KH', 672 'KIR' => 'KI', 673 'KNA' => 'KN', 674 'KOR' => 'KO', 675 'KWT' => 'KW', 676 'LAO' => 'LA', 677 'LBN' => 'LB', 678 'LBR' => 'LR', 679 'LBY' => 'LY', 680 'LCA' => 'LC', 681 'LIE' => 'LI', 682 'LKA' => 'LK', 683 'LSO' => 'LS', 684 'LTU' => 'LT', 685 'LUX' => 'LU', 686 'LVA' => 'LV', 687 'MAC' => 'MO', 688 'MAR' => 'MA', 689 'MCO' => 'MC', 690 'MDA' => 'MD', 691 'MDG' => 'MG', 692 'MDV' => 'MV', 693 'MEX' => 'MX', 694 'MHL' => 'MH', 695 'MKD' => 'MK', 696 'MLI' => 'ML', 697 'MLT' => 'MT', 698 'MMR' => 'MM', 699 'MNG' => 'MN', 700 'MNP' => 'MP', 701 'MNT' => 'ME', 702 'MOZ' => 'MZ', 703 'MRT' => 'MR', 704 'MSR' => 'MS', 705 'MTQ' => 'MQ', 706 'MUS' => 'MU', 707 'MWI' => 'MW', 708 'MYS' => 'MY', 709 'MYT' => 'YT', 710 'NAM' => 'NA', 711 'NCL' => 'NC', 712 'NER' => 'NE', 713 'NFK' => 'NF', 714 'NGA' => 'NG', 715 'NIC' => 'NI', 716 'NIR' => 'GB', 717 'NIU' => 'NU', 718 'NLD' => 'NL', 719 'NOR' => 'NO', 720 'NPL' => 'NP', 721 'NRU' => 'NR', 722 'NZL' => 'NZ', 723 'OMN' => 'OM', 724 'PAK' => 'PK', 725 'PAN' => 'PA', 726 'PCN' => 'PN', 727 'PER' => 'PE', 728 'PHL' => 'PH', 729 'PLW' => 'PW', 730 'PNG' => 'PG', 731 'POL' => 'PL', 732 'PRI' => 'PR', 733 'PRK' => 'KP', 734 'PRT' => 'PO', 735 'PRY' => 'PY', 736 'PSE' => 'PS', 737 'PYF' => 'PF', 738 'QAT' => 'QA', 739 'REU' => 'RE', 740 'ROM' => 'RO', 741 'RUS' => 'RU', 742 'RWA' => 'RW', 743 'SAU' => 'SA', 744 'SCT' => 'GB', 745 'SDN' => 'SD', 746 'SEN' => 'SN', 747 'SER' => 'RS', 748 'SGP' => 'SG', 749 'SGS' => 'GS', 750 'SHN' => 'SH', 751 'SJM' => 'SJ', 752 'SLB' => 'SB', 753 'SLE' => 'SL', 754 'SLV' => 'SV', 755 'SMR' => 'SM', 756 'SOM' => 'SO', 757 'SPM' => 'PM', 758 'STP' => 'ST', 759 'SUR' => 'SR', 760 'SVK' => 'SK', 761 'SVN' => 'SI', 762 'SWE' => 'SE', 763 'SWZ' => 'SZ', 764 'SYC' => 'SC', 765 'SYR' => 'SY', 766 'TCA' => 'TC', 767 'TCD' => 'TD', 768 'TGO' => 'TG', 769 'THA' => 'TH', 770 'TJK' => 'TJ', 771 'TKL' => 'TK', 772 'TKM' => 'TM', 773 'TLS' => 'TL', 774 'TON' => 'TO', 775 'TTO' => 'TT', 776 'TUN' => 'TN', 777 'TUR' => 'TR', 778 'TUV' => 'TV', 779 'TWN' => 'TW', 780 'TZA' => 'TZ', 781 'UGA' => 'UG', 782 'UKR' => 'UA', 783 'UMI' => 'UM', 784 'URY' => 'UY', 785 'USA' => 'US', 786 'UZB' => 'UZ', 787 'VAT' => 'VA', 788 'VCT' => 'VC', 789 'VEN' => 'VE', 790 'VGB' => 'VG', 791 'VIR' => 'VI', 792 'VNM' => 'VN', 793 'VUT' => 'VU', 794 'WLF' => 'WF', 795 'WLS' => 'GB', 796 'WSM' => 'WS', 797 'YEM' => 'YE', 798 'ZAF' => 'ZA', 799 'ZMB' => 'ZM', 800 'ZWE' => 'ZW', 801 ]; 802 } 803 804 /** 805 * Returns the translated country name based on the given two letter country code. 806 * 807 * @param string $twoLetterCode The two letter country code 808 * 809 * @return string 810 */ 811 public function mapTwoLetterToName(string $twoLetterCode): string 812 { 813 $threeLetterCode = array_search($twoLetterCode, $this->iso3166(), true); 814 $threeLetterCode = $threeLetterCode ?: '???'; 815 816 return $this->getAllCountries()[$threeLetterCode]; 817 } 818} 819