Bug 1738422 - Part 5: Update language tag mappings. r=platform-i18n-reviewers,dminor

Update language tag mappings by running `./make_intl_data.py langtags core.zip`.

The direct invocation `./make_intl_data.py langtags` doesn't work, because
"https://unicode.org/Public/cldr/40/core.zip" was incorrectly generated and
contains another "core.zip" file within "core.zip".

Depends on D129926

Differential Revision: https://phabricator.services.mozilla.com/D129927
This commit is contained in:
André Bargull 2021-11-16 17:02:55 +00:00
Родитель 365533a053
Коммит 1c1c5bd5f9
2 изменённых файлов: 210 добавлений и 185 удалений

Просмотреть файл

@ -1,6 +1,6 @@
// Generated by make_intl_data.py. DO NOT EDIT.
// Version: CLDR-39
// URL: https://unicode.org/Public/cldr/39/core.zip
// Version: CLDR-40
// URL: https://unicode.org/Public/cldr/40/core.zip
#include "mozilla/Assertions.h"
#include "mozilla/Span.h"
@ -99,8 +99,8 @@ static bool IsCanonicallyCasedTransformType(mozilla::Span<const char> type) {
#endif
// Mappings from language subtags to preferred values.
// Derived from CLDR Supplemental Data, version 39.
// https://unicode.org/Public/cldr/39/core.zip
// Derived from CLDR Supplemental Data, version 40.
// https://unicode.org/Public/cldr/40/core.zip
bool mozilla::intl::Locale::languageMapping(LanguageSubtag& language) {
MOZ_ASSERT(IsStructurallyValidLanguageTag(language.span()));
MOZ_ASSERT(IsCanonicallyCasedLanguageTag(language.span()));
@ -121,91 +121,91 @@ bool mozilla::intl::Locale::languageMapping(LanguageSubtag& language) {
}
if (language.length() == 3) {
static const char languages[401][4] = {
static const char languages[404][4] = {
"aam", "aar", "abk", "adp", "afr", "agp", "ais", "aju", "aka", "alb",
"als", "amh", "ara", "arb", "arg", "arm", "asd", "asm", "aue", "ava",
"ave", "aym", "ayr", "ayx", "aze", "azj", "bak", "bam", "baq", "baz",
"bcc", "bcl", "bel", "ben", "bgm", "bhk", "bih", "bis", "bjd", "bjq",
"bkb", "bod", "bos", "bre", "btb", "bul", "bur", "bxk", "bxr", "cat",
"ccq", "ces", "cha", "che", "chi", "chu", "chv", "cjr", "cka", "cld",
"cmk", "cmn", "cor", "cos", "coy", "cqu", "cre", "cwd", "cym", "cze",
"daf", "dan", "dap", "deu", "dgo", "dhd", "dik", "diq", "dit", "div",
"djl", "dkl", "drh", "drr", "dud", "duj", "dut", "dwl", "dzo", "ekk",
"ell", "elp", "emk", "eng", "epo", "esk", "est", "eus", "ewe", "fao",
"fas", "fat", "fij", "fin", "fra", "fre", "fry", "fuc", "ful", "gav",
"gaz", "gbc", "gbo", "geo", "ger", "gfx", "ggn", "ggo", "ggr", "gio",
"gla", "gle", "glg", "gli", "glv", "gno", "gre", "grn", "gti", "gug",
"guj", "guv", "gya", "hat", "hau", "hdn", "hea", "heb", "her", "him",
"hin", "hmo", "hrr", "hrv", "hun", "hye", "ibi", "ibo", "ice", "ido",
"iii", "ike", "iku", "ile", "ill", "ilw", "ina", "ind", "ipk", "isl",
"ita", "izi", "jar", "jav", "jeg", "jpn", "kal", "kan", "kas", "kat",
"kau", "kaz", "kdv", "kgc", "kgd", "kgh", "khk", "khm", "kik", "kin",
"kir", "kmr", "knc", "kng", "knn", "koj", "kom", "kon", "kor", "kpp",
"kpv", "krm", "ktr", "kua", "kur", "kvs", "kwq", "kxe", "kxl", "kzh",
"kzj", "kzt", "lao", "lat", "lav", "lbk", "leg", "lii", "lim", "lin",
"lit", "llo", "lmm", "ltz", "lub", "lug", "lvs", "mac", "mah", "mal",
"mao", "mar", "may", "meg", "mgx", "mhr", "mkd", "mlg", "mlt", "mnk",
"mnt", "mof", "mol", "mon", "mri", "msa", "mst", "mup", "mwd", "mwj",
"mya", "myd", "myt", "nad", "nau", "nav", "nbf", "nbl", "nbx", "ncp",
"nde", "ndo", "nep", "nld", "nln", "nlr", "nno", "nns", "nnx", "nob",
"noo", "nor", "npi", "nts", "nxu", "nya", "oci", "ojg", "oji", "ori",
"orm", "ory", "oss", "oun", "pan", "pbu", "pcr", "per", "pes", "pli",
"plt", "pmc", "pmu", "pnb", "pol", "por", "ppa", "ppr", "pry", "pus",
"puz", "que", "quz", "rmr", "rmy", "roh", "ron", "rum", "run", "rus",
"sag", "san", "sap", "sca", "scc", "scr", "sgl", "sin", "skk", "slk",
"slo", "slv", "sme", "smo", "sna", "snd", "som", "sot", "spa", "spy",
"sqi", "src", "srd", "srp", "ssw", "sul", "sum", "sun", "swa", "swe",
"swh", "tah", "tam", "tat", "tdu", "tel", "tgg", "tgk", "tgl", "tha",
"thc", "thw", "thx", "tib", "tid", "tie", "tir", "tkk", "tlw", "tmp",
"tne", "ton", "tsf", "tsn", "tso", "ttq", "tuk", "tur", "twi", "uig",
"ukr", "umu", "unp", "uok", "urd", "uzb", "uzn", "ven", "vie", "vol",
"wel", "wgw", "wit", "wiw", "wln", "wol", "xba", "xho", "xia", "xkh",
"xpe", "xrq", "xsj", "xsl", "ybd", "ydd", "yen", "yid", "yiy", "yma",
"ymt", "yor", "yos", "yuu", "zai", "zha", "zho", "zir", "zsm", "zul",
"zyb",
"bcc", "bcl", "bel", "ben", "bgm", "bhk", "bic", "bih", "bis", "bjd",
"bjq", "bkb", "blg", "bod", "bos", "bre", "btb", "bul", "bur", "bxk",
"bxr", "cat", "ccq", "ces", "cha", "che", "chi", "chu", "chv", "cjr",
"cka", "cld", "cmk", "cmn", "cor", "cos", "coy", "cqu", "cre", "cwd",
"cym", "cze", "daf", "dan", "dap", "deu", "dgo", "dhd", "dik", "diq",
"dit", "div", "djl", "dkl", "drh", "drr", "dud", "duj", "dut", "dwl",
"dzo", "ekk", "ell", "elp", "emk", "eng", "epo", "esk", "est", "eus",
"ewe", "fao", "fas", "fat", "fij", "fin", "fra", "fre", "fry", "fuc",
"ful", "gav", "gaz", "gbc", "gbo", "geo", "ger", "gfx", "ggn", "ggo",
"ggr", "gio", "gla", "gle", "glg", "gli", "glv", "gno", "gre", "grn",
"gti", "gug", "guj", "guv", "gya", "hat", "hau", "hdn", "hea", "heb",
"her", "him", "hin", "hmo", "hrr", "hrv", "hun", "hye", "ibi", "ibo",
"ice", "ido", "iii", "ike", "iku", "ile", "ill", "ilw", "ina", "ind",
"ipk", "isl", "ita", "izi", "jar", "jav", "jeg", "jpn", "kal", "kan",
"kas", "kat", "kau", "kaz", "kdv", "kgc", "kgd", "kgh", "khk", "khm",
"kik", "kin", "kir", "kmr", "knc", "kng", "knn", "koj", "kom", "kon",
"kor", "kpp", "kpv", "krm", "ktr", "kua", "kur", "kvs", "kwq", "kxe",
"kxl", "kzh", "kzj", "kzt", "lao", "lat", "lav", "lbk", "leg", "lii",
"lim", "lin", "lit", "llo", "lmm", "ltz", "lub", "lug", "lvs", "mac",
"mah", "mal", "mao", "mar", "may", "meg", "mgx", "mhr", "mkd", "mlg",
"mlt", "mnk", "mnt", "mof", "mol", "mon", "mri", "msa", "mst", "mup",
"mwd", "mwj", "mya", "myd", "myt", "nad", "nau", "nav", "nbf", "nbl",
"nbx", "ncp", "nde", "ndo", "nep", "nld", "nln", "nlr", "nno", "nns",
"nnx", "nob", "noo", "nor", "npi", "nts", "nxu", "nya", "oci", "ojg",
"oji", "ori", "orm", "ory", "oss", "oun", "pan", "pat", "pbu", "pcr",
"per", "pes", "pli", "plt", "pmc", "pmu", "pnb", "pol", "por", "ppa",
"ppr", "pry", "pus", "puz", "que", "quz", "rmr", "rmy", "roh", "ron",
"rum", "run", "rus", "sag", "san", "sap", "sca", "scc", "scr", "sgl",
"sin", "skk", "slk", "slo", "slv", "sme", "smo", "sna", "snd", "som",
"sot", "spa", "spy", "sqi", "src", "srd", "srp", "ssw", "sul", "sum",
"sun", "swa", "swe", "swh", "tah", "tam", "tat", "tdu", "tel", "tgg",
"tgk", "tgl", "tha", "thc", "thw", "thx", "tib", "tid", "tie", "tir",
"tkk", "tlw", "tmp", "tne", "ton", "tsf", "tsn", "tso", "ttq", "tuk",
"tur", "twi", "uig", "ukr", "umu", "unp", "uok", "urd", "uzb", "uzn",
"ven", "vie", "vol", "wel", "wgw", "wit", "wiw", "wln", "wol", "xba",
"xho", "xia", "xkh", "xpe", "xrq", "xsj", "xsl", "ybd", "ydd", "yen",
"yid", "yiy", "yma", "ymt", "yor", "yos", "yuu", "zai", "zha", "zho",
"zir", "zsm", "zul", "zyb",
};
static const char* aliases[401] = {
static const char* aliases[404] = {
"aas", "aa", "ab", "dz", "af", "apf", "ami", "jrb", "ak", "sq",
"sq", "am", "ar", "ar", "an", "hy", "snz", "as", "ktz", "av",
"ae", "ay", "ay", "nun", "az", "az", "ba", "bm", "eu", "nvo",
"bal", "bik", "be", "bn", "bcg", "fbl", "bho", "bi", "drl", "bzc",
"ebk", "bo", "bs", "br", "beb", "bg", "my", "luy", "bua", "ca",
"rki", "cs", "ch", "ce", "zh", "cu", "cv", "mom", "cmr", "syr",
"xch", "zh", "kw", "co", "pij", "quh", "cr", "cr", "cy", "cs",
"dnj", "da", "njz", "de", "doi", "mwr", "din", "zza", "dif", "dv",
"dze", "aqd", "mn", "kzk", "uth", "dwu", "nl", "dbt", "dz", "et",
"el", "amq", "man", "en", "eo", "ik", "et", "eu", "ee", "fo",
"fa", "ak", "fj", "fi", "fr", "fr", "fy", "ff", "ff", "dev",
"om", "wny", "grb", "ka", "de", "vaj", "gvr", "esg", "gtu", "aou",
"gd", "ga", "gl", "kzk", "gv", "gon", "el", "gn", "nyc", "gn",
"gu", "duz", "gba", "ht", "ha", "hai", "hmn", "he", "hz", "srx",
"hi", "ho", "jal", "hr", "hu", "hy", "opa", "ig", "is", "io",
"ii", "iu", "iu", "ie", "ilm", "gal", "ia", "id", "ik", "is",
"it", "eza", "jgk", "jv", "oyb", "ja", "kl", "kn", "ks", "ka",
"kr", "kk", "zkd", "tdf", "ncq", "kml", "mn", "km", "ki", "rw",
"ky", "ku", "kr", "kg", "kok", "kwv", "kv", "kg", "ko", "jkm",
"kv", "bmf", "dtp", "kj", "ku", "gdj", "yam", "tvd", "kru", "dgl",
"dtp", "dtp", "lo", "la", "lv", "bnc", "enl", "raq", "li", "ln",
"lt", "ngt", "rmx", "lb", "lu", "lg", "lv", "mk", "mh", "ml",
"mi", "mr", "ms", "cir", "jbk", "chm", "mk", "mg", "mt", "man",
"wnn", "xnt", "ro", "mn", "mi", "ms", "mry", "raj", "dmw", "vaj",
"my", "aog", "mry", "xny", "na", "nv", "nru", "nr", "ekc", "kdz",
"nd", "ng", "ne", "nl", "azd", "nrk", "nn", "nbr", "ngv", "nb",
"dtd", "no", "ne", "pij", "bpp", "ny", "oc", "oj", "oj", "or",
"om", "or", "os", "vaj", "pa", "ps", "adx", "fa", "fa", "pi",
"mg", "huw", "phr", "lah", "pl", "pt", "bfy", "lcq", "prt", "ps",
"pub", "qu", "qu", "emx", "rom", "rm", "ro", "ro", "rn", "ru",
"sg", "sa", "aqt", "hle", "sr", "hr", "isk", "si", "oyb", "sk",
"sk", "sl", "se", "sm", "sn", "sd", "so", "st", "es", "kln",
"sq", "sc", "sc", "sr", "ss", "sgd", "ulw", "su", "sw", "sv",
"sw", "ty", "ta", "tt", "dtp", "te", "bjp", "tg", "fil", "th",
"tpo", "ola", "oyb", "bo", "itd", "ras", "ti", "twm", "weo", "tyj",
"kak", "to", "taj", "tn", "ts", "tmh", "tk", "tr", "ak", "ug",
"uk", "del", "wro", "ema", "ur", "uz", "uz", "ve", "vi", "vo",
"cy", "wgb", "nol", "nwo", "wa", "wo", "cax", "xh", "acn", "waw",
"kpe", "dmw", "suj", "den", "rki", "yi", "ynq", "yi", "yrm", "lrr",
"mtm", "yo", "zom", "yug", "zap", "za", "zh", "scv", "ms", "zu",
"za",
"bal", "bik", "be", "bn", "bcg", "fbl", "bir", "bho", "bi", "drl",
"bzc", "ebk", "iba", "bo", "bs", "br", "beb", "bg", "my", "luy",
"bua", "ca", "rki", "cs", "ch", "ce", "zh", "cu", "cv", "mom",
"cmr", "syr", "xch", "zh", "kw", "co", "pij", "quh", "cr", "cr",
"cy", "cs", "dnj", "da", "njz", "de", "doi", "mwr", "din", "zza",
"dif", "dv", "dze", "aqd", "mn", "kzk", "uth", "dwu", "nl", "dbt",
"dz", "et", "el", "amq", "man", "en", "eo", "ik", "et", "eu",
"ee", "fo", "fa", "ak", "fj", "fi", "fr", "fr", "fy", "ff",
"ff", "dev", "om", "wny", "grb", "ka", "de", "vaj", "gvr", "esg",
"gtu", "aou", "gd", "ga", "gl", "kzk", "gv", "gon", "el", "gn",
"nyc", "gn", "gu", "duz", "gba", "ht", "ha", "hai", "hmn", "he",
"hz", "srx", "hi", "ho", "jal", "hr", "hu", "hy", "opa", "ig",
"is", "io", "ii", "iu", "iu", "ie", "ilm", "gal", "ia", "id",
"ik", "is", "it", "eza", "jgk", "jv", "oyb", "ja", "kl", "kn",
"ks", "ka", "kr", "kk", "zkd", "tdf", "ncq", "kml", "mn", "km",
"ki", "rw", "ky", "ku", "kr", "kg", "kok", "kwv", "kv", "kg",
"ko", "jkm", "kv", "bmf", "dtp", "kj", "ku", "gdj", "yam", "tvd",
"kru", "dgl", "dtp", "dtp", "lo", "la", "lv", "bnc", "enl", "raq",
"li", "ln", "lt", "ngt", "rmx", "lb", "lu", "lg", "lv", "mk",
"mh", "ml", "mi", "mr", "ms", "cir", "jbk", "chm", "mk", "mg",
"mt", "man", "wnn", "xnt", "ro", "mn", "mi", "ms", "mry", "raj",
"dmw", "vaj", "my", "aog", "mry", "xny", "na", "nv", "nru", "nr",
"ekc", "kdz", "nd", "ng", "ne", "nl", "azd", "nrk", "nn", "nbr",
"ngv", "nb", "dtd", "no", "ne", "pij", "bpp", "ny", "oc", "oj",
"oj", "or", "om", "or", "os", "vaj", "pa", "kxr", "ps", "adx",
"fa", "fa", "pi", "mg", "huw", "phr", "lah", "pl", "pt", "bfy",
"lcq", "prt", "ps", "pub", "qu", "qu", "emx", "rom", "rm", "ro",
"ro", "rn", "ru", "sg", "sa", "aqt", "hle", "sr", "hr", "isk",
"si", "oyb", "sk", "sk", "sl", "se", "sm", "sn", "sd", "so",
"st", "es", "kln", "sq", "sc", "sc", "sr", "ss", "sgd", "ulw",
"su", "sw", "sv", "sw", "ty", "ta", "tt", "dtp", "te", "bjp",
"tg", "fil", "th", "tpo", "ola", "oyb", "bo", "itd", "ras", "ti",
"twm", "weo", "tyj", "kak", "to", "taj", "tn", "ts", "tmh", "tk",
"tr", "ak", "ug", "uk", "del", "wro", "ema", "ur", "uz", "uz",
"ve", "vi", "vo", "cy", "wgb", "nol", "nwo", "wa", "wo", "cax",
"xh", "acn", "waw", "kpe", "dmw", "suj", "den", "rki", "yi", "ynq",
"yi", "yrm", "lrr", "mtm", "yo", "zom", "yug", "zap", "za", "zh",
"scv", "ms", "zu", "za",
};
if (const char* replacement = SearchReplacement(languages, aliases, language)) {
@ -219,8 +219,8 @@ bool mozilla::intl::Locale::languageMapping(LanguageSubtag& language) {
}
// Language subtags with complex mappings.
// Derived from CLDR Supplemental Data, version 39.
// https://unicode.org/Public/cldr/39/core.zip
// Derived from CLDR Supplemental Data, version 40.
// https://unicode.org/Public/cldr/40/core.zip
bool mozilla::intl::Locale::complexLanguageMapping(const LanguageSubtag& language) {
MOZ_ASSERT(IsStructurallyValidLanguageTag(language.span()));
MOZ_ASSERT(IsCanonicallyCasedLanguageTag(language.span()));
@ -241,8 +241,8 @@ bool mozilla::intl::Locale::complexLanguageMapping(const LanguageSubtag& languag
}
// Mappings from script subtags to preferred values.
// Derived from CLDR Supplemental Data, version 39.
// https://unicode.org/Public/cldr/39/core.zip
// Derived from CLDR Supplemental Data, version 40.
// https://unicode.org/Public/cldr/40/core.zip
bool mozilla::intl::Locale::scriptMapping(ScriptSubtag& script) {
MOZ_ASSERT(IsStructurallyValidScriptTag(script.span()));
MOZ_ASSERT(IsCanonicallyCasedScriptTag(script.span()));
@ -257,8 +257,8 @@ bool mozilla::intl::Locale::scriptMapping(ScriptSubtag& script) {
}
// Mappings from region subtags to preferred values.
// Derived from CLDR Supplemental Data, version 39.
// https://unicode.org/Public/cldr/39/core.zip
// Derived from CLDR Supplemental Data, version 40.
// https://unicode.org/Public/cldr/40/core.zip
bool mozilla::intl::Locale::regionMapping(RegionSubtag& region) {
MOZ_ASSERT(IsStructurallyValidRegionTag(region.span()));
MOZ_ASSERT(IsCanonicallyCasedRegionTag(region.span()));
@ -283,69 +283,69 @@ bool mozilla::intl::Locale::regionMapping(RegionSubtag& region) {
}
{
static const char regions[300][4] = {
static const char regions[299][4] = {
"004", "008", "010", "012", "016", "020", "024", "028", "031", "032",
"036", "040", "044", "048", "050", "051", "052", "056", "060", "062",
"064", "068", "070", "072", "074", "076", "084", "086", "090", "092",
"096", "100", "104", "108", "112", "116", "120", "124", "132", "136",
"140", "144", "148", "152", "156", "158", "162", "166", "170", "174",
"175", "178", "180", "184", "188", "191", "192", "196", "203", "204",
"208", "212", "214", "218", "222", "226", "230", "231", "232", "233",
"234", "238", "239", "242", "246", "248", "249", "250", "254", "258",
"260", "262", "266", "268", "270", "275", "276", "278", "280", "288",
"292", "296", "300", "304", "308", "312", "316", "320", "324", "328",
"332", "334", "336", "340", "344", "348", "352", "356", "360", "364",
"368", "372", "376", "380", "384", "388", "392", "398", "400", "404",
"408", "410", "414", "417", "418", "422", "426", "428", "430", "434",
"438", "440", "442", "446", "450", "454", "458", "462", "466", "470",
"474", "478", "480", "484", "492", "496", "498", "499", "500", "504",
"508", "512", "516", "520", "524", "528", "531", "533", "534", "535",
"540", "548", "554", "558", "562", "566", "570", "574", "578", "580",
"581", "583", "584", "585", "586", "591", "598", "600", "604", "608",
"612", "616", "620", "624", "626", "630", "634", "638", "642", "643",
"646", "652", "654", "659", "660", "662", "663", "666", "670", "674",
"678", "682", "686", "688", "690", "694", "702", "703", "704", "705",
"706", "710", "716", "720", "724", "728", "729", "732", "736", "740",
"744", "748", "752", "756", "760", "762", "764", "768", "772", "776",
"780", "784", "788", "792", "795", "796", "798", "800", "804", "807",
"818", "826", "830", "831", "832", "833", "834", "840", "850", "854",
"858", "860", "862", "876", "882", "886", "887", "891", "894", "958",
"959", "960", "962", "963", "964", "965", "966", "967", "968", "969",
"970", "971", "972", "973", "974", "975", "976", "977", "978", "979",
"980", "981", "982", "983", "984", "985", "986", "987", "988", "989",
"990", "991", "992", "993", "994", "995", "996", "997", "998", "999",
"036", "040", "044", "048", "050", "051", "052", "056", "060", "064",
"068", "070", "072", "074", "076", "084", "086", "090", "092", "096",
"100", "104", "108", "112", "116", "120", "124", "132", "136", "140",
"144", "148", "152", "156", "158", "162", "166", "170", "174", "175",
"178", "180", "184", "188", "191", "192", "196", "203", "204", "208",
"212", "214", "218", "222", "226", "230", "231", "232", "233", "234",
"238", "239", "242", "246", "248", "249", "250", "254", "258", "260",
"262", "266", "268", "270", "275", "276", "278", "280", "288", "292",
"296", "300", "304", "308", "312", "316", "320", "324", "328", "332",
"334", "336", "340", "344", "348", "352", "356", "360", "364", "368",
"372", "376", "380", "384", "388", "392", "398", "400", "404", "408",
"410", "414", "417", "418", "422", "426", "428", "430", "434", "438",
"440", "442", "446", "450", "454", "458", "462", "466", "470", "474",
"478", "480", "484", "492", "496", "498", "499", "500", "504", "508",
"512", "516", "520", "524", "528", "531", "533", "534", "535", "540",
"548", "554", "558", "562", "566", "570", "574", "578", "580", "581",
"583", "584", "585", "586", "591", "598", "600", "604", "608", "612",
"616", "620", "624", "626", "630", "634", "638", "642", "643", "646",
"652", "654", "659", "660", "662", "663", "666", "670", "674", "678",
"682", "686", "688", "690", "694", "702", "703", "704", "705", "706",
"710", "716", "720", "724", "728", "729", "732", "736", "740", "744",
"748", "752", "756", "760", "762", "764", "768", "772", "776", "780",
"784", "788", "792", "795", "796", "798", "800", "804", "807", "818",
"826", "830", "831", "832", "833", "834", "840", "850", "854", "858",
"860", "862", "876", "882", "886", "887", "891", "894", "958", "959",
"960", "962", "963", "964", "965", "966", "967", "968", "969", "970",
"971", "972", "973", "974", "975", "976", "977", "978", "979", "980",
"981", "982", "983", "984", "985", "986", "987", "988", "989", "990",
"991", "992", "993", "994", "995", "996", "997", "998", "999",
};
static const char* aliases[300] = {
static const char* aliases[299] = {
"AF", "AL", "AQ", "DZ", "AS", "AD", "AO", "AG", "AZ", "AR",
"AU", "AT", "BS", "BH", "BD", "AM", "BB", "BE", "BM", "034",
"BT", "BO", "BA", "BW", "BV", "BR", "BZ", "IO", "SB", "VG",
"BN", "BG", "MM", "BI", "BY", "KH", "CM", "CA", "CV", "KY",
"CF", "LK", "TD", "CL", "CN", "TW", "CX", "CC", "CO", "KM",
"YT", "CG", "CD", "CK", "CR", "HR", "CU", "CY", "CZ", "BJ",
"DK", "DM", "DO", "EC", "SV", "GQ", "ET", "ET", "ER", "EE",
"FO", "FK", "GS", "FJ", "FI", "AX", "FR", "FR", "GF", "PF",
"TF", "DJ", "GA", "GE", "GM", "PS", "DE", "DE", "DE", "GH",
"GI", "KI", "GR", "GL", "GD", "GP", "GU", "GT", "GN", "GY",
"HT", "HM", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR",
"IQ", "IE", "IL", "IT", "CI", "JM", "JP", "KZ", "JO", "KE",
"KP", "KR", "KW", "KG", "LA", "LB", "LS", "LV", "LR", "LY",
"LI", "LT", "LU", "MO", "MG", "MW", "MY", "MV", "ML", "MT",
"MQ", "MR", "MU", "MX", "MC", "MN", "MD", "ME", "MS", "MA",
"MZ", "OM", "NA", "NR", "NP", "NL", "CW", "AW", "SX", "BQ",
"NC", "VU", "NZ", "NI", "NE", "NG", "NU", "NF", "NO", "MP",
"UM", "FM", "MH", "PW", "PK", "PA", "PG", "PY", "PE", "PH",
"PN", "PL", "PT", "GW", "TL", "PR", "QA", "RE", "RO", "RU",
"RW", "BL", "SH", "KN", "AI", "LC", "MF", "PM", "VC", "SM",
"ST", "SA", "SN", "RS", "SC", "SL", "SG", "SK", "VN", "SI",
"SO", "ZA", "ZW", "YE", "ES", "SS", "SD", "EH", "SD", "SR",
"SJ", "SZ", "SE", "CH", "SY", "TJ", "TH", "TG", "TK", "TO",
"TT", "AE", "TN", "TR", "TM", "TC", "TV", "UG", "UA", "MK",
"EG", "GB", "JE", "GG", "JE", "IM", "TZ", "US", "VI", "BF",
"UY", "UZ", "VE", "WF", "WS", "YE", "YE", "RS", "ZM", "AA",
"QM", "QN", "QP", "QQ", "QR", "QS", "QT", "EU", "QV", "QW",
"QX", "QY", "QZ", "XA", "XB", "XC", "XD", "XE", "XF", "XG",
"XH", "XI", "XJ", "XK", "XL", "XM", "XN", "XO", "XP", "XQ",
"XR", "XS", "XT", "XU", "XV", "XW", "XX", "XY", "XZ", "ZZ",
"AU", "AT", "BS", "BH", "BD", "AM", "BB", "BE", "BM", "BT",
"BO", "BA", "BW", "BV", "BR", "BZ", "IO", "SB", "VG", "BN",
"BG", "MM", "BI", "BY", "KH", "CM", "CA", "CV", "KY", "CF",
"LK", "TD", "CL", "CN", "TW", "CX", "CC", "CO", "KM", "YT",
"CG", "CD", "CK", "CR", "HR", "CU", "CY", "CZ", "BJ", "DK",
"DM", "DO", "EC", "SV", "GQ", "ET", "ET", "ER", "EE", "FO",
"FK", "GS", "FJ", "FI", "AX", "FR", "FR", "GF", "PF", "TF",
"DJ", "GA", "GE", "GM", "PS", "DE", "DE", "DE", "GH", "GI",
"KI", "GR", "GL", "GD", "GP", "GU", "GT", "GN", "GY", "HT",
"HM", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR", "IQ",
"IE", "IL", "IT", "CI", "JM", "JP", "KZ", "JO", "KE", "KP",
"KR", "KW", "KG", "LA", "LB", "LS", "LV", "LR", "LY", "LI",
"LT", "LU", "MO", "MG", "MW", "MY", "MV", "ML", "MT", "MQ",
"MR", "MU", "MX", "MC", "MN", "MD", "ME", "MS", "MA", "MZ",
"OM", "NA", "NR", "NP", "NL", "CW", "AW", "SX", "BQ", "NC",
"VU", "NZ", "NI", "NE", "NG", "NU", "NF", "NO", "MP", "UM",
"FM", "MH", "PW", "PK", "PA", "PG", "PY", "PE", "PH", "PN",
"PL", "PT", "GW", "TL", "PR", "QA", "RE", "RO", "RU", "RW",
"BL", "SH", "KN", "AI", "LC", "MF", "PM", "VC", "SM", "ST",
"SA", "SN", "RS", "SC", "SL", "SG", "SK", "VN", "SI", "SO",
"ZA", "ZW", "YE", "ES", "SS", "SD", "EH", "SD", "SR", "SJ",
"SZ", "SE", "CH", "SY", "TJ", "TH", "TG", "TK", "TO", "TT",
"AE", "TN", "TR", "TM", "TC", "TV", "UG", "UA", "MK", "EG",
"GB", "JE", "GG", "JE", "IM", "TZ", "US", "VI", "BF", "UY",
"UZ", "VE", "WF", "WS", "YE", "YE", "RS", "ZM", "AA", "QM",
"QN", "QP", "QQ", "QR", "QS", "QT", "EU", "QV", "QW", "QX",
"QY", "QZ", "XA", "XB", "XC", "XD", "XE", "XF", "XG", "XH",
"XI", "XJ", "XK", "XL", "XM", "XN", "XO", "XP", "XQ", "XR",
"XS", "XT", "XU", "XV", "XW", "XX", "XY", "XZ", "ZZ",
};
if (const char* replacement = SearchReplacement(regions, aliases, region)) {
@ -357,8 +357,8 @@ bool mozilla::intl::Locale::regionMapping(RegionSubtag& region) {
}
// Region subtags with complex mappings.
// Derived from CLDR Supplemental Data, version 39.
// https://unicode.org/Public/cldr/39/core.zip
// Derived from CLDR Supplemental Data, version 40.
// https://unicode.org/Public/cldr/40/core.zip
bool mozilla::intl::Locale::complexRegionMapping(const RegionSubtag& region) {
MOZ_ASSERT(IsStructurallyValidRegionTag(region.span()));
MOZ_ASSERT(IsCanonicallyCasedRegionTag(region.span()));
@ -371,8 +371,8 @@ bool mozilla::intl::Locale::complexRegionMapping(const RegionSubtag& region) {
}
{
static const char regions[8][4] = {
"172", "200", "530", "532", "536", "582", "810", "890",
static const char regions[9][4] = {
"062", "172", "200", "530", "532", "536", "582", "810", "890",
};
return HasReplacement(regions, region);
@ -380,8 +380,8 @@ bool mozilla::intl::Locale::complexRegionMapping(const RegionSubtag& region) {
}
// Language subtags with complex mappings.
// Derived from CLDR Supplemental Data, version 39.
// https://unicode.org/Public/cldr/39/core.zip
// Derived from CLDR Supplemental Data, version 40.
// https://unicode.org/Public/cldr/40/core.zip
void mozilla::intl::Locale::performComplexLanguageMappings() {
MOZ_ASSERT(IsStructurallyValidLanguageTag(language().span()));
MOZ_ASSERT(IsCanonicallyCasedLanguageTag(language().span()));
@ -416,15 +416,24 @@ void mozilla::intl::Locale::performComplexLanguageMappings() {
}
// Region subtags with complex mappings.
// Derived from CLDR Supplemental Data, version 39.
// https://unicode.org/Public/cldr/39/core.zip
// Derived from CLDR Supplemental Data, version 40.
// https://unicode.org/Public/cldr/40/core.zip
void mozilla::intl::Locale::performComplexRegionMappings() {
MOZ_ASSERT(IsStructurallyValidLanguageTag(language().span()));
MOZ_ASSERT(IsCanonicallyCasedLanguageTag(language().span()));
MOZ_ASSERT(IsStructurallyValidRegionTag(region().span()));
MOZ_ASSERT(IsCanonicallyCasedRegionTag(region().span()));
if (region().equalTo("172")) {
if (region().equalTo("062")) {
if (language().equalTo("oui") ||
(language().equalTo("und") && script().equalTo("Ougr"))) {
setRegion("143");
}
else {
setRegion("034");
}
}
else if (region().equalTo("172")) {
if (language().equalTo("hy") ||
(language().equalTo("und") && script().equalTo("Armn"))) {
setRegion("AM");
@ -634,8 +643,8 @@ static bool IsLessThan(const T& a, const U& b) {
}
// Mappings from variant subtags to preferred values.
// Derived from CLDR Supplemental Data, version 39.
// https://unicode.org/Public/cldr/39/core.zip
// Derived from CLDR Supplemental Data, version 40.
// https://unicode.org/Public/cldr/40/core.zip
bool mozilla::intl::Locale::performVariantMappings() {
// The variant subtags need to be sorted for binary search.
MOZ_ASSERT(std::is_sorted(variants_.begin(), variants_.end(),
@ -698,8 +707,8 @@ bool mozilla::intl::Locale::performVariantMappings() {
}
// Canonicalize legacy locale identifiers.
// Derived from CLDR Supplemental Data, version 39.
// https://unicode.org/Public/cldr/39/core.zip
// Derived from CLDR Supplemental Data, version 40.
// https://unicode.org/Public/cldr/40/core.zip
bool mozilla::intl::Locale::updateLegacyMappings() {
// We're mapping legacy tags to non-legacy form here.
// Other tags remain unchanged.
@ -856,8 +865,8 @@ bool mozilla::intl::Locale::updateLegacyMappings() {
}
// Mappings from legacy sign languages.
// Derived from CLDR Supplemental Data, version 39.
// https://unicode.org/Public/cldr/39/core.zip
// Derived from CLDR Supplemental Data, version 40.
// https://unicode.org/Public/cldr/40/core.zip
bool mozilla::intl::Locale::signLanguageMapping(LanguageSubtag& language,
const RegionSubtag& region) {
MOZ_ASSERT(language.equalTo("sgn"));
@ -1048,19 +1057,19 @@ const char* mozilla::intl::Locale::replaceUnicodeExtensionType(
return SearchUnicodeReplacement(types, aliases, type);
}
else if (IsUnicodeKey(key, "tz")) {
static const char* types[28] = {
static const char* types[29] = {
"aqams" , "cnckg" , "cnhrb" , "cnkhg" , "cuba" , "egypt" ,
"eire" , "est" , "gmt0" , "hongkong", "hst" , "iceland" ,
"iran" , "israel" , "jamaica" , "japan" , "libya" , "mst" ,
"navajo" , "poland" , "portugal", "prc" , "roc" , "rok" ,
"turkey" , "uct" , "usnavajo", "zulu" ,
"eire" , "est" , "gaza" , "gmt0" , "hongkong", "hst" ,
"iceland" , "iran" , "israel" , "jamaica" , "japan" , "libya" ,
"mst" , "navajo" , "poland" , "portugal", "prc" , "roc" ,
"rok" , "turkey" , "uct" , "usnavajo", "zulu" ,
};
static const char* aliases[28] = {
static const char* aliases[29] = {
"nzakl" , "cnsha" , "cnsha" , "cnurc" , "cuhav" , "egcai" ,
"iedub" , "utcw05" , "gmt" , "hkhkg" , "utcw10" , "isrey" ,
"irthr" , "jeruslm" , "jmkin" , "jptyo" , "lytip" , "utcw07" ,
"usden" , "plwaw" , "ptlis" , "cnsha" , "twtpe" , "krsel" ,
"trist" , "utc" , "usden" , "utc" ,
"iedub" , "utcw05" , "gazastrp", "gmt" , "hkhkg" , "utcw10" ,
"isrey" , "irthr" , "jeruslm" , "jmkin" , "jptyo" , "lytip" ,
"utcw07" , "usden" , "plwaw" , "ptlis" , "cnsha" , "twtpe" ,
"krsel" , "trist" , "utc" , "usden" , "utc" ,
};
return SearchUnicodeReplacement(types, aliases, type);
}

Просмотреть файл

@ -2,8 +2,8 @@
// Generated by make_intl_data.py. DO NOT EDIT.
// Extracted from likelySubtags.xml.
// Derived from CLDR Supplemental Data, version 39.
// https://unicode.org/Public/cldr/39/core.zip
// Derived from CLDR Supplemental Data, version 40.
// https://unicode.org/Public/cldr/40/core.zip
var maxLikelySubtags = {
"aa": "aa-Latn-ET",
"aai": "aai-Latn-ZZ",
@ -168,6 +168,7 @@ var maxLikelySubtags = {
"bkq": "bkq-Latn-ZZ",
"bku": "bku-Latn-PH",
"bkv": "bkv-Latn-ZZ",
"blg": "iba-Latn-MY",
"blt": "blt-Tavt-VN",
"bm": "bm-Latn-ML",
"bmh": "bmh-Latn-ZZ",
@ -479,7 +480,7 @@ var maxLikelySubtags = {
"hmt": "hmt-Latn-ZZ",
"hnd": "hnd-Arab-PK",
"hne": "hne-Deva-IN",
"hnj": "hnj-Hmng-LA",
"hnj": "hnj-Hmnp-US",
"hnn": "hnn-Latn-PH",
"hno": "hno-Arab-PK",
"ho": "ho-Latn-PG",
@ -569,7 +570,7 @@ var maxLikelySubtags = {
"kcl": "kcl-Latn-ZZ",
"kct": "kct-Latn-ZZ",
"kde": "kde-Latn-TZ",
"kdh": "kdh-Arab-TG",
"kdh": "kdh-Latn-TG",
"kdl": "kdl-Latn-ZZ",
"kdt": "kdt-Thai-TH",
"kea": "kea-Latn-CV",
@ -937,6 +938,7 @@ var maxLikelySubtags = {
"nsn": "nsn-Latn-ZZ",
"nso": "nso-Latn-ZA",
"nss": "nss-Latn-ZZ",
"nst": "nst-Tnsa-IN",
"ntm": "ntm-Latn-ZZ",
"ntr": "ntr-Latn-ZZ",
"nui": "nui-Latn-ZZ",
@ -968,6 +970,7 @@ var maxLikelySubtags = {
"osa": "osa-Osge-US",
"ota": "ota-Arab-ZZ",
"otk": "otk-Orkh-MN",
"oui": "oui-Ougr-143",
"ozm": "ozm-Latn-ZZ",
"pa": "pa-Guru-IN",
"pa-Arab": "pa-Arab-PK",
@ -1022,7 +1025,7 @@ var maxLikelySubtags = {
"rel": "rel-Latn-ZZ",
"res": "res-Latn-ZZ",
"rgn": "rgn-Latn-IT",
"rhg": "rhg-Arab-MM",
"rhg": "rhg-Rohg-MM",
"ria": "ria-Latn-IN",
"rif": "rif-Tfng-MA",
"rif-NL": "rif-Latn-NL",
@ -1246,6 +1249,7 @@ var maxLikelySubtags = {
"twh": "twh-Latn-ZZ",
"twq": "twq-Latn-NE",
"txg": "txg-Tang-CN",
"txo": "txo-Toto-IN",
"ty": "ty-Latn-PF",
"tya": "tya-Latn-ZZ",
"tyv": "tyv-Cyrl-RU",
@ -1378,6 +1382,8 @@ var maxLikelySubtags = {
"und-Cher": "chr-Cher-US",
"und-Chrs": "xco-Chrs-UZ",
"und-Copt": "cop-Copt-EG",
"und-Cpmn": "und-Cpmn-CY",
"und-Cpmn-CY": "und-Cpmn-CY",
"und-Cprt": "grc-Cprt-CY",
"und-Cyrl": "ru-Cyrl-RU",
"und-Cyrl-AL": "mk-Cyrl-AL",
@ -1462,7 +1468,7 @@ var maxLikelySubtags = {
"und-Hira": "ja-Hira-JP",
"und-Hluw": "hlu-Hluw-TR",
"und-Hmng": "hnj-Hmng-LA",
"und-Hmnp": "mww-Hmnp-US",
"und-Hmnp": "hnj-Hmnp-US",
"und-Hung": "hu-Hung-HU",
"und-IC": "es-Latn-IC",
"und-ID": "id-Latn-ID",
@ -1589,6 +1595,7 @@ var maxLikelySubtags = {
"und-Orya": "or-Orya-IN",
"und-Osge": "osa-Osge-US",
"und-Osma": "so-Osma-SO",
"und-Ougr": "oui-Ougr-143",
"und-PA": "es-Latn-PA",
"und-PE": "es-Latn-PE",
"und-PF": "fr-Latn-PF",
@ -1682,6 +1689,8 @@ var maxLikelySubtags = {
"und-Thai-LA": "kdt-Thai-LA",
"und-Tibt": "bo-Tibt-CN",
"und-Tirh": "mai-Tirh-IN",
"und-Tnsa": "nst-Tnsa-IN",
"und-Toto": "txo-Toto-IN",
"und-UA": "uk-Cyrl-UA",
"und-UG": "sw-Latn-UG",
"und-UY": "es-Latn-UY",
@ -1692,6 +1701,7 @@ var maxLikelySubtags = {
"und-VN": "vi-Latn-VN",
"und-VU": "bi-Latn-VU",
"und-Vaii": "vai-Vaii-LR",
"und-Vith": "sq-Vith-AL",
"und-WF": "fr-Latn-WF",
"und-WS": "sm-Latn-WS",
"und-Wara": "hoc-Wara-IN",
@ -1864,8 +1874,8 @@ var maxLikelySubtags = {
};
// Extracted from likelySubtags.xml.
// Derived from CLDR Supplemental Data, version 39.
// https://unicode.org/Public/cldr/39/core.zip
// Derived from CLDR Supplemental Data, version 40.
// https://unicode.org/Public/cldr/40/core.zip
var minLikelySubtags = {
"aa-Latn-DJ": "aa-DJ",
"aa-Latn-ET": "aa",
@ -2449,7 +2459,8 @@ var minLikelySubtags = {
"hmt-Latn-ZZ": "hmt",
"hnd-Arab-PK": "hnd",
"hne-Deva-IN": "hne",
"hnj-Hmng-LA": "hnj",
"hnj-Hmng-LA": "hnj-Hmng-LA",
"hnj-Hmnp-US": "hnj",
"hnn-Hano-PH": "hnn-Hano",
"hnn-Latn-PH": "hnn",
"hno-Arab-PK": "hno",
@ -2542,7 +2553,7 @@ var minLikelySubtags = {
"kcl-Latn-ZZ": "kcl",
"kct-Latn-ZZ": "kct",
"kde-Latn-TZ": "kde",
"kdh-Arab-TG": "kdh",
"kdh-Latn-TG": "kdh",
"kdl-Latn-ZZ": "kdl",
"kdt-Thai-KH": "kdt-KH",
"kdt-Thai-LA": "kdt-LA",
@ -2923,6 +2934,7 @@ var minLikelySubtags = {
"nsn-Latn-ZZ": "nsn",
"nso-Latn-ZA": "nso",
"nss-Latn-ZZ": "nss",
"nst-Tnsa-IN": "nst",
"ntm-Latn-ZZ": "ntm",
"ntr-Latn-ZZ": "ntr",
"nui-Latn-ZZ": "nui",
@ -2954,6 +2966,7 @@ var minLikelySubtags = {
"osa-Osge-US": "osa",
"ota-Arab-ZZ": "ota",
"otk-Orkh-MN": "otk",
"oui-Ougr-143": "oui",
"ozm-Latn-ZZ": "ozm",
"pa-Arab-PK": "pa-PK",
"pa-Guru-IN": "pa",
@ -3018,8 +3031,8 @@ var minLikelySubtags = {
"rel-Latn-ZZ": "rel",
"res-Latn-ZZ": "res",
"rgn-Latn-IT": "rgn",
"rhg-Arab-MM": "rhg",
"rhg-Rohg-MM": "rhg-Rohg",
"rhg-Arab-MM": "rhg-Arab",
"rhg-Rohg-MM": "rhg",
"ria-Latn-IN": "ria",
"rif-Latn-NL": "rif-NL",
"rif-Tfng-MA": "rif",
@ -3135,6 +3148,7 @@ var minLikelySubtags = {
"sq-Latn-AL": "sq",
"sq-Latn-MK": "sq-MK",
"sq-Latn-XK": "sq-XK",
"sq-Vith-AL": "sq-Vith",
"sr-Cyrl-BA": "sr-BA",
"sr-Cyrl-RS": "sr",
"sr-Cyrl-XK": "sr-XK",
@ -3266,6 +3280,7 @@ var minLikelySubtags = {
"twh-Latn-ZZ": "twh",
"twq-Latn-NE": "twq",
"txg-Tang-CN": "txg",
"txo-Toto-IN": "txo",
"ty-Latn-PF": "ty",
"tya-Latn-ZZ": "tya",
"tyv-Cyrl-RU": "tyv",
@ -3282,6 +3297,7 @@ var minLikelySubtags = {
"uk-Cyrl-UA": "uk",
"uli-Latn-FM": "uli",
"umb-Latn-AO": "umb",
"und-Cpmn-CY": "und-Cpmn",
"und-Latn-AQ": "und-AQ",
"und-Latn-BV": "und-BV",
"und-Latn-CP": "und-CP",