xref: /webtrees/app/Statistics/Service/CountryService.php (revision 7e4eb48a6e80112df6db026e9512c34370b04bf0)
193ccd686SRico Sonntag<?php
23976b470SGreg Roach
393ccd686SRico Sonntag/**
493ccd686SRico Sonntag * webtrees: online genealogy
5d11be702SGreg Roach * Copyright (C) 2023 webtrees development team
693ccd686SRico Sonntag * This program is free software: you can redistribute it and/or modify
793ccd686SRico Sonntag * it under the terms of the GNU General Public License as published by
893ccd686SRico Sonntag * the Free Software Foundation, either version 3 of the License, or
993ccd686SRico Sonntag * (at your option) any later version.
1093ccd686SRico Sonntag * This program is distributed in the hope that it will be useful,
1193ccd686SRico Sonntag * but WITHOUT ANY WARRANTY; without even the implied warranty of
1293ccd686SRico Sonntag * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1393ccd686SRico Sonntag * GNU General Public License for more details.
1493ccd686SRico Sonntag * You should have received a copy of the GNU General Public License
1589f7189bSGreg Roach * along with this program. If not, see <https://www.gnu.org/licenses/>.
1693ccd686SRico Sonntag */
17fcfa147eSGreg Roach
1893ccd686SRico Sonntagdeclare(strict_types=1);
1993ccd686SRico Sonntag
2093ccd686SRico Sonntagnamespace Fisharebest\Webtrees\Statistics\Service;
2193ccd686SRico Sonntag
2293ccd686SRico Sonntaguse Fisharebest\Webtrees\I18N;
2393ccd686SRico Sonntag
2493ccd686SRico Sonntag/**
2593ccd686SRico Sonntag * Functions for managing country codes and names.
2693ccd686SRico Sonntag */
2793ccd686SRico Sonntagclass CountryService
2893ccd686SRico Sonntag{
2993ccd686SRico Sonntag    /**
3093ccd686SRico Sonntag     * Country codes and names
3193ccd686SRico Sonntag     *
3224f2a3afSGreg Roach     * @return array<string>
3393ccd686SRico Sonntag     */
3493ccd686SRico Sonntag    public function getAllCountries(): array
3593ccd686SRico Sonntag    {
3693ccd686SRico Sonntag        return [
3793ccd686SRico Sonntag            /* I18N: Name of a country or state */
3893ccd686SRico Sonntag            '???' => I18N::translate('Unknown'),
3993ccd686SRico Sonntag            /* I18N: Name of a country or state */
4093ccd686SRico Sonntag            'ABW' => I18N::translate('Aruba'),
4193ccd686SRico Sonntag            /* I18N: Name of a country or state */
4293ccd686SRico Sonntag            'AFG' => I18N::translate('Afghanistan'),
4393ccd686SRico Sonntag            /* I18N: Name of a country or state */
4493ccd686SRico Sonntag            'AGO' => I18N::translate('Angola'),
4593ccd686SRico Sonntag            /* I18N: Name of a country or state */
4693ccd686SRico Sonntag            'AIA' => I18N::translate('Anguilla'),
4793ccd686SRico Sonntag            /* I18N: Name of a country or state */
48*7e4eb48aSGreg Roach            'ALA' => I18N::translate('Åland Islands'),
4993ccd686SRico Sonntag            /* I18N: Name of a country or state */
5093ccd686SRico Sonntag            'ALB' => I18N::translate('Albania'),
5193ccd686SRico Sonntag            /* I18N: Name of a country or state */
5293ccd686SRico Sonntag            'AND' => I18N::translate('Andorra'),
5393ccd686SRico Sonntag            /* I18N: Name of a country or state */
5493ccd686SRico Sonntag            'ARE' => I18N::translate('United Arab Emirates'),
5593ccd686SRico Sonntag            /* I18N: Name of a country or state */
5693ccd686SRico Sonntag            'ARG' => I18N::translate('Argentina'),
5793ccd686SRico Sonntag            /* I18N: Name of a country or state */
5893ccd686SRico Sonntag            'ARM' => I18N::translate('Armenia'),
5993ccd686SRico Sonntag            /* I18N: Name of a country or state */
6093ccd686SRico Sonntag            'ASM' => I18N::translate('American Samoa'),
6193ccd686SRico Sonntag            /* I18N: Name of a country or state */
6293ccd686SRico Sonntag            'ATA' => I18N::translate('Antarctica'),
6393ccd686SRico Sonntag            /* I18N: Name of a country or state */
6493ccd686SRico Sonntag            'ATF' => I18N::translate('French Southern Territories'),
6593ccd686SRico Sonntag            /* I18N: Name of a country or state */
6693ccd686SRico Sonntag            'ATG' => I18N::translate('Antigua and Barbuda'),
6793ccd686SRico Sonntag            /* I18N: Name of a country or state */
6893ccd686SRico Sonntag            'AUS' => I18N::translate('Australia'),
6993ccd686SRico Sonntag            /* I18N: Name of a country or state */
7093ccd686SRico Sonntag            'AUT' => I18N::translate('Austria'),
7193ccd686SRico Sonntag            /* I18N: Name of a country or state */
7293ccd686SRico Sonntag            'AZE' => I18N::translate('Azerbaijan'),
7393ccd686SRico Sonntag            /* I18N: Name of a country or state */
7493ccd686SRico Sonntag            'AZR' => I18N::translate('Azores'),
7593ccd686SRico Sonntag            /* I18N: Name of a country or state */
7693ccd686SRico Sonntag            'BDI' => I18N::translate('Burundi'),
7793ccd686SRico Sonntag            /* I18N: Name of a country or state */
7893ccd686SRico Sonntag            'BEL' => I18N::translate('Belgium'),
7993ccd686SRico Sonntag            /* I18N: Name of a country or state */
8093ccd686SRico Sonntag            'BEN' => I18N::translate('Benin'),
8193ccd686SRico Sonntag            // BES => Bonaire, Sint Eustatius and Saba
8293ccd686SRico Sonntag            /* I18N: Name of a country or state */
8393ccd686SRico Sonntag            'BFA' => I18N::translate('Burkina Faso'),
8493ccd686SRico Sonntag            /* I18N: Name of a country or state */
8593ccd686SRico Sonntag            'BGD' => I18N::translate('Bangladesh'),
8693ccd686SRico Sonntag            /* I18N: Name of a country or state */
8793ccd686SRico Sonntag            'BGR' => I18N::translate('Bulgaria'),
8893ccd686SRico Sonntag            /* I18N: Name of a country or state */
8993ccd686SRico Sonntag            'BHR' => I18N::translate('Bahrain'),
9093ccd686SRico Sonntag            /* I18N: Name of a country or state */
9193ccd686SRico Sonntag            'BHS' => I18N::translate('Bahamas'),
9293ccd686SRico Sonntag            /* I18N: Name of a country or state */
9393ccd686SRico Sonntag            'BIH' => I18N::translate('Bosnia and Herzegovina'),
9493ccd686SRico Sonntag            // BLM => Saint Barthélemy
95*7e4eb48aSGreg Roach            'BLM' => I18N::translate('Saint Barthélemy'),
9693ccd686SRico Sonntag            /* I18N: Name of a country or state */
9793ccd686SRico Sonntag            'BLR' => I18N::translate('Belarus'),
9893ccd686SRico Sonntag            /* I18N: Name of a country or state */
9993ccd686SRico Sonntag            'BLZ' => I18N::translate('Belize'),
10093ccd686SRico Sonntag            /* I18N: Name of a country or state */
10193ccd686SRico Sonntag            'BMU' => I18N::translate('Bermuda'),
10293ccd686SRico Sonntag            /* I18N: Name of a country or state */
10393ccd686SRico Sonntag            'BOL' => I18N::translate('Bolivia'),
10493ccd686SRico Sonntag            /* I18N: Name of a country or state */
10593ccd686SRico Sonntag            'BRA' => I18N::translate('Brazil'),
10693ccd686SRico Sonntag            /* I18N: Name of a country or state */
10793ccd686SRico Sonntag            'BRB' => I18N::translate('Barbados'),
10893ccd686SRico Sonntag            /* I18N: Name of a country or state */
10993ccd686SRico Sonntag            'BRN' => I18N::translate('Brunei Darussalam'),
11093ccd686SRico Sonntag            /* I18N: Name of a country or state */
11193ccd686SRico Sonntag            'BTN' => I18N::translate('Bhutan'),
11293ccd686SRico Sonntag            /* I18N: Name of a country or state */
11393ccd686SRico Sonntag            'BVT' => I18N::translate('Bouvet Island'),
11493ccd686SRico Sonntag            /* I18N: Name of a country or state */
11593ccd686SRico Sonntag            'BWA' => I18N::translate('Botswana'),
11693ccd686SRico Sonntag            /* I18N: Name of a country or state */
11793ccd686SRico Sonntag            'CAF' => I18N::translate('Central African Republic'),
11893ccd686SRico Sonntag            /* I18N: Name of a country or state */
11993ccd686SRico Sonntag            'CAN' => I18N::translate('Canada'),
12093ccd686SRico Sonntag            /* I18N: Name of a country or state */
12193ccd686SRico Sonntag            'CCK' => I18N::translate('Cocos (Keeling) Islands'),
12293ccd686SRico Sonntag            /* I18N: Name of a country or state */
12393ccd686SRico Sonntag            'CHE' => I18N::translate('Switzerland'),
12493ccd686SRico Sonntag            /* I18N: Name of a country or state */
12593ccd686SRico Sonntag            'CHL' => I18N::translate('Chile'),
12693ccd686SRico Sonntag            /* I18N: Name of a country or state */
12793ccd686SRico Sonntag            'CHN' => I18N::translate('China'),
12893ccd686SRico Sonntag            /* I18N: Name of a country or state */
129*7e4eb48aSGreg Roach            'CIV' => I18N::translate('Côte d’Ivoire'),
13093ccd686SRico Sonntag            /* I18N: Name of a country or state */
13193ccd686SRico Sonntag            'CMR' => I18N::translate('Cameroon'),
13293ccd686SRico Sonntag            /* I18N: Name of a country or state */
13393ccd686SRico Sonntag            'COD' => I18N::translate('Democratic Republic of the Congo'),
13493ccd686SRico Sonntag            /* I18N: Name of a country or state */
13593ccd686SRico Sonntag            'COG' => I18N::translate('Republic of the Congo'),
13693ccd686SRico Sonntag            /* I18N: Name of a country or state */
13793ccd686SRico Sonntag            'COK' => I18N::translate('Cook Islands'),
13893ccd686SRico Sonntag            /* I18N: Name of a country or state */
13993ccd686SRico Sonntag            'COL' => I18N::translate('Colombia'),
14093ccd686SRico Sonntag            /* I18N: Name of a country or state */
14193ccd686SRico Sonntag            'COM' => I18N::translate('Comoros'),
14293ccd686SRico Sonntag            /* I18N: Name of a country or state */
14393ccd686SRico Sonntag            'CPV' => I18N::translate('Cape Verde'),
14493ccd686SRico Sonntag            /* I18N: Name of a country or state */
14593ccd686SRico Sonntag            'CRI' => I18N::translate('Costa Rica'),
14693ccd686SRico Sonntag            /* I18N: Name of a country or state */
14793ccd686SRico Sonntag            'CUB' => I18N::translate('Cuba'),
148*7e4eb48aSGreg Roach            /* I18N: Name of a country or state */
149*7e4eb48aSGreg Roach            'CUW' => I18N::translate('Curaçao'),
15093ccd686SRico Sonntag            /* I18N: Name of a country or state */
15193ccd686SRico Sonntag            'CXR' => I18N::translate('Christmas Island'),
15293ccd686SRico Sonntag            /* I18N: Name of a country or state */
15393ccd686SRico Sonntag            'CYM' => I18N::translate('Cayman Islands'),
15493ccd686SRico Sonntag            /* I18N: Name of a country or state */
15593ccd686SRico Sonntag            'CYP' => I18N::translate('Cyprus'),
15693ccd686SRico Sonntag            /* I18N: Name of a country or state */
15793ccd686SRico Sonntag            'CZE' => I18N::translate('Czech Republic'),
15893ccd686SRico Sonntag            /* I18N: Name of a country or state */
15993ccd686SRico Sonntag            'DEU' => I18N::translate('Germany'),
16093ccd686SRico Sonntag            /* I18N: Name of a country or state */
16193ccd686SRico Sonntag            'DJI' => I18N::translate('Djibouti'),
16293ccd686SRico Sonntag            /* I18N: Name of a country or state */
16393ccd686SRico Sonntag            'DMA' => I18N::translate('Dominica'),
16493ccd686SRico Sonntag            /* I18N: Name of a country or state */
16593ccd686SRico Sonntag            'DNK' => I18N::translate('Denmark'),
16693ccd686SRico Sonntag            /* I18N: Name of a country or state */
16793ccd686SRico Sonntag            'DOM' => I18N::translate('Dominican Republic'),
16893ccd686SRico Sonntag            /* I18N: Name of a country or state */
16993ccd686SRico Sonntag            'DZA' => I18N::translate('Algeria'),
17093ccd686SRico Sonntag            /* I18N: Name of a country or state */
17193ccd686SRico Sonntag            'ECU' => I18N::translate('Ecuador'),
17293ccd686SRico Sonntag            /* I18N: Name of a country or state */
17393ccd686SRico Sonntag            'EGY' => I18N::translate('Egypt'),
17493ccd686SRico Sonntag            /* I18N: Name of a country or state */
17593ccd686SRico Sonntag            'ENG' => I18N::translate('England'),
17693ccd686SRico Sonntag            /* I18N: Name of a country or state */
17793ccd686SRico Sonntag            'ERI' => I18N::translate('Eritrea'),
17893ccd686SRico Sonntag            /* I18N: Name of a country or state */
17993ccd686SRico Sonntag            'ESH' => I18N::translate('Western Sahara'),
18093ccd686SRico Sonntag            /* I18N: Name of a country or state */
18193ccd686SRico Sonntag            'ESP' => I18N::translate('Spain'),
18293ccd686SRico Sonntag            /* I18N: Name of a country or state */
18393ccd686SRico Sonntag            'EST' => I18N::translate('Estonia'),
18493ccd686SRico Sonntag            /* I18N: Name of a country or state */
18593ccd686SRico Sonntag            'ETH' => I18N::translate('Ethiopia'),
18693ccd686SRico Sonntag            /* I18N: Name of a country or state */
18793ccd686SRico Sonntag            'FIN' => I18N::translate('Finland'),
18893ccd686SRico Sonntag            /* I18N: Name of a country or state */
18993ccd686SRico Sonntag            'FJI' => I18N::translate('Fiji'),
19093ccd686SRico Sonntag            /* I18N: Name of a country or state */
19193ccd686SRico Sonntag            'FLD' => I18N::translate('Flanders'),
19293ccd686SRico Sonntag            /* I18N: Name of a country or state */
19393ccd686SRico Sonntag            'FLK' => I18N::translate('Falkland Islands'),
19493ccd686SRico Sonntag            /* I18N: Name of a country or state */
19593ccd686SRico Sonntag            'FRA' => I18N::translate('France'),
19693ccd686SRico Sonntag            /* I18N: Name of a country or state */
19793ccd686SRico Sonntag            'FRO' => I18N::translate('Faroe Islands'),
19893ccd686SRico Sonntag            /* I18N: Name of a country or state */
19993ccd686SRico Sonntag            'FSM' => I18N::translate('Micronesia'),
20093ccd686SRico Sonntag            /* I18N: Name of a country or state */
20193ccd686SRico Sonntag            'GAB' => I18N::translate('Gabon'),
20293ccd686SRico Sonntag            /* I18N: Name of a country or state */
20393ccd686SRico Sonntag            'GBR' => I18N::translate('United Kingdom'),
20493ccd686SRico Sonntag            /* I18N: Name of a country or state */
20593ccd686SRico Sonntag            'GEO' => I18N::translate('Georgia'),
20693ccd686SRico Sonntag            /* I18N: Name of a country or state */
20793ccd686SRico Sonntag            'GGY' => I18N::translate('Guernsey'),
20893ccd686SRico Sonntag            /* I18N: Name of a country or state */
20993ccd686SRico Sonntag            'GHA' => I18N::translate('Ghana'),
21093ccd686SRico Sonntag            /* I18N: Name of a country or state */
21193ccd686SRico Sonntag            'GIB' => I18N::translate('Gibraltar'),
21293ccd686SRico Sonntag            /* I18N: Name of a country or state */
21393ccd686SRico Sonntag            'GIN' => I18N::translate('Guinea'),
21493ccd686SRico Sonntag            /* I18N: Name of a country or state */
21593ccd686SRico Sonntag            'GLP' => I18N::translate('Guadeloupe'),
21693ccd686SRico Sonntag            /* I18N: Name of a country or state */
21793ccd686SRico Sonntag            'GMB' => I18N::translate('Gambia'),
21893ccd686SRico Sonntag            /* I18N: Name of a country or state */
21993ccd686SRico Sonntag            'GNB' => I18N::translate('Guinea-Bissau'),
22093ccd686SRico Sonntag            /* I18N: Name of a country or state */
22193ccd686SRico Sonntag            'GNQ' => I18N::translate('Equatorial Guinea'),
22293ccd686SRico Sonntag            /* I18N: Name of a country or state */
22393ccd686SRico Sonntag            'GRC' => I18N::translate('Greece'),
22493ccd686SRico Sonntag            /* I18N: Name of a country or state */
22593ccd686SRico Sonntag            'GRD' => I18N::translate('Grenada'),
22693ccd686SRico Sonntag            /* I18N: Name of a country or state */
22793ccd686SRico Sonntag            'GRL' => I18N::translate('Greenland'),
22893ccd686SRico Sonntag            /* I18N: Name of a country or state */
22993ccd686SRico Sonntag            'GTM' => I18N::translate('Guatemala'),
23093ccd686SRico Sonntag            /* I18N: Name of a country or state */
23193ccd686SRico Sonntag            'GUF' => I18N::translate('French Guiana'),
23293ccd686SRico Sonntag            /* I18N: Name of a country or state */
23393ccd686SRico Sonntag            'GUM' => I18N::translate('Guam'),
23493ccd686SRico Sonntag            /* I18N: Name of a country or state */
23593ccd686SRico Sonntag            'GUY' => I18N::translate('Guyana'),
23693ccd686SRico Sonntag            /* I18N: Name of a country or state */
23793ccd686SRico Sonntag            'HKG' => I18N::translate('Hong Kong'),
23893ccd686SRico Sonntag            /* I18N: Name of a country or state */
23993ccd686SRico Sonntag            'HMD' => I18N::translate('Heard Island and McDonald Islands'),
24093ccd686SRico Sonntag            /* I18N: Name of a country or state */
24193ccd686SRico Sonntag            'HND' => I18N::translate('Honduras'),
24293ccd686SRico Sonntag            /* I18N: Name of a country or state */
24393ccd686SRico Sonntag            'HRV' => I18N::translate('Croatia'),
24493ccd686SRico Sonntag            /* I18N: Name of a country or state */
24593ccd686SRico Sonntag            'HTI' => I18N::translate('Haiti'),
24693ccd686SRico Sonntag            /* I18N: Name of a country or state */
24793ccd686SRico Sonntag            'HUN' => I18N::translate('Hungary'),
24893ccd686SRico Sonntag            /* I18N: Name of a country or state */
24993ccd686SRico Sonntag            'IDN' => I18N::translate('Indonesia'),
25093ccd686SRico Sonntag            /* I18N: Name of a country or state */
25193ccd686SRico Sonntag            'IND' => I18N::translate('India'),
25293ccd686SRico Sonntag            /* I18N: Name of a country or state */
25393ccd686SRico Sonntag            'IOM' => I18N::translate('Isle of Man'),
25493ccd686SRico Sonntag            /* I18N: Name of a country or state */
25593ccd686SRico Sonntag            'IOT' => I18N::translate('British Indian Ocean Territory'),
25693ccd686SRico Sonntag            /* I18N: Name of a country or state */
25793ccd686SRico Sonntag            'IRL' => I18N::translate('Ireland'),
25893ccd686SRico Sonntag            /* I18N: Name of a country or state */
25993ccd686SRico Sonntag            'IRN' => I18N::translate('Iran'),
26093ccd686SRico Sonntag            /* I18N: Name of a country or state */
26193ccd686SRico Sonntag            'IRQ' => I18N::translate('Iraq'),
26293ccd686SRico Sonntag            /* I18N: Name of a country or state */
26393ccd686SRico Sonntag            'ISL' => I18N::translate('Iceland'),
26493ccd686SRico Sonntag            /* I18N: Name of a country or state */
26593ccd686SRico Sonntag            'ISR' => I18N::translate('Israel'),
26693ccd686SRico Sonntag            /* I18N: Name of a country or state */
26793ccd686SRico Sonntag            'ITA' => I18N::translate('Italy'),
26893ccd686SRico Sonntag            /* I18N: Name of a country or state */
26993ccd686SRico Sonntag            'JAM' => I18N::translate('Jamaica'),
27093ccd686SRico Sonntag            //'JEY' => Jersey
27193ccd686SRico Sonntag            /* I18N: Name of a country or state */
27293ccd686SRico Sonntag            'JOR' => I18N::translate('Jordan'),
27393ccd686SRico Sonntag            /* I18N: Name of a country or state */
27493ccd686SRico Sonntag            'JPN' => I18N::translate('Japan'),
27593ccd686SRico Sonntag            /* I18N: Name of a country or state */
27693ccd686SRico Sonntag            'KAZ' => I18N::translate('Kazakhstan'),
27793ccd686SRico Sonntag            /* I18N: Name of a country or state */
27893ccd686SRico Sonntag            'KEN' => I18N::translate('Kenya'),
27993ccd686SRico Sonntag            /* I18N: Name of a country or state */
28093ccd686SRico Sonntag            'KGZ' => I18N::translate('Kyrgyzstan'),
28193ccd686SRico Sonntag            /* I18N: Name of a country or state */
28293ccd686SRico Sonntag            'KHM' => I18N::translate('Cambodia'),
28393ccd686SRico Sonntag            /* I18N: Name of a country or state */
28493ccd686SRico Sonntag            'KIR' => I18N::translate('Kiribati'),
28593ccd686SRico Sonntag            /* I18N: Name of a country or state */
28693ccd686SRico Sonntag            'KNA' => I18N::translate('Saint Kitts and Nevis'),
28793ccd686SRico Sonntag            /* I18N: Name of a country or state */
28893ccd686SRico Sonntag            'KOR' => I18N::translate('Korea'),
28993ccd686SRico Sonntag            /* I18N: Name of a country or state */
29093ccd686SRico Sonntag            'KWT' => I18N::translate('Kuwait'),
29193ccd686SRico Sonntag            /* I18N: Name of a country or state */
29293ccd686SRico Sonntag            'LAO' => I18N::translate('Laos'),
29393ccd686SRico Sonntag            /* I18N: Name of a country or state */
29493ccd686SRico Sonntag            'LBN' => I18N::translate('Lebanon'),
29593ccd686SRico Sonntag            /* I18N: Name of a country or state */
29693ccd686SRico Sonntag            'LBR' => I18N::translate('Liberia'),
29793ccd686SRico Sonntag            /* I18N: Name of a country or state */
29893ccd686SRico Sonntag            'LBY' => I18N::translate('Libya'),
29993ccd686SRico Sonntag            /* I18N: Name of a country or state */
30093ccd686SRico Sonntag            'LCA' => I18N::translate('Saint Lucia'),
30193ccd686SRico Sonntag            /* I18N: Name of a country or state */
30293ccd686SRico Sonntag            'LIE' => I18N::translate('Liechtenstein'),
30393ccd686SRico Sonntag            /* I18N: Name of a country or state */
30493ccd686SRico Sonntag            'LKA' => I18N::translate('Sri Lanka'),
30593ccd686SRico Sonntag            /* I18N: Name of a country or state */
30693ccd686SRico Sonntag            'LSO' => I18N::translate('Lesotho'),
30793ccd686SRico Sonntag            /* I18N: Name of a country or state */
30893ccd686SRico Sonntag            'LTU' => I18N::translate('Lithuania'),
30993ccd686SRico Sonntag            /* I18N: Name of a country or state */
31093ccd686SRico Sonntag            'LUX' => I18N::translate('Luxembourg'),
31193ccd686SRico Sonntag            /* I18N: Name of a country or state */
31293ccd686SRico Sonntag            'LVA' => I18N::translate('Latvia'),
31393ccd686SRico Sonntag            /* I18N: Name of a country or state */
31493ccd686SRico Sonntag            'MAC' => I18N::translate('Macau'),
31593ccd686SRico Sonntag            // MAF => Saint Martin
31693ccd686SRico Sonntag            /* I18N: Name of a country or state */
31793ccd686SRico Sonntag            'MAR' => I18N::translate('Morocco'),
31893ccd686SRico Sonntag            /* I18N: Name of a country or state */
31993ccd686SRico Sonntag            'MCO' => I18N::translate('Monaco'),
32093ccd686SRico Sonntag            /* I18N: Name of a country or state */
32193ccd686SRico Sonntag            'MDA' => I18N::translate('Moldova'),
32293ccd686SRico Sonntag            /* I18N: Name of a country or state */
32393ccd686SRico Sonntag            'MDG' => I18N::translate('Madagascar'),
32493ccd686SRico Sonntag            /* I18N: Name of a country or state */
32593ccd686SRico Sonntag            'MDV' => I18N::translate('Maldives'),
32693ccd686SRico Sonntag            /* I18N: Name of a country or state */
32793ccd686SRico Sonntag            'MEX' => I18N::translate('Mexico'),
32893ccd686SRico Sonntag            /* I18N: Name of a country or state */
32993ccd686SRico Sonntag            'MHL' => I18N::translate('Marshall Islands'),
33093ccd686SRico Sonntag            /* I18N: Name of a country or state */
33193ccd686SRico Sonntag            'MKD' => I18N::translate('Macedonia'),
33293ccd686SRico Sonntag            /* I18N: Name of a country or state */
33393ccd686SRico Sonntag            'MLI' => I18N::translate('Mali'),
33493ccd686SRico Sonntag            /* I18N: Name of a country or state */
33593ccd686SRico Sonntag            'MLT' => I18N::translate('Malta'),
33693ccd686SRico Sonntag            /* I18N: Name of a country or state */
33793ccd686SRico Sonntag            'MMR' => I18N::translate('Myanmar'),
33893ccd686SRico Sonntag            /* I18N: Name of a country or state */
33993ccd686SRico Sonntag            'MNG' => I18N::translate('Mongolia'),
34093ccd686SRico Sonntag            /* I18N: Name of a country or state */
34193ccd686SRico Sonntag            'MNP' => I18N::translate('Northern Mariana Islands'),
34293ccd686SRico Sonntag            /* I18N: Name of a country or state */
34393ccd686SRico Sonntag            'MNT' => I18N::translate('Montenegro'),
34493ccd686SRico Sonntag            /* I18N: Name of a country or state */
34593ccd686SRico Sonntag            'MOZ' => I18N::translate('Mozambique'),
34693ccd686SRico Sonntag            /* I18N: Name of a country or state */
34793ccd686SRico Sonntag            'MRT' => I18N::translate('Mauritania'),
34893ccd686SRico Sonntag            /* I18N: Name of a country or state */
34993ccd686SRico Sonntag            'MSR' => I18N::translate('Montserrat'),
35093ccd686SRico Sonntag            /* I18N: Name of a country or state */
35193ccd686SRico Sonntag            'MTQ' => I18N::translate('Martinique'),
35293ccd686SRico Sonntag            /* I18N: Name of a country or state */
35393ccd686SRico Sonntag            'MUS' => I18N::translate('Mauritius'),
35493ccd686SRico Sonntag            /* I18N: Name of a country or state */
35593ccd686SRico Sonntag            'MWI' => I18N::translate('Malawi'),
35693ccd686SRico Sonntag            /* I18N: Name of a country or state */
35793ccd686SRico Sonntag            'MYS' => I18N::translate('Malaysia'),
35893ccd686SRico Sonntag            /* I18N: Name of a country or state */
35993ccd686SRico Sonntag            'MYT' => I18N::translate('Mayotte'),
36093ccd686SRico Sonntag            /* I18N: Name of a country or state */
36193ccd686SRico Sonntag            'NAM' => I18N::translate('Namibia'),
36293ccd686SRico Sonntag            /* I18N: Name of a country or state */
36393ccd686SRico Sonntag            'NCL' => I18N::translate('New Caledonia'),
36493ccd686SRico Sonntag            /* I18N: Name of a country or state */
36593ccd686SRico Sonntag            'NER' => I18N::translate('Niger'),
36693ccd686SRico Sonntag            /* I18N: Name of a country or state */
36793ccd686SRico Sonntag            'NFK' => I18N::translate('Norfolk Island'),
36893ccd686SRico Sonntag            /* I18N: Name of a country or state */
36993ccd686SRico Sonntag            'NGA' => I18N::translate('Nigeria'),
37093ccd686SRico Sonntag            /* I18N: Name of a country or state */
37193ccd686SRico Sonntag            'NIC' => I18N::translate('Nicaragua'),
37293ccd686SRico Sonntag            /* I18N: Name of a country or state */
37393ccd686SRico Sonntag            'NIR' => I18N::translate('Northern Ireland'),
37493ccd686SRico Sonntag            /* I18N: Name of a country or state */
37593ccd686SRico Sonntag            'NIU' => I18N::translate('Niue'),
37693ccd686SRico Sonntag            /* I18N: Name of a country or state */
37793ccd686SRico Sonntag            'NLD' => I18N::translate('Netherlands'),
37893ccd686SRico Sonntag            /* I18N: Name of a country or state */
37993ccd686SRico Sonntag            'NOR' => I18N::translate('Norway'),
38093ccd686SRico Sonntag            /* I18N: Name of a country or state */
38193ccd686SRico Sonntag            'NPL' => I18N::translate('Nepal'),
38293ccd686SRico Sonntag            /* I18N: Name of a country or state */
38393ccd686SRico Sonntag            'NRU' => I18N::translate('Nauru'),
38493ccd686SRico Sonntag            /* I18N: Name of a country or state */
38593ccd686SRico Sonntag            'NZL' => I18N::translate('New Zealand'),
38693ccd686SRico Sonntag            /* I18N: Name of a country or state */
38793ccd686SRico Sonntag            'OMN' => I18N::translate('Oman'),
38893ccd686SRico Sonntag            /* I18N: Name of a country or state */
38993ccd686SRico Sonntag            'PAK' => I18N::translate('Pakistan'),
39093ccd686SRico Sonntag            /* I18N: Name of a country or state */
39193ccd686SRico Sonntag            'PAN' => I18N::translate('Panama'),
39293ccd686SRico Sonntag            /* I18N: Name of a country or state */
39393ccd686SRico Sonntag            'PCN' => I18N::translate('Pitcairn'),
39493ccd686SRico Sonntag            /* I18N: Name of a country or state */
39593ccd686SRico Sonntag            'PER' => I18N::translate('Peru'),
39693ccd686SRico Sonntag            /* I18N: Name of a country or state */
39793ccd686SRico Sonntag            'PHL' => I18N::translate('Philippines'),
39893ccd686SRico Sonntag            /* I18N: Name of a country or state */
39993ccd686SRico Sonntag            'PLW' => I18N::translate('Palau'),
40093ccd686SRico Sonntag            /* I18N: Name of a country or state */
40193ccd686SRico Sonntag            'PNG' => I18N::translate('Papua New Guinea'),
40293ccd686SRico Sonntag            /* I18N: Name of a country or state */
40393ccd686SRico Sonntag            'POL' => I18N::translate('Poland'),
40493ccd686SRico Sonntag            /* I18N: Name of a country or state */
40593ccd686SRico Sonntag            'PRI' => I18N::translate('Puerto Rico'),
40693ccd686SRico Sonntag            /* I18N: Name of a country or state */
40793ccd686SRico Sonntag            'PRK' => I18N::translate('North Korea'),
40893ccd686SRico Sonntag            /* I18N: Name of a country or state */
40993ccd686SRico Sonntag            'PRT' => I18N::translate('Portugal'),
41093ccd686SRico Sonntag            /* I18N: Name of a country or state */
41193ccd686SRico Sonntag            'PRY' => I18N::translate('Paraguay'),
41293ccd686SRico Sonntag            /* I18N: Name of a country or state */
41393ccd686SRico Sonntag            'PSE' => I18N::translate('Occupied Palestinian Territory'),
41493ccd686SRico Sonntag            /* I18N: Name of a country or state */
41593ccd686SRico Sonntag            'PYF' => I18N::translate('French Polynesia'),
41693ccd686SRico Sonntag            /* I18N: Name of a country or state */
41793ccd686SRico Sonntag            'QAT' => I18N::translate('Qatar'),
41893ccd686SRico Sonntag            /* I18N: Name of a country or state */
419*7e4eb48aSGreg Roach            'REU' => I18N::translate('Réunion'),
42093ccd686SRico Sonntag            /* I18N: Name of a country or state */
42193ccd686SRico Sonntag            'ROM' => I18N::translate('Romania'),
42293ccd686SRico Sonntag            /* I18N: Name of a country or state */
42393ccd686SRico Sonntag            'RUS' => I18N::translate('Russia'),
42493ccd686SRico Sonntag            /* I18N: Name of a country or state */
42593ccd686SRico Sonntag            'RWA' => I18N::translate('Rwanda'),
42693ccd686SRico Sonntag            /* I18N: Name of a country or state */
42793ccd686SRico Sonntag            'SAU' => I18N::translate('Saudi Arabia'),
42893ccd686SRico Sonntag            /* I18N: Name of a country or state */
42993ccd686SRico Sonntag            'SCT' => I18N::translate('Scotland'),
43093ccd686SRico Sonntag            /* I18N: Name of a country or state */
43193ccd686SRico Sonntag            'SDN' => I18N::translate('Sudan'),
43293ccd686SRico Sonntag            /* I18N: Name of a country or state */
43393ccd686SRico Sonntag            'SEA' => I18N::translate('At sea'),
43493ccd686SRico Sonntag            /* I18N: Name of a country or state */
43593ccd686SRico Sonntag            'SEN' => I18N::translate('Senegal'),
43693ccd686SRico Sonntag            /* I18N: Name of a country or state */
43793ccd686SRico Sonntag            'SER' => I18N::translate('Serbia'),
43893ccd686SRico Sonntag            /* I18N: Name of a country or state */
43993ccd686SRico Sonntag            'SGP' => I18N::translate('Singapore'),
44093ccd686SRico Sonntag            /* I18N: Name of a country or state */
44193ccd686SRico Sonntag            'SGS' => I18N::translate('South Georgia and the South Sandwich Islands'),
44293ccd686SRico Sonntag            /* I18N: Name of a country or state */
44393ccd686SRico Sonntag            'SHN' => I18N::translate('Saint Helena'),
44493ccd686SRico Sonntag            /* I18N: Name of a country or state */
44593ccd686SRico Sonntag            'SJM' => I18N::translate('Svalbard and Jan Mayen'),
44693ccd686SRico Sonntag            /* I18N: Name of a country or state */
44793ccd686SRico Sonntag            'SLB' => I18N::translate('Solomon Islands'),
44893ccd686SRico Sonntag            /* I18N: Name of a country or state */
44993ccd686SRico Sonntag            'SLE' => I18N::translate('Sierra Leone'),
45093ccd686SRico Sonntag            /* I18N: Name of a country or state */
45193ccd686SRico Sonntag            'SLV' => I18N::translate('El Salvador'),
45293ccd686SRico Sonntag            /* I18N: Name of a country or state */
45393ccd686SRico Sonntag            'SMR' => I18N::translate('San Marino'),
45493ccd686SRico Sonntag            /* I18N: Name of a country or state */
45593ccd686SRico Sonntag            'SOM' => I18N::translate('Somalia'),
45693ccd686SRico Sonntag            /* I18N: Name of a country or state */
45793ccd686SRico Sonntag            'SPM' => I18N::translate('Saint Pierre and Miquelon'),
45893ccd686SRico Sonntag            /* I18N: Name of a country or state */
45993ccd686SRico Sonntag            'SSD' => I18N::translate('South Sudan'),
46093ccd686SRico Sonntag            /* I18N: Name of a country or state */
46193ccd686SRico Sonntag            'STP' => I18N::translate('Sao Tome and Principe'),
46293ccd686SRico Sonntag            /* I18N: Name of a country or state */
46393ccd686SRico Sonntag            'SUR' => I18N::translate('Suriname'),
46493ccd686SRico Sonntag            /* I18N: Name of a country or state */
46593ccd686SRico Sonntag            'SVK' => I18N::translate('Slovakia'),
46693ccd686SRico Sonntag            /* I18N: Name of a country or state */
46793ccd686SRico Sonntag            'SVN' => I18N::translate('Slovenia'),
46893ccd686SRico Sonntag            /* I18N: Name of a country or state */
46993ccd686SRico Sonntag            'SWE' => I18N::translate('Sweden'),
47093ccd686SRico Sonntag            /* I18N: Name of a country or state */
47193ccd686SRico Sonntag            'SWZ' => I18N::translate('Swaziland'),
47293ccd686SRico Sonntag            // SXM => Sint Maarten
47393ccd686SRico Sonntag            /* I18N: Name of a country or state */
47493ccd686SRico Sonntag            'SYC' => I18N::translate('Seychelles'),
47593ccd686SRico Sonntag            /* I18N: Name of a country or state */
47693ccd686SRico Sonntag            'SYR' => I18N::translate('Syria'),
47793ccd686SRico Sonntag            /* I18N: Name of a country or state */
47893ccd686SRico Sonntag            'TCA' => I18N::translate('Turks and Caicos Islands'),
47993ccd686SRico Sonntag            /* I18N: Name of a country or state */
48093ccd686SRico Sonntag            'TCD' => I18N::translate('Chad'),
48193ccd686SRico Sonntag            /* I18N: Name of a country or state */
48293ccd686SRico Sonntag            'TGO' => I18N::translate('Togo'),
48393ccd686SRico Sonntag            /* I18N: Name of a country or state */
48493ccd686SRico Sonntag            'THA' => I18N::translate('Thailand'),
48593ccd686SRico Sonntag            /* I18N: Name of a country or state */
48693ccd686SRico Sonntag            'TJK' => I18N::translate('Tajikistan'),
48793ccd686SRico Sonntag            /* I18N: Name of a country or state */
48893ccd686SRico Sonntag            'TKL' => I18N::translate('Tokelau'),
48993ccd686SRico Sonntag            /* I18N: Name of a country or state */
49093ccd686SRico Sonntag            'TKM' => I18N::translate('Turkmenistan'),
49193ccd686SRico Sonntag            /* I18N: Name of a country or state */
49293ccd686SRico Sonntag            'TLS' => I18N::translate('Timor-Leste'),
49393ccd686SRico Sonntag            /* I18N: Name of a country or state */
49493ccd686SRico Sonntag            'TON' => I18N::translate('Tonga'),
49593ccd686SRico Sonntag            /* I18N: Name of a country or state */
49693ccd686SRico Sonntag            'TTO' => I18N::translate('Trinidad and Tobago'),
49793ccd686SRico Sonntag            /* I18N: Name of a country or state */
49893ccd686SRico Sonntag            'TUN' => I18N::translate('Tunisia'),
49993ccd686SRico Sonntag            /* I18N: Name of a country or state */
50093ccd686SRico Sonntag            'TUR' => I18N::translate('Turkey'),
50193ccd686SRico Sonntag            /* I18N: Name of a country or state */
50293ccd686SRico Sonntag            'TUV' => I18N::translate('Tuvalu'),
50393ccd686SRico Sonntag            /* I18N: Name of a country or state */
50493ccd686SRico Sonntag            'TWN' => I18N::translate('Taiwan'),
50593ccd686SRico Sonntag            /* I18N: Name of a country or state */
50693ccd686SRico Sonntag            'TZA' => I18N::translate('Tanzania'),
50793ccd686SRico Sonntag            /* I18N: Name of a country or state */
50893ccd686SRico Sonntag            'UGA' => I18N::translate('Uganda'),
50993ccd686SRico Sonntag            /* I18N: Name of a country or state */
51093ccd686SRico Sonntag            'UKR' => I18N::translate('Ukraine'),
51193ccd686SRico Sonntag            /* I18N: Name of a country or state */
51293ccd686SRico Sonntag            'UMI' => I18N::translate('US Minor Outlying Islands'),
51393ccd686SRico Sonntag            /* I18N: Name of a country or state */
51493ccd686SRico Sonntag            'URY' => I18N::translate('Uruguay'),
51593ccd686SRico Sonntag            /* I18N: Name of a country or state */
51693ccd686SRico Sonntag            'USA' => I18N::translate('United States'),
51793ccd686SRico Sonntag            /* I18N: Name of a country or state */
51893ccd686SRico Sonntag            'UZB' => I18N::translate('Uzbekistan'),
51993ccd686SRico Sonntag            /* I18N: Name of a country or state */
52093ccd686SRico Sonntag            'VAT' => I18N::translate('Vatican City'),
52193ccd686SRico Sonntag            /* I18N: Name of a country or state */
52293ccd686SRico Sonntag            'VCT' => I18N::translate('Saint Vincent and the Grenadines'),
52393ccd686SRico Sonntag            /* I18N: Name of a country or state */
52493ccd686SRico Sonntag            'VEN' => I18N::translate('Venezuela'),
52593ccd686SRico Sonntag            /* I18N: Name of a country or state */
52693ccd686SRico Sonntag            'VGB' => I18N::translate('British Virgin Islands'),
52793ccd686SRico Sonntag            /* I18N: Name of a country or state */
52893ccd686SRico Sonntag            'VIR' => I18N::translate('US Virgin Islands'),
52993ccd686SRico Sonntag            /* I18N: Name of a country or state */
53093ccd686SRico Sonntag            'VNM' => I18N::translate('Vietnam'),
53193ccd686SRico Sonntag            /* I18N: Name of a country or state */
53293ccd686SRico Sonntag            'VUT' => I18N::translate('Vanuatu'),
53393ccd686SRico Sonntag            /* I18N: Name of a country or state */
53493ccd686SRico Sonntag            'WLF' => I18N::translate('Wallis and Futuna'),
53593ccd686SRico Sonntag            /* I18N: Name of a country or state */
53693ccd686SRico Sonntag            'WLS' => I18N::translate('Wales'),
53793ccd686SRico Sonntag            /* I18N: Name of a country or state */
53893ccd686SRico Sonntag            'WSM' => I18N::translate('Samoa'),
53993ccd686SRico Sonntag            /* I18N: Name of a country or state */
54093ccd686SRico Sonntag            'YEM' => I18N::translate('Yemen'),
54193ccd686SRico Sonntag            /* I18N: Name of a country or state */
54293ccd686SRico Sonntag            'ZAF' => I18N::translate('South Africa'),
54393ccd686SRico Sonntag            /* I18N: Name of a country or state */
54493ccd686SRico Sonntag            'ZMB' => I18N::translate('Zambia'),
54593ccd686SRico Sonntag            /* I18N: Name of a country or state */
54693ccd686SRico Sonntag            'ZWE' => I18N::translate('Zimbabwe'),
54793ccd686SRico Sonntag        ];
54893ccd686SRico Sonntag    }
54993ccd686SRico Sonntag
55093ccd686SRico Sonntag    /**
55193ccd686SRico Sonntag     * ISO3166 3 letter codes, with their 2 letter equivalent.
55293ccd686SRico Sonntag     * NOTE: this is not 1:1. ENG/SCO/WAL/NIR => GB
5539deadf1cSGreg Roach     * NOTE: this also includes chapman codes and others. Should it?
55493ccd686SRico Sonntag     *
55524f2a3afSGreg Roach     * @return array<string>
55693ccd686SRico Sonntag     */
55793ccd686SRico Sonntag    public function iso3166(): array
55893ccd686SRico Sonntag    {
55993ccd686SRico Sonntag        return [
56017c6a11dSGreg Roach            'GBR' => 'GB', // Must come before ENG, NIR, SCT and WLS
56193ccd686SRico Sonntag            'ABW' => 'AW',
56293ccd686SRico Sonntag            'AFG' => 'AF',
56393ccd686SRico Sonntag            'AGO' => 'AO',
56493ccd686SRico Sonntag            'AIA' => 'AI',
56593ccd686SRico Sonntag            'ALA' => 'AX',
56693ccd686SRico Sonntag            'ALB' => 'AL',
56793ccd686SRico Sonntag            'AND' => 'AD',
56893ccd686SRico Sonntag            'ARE' => 'AE',
56993ccd686SRico Sonntag            'ARG' => 'AR',
57093ccd686SRico Sonntag            'ARM' => 'AM',
57193ccd686SRico Sonntag            'ASM' => 'AS',
57293ccd686SRico Sonntag            'ATA' => 'AQ',
57393ccd686SRico Sonntag            'ATF' => 'TF',
57493ccd686SRico Sonntag            'ATG' => 'AG',
57593ccd686SRico Sonntag            'AUS' => 'AU',
57693ccd686SRico Sonntag            'AUT' => 'AT',
57793ccd686SRico Sonntag            'AZE' => 'AZ',
57893ccd686SRico Sonntag            'BDI' => 'BI',
57993ccd686SRico Sonntag            'BEL' => 'BE',
58093ccd686SRico Sonntag            'BEN' => 'BJ',
58193ccd686SRico Sonntag            'BFA' => 'BF',
58293ccd686SRico Sonntag            'BGD' => 'BD',
58393ccd686SRico Sonntag            'BGR' => 'BG',
58493ccd686SRico Sonntag            'BHR' => 'BH',
58593ccd686SRico Sonntag            'BHS' => 'BS',
58693ccd686SRico Sonntag            'BIH' => 'BA',
58793ccd686SRico Sonntag            'BLR' => 'BY',
58893ccd686SRico Sonntag            'BLZ' => 'BZ',
58993ccd686SRico Sonntag            'BMU' => 'BM',
59093ccd686SRico Sonntag            'BOL' => 'BO',
59193ccd686SRico Sonntag            'BRA' => 'BR',
59293ccd686SRico Sonntag            'BRB' => 'BB',
59393ccd686SRico Sonntag            'BRN' => 'BN',
59493ccd686SRico Sonntag            'BTN' => 'BT',
59593ccd686SRico Sonntag            'BVT' => 'BV',
59693ccd686SRico Sonntag            'BWA' => 'BW',
59793ccd686SRico Sonntag            'CAF' => 'CF',
59893ccd686SRico Sonntag            'CAN' => 'CA',
59993ccd686SRico Sonntag            'CCK' => 'CC',
60093ccd686SRico Sonntag            'CHE' => 'CH',
60193ccd686SRico Sonntag            'CHL' => 'CL',
60293ccd686SRico Sonntag            'CHN' => 'CN',
60393ccd686SRico Sonntag            'CIV' => 'CI',
60493ccd686SRico Sonntag            'CMR' => 'CM',
60593ccd686SRico Sonntag            'COD' => 'CD',
60693ccd686SRico Sonntag            'COG' => 'CG',
60793ccd686SRico Sonntag            'COK' => 'CK',
60893ccd686SRico Sonntag            'COL' => 'CO',
60993ccd686SRico Sonntag            'COM' => 'KM',
61093ccd686SRico Sonntag            'CPV' => 'CV',
61193ccd686SRico Sonntag            'CRI' => 'CR',
61293ccd686SRico Sonntag            'CUB' => 'CU',
61393ccd686SRico Sonntag            'CXR' => 'CX',
61493ccd686SRico Sonntag            'CYM' => 'KY',
61593ccd686SRico Sonntag            'CYP' => 'CY',
61693ccd686SRico Sonntag            'CZE' => 'CZ',
61793ccd686SRico Sonntag            'DEU' => 'DE',
61893ccd686SRico Sonntag            'DJI' => 'DJ',
61993ccd686SRico Sonntag            'DMA' => 'DM',
62093ccd686SRico Sonntag            'DNK' => 'DK',
62193ccd686SRico Sonntag            'DOM' => 'DO',
62293ccd686SRico Sonntag            'DZA' => 'DZ',
62393ccd686SRico Sonntag            'ECU' => 'EC',
62493ccd686SRico Sonntag            'EGY' => 'EG',
62593ccd686SRico Sonntag            'ENG' => 'GB',
62693ccd686SRico Sonntag            'ERI' => 'ER',
62793ccd686SRico Sonntag            'ESH' => 'EH',
62893ccd686SRico Sonntag            'ESP' => 'ES',
62993ccd686SRico Sonntag            'EST' => 'EE',
63093ccd686SRico Sonntag            'ETH' => 'ET',
63193ccd686SRico Sonntag            'FIN' => 'FI',
63293ccd686SRico Sonntag            'FJI' => 'FJ',
63393ccd686SRico Sonntag            'FLK' => 'FK',
63493ccd686SRico Sonntag            'FRA' => 'FR',
63593ccd686SRico Sonntag            'FRO' => 'FO',
63693ccd686SRico Sonntag            'FSM' => 'FM',
63793ccd686SRico Sonntag            'GAB' => 'GA',
63893ccd686SRico Sonntag            'GEO' => 'GE',
63993ccd686SRico Sonntag            'GHA' => 'GH',
64093ccd686SRico Sonntag            'GIB' => 'GI',
64193ccd686SRico Sonntag            'GIN' => 'GN',
64293ccd686SRico Sonntag            'GLP' => 'GP',
64393ccd686SRico Sonntag            'GMB' => 'GM',
64493ccd686SRico Sonntag            'GNB' => 'GW',
64593ccd686SRico Sonntag            'GNQ' => 'GQ',
64693ccd686SRico Sonntag            'GRC' => 'GR',
64793ccd686SRico Sonntag            'GRD' => 'GD',
64893ccd686SRico Sonntag            'GRL' => 'GL',
64993ccd686SRico Sonntag            'GTM' => 'GT',
65093ccd686SRico Sonntag            'GUF' => 'GF',
65193ccd686SRico Sonntag            'GUM' => 'GU',
65293ccd686SRico Sonntag            'GUY' => 'GY',
65393ccd686SRico Sonntag            'HKG' => 'HK',
65493ccd686SRico Sonntag            'HMD' => 'HM',
65593ccd686SRico Sonntag            'HND' => 'HN',
65693ccd686SRico Sonntag            'HRV' => 'HR',
65793ccd686SRico Sonntag            'HTI' => 'HT',
65893ccd686SRico Sonntag            'HUN' => 'HU',
65993ccd686SRico Sonntag            'IDN' => 'ID',
66093ccd686SRico Sonntag            'IND' => 'IN',
66193ccd686SRico Sonntag            'IOT' => 'IO',
66293ccd686SRico Sonntag            'IRL' => 'IE',
66393ccd686SRico Sonntag            'IRN' => 'IR',
66493ccd686SRico Sonntag            'IRQ' => 'IQ',
66593ccd686SRico Sonntag            'ISL' => 'IS',
66693ccd686SRico Sonntag            'ISR' => 'IL',
66793ccd686SRico Sonntag            'ITA' => 'IT',
66893ccd686SRico Sonntag            'JAM' => 'JM',
66993ccd686SRico Sonntag            'JOR' => 'JO',
670c0cdda03SGreg Roach            'JPN' => 'JP',
67193ccd686SRico Sonntag            'KAZ' => 'KZ',
67293ccd686SRico Sonntag            'KEN' => 'KE',
67393ccd686SRico Sonntag            'KGZ' => 'KG',
67493ccd686SRico Sonntag            'KHM' => 'KH',
67593ccd686SRico Sonntag            'KIR' => 'KI',
67693ccd686SRico Sonntag            'KNA' => 'KN',
67793ccd686SRico Sonntag            'KOR' => 'KO',
67893ccd686SRico Sonntag            'KWT' => 'KW',
67993ccd686SRico Sonntag            'LAO' => 'LA',
68093ccd686SRico Sonntag            'LBN' => 'LB',
68193ccd686SRico Sonntag            'LBR' => 'LR',
68293ccd686SRico Sonntag            'LBY' => 'LY',
68393ccd686SRico Sonntag            'LCA' => 'LC',
68493ccd686SRico Sonntag            'LIE' => 'LI',
68593ccd686SRico Sonntag            'LKA' => 'LK',
68693ccd686SRico Sonntag            'LSO' => 'LS',
68793ccd686SRico Sonntag            'LTU' => 'LT',
68893ccd686SRico Sonntag            'LUX' => 'LU',
68993ccd686SRico Sonntag            'LVA' => 'LV',
69093ccd686SRico Sonntag            'MAC' => 'MO',
69193ccd686SRico Sonntag            'MAR' => 'MA',
69293ccd686SRico Sonntag            'MCO' => 'MC',
69393ccd686SRico Sonntag            'MDA' => 'MD',
69493ccd686SRico Sonntag            'MDG' => 'MG',
69593ccd686SRico Sonntag            'MDV' => 'MV',
69693ccd686SRico Sonntag            'MEX' => 'MX',
69793ccd686SRico Sonntag            'MHL' => 'MH',
69893ccd686SRico Sonntag            'MKD' => 'MK',
69993ccd686SRico Sonntag            'MLI' => 'ML',
70093ccd686SRico Sonntag            'MLT' => 'MT',
70193ccd686SRico Sonntag            'MMR' => 'MM',
70293ccd686SRico Sonntag            'MNG' => 'MN',
70393ccd686SRico Sonntag            'MNP' => 'MP',
70493ccd686SRico Sonntag            'MNT' => 'ME',
70593ccd686SRico Sonntag            'MOZ' => 'MZ',
70693ccd686SRico Sonntag            'MRT' => 'MR',
70793ccd686SRico Sonntag            'MSR' => 'MS',
70893ccd686SRico Sonntag            'MTQ' => 'MQ',
70993ccd686SRico Sonntag            'MUS' => 'MU',
71093ccd686SRico Sonntag            'MWI' => 'MW',
71193ccd686SRico Sonntag            'MYS' => 'MY',
71293ccd686SRico Sonntag            'MYT' => 'YT',
71393ccd686SRico Sonntag            'NAM' => 'NA',
71493ccd686SRico Sonntag            'NCL' => 'NC',
71593ccd686SRico Sonntag            'NER' => 'NE',
71693ccd686SRico Sonntag            'NFK' => 'NF',
71793ccd686SRico Sonntag            'NGA' => 'NG',
71893ccd686SRico Sonntag            'NIC' => 'NI',
71993ccd686SRico Sonntag            'NIR' => 'GB',
72093ccd686SRico Sonntag            'NIU' => 'NU',
72193ccd686SRico Sonntag            'NLD' => 'NL',
72293ccd686SRico Sonntag            'NOR' => 'NO',
72393ccd686SRico Sonntag            'NPL' => 'NP',
72493ccd686SRico Sonntag            'NRU' => 'NR',
72593ccd686SRico Sonntag            'NZL' => 'NZ',
72693ccd686SRico Sonntag            'OMN' => 'OM',
72793ccd686SRico Sonntag            'PAK' => 'PK',
72893ccd686SRico Sonntag            'PAN' => 'PA',
72993ccd686SRico Sonntag            'PCN' => 'PN',
73093ccd686SRico Sonntag            'PER' => 'PE',
73193ccd686SRico Sonntag            'PHL' => 'PH',
73293ccd686SRico Sonntag            'PLW' => 'PW',
73393ccd686SRico Sonntag            'PNG' => 'PG',
73493ccd686SRico Sonntag            'POL' => 'PL',
73593ccd686SRico Sonntag            'PRI' => 'PR',
73693ccd686SRico Sonntag            'PRK' => 'KP',
73707c1a3baSGreg Roach            'PRT' => 'PT',
73893ccd686SRico Sonntag            'PRY' => 'PY',
73993ccd686SRico Sonntag            'PSE' => 'PS',
74093ccd686SRico Sonntag            'PYF' => 'PF',
74193ccd686SRico Sonntag            'QAT' => 'QA',
74293ccd686SRico Sonntag            'REU' => 'RE',
74393ccd686SRico Sonntag            'ROM' => 'RO',
74493ccd686SRico Sonntag            'RUS' => 'RU',
74593ccd686SRico Sonntag            'RWA' => 'RW',
74693ccd686SRico Sonntag            'SAU' => 'SA',
74793ccd686SRico Sonntag            'SCT' => 'GB',
74893ccd686SRico Sonntag            'SDN' => 'SD',
74993ccd686SRico Sonntag            'SEN' => 'SN',
75093ccd686SRico Sonntag            'SER' => 'RS',
75193ccd686SRico Sonntag            'SGP' => 'SG',
75293ccd686SRico Sonntag            'SGS' => 'GS',
75393ccd686SRico Sonntag            'SHN' => 'SH',
75493ccd686SRico Sonntag            'SJM' => 'SJ',
75593ccd686SRico Sonntag            'SLB' => 'SB',
75693ccd686SRico Sonntag            'SLE' => 'SL',
75793ccd686SRico Sonntag            'SLV' => 'SV',
75893ccd686SRico Sonntag            'SMR' => 'SM',
75993ccd686SRico Sonntag            'SOM' => 'SO',
76093ccd686SRico Sonntag            'SPM' => 'PM',
76193ccd686SRico Sonntag            'STP' => 'ST',
76293ccd686SRico Sonntag            'SUR' => 'SR',
76393ccd686SRico Sonntag            'SVK' => 'SK',
76493ccd686SRico Sonntag            'SVN' => 'SI',
76593ccd686SRico Sonntag            'SWE' => 'SE',
76693ccd686SRico Sonntag            'SWZ' => 'SZ',
76793ccd686SRico Sonntag            'SYC' => 'SC',
76893ccd686SRico Sonntag            'SYR' => 'SY',
76993ccd686SRico Sonntag            'TCA' => 'TC',
77093ccd686SRico Sonntag            'TCD' => 'TD',
77193ccd686SRico Sonntag            'TGO' => 'TG',
77293ccd686SRico Sonntag            'THA' => 'TH',
77393ccd686SRico Sonntag            'TJK' => 'TJ',
77493ccd686SRico Sonntag            'TKL' => 'TK',
77593ccd686SRico Sonntag            'TKM' => 'TM',
77693ccd686SRico Sonntag            'TLS' => 'TL',
77793ccd686SRico Sonntag            'TON' => 'TO',
77893ccd686SRico Sonntag            'TTO' => 'TT',
77993ccd686SRico Sonntag            'TUN' => 'TN',
78093ccd686SRico Sonntag            'TUR' => 'TR',
78193ccd686SRico Sonntag            'TUV' => 'TV',
78293ccd686SRico Sonntag            'TWN' => 'TW',
78393ccd686SRico Sonntag            'TZA' => 'TZ',
78493ccd686SRico Sonntag            'UGA' => 'UG',
78593ccd686SRico Sonntag            'UKR' => 'UA',
78693ccd686SRico Sonntag            'UMI' => 'UM',
78793ccd686SRico Sonntag            'URY' => 'UY',
78893ccd686SRico Sonntag            'USA' => 'US',
78993ccd686SRico Sonntag            'UZB' => 'UZ',
79093ccd686SRico Sonntag            'VAT' => 'VA',
79193ccd686SRico Sonntag            'VCT' => 'VC',
79293ccd686SRico Sonntag            'VEN' => 'VE',
79393ccd686SRico Sonntag            'VGB' => 'VG',
79493ccd686SRico Sonntag            'VIR' => 'VI',
79593ccd686SRico Sonntag            'VNM' => 'VN',
79693ccd686SRico Sonntag            'VUT' => 'VU',
79793ccd686SRico Sonntag            'WLF' => 'WF',
79893ccd686SRico Sonntag            'WLS' => 'GB',
79993ccd686SRico Sonntag            'WSM' => 'WS',
80093ccd686SRico Sonntag            'YEM' => 'YE',
80193ccd686SRico Sonntag            'ZAF' => 'ZA',
80293ccd686SRico Sonntag            'ZMB' => 'ZM',
80393ccd686SRico Sonntag            'ZWE' => 'ZW',
80493ccd686SRico Sonntag        ];
80593ccd686SRico Sonntag    }
80693ccd686SRico Sonntag
80793ccd686SRico Sonntag    /**
80893ccd686SRico Sonntag     * Returns the translated country name based on the given two letter country code.
80993ccd686SRico Sonntag     *
81093ccd686SRico Sonntag     * @param string $twoLetterCode The two letter country code
81193ccd686SRico Sonntag     *
81293ccd686SRico Sonntag     * @return string
81393ccd686SRico Sonntag     */
81493ccd686SRico Sonntag    public function mapTwoLetterToName(string $twoLetterCode): string
81593ccd686SRico Sonntag    {
81693ccd686SRico Sonntag        $threeLetterCode = array_search($twoLetterCode, $this->iso3166(), true);
81793ccd686SRico Sonntag        $threeLetterCode = $threeLetterCode ?: '???';
81893ccd686SRico Sonntag
81993ccd686SRico Sonntag        return $this->getAllCountries()[$threeLetterCode];
82093ccd686SRico Sonntag    }
82193ccd686SRico Sonntag}
822