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