[Intl] Full alpha3 language support
This commit is contained in:
parent
0bdf10a886
commit
29aee2ddf2
@ -162,15 +162,12 @@ class LanguageDataGenerator extends AbstractDataGenerator
|
||||
|
||||
sort($this->languageCodes);
|
||||
|
||||
$alpha2ToAlpha3 = $this->generateAlpha2ToAlpha3Mapping($metadataBundle);
|
||||
$alpha3ToAlpha2 = array_flip($alpha2ToAlpha3);
|
||||
asort($alpha3ToAlpha2);
|
||||
|
||||
return [
|
||||
'Version' => $rootBundle['Version'],
|
||||
'Languages' => $this->languageCodes,
|
||||
'Alpha2ToAlpha3' => $alpha2ToAlpha3,
|
||||
'Alpha3ToAlpha2' => $alpha3ToAlpha2,
|
||||
'Alpha3Languages' => $this->generateAlpha3Codes($this->languageCodes, $metadataBundle),
|
||||
'Alpha2ToAlpha3' => $this->generateAlpha2ToAlpha3Mapping($metadataBundle),
|
||||
'Alpha3ToAlpha2' => $this->generateAlpha3ToAlpha2Mapping($metadataBundle),
|
||||
];
|
||||
}
|
||||
|
||||
@ -179,6 +176,23 @@ class LanguageDataGenerator extends AbstractDataGenerator
|
||||
return array_diff_key(iterator_to_array($localeBundle['Languages']), self::$blacklist);
|
||||
}
|
||||
|
||||
private function generateAlpha3Codes(array $languageCodes, ArrayAccessibleResourceBundle $metadataBundle): array
|
||||
{
|
||||
$alpha3Codes = array_flip(array_filter($languageCodes, static function (string $language): bool {
|
||||
return 3 === \strlen($language);
|
||||
}));
|
||||
|
||||
foreach ($metadataBundle['alias']['language'] as $alias => $data) {
|
||||
if (3 === \strlen($alias) && 'overlong' === $data['reason']) {
|
||||
$alpha3Codes[$alias] = true;
|
||||
}
|
||||
}
|
||||
|
||||
ksort($alpha3Codes);
|
||||
|
||||
return array_keys($alpha3Codes);
|
||||
}
|
||||
|
||||
private function generateAlpha2ToAlpha3Mapping(ArrayAccessibleResourceBundle $metadataBundle)
|
||||
{
|
||||
$aliases = iterator_to_array($metadataBundle['alias']['language']);
|
||||
@ -213,4 +227,20 @@ class LanguageDataGenerator extends AbstractDataGenerator
|
||||
|
||||
return $alpha2ToAlpha3;
|
||||
}
|
||||
|
||||
private function generateAlpha3ToAlpha2Mapping(ArrayAccessibleResourceBundle $metadataBundle): array
|
||||
{
|
||||
$alpha3ToAlpha2 = [];
|
||||
|
||||
foreach ($metadataBundle['alias']['language'] as $alias => $data) {
|
||||
$language = $data['replacement'];
|
||||
if (2 === \strlen($language) && 3 === \strlen($alias) && 'overlong' === $data['reason']) {
|
||||
$alpha3ToAlpha2[$alias] = $language;
|
||||
}
|
||||
}
|
||||
|
||||
asort($alpha3ToAlpha2);
|
||||
|
||||
return $alpha3ToAlpha2;
|
||||
}
|
||||
}
|
||||
|
@ -98,7 +98,7 @@ final class Languages extends ResourceBundle
|
||||
*/
|
||||
public static function getAlpha3Codes(): array
|
||||
{
|
||||
return self::readEntry(['Alpha2ToAlpha3'], 'meta');
|
||||
return self::readEntry(['Alpha3Languages'], 'meta');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -111,7 +111,12 @@ final class Languages extends ResourceBundle
|
||||
|
||||
return true;
|
||||
} catch (MissingResourceException $e) {
|
||||
return false;
|
||||
static $cache;
|
||||
if (null === $cache) {
|
||||
$cache = array_flip(self::getAlpha3Codes());
|
||||
}
|
||||
|
||||
return isset($cache[$language]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -122,7 +127,15 @@ final class Languages extends ResourceBundle
|
||||
*/
|
||||
public static function getAlpha3Name(string $language, string $displayLocale = null): string
|
||||
{
|
||||
return self::getName(self::getAlpha2Code($language), $displayLocale);
|
||||
try {
|
||||
return self::getName(self::getAlpha2Code($language), $displayLocale);
|
||||
} catch (MissingResourceException $e) {
|
||||
if (3 === \strlen($language)) {
|
||||
return self::getName($language, $displayLocale);
|
||||
}
|
||||
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -137,6 +150,10 @@ final class Languages extends ResourceBundle
|
||||
$alpha2Names = self::getNames($displayLocale);
|
||||
$alpha3Names = [];
|
||||
foreach ($alpha2Names as $alpha2Code => $name) {
|
||||
if (3 === \strlen($alpha2Code)) {
|
||||
$alpha3Names[$alpha2Code] = $name;
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
$alpha3Names[self::getAlpha3Code($alpha2Code)] = $name;
|
||||
} catch (MissingResourceException $e) {
|
||||
|
@ -618,6 +618,605 @@
|
||||
"zun",
|
||||
"zza"
|
||||
],
|
||||
"Alpha3Languages": [
|
||||
"aar",
|
||||
"abk",
|
||||
"ace",
|
||||
"ach",
|
||||
"ada",
|
||||
"ady",
|
||||
"aeb",
|
||||
"afh",
|
||||
"afr",
|
||||
"agq",
|
||||
"ain",
|
||||
"aka",
|
||||
"akk",
|
||||
"akz",
|
||||
"ale",
|
||||
"aln",
|
||||
"alt",
|
||||
"amh",
|
||||
"ang",
|
||||
"anp",
|
||||
"ara",
|
||||
"arc",
|
||||
"arg",
|
||||
"arn",
|
||||
"aro",
|
||||
"arp",
|
||||
"arq",
|
||||
"ars",
|
||||
"arw",
|
||||
"ary",
|
||||
"arz",
|
||||
"asa",
|
||||
"ase",
|
||||
"asm",
|
||||
"ast",
|
||||
"ava",
|
||||
"ave",
|
||||
"avk",
|
||||
"awa",
|
||||
"aym",
|
||||
"aze",
|
||||
"bak",
|
||||
"bal",
|
||||
"bam",
|
||||
"ban",
|
||||
"bar",
|
||||
"bas",
|
||||
"bax",
|
||||
"bbc",
|
||||
"bbj",
|
||||
"bej",
|
||||
"bel",
|
||||
"bem",
|
||||
"ben",
|
||||
"bew",
|
||||
"bez",
|
||||
"bfd",
|
||||
"bfq",
|
||||
"bgn",
|
||||
"bho",
|
||||
"bih",
|
||||
"bik",
|
||||
"bin",
|
||||
"bis",
|
||||
"bjn",
|
||||
"bkm",
|
||||
"bla",
|
||||
"bod",
|
||||
"bos",
|
||||
"bpy",
|
||||
"bqi",
|
||||
"bra",
|
||||
"bre",
|
||||
"brh",
|
||||
"brx",
|
||||
"bss",
|
||||
"bua",
|
||||
"bug",
|
||||
"bul",
|
||||
"bum",
|
||||
"byn",
|
||||
"byv",
|
||||
"cad",
|
||||
"car",
|
||||
"cat",
|
||||
"cay",
|
||||
"cch",
|
||||
"ccp",
|
||||
"ceb",
|
||||
"ces",
|
||||
"cgg",
|
||||
"cha",
|
||||
"chb",
|
||||
"che",
|
||||
"chg",
|
||||
"chk",
|
||||
"chm",
|
||||
"chn",
|
||||
"cho",
|
||||
"chp",
|
||||
"chr",
|
||||
"chu",
|
||||
"chv",
|
||||
"chy",
|
||||
"ckb",
|
||||
"cop",
|
||||
"cor",
|
||||
"cos",
|
||||
"cps",
|
||||
"cre",
|
||||
"crh",
|
||||
"crs",
|
||||
"csb",
|
||||
"cym",
|
||||
"dak",
|
||||
"dan",
|
||||
"dar",
|
||||
"dav",
|
||||
"del",
|
||||
"den",
|
||||
"deu",
|
||||
"dgr",
|
||||
"din",
|
||||
"div",
|
||||
"dje",
|
||||
"doi",
|
||||
"dsb",
|
||||
"dtp",
|
||||
"dua",
|
||||
"dum",
|
||||
"dyo",
|
||||
"dyu",
|
||||
"dzg",
|
||||
"dzo",
|
||||
"ebu",
|
||||
"efi",
|
||||
"egl",
|
||||
"egy",
|
||||
"eka",
|
||||
"ell",
|
||||
"elx",
|
||||
"eng",
|
||||
"enm",
|
||||
"epo",
|
||||
"est",
|
||||
"esu",
|
||||
"eus",
|
||||
"ewe",
|
||||
"ewo",
|
||||
"ext",
|
||||
"fan",
|
||||
"fao",
|
||||
"fas",
|
||||
"fat",
|
||||
"fij",
|
||||
"fil",
|
||||
"fin",
|
||||
"fit",
|
||||
"fon",
|
||||
"fra",
|
||||
"frc",
|
||||
"frm",
|
||||
"fro",
|
||||
"frp",
|
||||
"frr",
|
||||
"frs",
|
||||
"fry",
|
||||
"ful",
|
||||
"fur",
|
||||
"gaa",
|
||||
"gag",
|
||||
"gan",
|
||||
"gay",
|
||||
"gba",
|
||||
"gbz",
|
||||
"gez",
|
||||
"gil",
|
||||
"gla",
|
||||
"gle",
|
||||
"glg",
|
||||
"glk",
|
||||
"glv",
|
||||
"gmh",
|
||||
"goh",
|
||||
"gom",
|
||||
"gon",
|
||||
"gor",
|
||||
"got",
|
||||
"grb",
|
||||
"grc",
|
||||
"grn",
|
||||
"gsw",
|
||||
"guc",
|
||||
"guj",
|
||||
"gur",
|
||||
"guz",
|
||||
"gwi",
|
||||
"hai",
|
||||
"hak",
|
||||
"hat",
|
||||
"hau",
|
||||
"haw",
|
||||
"hbs",
|
||||
"heb",
|
||||
"her",
|
||||
"hif",
|
||||
"hil",
|
||||
"hin",
|
||||
"hit",
|
||||
"hmn",
|
||||
"hmo",
|
||||
"hrv",
|
||||
"hsb",
|
||||
"hsn",
|
||||
"hun",
|
||||
"hup",
|
||||
"hye",
|
||||
"iba",
|
||||
"ibb",
|
||||
"ibo",
|
||||
"ido",
|
||||
"iii",
|
||||
"iku",
|
||||
"ile",
|
||||
"ilo",
|
||||
"ina",
|
||||
"ind",
|
||||
"inh",
|
||||
"ipk",
|
||||
"isl",
|
||||
"ita",
|
||||
"izh",
|
||||
"jam",
|
||||
"jav",
|
||||
"jbo",
|
||||
"jgo",
|
||||
"jmc",
|
||||
"jpn",
|
||||
"jpr",
|
||||
"jrb",
|
||||
"jut",
|
||||
"kaa",
|
||||
"kab",
|
||||
"kac",
|
||||
"kaj",
|
||||
"kal",
|
||||
"kam",
|
||||
"kan",
|
||||
"kas",
|
||||
"kat",
|
||||
"kau",
|
||||
"kaw",
|
||||
"kaz",
|
||||
"kbd",
|
||||
"kbl",
|
||||
"kcg",
|
||||
"kde",
|
||||
"kea",
|
||||
"ken",
|
||||
"kfo",
|
||||
"kgp",
|
||||
"kha",
|
||||
"khm",
|
||||
"kho",
|
||||
"khq",
|
||||
"khw",
|
||||
"kik",
|
||||
"kin",
|
||||
"kir",
|
||||
"kiu",
|
||||
"kkj",
|
||||
"kln",
|
||||
"kmb",
|
||||
"koi",
|
||||
"kok",
|
||||
"kom",
|
||||
"kon",
|
||||
"kor",
|
||||
"kos",
|
||||
"kpe",
|
||||
"krc",
|
||||
"kri",
|
||||
"krj",
|
||||
"krl",
|
||||
"kru",
|
||||
"ksb",
|
||||
"ksf",
|
||||
"ksh",
|
||||
"kua",
|
||||
"kum",
|
||||
"kur",
|
||||
"kut",
|
||||
"lad",
|
||||
"lag",
|
||||
"lah",
|
||||
"lam",
|
||||
"lao",
|
||||
"lat",
|
||||
"lav",
|
||||
"lez",
|
||||
"lfn",
|
||||
"lij",
|
||||
"lim",
|
||||
"lin",
|
||||
"lit",
|
||||
"liv",
|
||||
"lkt",
|
||||
"lmo",
|
||||
"lol",
|
||||
"lou",
|
||||
"loz",
|
||||
"lrc",
|
||||
"ltg",
|
||||
"ltz",
|
||||
"lua",
|
||||
"lub",
|
||||
"lug",
|
||||
"lui",
|
||||
"lun",
|
||||
"luo",
|
||||
"lus",
|
||||
"luy",
|
||||
"lzh",
|
||||
"lzz",
|
||||
"mad",
|
||||
"maf",
|
||||
"mag",
|
||||
"mah",
|
||||
"mai",
|
||||
"mak",
|
||||
"mal",
|
||||
"man",
|
||||
"mar",
|
||||
"mas",
|
||||
"mde",
|
||||
"mdf",
|
||||
"mdr",
|
||||
"men",
|
||||
"mer",
|
||||
"mfe",
|
||||
"mga",
|
||||
"mgh",
|
||||
"mgo",
|
||||
"mic",
|
||||
"min",
|
||||
"mkd",
|
||||
"mlg",
|
||||
"mlt",
|
||||
"mnc",
|
||||
"mni",
|
||||
"moh",
|
||||
"mol",
|
||||
"mon",
|
||||
"mos",
|
||||
"mri",
|
||||
"mrj",
|
||||
"msa",
|
||||
"mua",
|
||||
"mus",
|
||||
"mwl",
|
||||
"mwr",
|
||||
"mwv",
|
||||
"mya",
|
||||
"mye",
|
||||
"myv",
|
||||
"mzn",
|
||||
"nan",
|
||||
"nap",
|
||||
"naq",
|
||||
"nau",
|
||||
"nav",
|
||||
"nbl",
|
||||
"nde",
|
||||
"ndo",
|
||||
"nds",
|
||||
"nep",
|
||||
"new",
|
||||
"nia",
|
||||
"niu",
|
||||
"njo",
|
||||
"nld",
|
||||
"nmg",
|
||||
"nnh",
|
||||
"nno",
|
||||
"nob",
|
||||
"nog",
|
||||
"non",
|
||||
"nor",
|
||||
"nov",
|
||||
"nqo",
|
||||
"nso",
|
||||
"nus",
|
||||
"nwc",
|
||||
"nya",
|
||||
"nym",
|
||||
"nyn",
|
||||
"nyo",
|
||||
"nzi",
|
||||
"oci",
|
||||
"oji",
|
||||
"ori",
|
||||
"orm",
|
||||
"osa",
|
||||
"oss",
|
||||
"ota",
|
||||
"pag",
|
||||
"pal",
|
||||
"pam",
|
||||
"pan",
|
||||
"pap",
|
||||
"pau",
|
||||
"pcd",
|
||||
"pcm",
|
||||
"pdc",
|
||||
"pdt",
|
||||
"peo",
|
||||
"pfl",
|
||||
"phn",
|
||||
"pli",
|
||||
"pms",
|
||||
"pnt",
|
||||
"pol",
|
||||
"pon",
|
||||
"por",
|
||||
"prg",
|
||||
"pro",
|
||||
"prs",
|
||||
"pus",
|
||||
"quc",
|
||||
"que",
|
||||
"qug",
|
||||
"raj",
|
||||
"rap",
|
||||
"rar",
|
||||
"rgn",
|
||||
"rif",
|
||||
"rof",
|
||||
"roh",
|
||||
"rom",
|
||||
"ron",
|
||||
"rtm",
|
||||
"rue",
|
||||
"rug",
|
||||
"run",
|
||||
"rup",
|
||||
"rus",
|
||||
"rwk",
|
||||
"sad",
|
||||
"sag",
|
||||
"sah",
|
||||
"sam",
|
||||
"san",
|
||||
"saq",
|
||||
"sas",
|
||||
"sat",
|
||||
"saz",
|
||||
"sba",
|
||||
"sbp",
|
||||
"scn",
|
||||
"sco",
|
||||
"sdc",
|
||||
"sdh",
|
||||
"see",
|
||||
"seh",
|
||||
"sei",
|
||||
"sel",
|
||||
"ses",
|
||||
"sga",
|
||||
"sgs",
|
||||
"shi",
|
||||
"shn",
|
||||
"shu",
|
||||
"sid",
|
||||
"sin",
|
||||
"sli",
|
||||
"slk",
|
||||
"slv",
|
||||
"sly",
|
||||
"sma",
|
||||
"sme",
|
||||
"smj",
|
||||
"smn",
|
||||
"smo",
|
||||
"sms",
|
||||
"sna",
|
||||
"snd",
|
||||
"snk",
|
||||
"sog",
|
||||
"som",
|
||||
"sot",
|
||||
"spa",
|
||||
"sqi",
|
||||
"srd",
|
||||
"srn",
|
||||
"srp",
|
||||
"srr",
|
||||
"ssw",
|
||||
"ssy",
|
||||
"stq",
|
||||
"suk",
|
||||
"sun",
|
||||
"sus",
|
||||
"sux",
|
||||
"swa",
|
||||
"swb",
|
||||
"swc",
|
||||
"swe",
|
||||
"syc",
|
||||
"syr",
|
||||
"szl",
|
||||
"tah",
|
||||
"tam",
|
||||
"tat",
|
||||
"tcy",
|
||||
"tel",
|
||||
"tem",
|
||||
"teo",
|
||||
"ter",
|
||||
"tet",
|
||||
"tgk",
|
||||
"tgl",
|
||||
"tha",
|
||||
"tig",
|
||||
"tir",
|
||||
"tiv",
|
||||
"tkl",
|
||||
"tkr",
|
||||
"tlh",
|
||||
"tli",
|
||||
"tly",
|
||||
"tmh",
|
||||
"tog",
|
||||
"ton",
|
||||
"tpi",
|
||||
"tru",
|
||||
"trv",
|
||||
"tsd",
|
||||
"tsi",
|
||||
"tsn",
|
||||
"tso",
|
||||
"ttt",
|
||||
"tuk",
|
||||
"tum",
|
||||
"tur",
|
||||
"tvl",
|
||||
"twi",
|
||||
"twq",
|
||||
"tyv",
|
||||
"tzm",
|
||||
"udm",
|
||||
"uga",
|
||||
"uig",
|
||||
"ukr",
|
||||
"umb",
|
||||
"urd",
|
||||
"uzb",
|
||||
"vai",
|
||||
"vec",
|
||||
"ven",
|
||||
"vep",
|
||||
"vie",
|
||||
"vls",
|
||||
"vmf",
|
||||
"vol",
|
||||
"vot",
|
||||
"vro",
|
||||
"vun",
|
||||
"wae",
|
||||
"wal",
|
||||
"war",
|
||||
"was",
|
||||
"wbp",
|
||||
"wln",
|
||||
"wol",
|
||||
"wuu",
|
||||
"xal",
|
||||
"xho",
|
||||
"xmf",
|
||||
"xog",
|
||||
"yao",
|
||||
"yap",
|
||||
"yav",
|
||||
"ybb",
|
||||
"yid",
|
||||
"yor",
|
||||
"yrl",
|
||||
"yue",
|
||||
"zap",
|
||||
"zbl",
|
||||
"zea",
|
||||
"zen",
|
||||
"zgh",
|
||||
"zha",
|
||||
"zho",
|
||||
"zul",
|
||||
"zun",
|
||||
"zza"
|
||||
],
|
||||
"Alpha2ToAlpha3": {
|
||||
"aa": "aar",
|
||||
"ab": "abk",
|
||||
@ -806,6 +1405,7 @@
|
||||
"ave": "ae",
|
||||
"afr": "af",
|
||||
"aka": "ak",
|
||||
"twi": "ak",
|
||||
"amh": "am",
|
||||
"arg": "an",
|
||||
"ara": "ar",
|
||||
@ -912,6 +1512,7 @@
|
||||
"mya": "my",
|
||||
"nau": "na",
|
||||
"nob": "nb",
|
||||
"nor": "nb",
|
||||
"nde": "nd",
|
||||
"nep": "ne",
|
||||
"ndo": "ng",
|
||||
@ -933,6 +1534,7 @@
|
||||
"que": "qu",
|
||||
"roh": "rm",
|
||||
"run": "rn",
|
||||
"mol": "ro",
|
||||
"ron": "ro",
|
||||
"rus": "ru",
|
||||
"kin": "rw",
|
||||
|
@ -626,6 +626,7 @@ class CountriesTest extends ResourceBundleTestCase
|
||||
{
|
||||
$this->assertTrue(Countries::alpha3CodeExists('NOR'));
|
||||
$this->assertTrue(Countries::alpha3CodeExists('NLD'));
|
||||
$this->assertFalse(Countries::alpha3CodeExists('NL'));
|
||||
$this->assertFalse(Countries::alpha3CodeExists('NIO'));
|
||||
$this->assertFalse(Countries::alpha3CodeExists('ZZZ'));
|
||||
}
|
||||
|
@ -640,6 +640,606 @@ class LanguagesTest extends ResourceBundleTestCase
|
||||
'zza',
|
||||
];
|
||||
|
||||
private static $alpha3Codes = [
|
||||
'aar',
|
||||
'abk',
|
||||
'ace',
|
||||
'ach',
|
||||
'ada',
|
||||
'ady',
|
||||
'aeb',
|
||||
'afh',
|
||||
'afr',
|
||||
'agq',
|
||||
'ain',
|
||||
'aka',
|
||||
'akk',
|
||||
'akz',
|
||||
'ale',
|
||||
'aln',
|
||||
'alt',
|
||||
'amh',
|
||||
'ang',
|
||||
'anp',
|
||||
'ara',
|
||||
'arc',
|
||||
'arg',
|
||||
'arn',
|
||||
'aro',
|
||||
'arp',
|
||||
'arq',
|
||||
'ars',
|
||||
'arw',
|
||||
'ary',
|
||||
'arz',
|
||||
'asa',
|
||||
'ase',
|
||||
'asm',
|
||||
'ast',
|
||||
'ava',
|
||||
'ave',
|
||||
'avk',
|
||||
'awa',
|
||||
'aym',
|
||||
'aze',
|
||||
'bak',
|
||||
'bal',
|
||||
'bam',
|
||||
'ban',
|
||||
'bar',
|
||||
'bas',
|
||||
'bax',
|
||||
'bbc',
|
||||
'bbj',
|
||||
'bej',
|
||||
'bel',
|
||||
'bem',
|
||||
'ben',
|
||||
'bew',
|
||||
'bez',
|
||||
'bfd',
|
||||
'bfq',
|
||||
'bgn',
|
||||
'bho',
|
||||
'bih',
|
||||
'bik',
|
||||
'bin',
|
||||
'bis',
|
||||
'bjn',
|
||||
'bkm',
|
||||
'bla',
|
||||
'bod',
|
||||
'bos',
|
||||
'bpy',
|
||||
'bqi',
|
||||
'bra',
|
||||
'bre',
|
||||
'brh',
|
||||
'brx',
|
||||
'bss',
|
||||
'bua',
|
||||
'bug',
|
||||
'bul',
|
||||
'bum',
|
||||
'byn',
|
||||
'byv',
|
||||
'cad',
|
||||
'car',
|
||||
'cat',
|
||||
'cay',
|
||||
'cch',
|
||||
'ccp',
|
||||
'ceb',
|
||||
'ces',
|
||||
'cgg',
|
||||
'cha',
|
||||
'chb',
|
||||
'che',
|
||||
'chg',
|
||||
'chk',
|
||||
'chm',
|
||||
'chn',
|
||||
'cho',
|
||||
'chp',
|
||||
'chr',
|
||||
'chu',
|
||||
'chv',
|
||||
'chy',
|
||||
'ckb',
|
||||
'cop',
|
||||
'cor',
|
||||
'cos',
|
||||
'cps',
|
||||
'cre',
|
||||
'crh',
|
||||
'crs',
|
||||
'csb',
|
||||
'cym',
|
||||
'dak',
|
||||
'dan',
|
||||
'dar',
|
||||
'dav',
|
||||
'del',
|
||||
'den',
|
||||
'deu',
|
||||
'dgr',
|
||||
'din',
|
||||
'div',
|
||||
'dje',
|
||||
'doi',
|
||||
'dsb',
|
||||
'dtp',
|
||||
'dua',
|
||||
'dum',
|
||||
'dyo',
|
||||
'dyu',
|
||||
'dzg',
|
||||
'dzo',
|
||||
'ebu',
|
||||
'efi',
|
||||
'egl',
|
||||
'egy',
|
||||
'eka',
|
||||
'ell',
|
||||
'elx',
|
||||
'eng',
|
||||
'enm',
|
||||
'epo',
|
||||
'est',
|
||||
'esu',
|
||||
'eus',
|
||||
'ewe',
|
||||
'ewo',
|
||||
'ext',
|
||||
'fan',
|
||||
'fao',
|
||||
'fas',
|
||||
'fat',
|
||||
'fij',
|
||||
'fil',
|
||||
'fin',
|
||||
'fit',
|
||||
'fon',
|
||||
'fra',
|
||||
'frc',
|
||||
'frm',
|
||||
'fro',
|
||||
'frp',
|
||||
'frr',
|
||||
'frs',
|
||||
'fry',
|
||||
'ful',
|
||||
'fur',
|
||||
'gaa',
|
||||
'gag',
|
||||
'gan',
|
||||
'gay',
|
||||
'gba',
|
||||
'gbz',
|
||||
'gez',
|
||||
'gil',
|
||||
'gla',
|
||||
'gle',
|
||||
'glg',
|
||||
'glk',
|
||||
'glv',
|
||||
'gmh',
|
||||
'goh',
|
||||
'gom',
|
||||
'gon',
|
||||
'gor',
|
||||
'got',
|
||||
'grb',
|
||||
'grc',
|
||||
'grn',
|
||||
'gsw',
|
||||
'guc',
|
||||
'guj',
|
||||
'gur',
|
||||
'guz',
|
||||
'gwi',
|
||||
'hai',
|
||||
'hak',
|
||||
'hat',
|
||||
'hau',
|
||||
'haw',
|
||||
'hbs',
|
||||
'heb',
|
||||
'her',
|
||||
'hif',
|
||||
'hil',
|
||||
'hin',
|
||||
'hit',
|
||||
'hmn',
|
||||
'hmo',
|
||||
'hrv',
|
||||
'hsb',
|
||||
'hsn',
|
||||
'hun',
|
||||
'hup',
|
||||
'hye',
|
||||
'iba',
|
||||
'ibb',
|
||||
'ibo',
|
||||
'ido',
|
||||
'iii',
|
||||
'iku',
|
||||
'ile',
|
||||
'ilo',
|
||||
'ina',
|
||||
'ind',
|
||||
'inh',
|
||||
'ipk',
|
||||
'isl',
|
||||
'ita',
|
||||
'izh',
|
||||
'jam',
|
||||
'jav',
|
||||
'jbo',
|
||||
'jgo',
|
||||
'jmc',
|
||||
'jpn',
|
||||
'jpr',
|
||||
'jrb',
|
||||
'jut',
|
||||
'kaa',
|
||||
'kab',
|
||||
'kac',
|
||||
'kaj',
|
||||
'kal',
|
||||
'kam',
|
||||
'kan',
|
||||
'kas',
|
||||
'kat',
|
||||
'kau',
|
||||
'kaw',
|
||||
'kaz',
|
||||
'kbd',
|
||||
'kbl',
|
||||
'kcg',
|
||||
'kde',
|
||||
'kea',
|
||||
'ken',
|
||||
'kfo',
|
||||
'kgp',
|
||||
'kha',
|
||||
'khm',
|
||||
'kho',
|
||||
'khq',
|
||||
'khw',
|
||||
'kik',
|
||||
'kin',
|
||||
'kir',
|
||||
'kiu',
|
||||
'kkj',
|
||||
'kln',
|
||||
'kmb',
|
||||
'koi',
|
||||
'kok',
|
||||
'kom',
|
||||
'kon',
|
||||
'kor',
|
||||
'kos',
|
||||
'kpe',
|
||||
'krc',
|
||||
'kri',
|
||||
'krj',
|
||||
'krl',
|
||||
'kru',
|
||||
'ksb',
|
||||
'ksf',
|
||||
'ksh',
|
||||
'kua',
|
||||
'kum',
|
||||
'kur',
|
||||
'kut',
|
||||
'lad',
|
||||
'lag',
|
||||
'lah',
|
||||
'lam',
|
||||
'lao',
|
||||
'lat',
|
||||
'lav',
|
||||
'lez',
|
||||
'lfn',
|
||||
'lij',
|
||||
'lim',
|
||||
'lin',
|
||||
'lit',
|
||||
'liv',
|
||||
'lkt',
|
||||
'lmo',
|
||||
'lol',
|
||||
'lou',
|
||||
'loz',
|
||||
'lrc',
|
||||
'ltg',
|
||||
'ltz',
|
||||
'lua',
|
||||
'lub',
|
||||
'lug',
|
||||
'lui',
|
||||
'lun',
|
||||
'luo',
|
||||
'lus',
|
||||
'luy',
|
||||
'lzh',
|
||||
'lzz',
|
||||
'mad',
|
||||
'maf',
|
||||
'mag',
|
||||
'mah',
|
||||
'mai',
|
||||
'mak',
|
||||
'mal',
|
||||
'man',
|
||||
'mar',
|
||||
'mas',
|
||||
'mde',
|
||||
'mdf',
|
||||
'mdr',
|
||||
'men',
|
||||
'mer',
|
||||
'mfe',
|
||||
'mga',
|
||||
'mgh',
|
||||
'mgo',
|
||||
'mic',
|
||||
'min',
|
||||
'mkd',
|
||||
'mlg',
|
||||
'mlt',
|
||||
'mnc',
|
||||
'mni',
|
||||
'moh',
|
||||
'mol',
|
||||
'mon',
|
||||
'mos',
|
||||
'mri',
|
||||
'mrj',
|
||||
'msa',
|
||||
'mua',
|
||||
'mus',
|
||||
'mwl',
|
||||
'mwr',
|
||||
'mwv',
|
||||
'mya',
|
||||
'mye',
|
||||
'myv',
|
||||
'mzn',
|
||||
'nan',
|
||||
'nap',
|
||||
'naq',
|
||||
'nau',
|
||||
'nav',
|
||||
'nbl',
|
||||
'nde',
|
||||
'ndo',
|
||||
'nds',
|
||||
'nep',
|
||||
'new',
|
||||
'nia',
|
||||
'niu',
|
||||
'njo',
|
||||
'nld',
|
||||
'nmg',
|
||||
'nnh',
|
||||
'nno',
|
||||
'nob',
|
||||
'nog',
|
||||
'non',
|
||||
'nor',
|
||||
'nov',
|
||||
'nqo',
|
||||
'nso',
|
||||
'nus',
|
||||
'nwc',
|
||||
'nya',
|
||||
'nym',
|
||||
'nyn',
|
||||
'nyo',
|
||||
'nzi',
|
||||
'oci',
|
||||
'oji',
|
||||
'ori',
|
||||
'orm',
|
||||
'osa',
|
||||
'oss',
|
||||
'ota',
|
||||
'pag',
|
||||
'pal',
|
||||
'pam',
|
||||
'pan',
|
||||
'pap',
|
||||
'pau',
|
||||
'pcd',
|
||||
'pcm',
|
||||
'pdc',
|
||||
'pdt',
|
||||
'peo',
|
||||
'pfl',
|
||||
'phn',
|
||||
'pli',
|
||||
'pms',
|
||||
'pnt',
|
||||
'pol',
|
||||
'pon',
|
||||
'por',
|
||||
'prg',
|
||||
'pro',
|
||||
'prs',
|
||||
'pus',
|
||||
'quc',
|
||||
'que',
|
||||
'qug',
|
||||
'raj',
|
||||
'rap',
|
||||
'rar',
|
||||
'rgn',
|
||||
'rif',
|
||||
'rof',
|
||||
'roh',
|
||||
'rom',
|
||||
'ron',
|
||||
'rtm',
|
||||
'rue',
|
||||
'rug',
|
||||
'run',
|
||||
'rup',
|
||||
'rus',
|
||||
'rwk',
|
||||
'sad',
|
||||
'sag',
|
||||
'sah',
|
||||
'sam',
|
||||
'san',
|
||||
'saq',
|
||||
'sas',
|
||||
'sat',
|
||||
'saz',
|
||||
'sba',
|
||||
'sbp',
|
||||
'scn',
|
||||
'sco',
|
||||
'sdc',
|
||||
'sdh',
|
||||
'see',
|
||||
'seh',
|
||||
'sei',
|
||||
'sel',
|
||||
'ses',
|
||||
'sga',
|
||||
'sgs',
|
||||
'shi',
|
||||
'shn',
|
||||
'shu',
|
||||
'sid',
|
||||
'sin',
|
||||
'sli',
|
||||
'slk',
|
||||
'slv',
|
||||
'sly',
|
||||
'sma',
|
||||
'sme',
|
||||
'smj',
|
||||
'smn',
|
||||
'smo',
|
||||
'sms',
|
||||
'sna',
|
||||
'snd',
|
||||
'snk',
|
||||
'sog',
|
||||
'som',
|
||||
'sot',
|
||||
'spa',
|
||||
'sqi',
|
||||
'srd',
|
||||
'srn',
|
||||
'srp',
|
||||
'srr',
|
||||
'ssw',
|
||||
'ssy',
|
||||
'stq',
|
||||
'suk',
|
||||
'sun',
|
||||
'sus',
|
||||
'sux',
|
||||
'swa',
|
||||
'swb',
|
||||
'swc',
|
||||
'swe',
|
||||
'syc',
|
||||
'syr',
|
||||
'szl',
|
||||
'tah',
|
||||
'tam',
|
||||
'tat',
|
||||
'tcy',
|
||||
'tel',
|
||||
'tem',
|
||||
'teo',
|
||||
'ter',
|
||||
'tet',
|
||||
'tgk',
|
||||
'tgl',
|
||||
'tha',
|
||||
'tig',
|
||||
'tir',
|
||||
'tiv',
|
||||
'tkl',
|
||||
'tkr',
|
||||
'tlh',
|
||||
'tli',
|
||||
'tly',
|
||||
'tmh',
|
||||
'tog',
|
||||
'ton',
|
||||
'tpi',
|
||||
'tru',
|
||||
'trv',
|
||||
'tsd',
|
||||
'tsi',
|
||||
'tsn',
|
||||
'tso',
|
||||
'ttt',
|
||||
'tuk',
|
||||
'tum',
|
||||
'tur',
|
||||
'tvl',
|
||||
'twi',
|
||||
'twq',
|
||||
'tyv',
|
||||
'tzm',
|
||||
'udm',
|
||||
'uga',
|
||||
'uig',
|
||||
'ukr',
|
||||
'umb',
|
||||
'urd',
|
||||
'uzb',
|
||||
'vai',
|
||||
'vec',
|
||||
'ven',
|
||||
'vep',
|
||||
'vie',
|
||||
'vls',
|
||||
'vmf',
|
||||
'vol',
|
||||
'vot',
|
||||
'vro',
|
||||
'vun',
|
||||
'wae',
|
||||
'wal',
|
||||
'war',
|
||||
'was',
|
||||
'wbp',
|
||||
'wln',
|
||||
'wol',
|
||||
'wuu',
|
||||
'xal',
|
||||
'xho',
|
||||
'xmf',
|
||||
'xog',
|
||||
'yao',
|
||||
'yap',
|
||||
'yav',
|
||||
'ybb',
|
||||
'yid',
|
||||
'yor',
|
||||
'yrl',
|
||||
'yue',
|
||||
'zap',
|
||||
'zbl',
|
||||
'zea',
|
||||
'zen',
|
||||
'zgh',
|
||||
'zha',
|
||||
'zho',
|
||||
'zul',
|
||||
'zun',
|
||||
'zza',
|
||||
];
|
||||
|
||||
private static $alpha2ToAlpha3 = [
|
||||
'aa' => 'aar',
|
||||
'ab' => 'abk',
|
||||
@ -823,6 +1423,192 @@ class LanguagesTest extends ResourceBundleTestCase
|
||||
'zu' => 'zul',
|
||||
];
|
||||
|
||||
private static $alpha3ToAlpha2 = [
|
||||
'aar' => 'aa',
|
||||
'abk' => 'ab',
|
||||
'ave' => 'ae',
|
||||
'afr' => 'af',
|
||||
'aka' => 'ak',
|
||||
'twi' => 'ak',
|
||||
'amh' => 'am',
|
||||
'arg' => 'an',
|
||||
'ara' => 'ar',
|
||||
'asm' => 'as',
|
||||
'ava' => 'av',
|
||||
'aym' => 'ay',
|
||||
'aze' => 'az',
|
||||
'bak' => 'ba',
|
||||
'bel' => 'be',
|
||||
'bul' => 'bg',
|
||||
'bis' => 'bi',
|
||||
'bam' => 'bm',
|
||||
'ben' => 'bn',
|
||||
'bod' => 'bo',
|
||||
'bre' => 'br',
|
||||
'bos' => 'bs',
|
||||
'cat' => 'ca',
|
||||
'che' => 'ce',
|
||||
'cha' => 'ch',
|
||||
'cos' => 'co',
|
||||
'cre' => 'cr',
|
||||
'ces' => 'cs',
|
||||
'chu' => 'cu',
|
||||
'chv' => 'cv',
|
||||
'cym' => 'cy',
|
||||
'dan' => 'da',
|
||||
'deu' => 'de',
|
||||
'div' => 'dv',
|
||||
'dzo' => 'dz',
|
||||
'ewe' => 'ee',
|
||||
'ell' => 'el',
|
||||
'eng' => 'en',
|
||||
'epo' => 'eo',
|
||||
'spa' => 'es',
|
||||
'est' => 'et',
|
||||
'eus' => 'eu',
|
||||
'fas' => 'fa',
|
||||
'ful' => 'ff',
|
||||
'fin' => 'fi',
|
||||
'fij' => 'fj',
|
||||
'fao' => 'fo',
|
||||
'fra' => 'fr',
|
||||
'fry' => 'fy',
|
||||
'gle' => 'ga',
|
||||
'gla' => 'gd',
|
||||
'glg' => 'gl',
|
||||
'grn' => 'gn',
|
||||
'guj' => 'gu',
|
||||
'glv' => 'gv',
|
||||
'hau' => 'ha',
|
||||
'heb' => 'he',
|
||||
'hin' => 'hi',
|
||||
'hmo' => 'ho',
|
||||
'hrv' => 'hr',
|
||||
'hat' => 'ht',
|
||||
'hun' => 'hu',
|
||||
'hye' => 'hy',
|
||||
'her' => 'hz',
|
||||
'ina' => 'ia',
|
||||
'ind' => 'id',
|
||||
'ile' => 'ie',
|
||||
'ibo' => 'ig',
|
||||
'iii' => 'ii',
|
||||
'ipk' => 'ik',
|
||||
'ido' => 'io',
|
||||
'isl' => 'is',
|
||||
'ita' => 'it',
|
||||
'iku' => 'iu',
|
||||
'jpn' => 'ja',
|
||||
'jav' => 'jv',
|
||||
'kat' => 'ka',
|
||||
'kon' => 'kg',
|
||||
'kik' => 'ki',
|
||||
'kua' => 'kj',
|
||||
'kaz' => 'kk',
|
||||
'kal' => 'kl',
|
||||
'khm' => 'km',
|
||||
'kan' => 'kn',
|
||||
'kor' => 'ko',
|
||||
'kau' => 'kr',
|
||||
'kas' => 'ks',
|
||||
'kur' => 'ku',
|
||||
'kom' => 'kv',
|
||||
'cor' => 'kw',
|
||||
'kir' => 'ky',
|
||||
'lat' => 'la',
|
||||
'ltz' => 'lb',
|
||||
'lug' => 'lg',
|
||||
'lim' => 'li',
|
||||
'lin' => 'ln',
|
||||
'lao' => 'lo',
|
||||
'lit' => 'lt',
|
||||
'lub' => 'lu',
|
||||
'lav' => 'lv',
|
||||
'mlg' => 'mg',
|
||||
'mah' => 'mh',
|
||||
'mri' => 'mi',
|
||||
'mkd' => 'mk',
|
||||
'mal' => 'ml',
|
||||
'mon' => 'mn',
|
||||
'mar' => 'mr',
|
||||
'msa' => 'ms',
|
||||
'mlt' => 'mt',
|
||||
'mya' => 'my',
|
||||
'nau' => 'na',
|
||||
'nob' => 'nb',
|
||||
'nor' => 'nb',
|
||||
'nde' => 'nd',
|
||||
'nep' => 'ne',
|
||||
'ndo' => 'ng',
|
||||
'nld' => 'nl',
|
||||
'nno' => 'nn',
|
||||
'nbl' => 'nr',
|
||||
'nav' => 'nv',
|
||||
'nya' => 'ny',
|
||||
'oci' => 'oc',
|
||||
'oji' => 'oj',
|
||||
'orm' => 'om',
|
||||
'ori' => 'or',
|
||||
'oss' => 'os',
|
||||
'pan' => 'pa',
|
||||
'pli' => 'pi',
|
||||
'pol' => 'pl',
|
||||
'pus' => 'ps',
|
||||
'por' => 'pt',
|
||||
'que' => 'qu',
|
||||
'roh' => 'rm',
|
||||
'run' => 'rn',
|
||||
'mol' => 'ro',
|
||||
'ron' => 'ro',
|
||||
'rus' => 'ru',
|
||||
'kin' => 'rw',
|
||||
'san' => 'sa',
|
||||
'srd' => 'sc',
|
||||
'snd' => 'sd',
|
||||
'sme' => 'se',
|
||||
'sag' => 'sg',
|
||||
'sin' => 'si',
|
||||
'slk' => 'sk',
|
||||
'slv' => 'sl',
|
||||
'smo' => 'sm',
|
||||
'sna' => 'sn',
|
||||
'som' => 'so',
|
||||
'sqi' => 'sq',
|
||||
'srp' => 'sr',
|
||||
'ssw' => 'ss',
|
||||
'sot' => 'st',
|
||||
'sun' => 'su',
|
||||
'swe' => 'sv',
|
||||
'swa' => 'sw',
|
||||
'tam' => 'ta',
|
||||
'tel' => 'te',
|
||||
'tgk' => 'tg',
|
||||
'tha' => 'th',
|
||||
'tir' => 'ti',
|
||||
'tuk' => 'tk',
|
||||
'tsn' => 'tn',
|
||||
'ton' => 'to',
|
||||
'tur' => 'tr',
|
||||
'tso' => 'ts',
|
||||
'tat' => 'tt',
|
||||
'tah' => 'ty',
|
||||
'uig' => 'ug',
|
||||
'ukr' => 'uk',
|
||||
'urd' => 'ur',
|
||||
'uzb' => 'uz',
|
||||
'ven' => 've',
|
||||
'vie' => 'vi',
|
||||
'vol' => 'vo',
|
||||
'wln' => 'wa',
|
||||
'wol' => 'wo',
|
||||
'xho' => 'xh',
|
||||
'yid' => 'yi',
|
||||
'yor' => 'yo',
|
||||
'zha' => 'za',
|
||||
'zho' => 'zh',
|
||||
'zul' => 'zu',
|
||||
];
|
||||
|
||||
public function testGetLanguageCodes()
|
||||
{
|
||||
$this->assertEquals(self::$languages, Languages::getLanguageCodes());
|
||||
@ -833,12 +1619,19 @@ class LanguagesTest extends ResourceBundleTestCase
|
||||
*/
|
||||
public function testGetNames($displayLocale)
|
||||
{
|
||||
$languages = array_keys(Languages::getNames($displayLocale));
|
||||
$languages = array_keys($names = Languages::getNames($displayLocale));
|
||||
|
||||
sort($languages);
|
||||
|
||||
$this->assertNotEmpty($languages);
|
||||
$this->assertEmpty(array_diff($languages, self::$languages));
|
||||
|
||||
foreach (Languages::getAlpha3Names($displayLocale) as $alpha3Code => $name) {
|
||||
$alpha2Code = self::$alpha3ToAlpha2[$alpha3Code] ?? null;
|
||||
if (null !== $alpha2Code) {
|
||||
$this->assertSame($name, $names[$alpha2Code]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testGetNamesDefaultLocale()
|
||||
@ -929,20 +1722,51 @@ class LanguagesTest extends ResourceBundleTestCase
|
||||
|
||||
public function testGetAlpha3Codes()
|
||||
{
|
||||
$this->assertSame(self::$alpha2ToAlpha3, Languages::getAlpha3Codes());
|
||||
$this->assertSame(self::$alpha3Codes, Languages::getAlpha3Codes());
|
||||
}
|
||||
|
||||
public function testGetAlpha2Code()
|
||||
public function provideLanguagesWithAlpha2Equivalent()
|
||||
{
|
||||
foreach (self::$alpha2ToAlpha3 as $alpha2Code => $alpha3Code) {
|
||||
$this->assertSame($alpha2Code, Languages::getAlpha2Code($alpha3Code));
|
||||
}
|
||||
return array_map(
|
||||
function ($value) { return [$value]; },
|
||||
array_keys(self::$alpha3ToAlpha2)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider provideLanguagesWithAlpha2Equivalent
|
||||
*/
|
||||
public function testGetAlpha2Code($language)
|
||||
{
|
||||
$this->assertSame(self::$alpha3ToAlpha2[$language], Languages::getAlpha2Code($language));
|
||||
}
|
||||
|
||||
public function provideLanguagesWithoutAlpha2Equivalent()
|
||||
{
|
||||
return array_map(
|
||||
function ($value) { return [$value]; },
|
||||
array_diff(self::$alpha3Codes, array_keys(self::$alpha3ToAlpha2))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider provideLanguagesWithoutAlpha2Equivalent
|
||||
*/
|
||||
public function testGetAlpha2CodeFailsIfNoAlpha2Equivalent($language)
|
||||
{
|
||||
$this->expectException('Symfony\Component\Intl\Exception\MissingResourceException');
|
||||
Languages::getAlpha2Code($language);
|
||||
}
|
||||
|
||||
public function testAlpha3CodeExists()
|
||||
{
|
||||
$this->assertTrue(Languages::alpha3CodeExists('nob'));
|
||||
$this->assertTrue(Languages::alpha3CodeExists('nld'));
|
||||
$this->assertTrue(Languages::alpha3CodeExists('ace'));
|
||||
$this->assertTrue(Languages::alpha3CodeExists('nor'));
|
||||
$this->assertTrue(Languages::alpha3CodeExists('twi'));
|
||||
$this->assertTrue(Languages::alpha3CodeExists('tgl'));
|
||||
$this->assertFalse(Languages::alpha3CodeExists('en'));
|
||||
$this->assertFalse(Languages::alpha3CodeExists('foo'));
|
||||
$this->assertFalse(Languages::alpha3CodeExists('zzz'));
|
||||
}
|
||||
@ -952,21 +1776,18 @@ class LanguagesTest extends ResourceBundleTestCase
|
||||
*/
|
||||
public function testGetAlpha3Name($displayLocale)
|
||||
{
|
||||
$names = Languages::getNames($displayLocale);
|
||||
$names = Languages::getAlpha3Names($displayLocale);
|
||||
|
||||
foreach ($names as $alpha2 => $name) {
|
||||
$alpha3 = self::$alpha2ToAlpha3[$alpha2] ?? false;
|
||||
if ($alpha3) {
|
||||
$this->assertSame($name, Languages::getAlpha3Name($alpha3, $displayLocale));
|
||||
}
|
||||
foreach ($names as $language => $name) {
|
||||
$this->assertSame($name, Languages::getAlpha3Name($language, $displayLocale));
|
||||
}
|
||||
}
|
||||
|
||||
public function testGetAlpha3NameWithInvalidCountryCode()
|
||||
public function testGetAlpha3NameWithInvalidLanguageCode()
|
||||
{
|
||||
$this->expectException(MissingResourceException::class);
|
||||
|
||||
Languages::getAlpha3Name('ZZZ');
|
||||
Languages::getAlpha3Name('zzz');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -974,18 +1795,18 @@ class LanguagesTest extends ResourceBundleTestCase
|
||||
*/
|
||||
public function testGetAlpha3Names($displayLocale)
|
||||
{
|
||||
$names = Languages::getAlpha3Names($displayLocale);
|
||||
$languages = array_keys($names = Languages::getAlpha3Names($displayLocale));
|
||||
|
||||
$alpha3Codes = array_keys($names);
|
||||
sort($alpha3Codes);
|
||||
$this->assertSame(array_values(self::$alpha2ToAlpha3), $alpha3Codes);
|
||||
sort($languages);
|
||||
|
||||
$alpha2Names = Languages::getNames($displayLocale);
|
||||
foreach ($alpha2Names as $alpha2Code => $name) {
|
||||
if (!isset(self::$alpha2ToAlpha3[$alpha2Code])) {
|
||||
unset($alpha2Names[$alpha2Code]);
|
||||
$this->assertNotEmpty($languages);
|
||||
$this->assertEmpty(array_diff($languages, self::$alpha3Codes));
|
||||
|
||||
foreach (Languages::getNames($displayLocale) as $alpha2Code => $name) {
|
||||
$alpha3Code = self::$alpha2ToAlpha3[$alpha2Code] ?? (3 === \strlen($alpha2Code) ? $alpha2Code : null);
|
||||
if (null !== $alpha3Code) {
|
||||
$this->assertSame($name, $names[$alpha3Code]);
|
||||
}
|
||||
}
|
||||
$this->assertSame(array_values($alpha2Names), array_values($names));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user