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

View File

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

View File

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

View File

@ -13,13 +13,13 @@ includes: [compareArray.js]
var weirdCases = var weirdCases =
[ [
"x-u-foo", {locale: "x-u-foo", canonical: "und-x-u-foo"},
"en-x-u-foo", {locale: "en-x-u-foo"},
"en-a-bar-x-u-foo", {locale: "en-a-bar-x-u-foo"},
"en-x-u-foo-a-bar", {locale: "en-x-u-foo-a-bar"},
"en-a-bar-u-baz-x-u-foo", {locale: "en-a-bar-u-baz-x-u-foo"},
]; ];
weirdCases.forEach(function (weird) { weirdCases.forEach(function ({locale, canonical = locale}) {
assert(compareArray(Intl.getCanonicalLocales(weird), [weird])); 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-DE", "de"],
"DE-de": ["de-DE", "de"], "DE-de": ["de-DE", "de"],
"cmn": ["cmn"], "cmn": ["zh"],
"CMN-hANS": ["cmn-Hans", "cmn"], "CMN-hANS": ["zh-Hans", "zh"],
"cmn-hans-cn": ["cmn-Hans-CN", "cmn-Hans", "cmn"], "cmn-hans-cn": ["zh-Hans-CN", "zh-Hans", "zh"],
"es-419": ["es-419", "es"], "es-419": ["es-419", "es"],
"es-419-u-nu-latn": ["es-419-u-nu-latn", "es-419", "es", "es-u-nu-latn"], "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 // -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"], "de-gregory-u-ca-gregory": ["de-gregory-u-ca-gregory", "de-gregory", "de-u-ca-gregory", "de"],
"no-nyn": ["nn"], "no-nyn": ["nn"],
"i-klingon": ["tlh"], "i-klingon": ["tlh"],