Update language tag canonicalisation per UTS35

Main changes:
- "cmn" is now canonicalised to "zh"
- "und-x-" is prepended before grandfathered tags without modern replacements
- "und-" is prepended before privateuse-only language tags
This commit is contained in:
André Bargull 2019-03-11 10:33:35 -07:00
parent 51d1abadce
commit 94053978bc
5 changed files with 23 additions and 23 deletions

View File

@ -30,12 +30,12 @@ var canonicalizedTags = {
"de": "de",
"DE-de": "de-DE",
"de-DE": "de-DE",
"cmn": "cmn",
"CMN-hANS": "cmn-Hans",
"cmn-hans-cn": "cmn-Hans-CN",
"cmn": "zh",
"CMN-hANS": "zh-Hans",
"cmn-hans-cn": "zh-Hans-CN",
"es-419": "es-419",
"es-419-u-nu-latn": "es-419-u-nu-latn",
"cmn-hans-cn-u-ca-t-ca-x-t-u": "cmn-Hans-CN-t-ca-u-ca-x-t-u",
"cmn-hans-cn-u-ca-t-ca-x-t-u": "zh-Hans-CN-t-ca-u-ca-x-t-u",
"de-gregory-u-ca-gregory": "de-gregory-u-ca-gregory",
"no-nyn": "nn",
"i-klingon": "tlh",
@ -45,7 +45,7 @@ var canonicalizedTags = {
"zh-hak-CN": "hak-CN",
"sgn-ils": "ils",
"in": "id",
"x-foo": "x-foo",
"x-foo": "und-x-foo",
"sr-cyrl-ekavsk": "sr-Cyrl-ekavsk",
"en-ca-newfound": "en-CA-newfound",
"sl-rozaj-biske-1994": "sl-rozaj-biske-1994",

View File

@ -16,7 +16,7 @@ const regularGrandfathered = [
},
{
tag: "zh-guoyu",
canonical: "cmn",
canonical: "zh",
},
{
tag: "zh-hakka",

View File

@ -43,12 +43,12 @@ var canonicalizedTags = {
"en-gb-oed": "en-GB-oxendict",
"i-ami": "ami",
"i-bnn": "bnn",
"i-default": "i-default",
"i-enochian": "i-enochian",
"i-default": "und-x-i-default",
"i-enochian": "und-x-i-enochian",
"i-hak": "hak",
"i-klingon": "tlh",
"i-lux": "lb",
"i-mingo": "i-mingo",
"i-mingo": "und-x-i-mingo",
"i-navajo": "nv",
"i-pwn": "pwn",
"i-tao": "tao",
@ -60,12 +60,12 @@ var canonicalizedTags = {
// Regular tags.
"art-lojban": "jbo",
"cel-gaulish": "cel-gaulish",
"cel-gaulish": "und-x-cel-gaulish",
"no-bok": "nb",
"no-nyn": "nn",
"zh-guoyu": "cmn",
"zh-guoyu": "zh",
"zh-hakka": "hak",
"zh-min": "zh-min",
"zh-min": "und-x-zh-min",
"zh-min-nan": "nan",
"zh-xiang": "hsn",
};

View File

@ -13,13 +13,13 @@ includes: [compareArray.js]
var weirdCases =
[
"x-u-foo",
"en-x-u-foo",
"en-a-bar-x-u-foo",
"en-x-u-foo-a-bar",
"en-a-bar-u-baz-x-u-foo",
{locale: "x-u-foo", canonical: "und-x-u-foo"},
{locale: "en-x-u-foo"},
{locale: "en-a-bar-x-u-foo"},
{locale: "en-x-u-foo-a-bar"},
{locale: "en-a-bar-u-baz-x-u-foo"},
];
weirdCases.forEach(function (weird) {
assert(compareArray(Intl.getCanonicalLocales(weird), [weird]));
weirdCases.forEach(function ({locale, canonical = locale}) {
assert(compareArray(Intl.getCanonicalLocales(locale), [canonical]));
});

View File

@ -13,13 +13,13 @@ var canonicalizedTags = {
"de": ["de"],
"de-DE": ["de-DE", "de"],
"DE-de": ["de-DE", "de"],
"cmn": ["cmn"],
"CMN-hANS": ["cmn-Hans", "cmn"],
"cmn-hans-cn": ["cmn-Hans-CN", "cmn-Hans", "cmn"],
"cmn": ["zh"],
"CMN-hANS": ["zh-Hans", "zh"],
"cmn-hans-cn": ["zh-Hans-CN", "zh-Hans", "zh"],
"es-419": ["es-419", "es"],
"es-419-u-nu-latn": ["es-419-u-nu-latn", "es-419", "es", "es-u-nu-latn"],
// -u-ca is incomplete, so it will not show up in resolvedOptions().locale
"cmn-hans-cn-u-ca-t-ca-x-t-u": ["cmn-Hans-CN-t-ca-u-ca-x-t-u", "cmn-Hans-CN-t-ca-x-t-u", "cmn-Hans-CN-t-ca-x-t", "cmn-Hans-CN-t-ca", "cmn-Hans-CN", "cmn-Hans", "cmn"],
"cmn-hans-cn-u-ca-t-ca-x-t-u": ["zh-Hans-CN-t-ca-u-ca-x-t-u", "zh-Hans-CN-t-ca-x-t-u", "zh-Hans-CN-t-ca-x-t", "zh-Hans-CN-t-ca", "zh-Hans-CN", "zh-Hans", "zh"],
"de-gregory-u-ca-gregory": ["de-gregory-u-ca-gregory", "de-gregory", "de-u-ca-gregory", "de"],
"no-nyn": ["nn"],
"i-klingon": ["tlh"],