use crate::error::LocaleError;
use phf::phf_map;
use std::fmt;
use std::str::FromStr;
#[cfg(feature = "strum")]
use strum_macros::EnumIter;
pub const SOURCE_ASSET: &str = "cldr-48.2.0-json-full.zip";
pub const AVAILABLE_LOCALES: [&str; 766] = [
"aa",
"aa-DJ",
"aa-ER",
"ab",
"af",
"af-NA",
"agq",
"ak",
"am",
"an",
"ann",
"apc",
"ar",
"ar-AE",
"ar-BH",
"ar-DJ",
"ar-DZ",
"ar-EG",
"ar-EH",
"ar-ER",
"ar-IL",
"ar-IQ",
"ar-JO",
"ar-KM",
"ar-KW",
"ar-LB",
"ar-LY",
"ar-MA",
"ar-MR",
"ar-OM",
"ar-PS",
"ar-QA",
"ar-SA",
"ar-SD",
"ar-SO",
"ar-SS",
"ar-SY",
"ar-TD",
"ar-TN",
"ar-YE",
"arn",
"as",
"asa",
"ast",
"az",
"az-Arab",
"az-Arab-IQ",
"az-Arab-TR",
"az-Cyrl",
"az-Latn",
"ba",
"bal",
"bal-Arab",
"bal-Latn",
"bas",
"be",
"be-tarask",
"bem",
"bew",
"bez",
"bg",
"bgc",
"bgn",
"bgn-AE",
"bgn-AF",
"bgn-IR",
"bgn-OM",
"bho",
"blo",
"blt",
"bm",
"bm-Nkoo",
"bn",
"bn-IN",
"bo",
"bo-IN",
"bqi",
"br",
"brx",
"bs",
"bs-Cyrl",
"bs-Latn",
"bss",
"bua",
"byn",
"ca",
"ca-AD",
"ca-ES-valencia",
"ca-FR",
"ca-IT",
"cad",
"cch",
"ccp",
"ccp-IN",
"ce",
"ceb",
"cgg",
"cho",
"chr",
"cic",
"ckb",
"ckb-IR",
"co",
"cop",
"cs",
"csw",
"cu",
"cv",
"cy",
"da",
"da-GL",
"dav",
"de",
"de-AT",
"de-BE",
"de-CH",
"de-IT",
"de-LI",
"de-LU",
"dje",
"doi",
"dsb",
"dua",
"dv",
"dyo",
"dz",
"ebu",
"ee",
"ee-TG",
"el",
"el-CY",
"el-polyton",
"en",
"en-001",
"en-150",
"en-AE",
"en-AG",
"en-AI",
"en-AS",
"en-AT",
"en-AU",
"en-BB",
"en-BE",
"en-BI",
"en-BM",
"en-BS",
"en-BW",
"en-BZ",
"en-CA",
"en-CC",
"en-CH",
"en-CK",
"en-CM",
"en-CX",
"en-CY",
"en-CZ",
"en-DE",
"en-DG",
"en-DK",
"en-DM",
"en-Dsrt",
"en-EE",
"en-ER",
"en-ES",
"en-FI",
"en-FJ",
"en-FK",
"en-FM",
"en-FR",
"en-GB",
"en-GD",
"en-GE",
"en-GG",
"en-GH",
"en-GI",
"en-GM",
"en-GS",
"en-GU",
"en-GY",
"en-HK",
"en-HU",
"en-ID",
"en-IE",
"en-IL",
"en-IM",
"en-IN",
"en-IO",
"en-IT",
"en-JE",
"en-JM",
"en-JP",
"en-KE",
"en-KI",
"en-KN",
"en-KY",
"en-LC",
"en-LR",
"en-LS",
"en-LT",
"en-LV",
"en-MG",
"en-MH",
"en-MO",
"en-MP",
"en-MS",
"en-MT",
"en-MU",
"en-MV",
"en-MW",
"en-MY",
"en-NA",
"en-NF",
"en-NG",
"en-NL",
"en-NO",
"en-NR",
"en-NU",
"en-NZ",
"en-PG",
"en-PH",
"en-PK",
"en-PL",
"en-PN",
"en-PR",
"en-PT",
"en-PW",
"en-RO",
"en-RW",
"en-SB",
"en-SC",
"en-SD",
"en-SE",
"en-SG",
"en-SH",
"en-SI",
"en-SK",
"en-SL",
"en-SS",
"en-SX",
"en-SZ",
"en-Shaw",
"en-TC",
"en-TK",
"en-TO",
"en-TT",
"en-TV",
"en-TZ",
"en-UA",
"en-UG",
"en-UM",
"en-VC",
"en-VG",
"en-VI",
"en-VU",
"en-WS",
"en-ZA",
"en-ZM",
"en-ZW",
"eo",
"es",
"es-419",
"es-AR",
"es-BO",
"es-BR",
"es-BZ",
"es-CL",
"es-CO",
"es-CR",
"es-CU",
"es-DO",
"es-EA",
"es-EC",
"es-GQ",
"es-GT",
"es-HN",
"es-IC",
"es-MX",
"es-NI",
"es-PA",
"es-PE",
"es-PH",
"es-PR",
"es-PY",
"es-SV",
"es-US",
"es-UY",
"es-VE",
"et",
"eu",
"ewo",
"fa",
"fa-AF",
"ff",
"ff-Adlm",
"ff-Adlm-BF",
"ff-Adlm-CM",
"ff-Adlm-GH",
"ff-Adlm-GM",
"ff-Adlm-GW",
"ff-Adlm-LR",
"ff-Adlm-MR",
"ff-Adlm-NE",
"ff-Adlm-NG",
"ff-Adlm-SL",
"ff-Adlm-SN",
"ff-Latn",
"ff-Latn-BF",
"ff-Latn-CM",
"ff-Latn-GH",
"ff-Latn-GM",
"ff-Latn-GN",
"ff-Latn-GW",
"ff-Latn-LR",
"ff-Latn-MR",
"ff-Latn-NE",
"ff-Latn-NG",
"ff-Latn-SL",
"fi",
"fil",
"fo",
"fo-DK",
"fr",
"fr-BE",
"fr-BF",
"fr-BI",
"fr-BJ",
"fr-BL",
"fr-CA",
"fr-CD",
"fr-CF",
"fr-CG",
"fr-CH",
"fr-CI",
"fr-CM",
"fr-DJ",
"fr-DZ",
"fr-GA",
"fr-GF",
"fr-GN",
"fr-GP",
"fr-GQ",
"fr-HT",
"fr-KM",
"fr-LU",
"fr-MA",
"fr-MC",
"fr-MF",
"fr-MG",
"fr-ML",
"fr-MQ",
"fr-MR",
"fr-MU",
"fr-NC",
"fr-NE",
"fr-PF",
"fr-PM",
"fr-RE",
"fr-RW",
"fr-SC",
"fr-SN",
"fr-SY",
"fr-TD",
"fr-TG",
"fr-TN",
"fr-VU",
"fr-WF",
"fr-YT",
"frr",
"fur",
"fy",
"ga",
"ga-GB",
"gaa",
"gd",
"gez",
"gez-ER",
"gl",
"gn",
"gsw",
"gsw-FR",
"gsw-LI",
"gu",
"guz",
"gv",
"ha",
"ha-Arab",
"ha-Arab-SD",
"ha-GH",
"ha-NE",
"haw",
"he",
"hi",
"hi-Latn",
"hnj",
"hnj-Hmnp",
"hr",
"hr-BA",
"hsb",
"ht",
"hu",
"hy",
"ia",
"id",
"ie",
"ig",
"ii",
"io",
"is",
"it",
"it-CH",
"it-SM",
"it-VA",
"iu",
"iu-Latn",
"ja",
"jbo",
"jgo",
"jmc",
"jv",
"ka",
"kaa",
"kaa-Cyrl",
"kaa-Latn",
"kab",
"kaj",
"kam",
"kcg",
"kde",
"kea",
"kek",
"ken",
"kgp",
"khq",
"ki",
"kk",
"kk-Arab",
"kk-Cyrl",
"kk-KZ",
"kkj",
"kl",
"kln",
"km",
"kn",
"ko",
"ko-CN",
"ko-KP",
"kok",
"kok-Deva",
"kok-Latn",
"kpe",
"kpe-GN",
"ks",
"ks-Arab",
"ks-Deva",
"ksb",
"ksf",
"ksh",
"ku",
"ku-Arab",
"ku-Arab-IR",
"ku-Latn",
"ku-Latn-IQ",
"ku-Latn-SY",
"ku-TR",
"kw",
"kxv",
"kxv-Deva",
"kxv-Latn",
"kxv-Orya",
"kxv-Telu",
"ky",
"la",
"lag",
"lb",
"lg",
"lij",
"lkt",
"lld",
"lmo",
"ln",
"ln-AO",
"ln-CF",
"ln-CG",
"lo",
"lrc",
"lrc-IQ",
"lt",
"ltg",
"lu",
"luo",
"luy",
"lv",
"lzz",
"mai",
"mas",
"mas-TZ",
"mdf",
"mer",
"mfe",
"mg",
"mgh",
"mgo",
"mhn",
"mi",
"mic",
"mk",
"ml",
"mn",
"mn-Mong",
"mn-Mong-MN",
"mni",
"mni-Beng",
"mni-Mtei",
"moh",
"mr",
"ms",
"ms-Arab",
"ms-Arab-BN",
"ms-BN",
"ms-ID",
"ms-SG",
"mt",
"mua",
"mus",
"mww",
"mww-Hmnp",
"my",
"myv",
"mzn",
"naq",
"nb",
"nb-SJ",
"nd",
"nds",
"nds-NL",
"ne",
"ne-IN",
"nl",
"nl-AW",
"nl-BE",
"nl-BQ",
"nl-CW",
"nl-SR",
"nl-SX",
"nmg",
"nn",
"nnh",
"no",
"nqo",
"nr",
"nso",
"nus",
"nv",
"ny",
"nyn",
"oc",
"oc-ES",
"oka",
"oka-US",
"om",
"om-KE",
"or",
"os",
"os-RU",
"osa",
"pa",
"pa-Arab",
"pa-Guru",
"pap",
"pap-AW",
"pcm",
"pi",
"pi-Latn",
"pis",
"pl",
"pms",
"prg",
"ps",
"ps-PK",
"pt",
"pt-AO",
"pt-CH",
"pt-CV",
"pt-GQ",
"pt-GW",
"pt-LU",
"pt-MO",
"pt-MZ",
"pt-PT",
"pt-ST",
"pt-TL",
"qu",
"qu-BO",
"qu-EC",
"quc",
"raj",
"rhg",
"rhg-Rohg",
"rhg-Rohg-BD",
"rif",
"rm",
"rn",
"ro",
"ro-MD",
"rof",
"ru",
"ru-BY",
"ru-KG",
"ru-KZ",
"ru-MD",
"ru-UA",
"rw",
"rwk",
"sa",
"sah",
"saq",
"sat",
"sat-Deva",
"sat-Olck",
"sbp",
"sc",
"scn",
"sd",
"sd-Arab",
"sd-Deva",
"sdh",
"sdh-IQ",
"se",
"se-FI",
"se-SE",
"seh",
"ses",
"sg",
"sgs",
"shi",
"shi-Latn",
"shi-Tfng",
"shn",
"shn-TH",
"si",
"sid",
"sk",
"skr",
"sl",
"sma",
"sma-NO",
"smj",
"smj-NO",
"smn",
"sms",
"sn",
"so",
"so-DJ",
"so-ET",
"so-KE",
"sq",
"sq-MK",
"sq-XK",
"sr",
"sr-Cyrl",
"sr-Cyrl-BA",
"sr-Cyrl-ME",
"sr-Cyrl-XK",
"sr-Latn",
"sr-Latn-BA",
"sr-Latn-ME",
"sr-Latn-XK",
"ss",
"ss-SZ",
"ssy",
"st",
"st-LS",
"su",
"su-Latn",
"suz",
"suz-Deva",
"suz-Sunu",
"sv",
"sv-AX",
"sv-FI",
"sw",
"sw-CD",
"sw-KE",
"sw-UG",
"syr",
"syr-SY",
"szl",
"ta",
"ta-LK",
"ta-MY",
"ta-SG",
"te",
"teo",
"teo-KE",
"tg",
"th",
"ti",
"ti-ER",
"tig",
"tk",
"tn",
"tn-BW",
"to",
"tok",
"tpi",
"tr",
"tr-CY",
"trv",
"trw",
"ts",
"tt",
"twq",
"tyv",
"tzm",
"ug",
"uk",
"und",
"ur",
"ur-IN",
"uz",
"uz-Arab",
"uz-Cyrl",
"uz-Latn",
"vai",
"vai-Latn",
"vai-Vaii",
"ve",
"vec",
"vi",
"vmw",
"vo",
"vun",
"wa",
"wae",
"wal",
"wbp",
"wo",
"xh",
"xnr",
"xog",
"yav",
"yi",
"yo",
"yo-BJ",
"yrl",
"yrl-CO",
"yrl-VE",
"yue",
"yue-Hans",
"yue-Hant",
"yue-Hant-CN",
"yue-Hant-MO",
"za",
"zgh",
"zh",
"zh-Hans",
"zh-Hans-HK",
"zh-Hans-MO",
"zh-Hans-MY",
"zh-Hans-SG",
"zh-Hant",
"zh-Hant-HK",
"zh-Hant-MO",
"zh-Hant-MY",
"zh-Latn",
"zu",
];
static LOCALE_MAP: phf::Map<&'static str, &'static str> = phf_map! {
"aa" => "aa",
"aa-dj" => "aa-DJ",
"aa-er" => "aa-ER",
"ab" => "ab",
"af" => "af",
"af-na" => "af-NA",
"agq" => "agq",
"ak" => "ak",
"am" => "am",
"an" => "an",
"ann" => "ann",
"apc" => "apc",
"ar" => "ar",
"ar-ae" => "ar-AE",
"ar-bh" => "ar-BH",
"ar-dj" => "ar-DJ",
"ar-dz" => "ar-DZ",
"ar-eg" => "ar-EG",
"ar-eh" => "ar-EH",
"ar-er" => "ar-ER",
"ar-il" => "ar-IL",
"ar-iq" => "ar-IQ",
"ar-jo" => "ar-JO",
"ar-km" => "ar-KM",
"ar-kw" => "ar-KW",
"ar-lb" => "ar-LB",
"ar-ly" => "ar-LY",
"ar-ma" => "ar-MA",
"ar-mr" => "ar-MR",
"ar-om" => "ar-OM",
"ar-ps" => "ar-PS",
"ar-qa" => "ar-QA",
"ar-sa" => "ar-SA",
"ar-sd" => "ar-SD",
"ar-so" => "ar-SO",
"ar-ss" => "ar-SS",
"ar-sy" => "ar-SY",
"ar-td" => "ar-TD",
"ar-tn" => "ar-TN",
"ar-ye" => "ar-YE",
"arn" => "arn",
"as" => "as",
"asa" => "asa",
"ast" => "ast",
"az" => "az",
"az-arab" => "az-Arab",
"az-arab-iq" => "az-Arab-IQ",
"az-arab-tr" => "az-Arab-TR",
"az-cyrl" => "az-Cyrl",
"az-latn" => "az-Latn",
"ba" => "ba",
"bal" => "bal",
"bal-arab" => "bal-Arab",
"bal-latn" => "bal-Latn",
"bas" => "bas",
"be" => "be",
"be-tarask" => "be-tarask",
"bem" => "bem",
"bew" => "bew",
"bez" => "bez",
"bg" => "bg",
"bgc" => "bgc",
"bgn" => "bgn",
"bgn-ae" => "bgn-AE",
"bgn-af" => "bgn-AF",
"bgn-ir" => "bgn-IR",
"bgn-om" => "bgn-OM",
"bho" => "bho",
"blo" => "blo",
"blt" => "blt",
"bm" => "bm",
"bm-nkoo" => "bm-Nkoo",
"bn" => "bn",
"bn-in" => "bn-IN",
"bo" => "bo",
"bo-in" => "bo-IN",
"bqi" => "bqi",
"br" => "br",
"brx" => "brx",
"bs" => "bs",
"bs-cyrl" => "bs-Cyrl",
"bs-latn" => "bs-Latn",
"bss" => "bss",
"bua" => "bua",
"byn" => "byn",
"ca" => "ca",
"ca-ad" => "ca-AD",
"ca-es-valencia" => "ca-ES-valencia",
"ca-fr" => "ca-FR",
"ca-it" => "ca-IT",
"cad" => "cad",
"cch" => "cch",
"ccp" => "ccp",
"ccp-in" => "ccp-IN",
"ce" => "ce",
"ceb" => "ceb",
"cgg" => "cgg",
"cho" => "cho",
"chr" => "chr",
"cic" => "cic",
"ckb" => "ckb",
"ckb-ir" => "ckb-IR",
"co" => "co",
"cop" => "cop",
"cs" => "cs",
"csw" => "csw",
"cu" => "cu",
"cv" => "cv",
"cy" => "cy",
"da" => "da",
"da-gl" => "da-GL",
"dav" => "dav",
"de" => "de",
"de-at" => "de-AT",
"de-be" => "de-BE",
"de-ch" => "de-CH",
"de-it" => "de-IT",
"de-li" => "de-LI",
"de-lu" => "de-LU",
"dje" => "dje",
"doi" => "doi",
"dsb" => "dsb",
"dua" => "dua",
"dv" => "dv",
"dyo" => "dyo",
"dz" => "dz",
"ebu" => "ebu",
"ee" => "ee",
"ee-tg" => "ee-TG",
"el" => "el",
"el-cy" => "el-CY",
"el-polyton" => "el-polyton",
"en" => "en",
"en-001" => "en-001",
"en-150" => "en-150",
"en-ae" => "en-AE",
"en-ag" => "en-AG",
"en-ai" => "en-AI",
"en-as" => "en-AS",
"en-at" => "en-AT",
"en-au" => "en-AU",
"en-bb" => "en-BB",
"en-be" => "en-BE",
"en-bi" => "en-BI",
"en-bm" => "en-BM",
"en-bs" => "en-BS",
"en-bw" => "en-BW",
"en-bz" => "en-BZ",
"en-ca" => "en-CA",
"en-cc" => "en-CC",
"en-ch" => "en-CH",
"en-ck" => "en-CK",
"en-cm" => "en-CM",
"en-cx" => "en-CX",
"en-cy" => "en-CY",
"en-cz" => "en-CZ",
"en-de" => "en-DE",
"en-dg" => "en-DG",
"en-dk" => "en-DK",
"en-dm" => "en-DM",
"en-dsrt" => "en-Dsrt",
"en-ee" => "en-EE",
"en-er" => "en-ER",
"en-es" => "en-ES",
"en-fi" => "en-FI",
"en-fj" => "en-FJ",
"en-fk" => "en-FK",
"en-fm" => "en-FM",
"en-fr" => "en-FR",
"en-gb" => "en-GB",
"en-gd" => "en-GD",
"en-ge" => "en-GE",
"en-gg" => "en-GG",
"en-gh" => "en-GH",
"en-gi" => "en-GI",
"en-gm" => "en-GM",
"en-gs" => "en-GS",
"en-gu" => "en-GU",
"en-gy" => "en-GY",
"en-hk" => "en-HK",
"en-hu" => "en-HU",
"en-id" => "en-ID",
"en-ie" => "en-IE",
"en-il" => "en-IL",
"en-im" => "en-IM",
"en-in" => "en-IN",
"en-io" => "en-IO",
"en-it" => "en-IT",
"en-je" => "en-JE",
"en-jm" => "en-JM",
"en-jp" => "en-JP",
"en-ke" => "en-KE",
"en-ki" => "en-KI",
"en-kn" => "en-KN",
"en-ky" => "en-KY",
"en-lc" => "en-LC",
"en-lr" => "en-LR",
"en-ls" => "en-LS",
"en-lt" => "en-LT",
"en-lv" => "en-LV",
"en-mg" => "en-MG",
"en-mh" => "en-MH",
"en-mo" => "en-MO",
"en-mp" => "en-MP",
"en-ms" => "en-MS",
"en-mt" => "en-MT",
"en-mu" => "en-MU",
"en-mv" => "en-MV",
"en-mw" => "en-MW",
"en-my" => "en-MY",
"en-na" => "en-NA",
"en-nf" => "en-NF",
"en-ng" => "en-NG",
"en-nl" => "en-NL",
"en-no" => "en-NO",
"en-nr" => "en-NR",
"en-nu" => "en-NU",
"en-nz" => "en-NZ",
"en-pg" => "en-PG",
"en-ph" => "en-PH",
"en-pk" => "en-PK",
"en-pl" => "en-PL",
"en-pn" => "en-PN",
"en-pr" => "en-PR",
"en-pt" => "en-PT",
"en-pw" => "en-PW",
"en-ro" => "en-RO",
"en-rw" => "en-RW",
"en-sb" => "en-SB",
"en-sc" => "en-SC",
"en-sd" => "en-SD",
"en-se" => "en-SE",
"en-sg" => "en-SG",
"en-sh" => "en-SH",
"en-si" => "en-SI",
"en-sk" => "en-SK",
"en-sl" => "en-SL",
"en-ss" => "en-SS",
"en-sx" => "en-SX",
"en-sz" => "en-SZ",
"en-shaw" => "en-Shaw",
"en-tc" => "en-TC",
"en-tk" => "en-TK",
"en-to" => "en-TO",
"en-tt" => "en-TT",
"en-tv" => "en-TV",
"en-tz" => "en-TZ",
"en-ua" => "en-UA",
"en-ug" => "en-UG",
"en-um" => "en-UM",
"en-vc" => "en-VC",
"en-vg" => "en-VG",
"en-vi" => "en-VI",
"en-vu" => "en-VU",
"en-ws" => "en-WS",
"en-za" => "en-ZA",
"en-zm" => "en-ZM",
"en-zw" => "en-ZW",
"eo" => "eo",
"es" => "es",
"es-419" => "es-419",
"es-ar" => "es-AR",
"es-bo" => "es-BO",
"es-br" => "es-BR",
"es-bz" => "es-BZ",
"es-cl" => "es-CL",
"es-co" => "es-CO",
"es-cr" => "es-CR",
"es-cu" => "es-CU",
"es-do" => "es-DO",
"es-ea" => "es-EA",
"es-ec" => "es-EC",
"es-gq" => "es-GQ",
"es-gt" => "es-GT",
"es-hn" => "es-HN",
"es-ic" => "es-IC",
"es-mx" => "es-MX",
"es-ni" => "es-NI",
"es-pa" => "es-PA",
"es-pe" => "es-PE",
"es-ph" => "es-PH",
"es-pr" => "es-PR",
"es-py" => "es-PY",
"es-sv" => "es-SV",
"es-us" => "es-US",
"es-uy" => "es-UY",
"es-ve" => "es-VE",
"et" => "et",
"eu" => "eu",
"ewo" => "ewo",
"fa" => "fa",
"fa-af" => "fa-AF",
"ff" => "ff",
"ff-adlm" => "ff-Adlm",
"ff-adlm-bf" => "ff-Adlm-BF",
"ff-adlm-cm" => "ff-Adlm-CM",
"ff-adlm-gh" => "ff-Adlm-GH",
"ff-adlm-gm" => "ff-Adlm-GM",
"ff-adlm-gw" => "ff-Adlm-GW",
"ff-adlm-lr" => "ff-Adlm-LR",
"ff-adlm-mr" => "ff-Adlm-MR",
"ff-adlm-ne" => "ff-Adlm-NE",
"ff-adlm-ng" => "ff-Adlm-NG",
"ff-adlm-sl" => "ff-Adlm-SL",
"ff-adlm-sn" => "ff-Adlm-SN",
"ff-latn" => "ff-Latn",
"ff-latn-bf" => "ff-Latn-BF",
"ff-latn-cm" => "ff-Latn-CM",
"ff-latn-gh" => "ff-Latn-GH",
"ff-latn-gm" => "ff-Latn-GM",
"ff-latn-gn" => "ff-Latn-GN",
"ff-latn-gw" => "ff-Latn-GW",
"ff-latn-lr" => "ff-Latn-LR",
"ff-latn-mr" => "ff-Latn-MR",
"ff-latn-ne" => "ff-Latn-NE",
"ff-latn-ng" => "ff-Latn-NG",
"ff-latn-sl" => "ff-Latn-SL",
"fi" => "fi",
"fil" => "fil",
"fo" => "fo",
"fo-dk" => "fo-DK",
"fr" => "fr",
"fr-be" => "fr-BE",
"fr-bf" => "fr-BF",
"fr-bi" => "fr-BI",
"fr-bj" => "fr-BJ",
"fr-bl" => "fr-BL",
"fr-ca" => "fr-CA",
"fr-cd" => "fr-CD",
"fr-cf" => "fr-CF",
"fr-cg" => "fr-CG",
"fr-ch" => "fr-CH",
"fr-ci" => "fr-CI",
"fr-cm" => "fr-CM",
"fr-dj" => "fr-DJ",
"fr-dz" => "fr-DZ",
"fr-ga" => "fr-GA",
"fr-gf" => "fr-GF",
"fr-gn" => "fr-GN",
"fr-gp" => "fr-GP",
"fr-gq" => "fr-GQ",
"fr-ht" => "fr-HT",
"fr-km" => "fr-KM",
"fr-lu" => "fr-LU",
"fr-ma" => "fr-MA",
"fr-mc" => "fr-MC",
"fr-mf" => "fr-MF",
"fr-mg" => "fr-MG",
"fr-ml" => "fr-ML",
"fr-mq" => "fr-MQ",
"fr-mr" => "fr-MR",
"fr-mu" => "fr-MU",
"fr-nc" => "fr-NC",
"fr-ne" => "fr-NE",
"fr-pf" => "fr-PF",
"fr-pm" => "fr-PM",
"fr-re" => "fr-RE",
"fr-rw" => "fr-RW",
"fr-sc" => "fr-SC",
"fr-sn" => "fr-SN",
"fr-sy" => "fr-SY",
"fr-td" => "fr-TD",
"fr-tg" => "fr-TG",
"fr-tn" => "fr-TN",
"fr-vu" => "fr-VU",
"fr-wf" => "fr-WF",
"fr-yt" => "fr-YT",
"frr" => "frr",
"fur" => "fur",
"fy" => "fy",
"ga" => "ga",
"ga-gb" => "ga-GB",
"gaa" => "gaa",
"gd" => "gd",
"gez" => "gez",
"gez-er" => "gez-ER",
"gl" => "gl",
"gn" => "gn",
"gsw" => "gsw",
"gsw-fr" => "gsw-FR",
"gsw-li" => "gsw-LI",
"gu" => "gu",
"guz" => "guz",
"gv" => "gv",
"ha" => "ha",
"ha-arab" => "ha-Arab",
"ha-arab-sd" => "ha-Arab-SD",
"ha-gh" => "ha-GH",
"ha-ne" => "ha-NE",
"haw" => "haw",
"he" => "he",
"hi" => "hi",
"hi-latn" => "hi-Latn",
"hnj" => "hnj",
"hnj-hmnp" => "hnj-Hmnp",
"hr" => "hr",
"hr-ba" => "hr-BA",
"hsb" => "hsb",
"ht" => "ht",
"hu" => "hu",
"hy" => "hy",
"ia" => "ia",
"id" => "id",
"ie" => "ie",
"ig" => "ig",
"ii" => "ii",
"io" => "io",
"is" => "is",
"it" => "it",
"it-ch" => "it-CH",
"it-sm" => "it-SM",
"it-va" => "it-VA",
"iu" => "iu",
"iu-latn" => "iu-Latn",
"ja" => "ja",
"jbo" => "jbo",
"jgo" => "jgo",
"jmc" => "jmc",
"jv" => "jv",
"ka" => "ka",
"kaa" => "kaa",
"kaa-cyrl" => "kaa-Cyrl",
"kaa-latn" => "kaa-Latn",
"kab" => "kab",
"kaj" => "kaj",
"kam" => "kam",
"kcg" => "kcg",
"kde" => "kde",
"kea" => "kea",
"kek" => "kek",
"ken" => "ken",
"kgp" => "kgp",
"khq" => "khq",
"ki" => "ki",
"kk" => "kk",
"kk-arab" => "kk-Arab",
"kk-cyrl" => "kk-Cyrl",
"kk-kz" => "kk-KZ",
"kkj" => "kkj",
"kl" => "kl",
"kln" => "kln",
"km" => "km",
"kn" => "kn",
"ko" => "ko",
"ko-cn" => "ko-CN",
"ko-kp" => "ko-KP",
"kok" => "kok",
"kok-deva" => "kok-Deva",
"kok-latn" => "kok-Latn",
"kpe" => "kpe",
"kpe-gn" => "kpe-GN",
"ks" => "ks",
"ks-arab" => "ks-Arab",
"ks-deva" => "ks-Deva",
"ksb" => "ksb",
"ksf" => "ksf",
"ksh" => "ksh",
"ku" => "ku",
"ku-arab" => "ku-Arab",
"ku-arab-ir" => "ku-Arab-IR",
"ku-latn" => "ku-Latn",
"ku-latn-iq" => "ku-Latn-IQ",
"ku-latn-sy" => "ku-Latn-SY",
"ku-tr" => "ku-TR",
"kw" => "kw",
"kxv" => "kxv",
"kxv-deva" => "kxv-Deva",
"kxv-latn" => "kxv-Latn",
"kxv-orya" => "kxv-Orya",
"kxv-telu" => "kxv-Telu",
"ky" => "ky",
"la" => "la",
"lag" => "lag",
"lb" => "lb",
"lg" => "lg",
"lij" => "lij",
"lkt" => "lkt",
"lld" => "lld",
"lmo" => "lmo",
"ln" => "ln",
"ln-ao" => "ln-AO",
"ln-cf" => "ln-CF",
"ln-cg" => "ln-CG",
"lo" => "lo",
"lrc" => "lrc",
"lrc-iq" => "lrc-IQ",
"lt" => "lt",
"ltg" => "ltg",
"lu" => "lu",
"luo" => "luo",
"luy" => "luy",
"lv" => "lv",
"lzz" => "lzz",
"mai" => "mai",
"mas" => "mas",
"mas-tz" => "mas-TZ",
"mdf" => "mdf",
"mer" => "mer",
"mfe" => "mfe",
"mg" => "mg",
"mgh" => "mgh",
"mgo" => "mgo",
"mhn" => "mhn",
"mi" => "mi",
"mic" => "mic",
"mk" => "mk",
"ml" => "ml",
"mn" => "mn",
"mn-mong" => "mn-Mong",
"mn-mong-mn" => "mn-Mong-MN",
"mni" => "mni",
"mni-beng" => "mni-Beng",
"mni-mtei" => "mni-Mtei",
"moh" => "moh",
"mr" => "mr",
"ms" => "ms",
"ms-arab" => "ms-Arab",
"ms-arab-bn" => "ms-Arab-BN",
"ms-bn" => "ms-BN",
"ms-id" => "ms-ID",
"ms-sg" => "ms-SG",
"mt" => "mt",
"mua" => "mua",
"mus" => "mus",
"mww" => "mww",
"mww-hmnp" => "mww-Hmnp",
"my" => "my",
"myv" => "myv",
"mzn" => "mzn",
"naq" => "naq",
"nb" => "nb",
"nb-sj" => "nb-SJ",
"nd" => "nd",
"nds" => "nds",
"nds-nl" => "nds-NL",
"ne" => "ne",
"ne-in" => "ne-IN",
"nl" => "nl",
"nl-aw" => "nl-AW",
"nl-be" => "nl-BE",
"nl-bq" => "nl-BQ",
"nl-cw" => "nl-CW",
"nl-sr" => "nl-SR",
"nl-sx" => "nl-SX",
"nmg" => "nmg",
"nn" => "nn",
"nnh" => "nnh",
"no" => "no",
"nqo" => "nqo",
"nr" => "nr",
"nso" => "nso",
"nus" => "nus",
"nv" => "nv",
"ny" => "ny",
"nyn" => "nyn",
"oc" => "oc",
"oc-es" => "oc-ES",
"oka" => "oka",
"oka-us" => "oka-US",
"om" => "om",
"om-ke" => "om-KE",
"or" => "or",
"os" => "os",
"os-ru" => "os-RU",
"osa" => "osa",
"pa" => "pa",
"pa-arab" => "pa-Arab",
"pa-guru" => "pa-Guru",
"pap" => "pap",
"pap-aw" => "pap-AW",
"pcm" => "pcm",
"pi" => "pi",
"pi-latn" => "pi-Latn",
"pis" => "pis",
"pl" => "pl",
"pms" => "pms",
"prg" => "prg",
"ps" => "ps",
"ps-pk" => "ps-PK",
"pt" => "pt",
"pt-ao" => "pt-AO",
"pt-ch" => "pt-CH",
"pt-cv" => "pt-CV",
"pt-gq" => "pt-GQ",
"pt-gw" => "pt-GW",
"pt-lu" => "pt-LU",
"pt-mo" => "pt-MO",
"pt-mz" => "pt-MZ",
"pt-pt" => "pt-PT",
"pt-st" => "pt-ST",
"pt-tl" => "pt-TL",
"qu" => "qu",
"qu-bo" => "qu-BO",
"qu-ec" => "qu-EC",
"quc" => "quc",
"raj" => "raj",
"rhg" => "rhg",
"rhg-rohg" => "rhg-Rohg",
"rhg-rohg-bd" => "rhg-Rohg-BD",
"rif" => "rif",
"rm" => "rm",
"rn" => "rn",
"ro" => "ro",
"ro-md" => "ro-MD",
"rof" => "rof",
"ru" => "ru",
"ru-by" => "ru-BY",
"ru-kg" => "ru-KG",
"ru-kz" => "ru-KZ",
"ru-md" => "ru-MD",
"ru-ua" => "ru-UA",
"rw" => "rw",
"rwk" => "rwk",
"sa" => "sa",
"sah" => "sah",
"saq" => "saq",
"sat" => "sat",
"sat-deva" => "sat-Deva",
"sat-olck" => "sat-Olck",
"sbp" => "sbp",
"sc" => "sc",
"scn" => "scn",
"sd" => "sd",
"sd-arab" => "sd-Arab",
"sd-deva" => "sd-Deva",
"sdh" => "sdh",
"sdh-iq" => "sdh-IQ",
"se" => "se",
"se-fi" => "se-FI",
"se-se" => "se-SE",
"seh" => "seh",
"ses" => "ses",
"sg" => "sg",
"sgs" => "sgs",
"shi" => "shi",
"shi-latn" => "shi-Latn",
"shi-tfng" => "shi-Tfng",
"shn" => "shn",
"shn-th" => "shn-TH",
"si" => "si",
"sid" => "sid",
"sk" => "sk",
"skr" => "skr",
"sl" => "sl",
"sma" => "sma",
"sma-no" => "sma-NO",
"smj" => "smj",
"smj-no" => "smj-NO",
"smn" => "smn",
"sms" => "sms",
"sn" => "sn",
"so" => "so",
"so-dj" => "so-DJ",
"so-et" => "so-ET",
"so-ke" => "so-KE",
"sq" => "sq",
"sq-mk" => "sq-MK",
"sq-xk" => "sq-XK",
"sr" => "sr",
"sr-cyrl" => "sr-Cyrl",
"sr-cyrl-ba" => "sr-Cyrl-BA",
"sr-cyrl-me" => "sr-Cyrl-ME",
"sr-cyrl-xk" => "sr-Cyrl-XK",
"sr-latn" => "sr-Latn",
"sr-latn-ba" => "sr-Latn-BA",
"sr-latn-me" => "sr-Latn-ME",
"sr-latn-xk" => "sr-Latn-XK",
"ss" => "ss",
"ss-sz" => "ss-SZ",
"ssy" => "ssy",
"st" => "st",
"st-ls" => "st-LS",
"su" => "su",
"su-latn" => "su-Latn",
"suz" => "suz",
"suz-deva" => "suz-Deva",
"suz-sunu" => "suz-Sunu",
"sv" => "sv",
"sv-ax" => "sv-AX",
"sv-fi" => "sv-FI",
"sw" => "sw",
"sw-cd" => "sw-CD",
"sw-ke" => "sw-KE",
"sw-ug" => "sw-UG",
"syr" => "syr",
"syr-sy" => "syr-SY",
"szl" => "szl",
"ta" => "ta",
"ta-lk" => "ta-LK",
"ta-my" => "ta-MY",
"ta-sg" => "ta-SG",
"te" => "te",
"teo" => "teo",
"teo-ke" => "teo-KE",
"tg" => "tg",
"th" => "th",
"ti" => "ti",
"ti-er" => "ti-ER",
"tig" => "tig",
"tk" => "tk",
"tn" => "tn",
"tn-bw" => "tn-BW",
"to" => "to",
"tok" => "tok",
"tpi" => "tpi",
"tr" => "tr",
"tr-cy" => "tr-CY",
"trv" => "trv",
"trw" => "trw",
"ts" => "ts",
"tt" => "tt",
"twq" => "twq",
"tyv" => "tyv",
"tzm" => "tzm",
"ug" => "ug",
"uk" => "uk",
"und" => "und",
"ur" => "ur",
"ur-in" => "ur-IN",
"uz" => "uz",
"uz-arab" => "uz-Arab",
"uz-cyrl" => "uz-Cyrl",
"uz-latn" => "uz-Latn",
"vai" => "vai",
"vai-latn" => "vai-Latn",
"vai-vaii" => "vai-Vaii",
"ve" => "ve",
"vec" => "vec",
"vi" => "vi",
"vmw" => "vmw",
"vo" => "vo",
"vun" => "vun",
"wa" => "wa",
"wae" => "wae",
"wal" => "wal",
"wbp" => "wbp",
"wo" => "wo",
"xh" => "xh",
"xnr" => "xnr",
"xog" => "xog",
"yav" => "yav",
"yi" => "yi",
"yo" => "yo",
"yo-bj" => "yo-BJ",
"yrl" => "yrl",
"yrl-co" => "yrl-CO",
"yrl-ve" => "yrl-VE",
"yue" => "yue",
"yue-hans" => "yue-Hans",
"yue-hant" => "yue-Hant",
"yue-hant-cn" => "yue-Hant-CN",
"yue-hant-mo" => "yue-Hant-MO",
"za" => "za",
"zgh" => "zgh",
"zh" => "zh",
"zh-hans" => "zh-Hans",
"zh-hans-hk" => "zh-Hans-HK",
"zh-hans-mo" => "zh-Hans-MO",
"zh-hans-my" => "zh-Hans-MY",
"zh-hans-sg" => "zh-Hans-SG",
"zh-hant" => "zh-Hant",
"zh-hant-hk" => "zh-Hant-HK",
"zh-hant-mo" => "zh-Hant-MO",
"zh-hant-my" => "zh-Hant-MY",
"zh-latn" => "zh-Latn",
"zu" => "zu",
};
#[cfg_attr(feature = "strum", derive(EnumIter))]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[allow(non_camel_case_types)]
pub enum Locale {
aa,
aa_DJ,
aa_ER,
ab,
af,
af_NA,
agq,
ak,
am,
an,
ann,
apc,
ar,
ar_AE,
ar_BH,
ar_DJ,
ar_DZ,
ar_EG,
ar_EH,
ar_ER,
ar_IL,
ar_IQ,
ar_JO,
ar_KM,
ar_KW,
ar_LB,
ar_LY,
ar_MA,
ar_MR,
ar_OM,
ar_PS,
ar_QA,
ar_SA,
ar_SD,
ar_SO,
ar_SS,
ar_SY,
ar_TD,
ar_TN,
ar_YE,
arn,
as_,
asa,
ast,
az,
az_Arab,
az_Arab_IQ,
az_Arab_TR,
az_Cyrl,
az_Latn,
ba,
bal,
bal_Arab,
bal_Latn,
bas,
be,
be_tarask,
bem,
bew,
bez,
bg,
bgc,
bgn,
bgn_AE,
bgn_AF,
bgn_IR,
bgn_OM,
bho,
blo,
blt,
bm,
bm_Nkoo,
bn,
bn_IN,
bo,
bo_IN,
bqi,
br,
brx,
bs,
bs_Cyrl,
bs_Latn,
bss,
bua,
byn,
ca,
ca_AD,
ca_ES_valencia,
ca_FR,
ca_IT,
cad,
cch,
ccp,
ccp_IN,
ce,
ceb,
cgg,
cho,
chr,
cic,
ckb,
ckb_IR,
co,
cop,
cs,
csw,
cu,
cv,
cy,
da,
da_GL,
dav,
de,
de_AT,
de_BE,
de_CH,
de_IT,
de_LI,
de_LU,
dje,
doi,
dsb,
dua,
dv,
dyo,
dz,
ebu,
ee,
ee_TG,
el,
el_CY,
el_polyton,
en,
en_001,
en_150,
en_AE,
en_AG,
en_AI,
en_AS,
en_AT,
en_AU,
en_BB,
en_BE,
en_BI,
en_BM,
en_BS,
en_BW,
en_BZ,
en_CA,
en_CC,
en_CH,
en_CK,
en_CM,
en_CX,
en_CY,
en_CZ,
en_DE,
en_DG,
en_DK,
en_DM,
en_Dsrt,
en_EE,
en_ER,
en_ES,
en_FI,
en_FJ,
en_FK,
en_FM,
en_FR,
en_GB,
en_GD,
en_GE,
en_GG,
en_GH,
en_GI,
en_GM,
en_GS,
en_GU,
en_GY,
en_HK,
en_HU,
en_ID,
en_IE,
en_IL,
en_IM,
en_IN,
en_IO,
en_IT,
en_JE,
en_JM,
en_JP,
en_KE,
en_KI,
en_KN,
en_KY,
en_LC,
en_LR,
en_LS,
en_LT,
en_LV,
en_MG,
en_MH,
en_MO,
en_MP,
en_MS,
en_MT,
en_MU,
en_MV,
en_MW,
en_MY,
en_NA,
en_NF,
en_NG,
en_NL,
en_NO,
en_NR,
en_NU,
en_NZ,
en_PG,
en_PH,
en_PK,
en_PL,
en_PN,
en_PR,
en_PT,
en_PW,
en_RO,
en_RW,
en_SB,
en_SC,
en_SD,
en_SE,
en_SG,
en_SH,
en_SI,
en_SK,
en_SL,
en_SS,
en_SX,
en_SZ,
en_Shaw,
en_TC,
en_TK,
en_TO,
en_TT,
en_TV,
en_TZ,
en_UA,
en_UG,
en_UM,
en_VC,
en_VG,
en_VI,
en_VU,
en_WS,
en_ZA,
en_ZM,
en_ZW,
eo,
es,
es_419,
es_AR,
es_BO,
es_BR,
es_BZ,
es_CL,
es_CO,
es_CR,
es_CU,
es_DO,
es_EA,
es_EC,
es_GQ,
es_GT,
es_HN,
es_IC,
es_MX,
es_NI,
es_PA,
es_PE,
es_PH,
es_PR,
es_PY,
es_SV,
es_US,
es_UY,
es_VE,
et,
eu,
ewo,
fa,
fa_AF,
ff,
ff_Adlm,
ff_Adlm_BF,
ff_Adlm_CM,
ff_Adlm_GH,
ff_Adlm_GM,
ff_Adlm_GW,
ff_Adlm_LR,
ff_Adlm_MR,
ff_Adlm_NE,
ff_Adlm_NG,
ff_Adlm_SL,
ff_Adlm_SN,
ff_Latn,
ff_Latn_BF,
ff_Latn_CM,
ff_Latn_GH,
ff_Latn_GM,
ff_Latn_GN,
ff_Latn_GW,
ff_Latn_LR,
ff_Latn_MR,
ff_Latn_NE,
ff_Latn_NG,
ff_Latn_SL,
fi,
fil,
fo,
fo_DK,
fr,
fr_BE,
fr_BF,
fr_BI,
fr_BJ,
fr_BL,
fr_CA,
fr_CD,
fr_CF,
fr_CG,
fr_CH,
fr_CI,
fr_CM,
fr_DJ,
fr_DZ,
fr_GA,
fr_GF,
fr_GN,
fr_GP,
fr_GQ,
fr_HT,
fr_KM,
fr_LU,
fr_MA,
fr_MC,
fr_MF,
fr_MG,
fr_ML,
fr_MQ,
fr_MR,
fr_MU,
fr_NC,
fr_NE,
fr_PF,
fr_PM,
fr_RE,
fr_RW,
fr_SC,
fr_SN,
fr_SY,
fr_TD,
fr_TG,
fr_TN,
fr_VU,
fr_WF,
fr_YT,
frr,
fur,
fy,
ga,
ga_GB,
gaa,
gd,
gez,
gez_ER,
gl,
gn,
gsw,
gsw_FR,
gsw_LI,
gu,
guz,
gv,
ha,
ha_Arab,
ha_Arab_SD,
ha_GH,
ha_NE,
haw,
he,
hi,
hi_Latn,
hnj,
hnj_Hmnp,
hr,
hr_BA,
hsb,
ht,
hu,
hy,
ia,
id,
ie,
ig,
ii,
io,
is,
it,
it_CH,
it_SM,
it_VA,
iu,
iu_Latn,
ja,
jbo,
jgo,
jmc,
jv,
ka,
kaa,
kaa_Cyrl,
kaa_Latn,
kab,
kaj,
kam,
kcg,
kde,
kea,
kek,
ken,
kgp,
khq,
ki,
kk,
kk_Arab,
kk_Cyrl,
kk_KZ,
kkj,
kl,
kln,
km,
kn,
ko,
ko_CN,
ko_KP,
kok,
kok_Deva,
kok_Latn,
kpe,
kpe_GN,
ks,
ks_Arab,
ks_Deva,
ksb,
ksf,
ksh,
ku,
ku_Arab,
ku_Arab_IR,
ku_Latn,
ku_Latn_IQ,
ku_Latn_SY,
ku_TR,
kw,
kxv,
kxv_Deva,
kxv_Latn,
kxv_Orya,
kxv_Telu,
ky,
la,
lag,
lb,
lg,
lij,
lkt,
lld,
lmo,
ln,
ln_AO,
ln_CF,
ln_CG,
lo,
lrc,
lrc_IQ,
lt,
ltg,
lu,
luo,
luy,
lv,
lzz,
mai,
mas,
mas_TZ,
mdf,
mer,
mfe,
mg,
mgh,
mgo,
mhn,
mi,
mic,
mk,
ml,
mn,
mn_Mong,
mn_Mong_MN,
mni,
mni_Beng,
mni_Mtei,
moh,
mr,
ms,
ms_Arab,
ms_Arab_BN,
ms_BN,
ms_ID,
ms_SG,
mt,
mua,
mus,
mww,
mww_Hmnp,
my,
myv,
mzn,
naq,
nb,
nb_SJ,
nd,
nds,
nds_NL,
ne,
ne_IN,
nl,
nl_AW,
nl_BE,
nl_BQ,
nl_CW,
nl_SR,
nl_SX,
nmg,
nn,
nnh,
no,
nqo,
nr,
nso,
nus,
nv,
ny,
nyn,
oc,
oc_ES,
oka,
oka_US,
om,
om_KE,
or,
os,
os_RU,
osa,
pa,
pa_Arab,
pa_Guru,
pap,
pap_AW,
pcm,
pi,
pi_Latn,
pis,
pl,
pms,
prg,
ps,
ps_PK,
pt,
pt_AO,
pt_CH,
pt_CV,
pt_GQ,
pt_GW,
pt_LU,
pt_MO,
pt_MZ,
pt_PT,
pt_ST,
pt_TL,
qu,
qu_BO,
qu_EC,
quc,
raj,
rhg,
rhg_Rohg,
rhg_Rohg_BD,
rif,
rm,
rn,
ro,
ro_MD,
rof,
ru,
ru_BY,
ru_KG,
ru_KZ,
ru_MD,
ru_UA,
rw,
rwk,
sa,
sah,
saq,
sat,
sat_Deva,
sat_Olck,
sbp,
sc,
scn,
sd,
sd_Arab,
sd_Deva,
sdh,
sdh_IQ,
se,
se_FI,
se_SE,
seh,
ses,
sg,
sgs,
shi,
shi_Latn,
shi_Tfng,
shn,
shn_TH,
si,
sid,
sk,
skr,
sl,
sma,
sma_NO,
smj,
smj_NO,
smn,
sms,
sn,
so,
so_DJ,
so_ET,
so_KE,
sq,
sq_MK,
sq_XK,
sr,
sr_Cyrl,
sr_Cyrl_BA,
sr_Cyrl_ME,
sr_Cyrl_XK,
sr_Latn,
sr_Latn_BA,
sr_Latn_ME,
sr_Latn_XK,
ss,
ss_SZ,
ssy,
st,
st_LS,
su,
su_Latn,
suz,
suz_Deva,
suz_Sunu,
sv,
sv_AX,
sv_FI,
sw,
sw_CD,
sw_KE,
sw_UG,
syr,
syr_SY,
szl,
ta,
ta_LK,
ta_MY,
ta_SG,
te,
teo,
teo_KE,
tg,
th,
ti,
ti_ER,
tig,
tk,
tn,
tn_BW,
to,
tok,
tpi,
tr,
tr_CY,
trv,
trw,
ts,
tt,
twq,
tyv,
tzm,
ug,
uk,
und,
ur,
ur_IN,
uz,
uz_Arab,
uz_Cyrl,
uz_Latn,
vai,
vai_Latn,
vai_Vaii,
ve,
vec,
vi,
vmw,
vo,
vun,
wa,
wae,
wal,
wbp,
wo,
xh,
xnr,
xog,
yav,
yi,
yo,
yo_BJ,
yrl,
yrl_CO,
yrl_VE,
yue,
yue_Hans,
yue_Hant,
yue_Hant_CN,
yue_Hant_MO,
za,
zgh,
zh,
zh_Hans,
zh_Hans_HK,
zh_Hans_MO,
zh_Hans_MY,
zh_Hans_SG,
zh_Hant,
zh_Hant_HK,
zh_Hant_MO,
zh_Hant_MY,
zh_Latn,
zu,
}
impl Locale {
pub fn as_str(&self) -> &'static str {
match self {
Locale::aa => "aa",
Locale::aa_DJ => "aa-DJ",
Locale::aa_ER => "aa-ER",
Locale::ab => "ab",
Locale::af => "af",
Locale::af_NA => "af-NA",
Locale::agq => "agq",
Locale::ak => "ak",
Locale::am => "am",
Locale::an => "an",
Locale::ann => "ann",
Locale::apc => "apc",
Locale::ar => "ar",
Locale::ar_AE => "ar-AE",
Locale::ar_BH => "ar-BH",
Locale::ar_DJ => "ar-DJ",
Locale::ar_DZ => "ar-DZ",
Locale::ar_EG => "ar-EG",
Locale::ar_EH => "ar-EH",
Locale::ar_ER => "ar-ER",
Locale::ar_IL => "ar-IL",
Locale::ar_IQ => "ar-IQ",
Locale::ar_JO => "ar-JO",
Locale::ar_KM => "ar-KM",
Locale::ar_KW => "ar-KW",
Locale::ar_LB => "ar-LB",
Locale::ar_LY => "ar-LY",
Locale::ar_MA => "ar-MA",
Locale::ar_MR => "ar-MR",
Locale::ar_OM => "ar-OM",
Locale::ar_PS => "ar-PS",
Locale::ar_QA => "ar-QA",
Locale::ar_SA => "ar-SA",
Locale::ar_SD => "ar-SD",
Locale::ar_SO => "ar-SO",
Locale::ar_SS => "ar-SS",
Locale::ar_SY => "ar-SY",
Locale::ar_TD => "ar-TD",
Locale::ar_TN => "ar-TN",
Locale::ar_YE => "ar-YE",
Locale::arn => "arn",
Locale::as_ => "as",
Locale::asa => "asa",
Locale::ast => "ast",
Locale::az => "az",
Locale::az_Arab => "az-Arab",
Locale::az_Arab_IQ => "az-Arab-IQ",
Locale::az_Arab_TR => "az-Arab-TR",
Locale::az_Cyrl => "az-Cyrl",
Locale::az_Latn => "az-Latn",
Locale::ba => "ba",
Locale::bal => "bal",
Locale::bal_Arab => "bal-Arab",
Locale::bal_Latn => "bal-Latn",
Locale::bas => "bas",
Locale::be => "be",
Locale::be_tarask => "be-tarask",
Locale::bem => "bem",
Locale::bew => "bew",
Locale::bez => "bez",
Locale::bg => "bg",
Locale::bgc => "bgc",
Locale::bgn => "bgn",
Locale::bgn_AE => "bgn-AE",
Locale::bgn_AF => "bgn-AF",
Locale::bgn_IR => "bgn-IR",
Locale::bgn_OM => "bgn-OM",
Locale::bho => "bho",
Locale::blo => "blo",
Locale::blt => "blt",
Locale::bm => "bm",
Locale::bm_Nkoo => "bm-Nkoo",
Locale::bn => "bn",
Locale::bn_IN => "bn-IN",
Locale::bo => "bo",
Locale::bo_IN => "bo-IN",
Locale::bqi => "bqi",
Locale::br => "br",
Locale::brx => "brx",
Locale::bs => "bs",
Locale::bs_Cyrl => "bs-Cyrl",
Locale::bs_Latn => "bs-Latn",
Locale::bss => "bss",
Locale::bua => "bua",
Locale::byn => "byn",
Locale::ca => "ca",
Locale::ca_AD => "ca-AD",
Locale::ca_ES_valencia => "ca-ES-valencia",
Locale::ca_FR => "ca-FR",
Locale::ca_IT => "ca-IT",
Locale::cad => "cad",
Locale::cch => "cch",
Locale::ccp => "ccp",
Locale::ccp_IN => "ccp-IN",
Locale::ce => "ce",
Locale::ceb => "ceb",
Locale::cgg => "cgg",
Locale::cho => "cho",
Locale::chr => "chr",
Locale::cic => "cic",
Locale::ckb => "ckb",
Locale::ckb_IR => "ckb-IR",
Locale::co => "co",
Locale::cop => "cop",
Locale::cs => "cs",
Locale::csw => "csw",
Locale::cu => "cu",
Locale::cv => "cv",
Locale::cy => "cy",
Locale::da => "da",
Locale::da_GL => "da-GL",
Locale::dav => "dav",
Locale::de => "de",
Locale::de_AT => "de-AT",
Locale::de_BE => "de-BE",
Locale::de_CH => "de-CH",
Locale::de_IT => "de-IT",
Locale::de_LI => "de-LI",
Locale::de_LU => "de-LU",
Locale::dje => "dje",
Locale::doi => "doi",
Locale::dsb => "dsb",
Locale::dua => "dua",
Locale::dv => "dv",
Locale::dyo => "dyo",
Locale::dz => "dz",
Locale::ebu => "ebu",
Locale::ee => "ee",
Locale::ee_TG => "ee-TG",
Locale::el => "el",
Locale::el_CY => "el-CY",
Locale::el_polyton => "el-polyton",
Locale::en => "en",
Locale::en_001 => "en-001",
Locale::en_150 => "en-150",
Locale::en_AE => "en-AE",
Locale::en_AG => "en-AG",
Locale::en_AI => "en-AI",
Locale::en_AS => "en-AS",
Locale::en_AT => "en-AT",
Locale::en_AU => "en-AU",
Locale::en_BB => "en-BB",
Locale::en_BE => "en-BE",
Locale::en_BI => "en-BI",
Locale::en_BM => "en-BM",
Locale::en_BS => "en-BS",
Locale::en_BW => "en-BW",
Locale::en_BZ => "en-BZ",
Locale::en_CA => "en-CA",
Locale::en_CC => "en-CC",
Locale::en_CH => "en-CH",
Locale::en_CK => "en-CK",
Locale::en_CM => "en-CM",
Locale::en_CX => "en-CX",
Locale::en_CY => "en-CY",
Locale::en_CZ => "en-CZ",
Locale::en_DE => "en-DE",
Locale::en_DG => "en-DG",
Locale::en_DK => "en-DK",
Locale::en_DM => "en-DM",
Locale::en_Dsrt => "en-Dsrt",
Locale::en_EE => "en-EE",
Locale::en_ER => "en-ER",
Locale::en_ES => "en-ES",
Locale::en_FI => "en-FI",
Locale::en_FJ => "en-FJ",
Locale::en_FK => "en-FK",
Locale::en_FM => "en-FM",
Locale::en_FR => "en-FR",
Locale::en_GB => "en-GB",
Locale::en_GD => "en-GD",
Locale::en_GE => "en-GE",
Locale::en_GG => "en-GG",
Locale::en_GH => "en-GH",
Locale::en_GI => "en-GI",
Locale::en_GM => "en-GM",
Locale::en_GS => "en-GS",
Locale::en_GU => "en-GU",
Locale::en_GY => "en-GY",
Locale::en_HK => "en-HK",
Locale::en_HU => "en-HU",
Locale::en_ID => "en-ID",
Locale::en_IE => "en-IE",
Locale::en_IL => "en-IL",
Locale::en_IM => "en-IM",
Locale::en_IN => "en-IN",
Locale::en_IO => "en-IO",
Locale::en_IT => "en-IT",
Locale::en_JE => "en-JE",
Locale::en_JM => "en-JM",
Locale::en_JP => "en-JP",
Locale::en_KE => "en-KE",
Locale::en_KI => "en-KI",
Locale::en_KN => "en-KN",
Locale::en_KY => "en-KY",
Locale::en_LC => "en-LC",
Locale::en_LR => "en-LR",
Locale::en_LS => "en-LS",
Locale::en_LT => "en-LT",
Locale::en_LV => "en-LV",
Locale::en_MG => "en-MG",
Locale::en_MH => "en-MH",
Locale::en_MO => "en-MO",
Locale::en_MP => "en-MP",
Locale::en_MS => "en-MS",
Locale::en_MT => "en-MT",
Locale::en_MU => "en-MU",
Locale::en_MV => "en-MV",
Locale::en_MW => "en-MW",
Locale::en_MY => "en-MY",
Locale::en_NA => "en-NA",
Locale::en_NF => "en-NF",
Locale::en_NG => "en-NG",
Locale::en_NL => "en-NL",
Locale::en_NO => "en-NO",
Locale::en_NR => "en-NR",
Locale::en_NU => "en-NU",
Locale::en_NZ => "en-NZ",
Locale::en_PG => "en-PG",
Locale::en_PH => "en-PH",
Locale::en_PK => "en-PK",
Locale::en_PL => "en-PL",
Locale::en_PN => "en-PN",
Locale::en_PR => "en-PR",
Locale::en_PT => "en-PT",
Locale::en_PW => "en-PW",
Locale::en_RO => "en-RO",
Locale::en_RW => "en-RW",
Locale::en_SB => "en-SB",
Locale::en_SC => "en-SC",
Locale::en_SD => "en-SD",
Locale::en_SE => "en-SE",
Locale::en_SG => "en-SG",
Locale::en_SH => "en-SH",
Locale::en_SI => "en-SI",
Locale::en_SK => "en-SK",
Locale::en_SL => "en-SL",
Locale::en_SS => "en-SS",
Locale::en_SX => "en-SX",
Locale::en_SZ => "en-SZ",
Locale::en_Shaw => "en-Shaw",
Locale::en_TC => "en-TC",
Locale::en_TK => "en-TK",
Locale::en_TO => "en-TO",
Locale::en_TT => "en-TT",
Locale::en_TV => "en-TV",
Locale::en_TZ => "en-TZ",
Locale::en_UA => "en-UA",
Locale::en_UG => "en-UG",
Locale::en_UM => "en-UM",
Locale::en_VC => "en-VC",
Locale::en_VG => "en-VG",
Locale::en_VI => "en-VI",
Locale::en_VU => "en-VU",
Locale::en_WS => "en-WS",
Locale::en_ZA => "en-ZA",
Locale::en_ZM => "en-ZM",
Locale::en_ZW => "en-ZW",
Locale::eo => "eo",
Locale::es => "es",
Locale::es_419 => "es-419",
Locale::es_AR => "es-AR",
Locale::es_BO => "es-BO",
Locale::es_BR => "es-BR",
Locale::es_BZ => "es-BZ",
Locale::es_CL => "es-CL",
Locale::es_CO => "es-CO",
Locale::es_CR => "es-CR",
Locale::es_CU => "es-CU",
Locale::es_DO => "es-DO",
Locale::es_EA => "es-EA",
Locale::es_EC => "es-EC",
Locale::es_GQ => "es-GQ",
Locale::es_GT => "es-GT",
Locale::es_HN => "es-HN",
Locale::es_IC => "es-IC",
Locale::es_MX => "es-MX",
Locale::es_NI => "es-NI",
Locale::es_PA => "es-PA",
Locale::es_PE => "es-PE",
Locale::es_PH => "es-PH",
Locale::es_PR => "es-PR",
Locale::es_PY => "es-PY",
Locale::es_SV => "es-SV",
Locale::es_US => "es-US",
Locale::es_UY => "es-UY",
Locale::es_VE => "es-VE",
Locale::et => "et",
Locale::eu => "eu",
Locale::ewo => "ewo",
Locale::fa => "fa",
Locale::fa_AF => "fa-AF",
Locale::ff => "ff",
Locale::ff_Adlm => "ff-Adlm",
Locale::ff_Adlm_BF => "ff-Adlm-BF",
Locale::ff_Adlm_CM => "ff-Adlm-CM",
Locale::ff_Adlm_GH => "ff-Adlm-GH",
Locale::ff_Adlm_GM => "ff-Adlm-GM",
Locale::ff_Adlm_GW => "ff-Adlm-GW",
Locale::ff_Adlm_LR => "ff-Adlm-LR",
Locale::ff_Adlm_MR => "ff-Adlm-MR",
Locale::ff_Adlm_NE => "ff-Adlm-NE",
Locale::ff_Adlm_NG => "ff-Adlm-NG",
Locale::ff_Adlm_SL => "ff-Adlm-SL",
Locale::ff_Adlm_SN => "ff-Adlm-SN",
Locale::ff_Latn => "ff-Latn",
Locale::ff_Latn_BF => "ff-Latn-BF",
Locale::ff_Latn_CM => "ff-Latn-CM",
Locale::ff_Latn_GH => "ff-Latn-GH",
Locale::ff_Latn_GM => "ff-Latn-GM",
Locale::ff_Latn_GN => "ff-Latn-GN",
Locale::ff_Latn_GW => "ff-Latn-GW",
Locale::ff_Latn_LR => "ff-Latn-LR",
Locale::ff_Latn_MR => "ff-Latn-MR",
Locale::ff_Latn_NE => "ff-Latn-NE",
Locale::ff_Latn_NG => "ff-Latn-NG",
Locale::ff_Latn_SL => "ff-Latn-SL",
Locale::fi => "fi",
Locale::fil => "fil",
Locale::fo => "fo",
Locale::fo_DK => "fo-DK",
Locale::fr => "fr",
Locale::fr_BE => "fr-BE",
Locale::fr_BF => "fr-BF",
Locale::fr_BI => "fr-BI",
Locale::fr_BJ => "fr-BJ",
Locale::fr_BL => "fr-BL",
Locale::fr_CA => "fr-CA",
Locale::fr_CD => "fr-CD",
Locale::fr_CF => "fr-CF",
Locale::fr_CG => "fr-CG",
Locale::fr_CH => "fr-CH",
Locale::fr_CI => "fr-CI",
Locale::fr_CM => "fr-CM",
Locale::fr_DJ => "fr-DJ",
Locale::fr_DZ => "fr-DZ",
Locale::fr_GA => "fr-GA",
Locale::fr_GF => "fr-GF",
Locale::fr_GN => "fr-GN",
Locale::fr_GP => "fr-GP",
Locale::fr_GQ => "fr-GQ",
Locale::fr_HT => "fr-HT",
Locale::fr_KM => "fr-KM",
Locale::fr_LU => "fr-LU",
Locale::fr_MA => "fr-MA",
Locale::fr_MC => "fr-MC",
Locale::fr_MF => "fr-MF",
Locale::fr_MG => "fr-MG",
Locale::fr_ML => "fr-ML",
Locale::fr_MQ => "fr-MQ",
Locale::fr_MR => "fr-MR",
Locale::fr_MU => "fr-MU",
Locale::fr_NC => "fr-NC",
Locale::fr_NE => "fr-NE",
Locale::fr_PF => "fr-PF",
Locale::fr_PM => "fr-PM",
Locale::fr_RE => "fr-RE",
Locale::fr_RW => "fr-RW",
Locale::fr_SC => "fr-SC",
Locale::fr_SN => "fr-SN",
Locale::fr_SY => "fr-SY",
Locale::fr_TD => "fr-TD",
Locale::fr_TG => "fr-TG",
Locale::fr_TN => "fr-TN",
Locale::fr_VU => "fr-VU",
Locale::fr_WF => "fr-WF",
Locale::fr_YT => "fr-YT",
Locale::frr => "frr",
Locale::fur => "fur",
Locale::fy => "fy",
Locale::ga => "ga",
Locale::ga_GB => "ga-GB",
Locale::gaa => "gaa",
Locale::gd => "gd",
Locale::gez => "gez",
Locale::gez_ER => "gez-ER",
Locale::gl => "gl",
Locale::gn => "gn",
Locale::gsw => "gsw",
Locale::gsw_FR => "gsw-FR",
Locale::gsw_LI => "gsw-LI",
Locale::gu => "gu",
Locale::guz => "guz",
Locale::gv => "gv",
Locale::ha => "ha",
Locale::ha_Arab => "ha-Arab",
Locale::ha_Arab_SD => "ha-Arab-SD",
Locale::ha_GH => "ha-GH",
Locale::ha_NE => "ha-NE",
Locale::haw => "haw",
Locale::he => "he",
Locale::hi => "hi",
Locale::hi_Latn => "hi-Latn",
Locale::hnj => "hnj",
Locale::hnj_Hmnp => "hnj-Hmnp",
Locale::hr => "hr",
Locale::hr_BA => "hr-BA",
Locale::hsb => "hsb",
Locale::ht => "ht",
Locale::hu => "hu",
Locale::hy => "hy",
Locale::ia => "ia",
Locale::id => "id",
Locale::ie => "ie",
Locale::ig => "ig",
Locale::ii => "ii",
Locale::io => "io",
Locale::is => "is",
Locale::it => "it",
Locale::it_CH => "it-CH",
Locale::it_SM => "it-SM",
Locale::it_VA => "it-VA",
Locale::iu => "iu",
Locale::iu_Latn => "iu-Latn",
Locale::ja => "ja",
Locale::jbo => "jbo",
Locale::jgo => "jgo",
Locale::jmc => "jmc",
Locale::jv => "jv",
Locale::ka => "ka",
Locale::kaa => "kaa",
Locale::kaa_Cyrl => "kaa-Cyrl",
Locale::kaa_Latn => "kaa-Latn",
Locale::kab => "kab",
Locale::kaj => "kaj",
Locale::kam => "kam",
Locale::kcg => "kcg",
Locale::kde => "kde",
Locale::kea => "kea",
Locale::kek => "kek",
Locale::ken => "ken",
Locale::kgp => "kgp",
Locale::khq => "khq",
Locale::ki => "ki",
Locale::kk => "kk",
Locale::kk_Arab => "kk-Arab",
Locale::kk_Cyrl => "kk-Cyrl",
Locale::kk_KZ => "kk-KZ",
Locale::kkj => "kkj",
Locale::kl => "kl",
Locale::kln => "kln",
Locale::km => "km",
Locale::kn => "kn",
Locale::ko => "ko",
Locale::ko_CN => "ko-CN",
Locale::ko_KP => "ko-KP",
Locale::kok => "kok",
Locale::kok_Deva => "kok-Deva",
Locale::kok_Latn => "kok-Latn",
Locale::kpe => "kpe",
Locale::kpe_GN => "kpe-GN",
Locale::ks => "ks",
Locale::ks_Arab => "ks-Arab",
Locale::ks_Deva => "ks-Deva",
Locale::ksb => "ksb",
Locale::ksf => "ksf",
Locale::ksh => "ksh",
Locale::ku => "ku",
Locale::ku_Arab => "ku-Arab",
Locale::ku_Arab_IR => "ku-Arab-IR",
Locale::ku_Latn => "ku-Latn",
Locale::ku_Latn_IQ => "ku-Latn-IQ",
Locale::ku_Latn_SY => "ku-Latn-SY",
Locale::ku_TR => "ku-TR",
Locale::kw => "kw",
Locale::kxv => "kxv",
Locale::kxv_Deva => "kxv-Deva",
Locale::kxv_Latn => "kxv-Latn",
Locale::kxv_Orya => "kxv-Orya",
Locale::kxv_Telu => "kxv-Telu",
Locale::ky => "ky",
Locale::la => "la",
Locale::lag => "lag",
Locale::lb => "lb",
Locale::lg => "lg",
Locale::lij => "lij",
Locale::lkt => "lkt",
Locale::lld => "lld",
Locale::lmo => "lmo",
Locale::ln => "ln",
Locale::ln_AO => "ln-AO",
Locale::ln_CF => "ln-CF",
Locale::ln_CG => "ln-CG",
Locale::lo => "lo",
Locale::lrc => "lrc",
Locale::lrc_IQ => "lrc-IQ",
Locale::lt => "lt",
Locale::ltg => "ltg",
Locale::lu => "lu",
Locale::luo => "luo",
Locale::luy => "luy",
Locale::lv => "lv",
Locale::lzz => "lzz",
Locale::mai => "mai",
Locale::mas => "mas",
Locale::mas_TZ => "mas-TZ",
Locale::mdf => "mdf",
Locale::mer => "mer",
Locale::mfe => "mfe",
Locale::mg => "mg",
Locale::mgh => "mgh",
Locale::mgo => "mgo",
Locale::mhn => "mhn",
Locale::mi => "mi",
Locale::mic => "mic",
Locale::mk => "mk",
Locale::ml => "ml",
Locale::mn => "mn",
Locale::mn_Mong => "mn-Mong",
Locale::mn_Mong_MN => "mn-Mong-MN",
Locale::mni => "mni",
Locale::mni_Beng => "mni-Beng",
Locale::mni_Mtei => "mni-Mtei",
Locale::moh => "moh",
Locale::mr => "mr",
Locale::ms => "ms",
Locale::ms_Arab => "ms-Arab",
Locale::ms_Arab_BN => "ms-Arab-BN",
Locale::ms_BN => "ms-BN",
Locale::ms_ID => "ms-ID",
Locale::ms_SG => "ms-SG",
Locale::mt => "mt",
Locale::mua => "mua",
Locale::mus => "mus",
Locale::mww => "mww",
Locale::mww_Hmnp => "mww-Hmnp",
Locale::my => "my",
Locale::myv => "myv",
Locale::mzn => "mzn",
Locale::naq => "naq",
Locale::nb => "nb",
Locale::nb_SJ => "nb-SJ",
Locale::nd => "nd",
Locale::nds => "nds",
Locale::nds_NL => "nds-NL",
Locale::ne => "ne",
Locale::ne_IN => "ne-IN",
Locale::nl => "nl",
Locale::nl_AW => "nl-AW",
Locale::nl_BE => "nl-BE",
Locale::nl_BQ => "nl-BQ",
Locale::nl_CW => "nl-CW",
Locale::nl_SR => "nl-SR",
Locale::nl_SX => "nl-SX",
Locale::nmg => "nmg",
Locale::nn => "nn",
Locale::nnh => "nnh",
Locale::no => "no",
Locale::nqo => "nqo",
Locale::nr => "nr",
Locale::nso => "nso",
Locale::nus => "nus",
Locale::nv => "nv",
Locale::ny => "ny",
Locale::nyn => "nyn",
Locale::oc => "oc",
Locale::oc_ES => "oc-ES",
Locale::oka => "oka",
Locale::oka_US => "oka-US",
Locale::om => "om",
Locale::om_KE => "om-KE",
Locale::or => "or",
Locale::os => "os",
Locale::os_RU => "os-RU",
Locale::osa => "osa",
Locale::pa => "pa",
Locale::pa_Arab => "pa-Arab",
Locale::pa_Guru => "pa-Guru",
Locale::pap => "pap",
Locale::pap_AW => "pap-AW",
Locale::pcm => "pcm",
Locale::pi => "pi",
Locale::pi_Latn => "pi-Latn",
Locale::pis => "pis",
Locale::pl => "pl",
Locale::pms => "pms",
Locale::prg => "prg",
Locale::ps => "ps",
Locale::ps_PK => "ps-PK",
Locale::pt => "pt",
Locale::pt_AO => "pt-AO",
Locale::pt_CH => "pt-CH",
Locale::pt_CV => "pt-CV",
Locale::pt_GQ => "pt-GQ",
Locale::pt_GW => "pt-GW",
Locale::pt_LU => "pt-LU",
Locale::pt_MO => "pt-MO",
Locale::pt_MZ => "pt-MZ",
Locale::pt_PT => "pt-PT",
Locale::pt_ST => "pt-ST",
Locale::pt_TL => "pt-TL",
Locale::qu => "qu",
Locale::qu_BO => "qu-BO",
Locale::qu_EC => "qu-EC",
Locale::quc => "quc",
Locale::raj => "raj",
Locale::rhg => "rhg",
Locale::rhg_Rohg => "rhg-Rohg",
Locale::rhg_Rohg_BD => "rhg-Rohg-BD",
Locale::rif => "rif",
Locale::rm => "rm",
Locale::rn => "rn",
Locale::ro => "ro",
Locale::ro_MD => "ro-MD",
Locale::rof => "rof",
Locale::ru => "ru",
Locale::ru_BY => "ru-BY",
Locale::ru_KG => "ru-KG",
Locale::ru_KZ => "ru-KZ",
Locale::ru_MD => "ru-MD",
Locale::ru_UA => "ru-UA",
Locale::rw => "rw",
Locale::rwk => "rwk",
Locale::sa => "sa",
Locale::sah => "sah",
Locale::saq => "saq",
Locale::sat => "sat",
Locale::sat_Deva => "sat-Deva",
Locale::sat_Olck => "sat-Olck",
Locale::sbp => "sbp",
Locale::sc => "sc",
Locale::scn => "scn",
Locale::sd => "sd",
Locale::sd_Arab => "sd-Arab",
Locale::sd_Deva => "sd-Deva",
Locale::sdh => "sdh",
Locale::sdh_IQ => "sdh-IQ",
Locale::se => "se",
Locale::se_FI => "se-FI",
Locale::se_SE => "se-SE",
Locale::seh => "seh",
Locale::ses => "ses",
Locale::sg => "sg",
Locale::sgs => "sgs",
Locale::shi => "shi",
Locale::shi_Latn => "shi-Latn",
Locale::shi_Tfng => "shi-Tfng",
Locale::shn => "shn",
Locale::shn_TH => "shn-TH",
Locale::si => "si",
Locale::sid => "sid",
Locale::sk => "sk",
Locale::skr => "skr",
Locale::sl => "sl",
Locale::sma => "sma",
Locale::sma_NO => "sma-NO",
Locale::smj => "smj",
Locale::smj_NO => "smj-NO",
Locale::smn => "smn",
Locale::sms => "sms",
Locale::sn => "sn",
Locale::so => "so",
Locale::so_DJ => "so-DJ",
Locale::so_ET => "so-ET",
Locale::so_KE => "so-KE",
Locale::sq => "sq",
Locale::sq_MK => "sq-MK",
Locale::sq_XK => "sq-XK",
Locale::sr => "sr",
Locale::sr_Cyrl => "sr-Cyrl",
Locale::sr_Cyrl_BA => "sr-Cyrl-BA",
Locale::sr_Cyrl_ME => "sr-Cyrl-ME",
Locale::sr_Cyrl_XK => "sr-Cyrl-XK",
Locale::sr_Latn => "sr-Latn",
Locale::sr_Latn_BA => "sr-Latn-BA",
Locale::sr_Latn_ME => "sr-Latn-ME",
Locale::sr_Latn_XK => "sr-Latn-XK",
Locale::ss => "ss",
Locale::ss_SZ => "ss-SZ",
Locale::ssy => "ssy",
Locale::st => "st",
Locale::st_LS => "st-LS",
Locale::su => "su",
Locale::su_Latn => "su-Latn",
Locale::suz => "suz",
Locale::suz_Deva => "suz-Deva",
Locale::suz_Sunu => "suz-Sunu",
Locale::sv => "sv",
Locale::sv_AX => "sv-AX",
Locale::sv_FI => "sv-FI",
Locale::sw => "sw",
Locale::sw_CD => "sw-CD",
Locale::sw_KE => "sw-KE",
Locale::sw_UG => "sw-UG",
Locale::syr => "syr",
Locale::syr_SY => "syr-SY",
Locale::szl => "szl",
Locale::ta => "ta",
Locale::ta_LK => "ta-LK",
Locale::ta_MY => "ta-MY",
Locale::ta_SG => "ta-SG",
Locale::te => "te",
Locale::teo => "teo",
Locale::teo_KE => "teo-KE",
Locale::tg => "tg",
Locale::th => "th",
Locale::ti => "ti",
Locale::ti_ER => "ti-ER",
Locale::tig => "tig",
Locale::tk => "tk",
Locale::tn => "tn",
Locale::tn_BW => "tn-BW",
Locale::to => "to",
Locale::tok => "tok",
Locale::tpi => "tpi",
Locale::tr => "tr",
Locale::tr_CY => "tr-CY",
Locale::trv => "trv",
Locale::trw => "trw",
Locale::ts => "ts",
Locale::tt => "tt",
Locale::twq => "twq",
Locale::tyv => "tyv",
Locale::tzm => "tzm",
Locale::ug => "ug",
Locale::uk => "uk",
Locale::und => "und",
Locale::ur => "ur",
Locale::ur_IN => "ur-IN",
Locale::uz => "uz",
Locale::uz_Arab => "uz-Arab",
Locale::uz_Cyrl => "uz-Cyrl",
Locale::uz_Latn => "uz-Latn",
Locale::vai => "vai",
Locale::vai_Latn => "vai-Latn",
Locale::vai_Vaii => "vai-Vaii",
Locale::ve => "ve",
Locale::vec => "vec",
Locale::vi => "vi",
Locale::vmw => "vmw",
Locale::vo => "vo",
Locale::vun => "vun",
Locale::wa => "wa",
Locale::wae => "wae",
Locale::wal => "wal",
Locale::wbp => "wbp",
Locale::wo => "wo",
Locale::xh => "xh",
Locale::xnr => "xnr",
Locale::xog => "xog",
Locale::yav => "yav",
Locale::yi => "yi",
Locale::yo => "yo",
Locale::yo_BJ => "yo-BJ",
Locale::yrl => "yrl",
Locale::yrl_CO => "yrl-CO",
Locale::yrl_VE => "yrl-VE",
Locale::yue => "yue",
Locale::yue_Hans => "yue-Hans",
Locale::yue_Hant => "yue-Hant",
Locale::yue_Hant_CN => "yue-Hant-CN",
Locale::yue_Hant_MO => "yue-Hant-MO",
Locale::za => "za",
Locale::zgh => "zgh",
Locale::zh => "zh",
Locale::zh_Hans => "zh-Hans",
Locale::zh_Hans_HK => "zh-Hans-HK",
Locale::zh_Hans_MO => "zh-Hans-MO",
Locale::zh_Hans_MY => "zh-Hans-MY",
Locale::zh_Hans_SG => "zh-Hans-SG",
Locale::zh_Hant => "zh-Hant",
Locale::zh_Hant_HK => "zh-Hant-HK",
Locale::zh_Hant_MO => "zh-Hant-MO",
Locale::zh_Hant_MY => "zh-Hant-MY",
Locale::zh_Latn => "zh-Latn",
Locale::zu => "zu",
}
}
pub fn fallback(&self) -> Option<Self> {
match self {
Locale::aa => None,
Locale::aa_DJ => Some(Locale::aa),
Locale::aa_ER => Some(Locale::aa),
Locale::ab => None,
Locale::af => None,
Locale::af_NA => Some(Locale::af),
Locale::agq => None,
Locale::ak => None,
Locale::am => None,
Locale::an => None,
Locale::ann => None,
Locale::apc => None,
Locale::ar => None,
Locale::ar_AE => Some(Locale::ar),
Locale::ar_BH => Some(Locale::ar),
Locale::ar_DJ => Some(Locale::ar),
Locale::ar_DZ => Some(Locale::ar),
Locale::ar_EG => Some(Locale::ar),
Locale::ar_EH => Some(Locale::ar),
Locale::ar_ER => Some(Locale::ar),
Locale::ar_IL => Some(Locale::ar),
Locale::ar_IQ => Some(Locale::ar),
Locale::ar_JO => Some(Locale::ar),
Locale::ar_KM => Some(Locale::ar),
Locale::ar_KW => Some(Locale::ar),
Locale::ar_LB => Some(Locale::ar),
Locale::ar_LY => Some(Locale::ar),
Locale::ar_MA => Some(Locale::ar),
Locale::ar_MR => Some(Locale::ar),
Locale::ar_OM => Some(Locale::ar),
Locale::ar_PS => Some(Locale::ar),
Locale::ar_QA => Some(Locale::ar),
Locale::ar_SA => Some(Locale::ar),
Locale::ar_SD => Some(Locale::ar),
Locale::ar_SO => Some(Locale::ar),
Locale::ar_SS => Some(Locale::ar),
Locale::ar_SY => Some(Locale::ar),
Locale::ar_TD => Some(Locale::ar),
Locale::ar_TN => Some(Locale::ar),
Locale::ar_YE => Some(Locale::ar),
Locale::arn => None,
Locale::as_ => None,
Locale::asa => None,
Locale::ast => None,
Locale::az => None,
Locale::az_Arab => Some(Locale::az),
Locale::az_Arab_IQ => Some(Locale::az_Arab),
Locale::az_Arab_TR => Some(Locale::az_Arab),
Locale::az_Cyrl => Some(Locale::az),
Locale::az_Latn => Some(Locale::az),
Locale::ba => None,
Locale::bal => None,
Locale::bal_Arab => Some(Locale::bal),
Locale::bal_Latn => Some(Locale::bal),
Locale::bas => None,
Locale::be => None,
Locale::be_tarask => Some(Locale::be),
Locale::bem => None,
Locale::bew => None,
Locale::bez => None,
Locale::bg => None,
Locale::bgc => None,
Locale::bgn => None,
Locale::bgn_AE => Some(Locale::bgn),
Locale::bgn_AF => Some(Locale::bgn),
Locale::bgn_IR => Some(Locale::bgn),
Locale::bgn_OM => Some(Locale::bgn),
Locale::bho => None,
Locale::blo => None,
Locale::blt => None,
Locale::bm => None,
Locale::bm_Nkoo => Some(Locale::bm),
Locale::bn => None,
Locale::bn_IN => Some(Locale::bn),
Locale::bo => None,
Locale::bo_IN => Some(Locale::bo),
Locale::bqi => None,
Locale::br => None,
Locale::brx => None,
Locale::bs => None,
Locale::bs_Cyrl => Some(Locale::bs),
Locale::bs_Latn => Some(Locale::bs),
Locale::bss => None,
Locale::bua => None,
Locale::byn => None,
Locale::ca => None,
Locale::ca_AD => Some(Locale::ca),
Locale::ca_ES_valencia => None,
Locale::ca_FR => Some(Locale::ca),
Locale::ca_IT => Some(Locale::ca),
Locale::cad => None,
Locale::cch => None,
Locale::ccp => None,
Locale::ccp_IN => Some(Locale::ccp),
Locale::ce => None,
Locale::ceb => None,
Locale::cgg => None,
Locale::cho => None,
Locale::chr => None,
Locale::cic => None,
Locale::ckb => None,
Locale::ckb_IR => Some(Locale::ckb),
Locale::co => None,
Locale::cop => None,
Locale::cs => None,
Locale::csw => None,
Locale::cu => None,
Locale::cv => None,
Locale::cy => None,
Locale::da => None,
Locale::da_GL => Some(Locale::da),
Locale::dav => None,
Locale::de => None,
Locale::de_AT => Some(Locale::de),
Locale::de_BE => Some(Locale::de),
Locale::de_CH => Some(Locale::de),
Locale::de_IT => Some(Locale::de),
Locale::de_LI => Some(Locale::de),
Locale::de_LU => Some(Locale::de),
Locale::dje => None,
Locale::doi => None,
Locale::dsb => None,
Locale::dua => None,
Locale::dv => None,
Locale::dyo => None,
Locale::dz => None,
Locale::ebu => None,
Locale::ee => None,
Locale::ee_TG => Some(Locale::ee),
Locale::el => None,
Locale::el_CY => Some(Locale::el),
Locale::el_polyton => Some(Locale::el),
Locale::en => None,
Locale::en_001 => Some(Locale::en),
Locale::en_150 => Some(Locale::en),
Locale::en_AE => Some(Locale::en),
Locale::en_AG => Some(Locale::en),
Locale::en_AI => Some(Locale::en),
Locale::en_AS => Some(Locale::en),
Locale::en_AT => Some(Locale::en),
Locale::en_AU => Some(Locale::en),
Locale::en_BB => Some(Locale::en),
Locale::en_BE => Some(Locale::en),
Locale::en_BI => Some(Locale::en),
Locale::en_BM => Some(Locale::en),
Locale::en_BS => Some(Locale::en),
Locale::en_BW => Some(Locale::en),
Locale::en_BZ => Some(Locale::en),
Locale::en_CA => Some(Locale::en),
Locale::en_CC => Some(Locale::en),
Locale::en_CH => Some(Locale::en),
Locale::en_CK => Some(Locale::en),
Locale::en_CM => Some(Locale::en),
Locale::en_CX => Some(Locale::en),
Locale::en_CY => Some(Locale::en),
Locale::en_CZ => Some(Locale::en),
Locale::en_DE => Some(Locale::en),
Locale::en_DG => Some(Locale::en),
Locale::en_DK => Some(Locale::en),
Locale::en_DM => Some(Locale::en),
Locale::en_Dsrt => Some(Locale::en),
Locale::en_EE => Some(Locale::en),
Locale::en_ER => Some(Locale::en),
Locale::en_ES => Some(Locale::en),
Locale::en_FI => Some(Locale::en),
Locale::en_FJ => Some(Locale::en),
Locale::en_FK => Some(Locale::en),
Locale::en_FM => Some(Locale::en),
Locale::en_FR => Some(Locale::en),
Locale::en_GB => Some(Locale::en),
Locale::en_GD => Some(Locale::en),
Locale::en_GE => Some(Locale::en),
Locale::en_GG => Some(Locale::en),
Locale::en_GH => Some(Locale::en),
Locale::en_GI => Some(Locale::en),
Locale::en_GM => Some(Locale::en),
Locale::en_GS => Some(Locale::en),
Locale::en_GU => Some(Locale::en),
Locale::en_GY => Some(Locale::en),
Locale::en_HK => Some(Locale::en),
Locale::en_HU => Some(Locale::en),
Locale::en_ID => Some(Locale::en),
Locale::en_IE => Some(Locale::en),
Locale::en_IL => Some(Locale::en),
Locale::en_IM => Some(Locale::en),
Locale::en_IN => Some(Locale::en),
Locale::en_IO => Some(Locale::en),
Locale::en_IT => Some(Locale::en),
Locale::en_JE => Some(Locale::en),
Locale::en_JM => Some(Locale::en),
Locale::en_JP => Some(Locale::en),
Locale::en_KE => Some(Locale::en),
Locale::en_KI => Some(Locale::en),
Locale::en_KN => Some(Locale::en),
Locale::en_KY => Some(Locale::en),
Locale::en_LC => Some(Locale::en),
Locale::en_LR => Some(Locale::en),
Locale::en_LS => Some(Locale::en),
Locale::en_LT => Some(Locale::en),
Locale::en_LV => Some(Locale::en),
Locale::en_MG => Some(Locale::en),
Locale::en_MH => Some(Locale::en),
Locale::en_MO => Some(Locale::en),
Locale::en_MP => Some(Locale::en),
Locale::en_MS => Some(Locale::en),
Locale::en_MT => Some(Locale::en),
Locale::en_MU => Some(Locale::en),
Locale::en_MV => Some(Locale::en),
Locale::en_MW => Some(Locale::en),
Locale::en_MY => Some(Locale::en),
Locale::en_NA => Some(Locale::en),
Locale::en_NF => Some(Locale::en),
Locale::en_NG => Some(Locale::en),
Locale::en_NL => Some(Locale::en),
Locale::en_NO => Some(Locale::en),
Locale::en_NR => Some(Locale::en),
Locale::en_NU => Some(Locale::en),
Locale::en_NZ => Some(Locale::en),
Locale::en_PG => Some(Locale::en),
Locale::en_PH => Some(Locale::en),
Locale::en_PK => Some(Locale::en),
Locale::en_PL => Some(Locale::en),
Locale::en_PN => Some(Locale::en),
Locale::en_PR => Some(Locale::en),
Locale::en_PT => Some(Locale::en),
Locale::en_PW => Some(Locale::en),
Locale::en_RO => Some(Locale::en),
Locale::en_RW => Some(Locale::en),
Locale::en_SB => Some(Locale::en),
Locale::en_SC => Some(Locale::en),
Locale::en_SD => Some(Locale::en),
Locale::en_SE => Some(Locale::en),
Locale::en_SG => Some(Locale::en),
Locale::en_SH => Some(Locale::en),
Locale::en_SI => Some(Locale::en),
Locale::en_SK => Some(Locale::en),
Locale::en_SL => Some(Locale::en),
Locale::en_SS => Some(Locale::en),
Locale::en_SX => Some(Locale::en),
Locale::en_SZ => Some(Locale::en),
Locale::en_Shaw => Some(Locale::en),
Locale::en_TC => Some(Locale::en),
Locale::en_TK => Some(Locale::en),
Locale::en_TO => Some(Locale::en),
Locale::en_TT => Some(Locale::en),
Locale::en_TV => Some(Locale::en),
Locale::en_TZ => Some(Locale::en),
Locale::en_UA => Some(Locale::en),
Locale::en_UG => Some(Locale::en),
Locale::en_UM => Some(Locale::en),
Locale::en_VC => Some(Locale::en),
Locale::en_VG => Some(Locale::en),
Locale::en_VI => Some(Locale::en),
Locale::en_VU => Some(Locale::en),
Locale::en_WS => Some(Locale::en),
Locale::en_ZA => Some(Locale::en),
Locale::en_ZM => Some(Locale::en),
Locale::en_ZW => Some(Locale::en),
Locale::eo => None,
Locale::es => None,
Locale::es_419 => Some(Locale::es),
Locale::es_AR => Some(Locale::es),
Locale::es_BO => Some(Locale::es),
Locale::es_BR => Some(Locale::es),
Locale::es_BZ => Some(Locale::es),
Locale::es_CL => Some(Locale::es),
Locale::es_CO => Some(Locale::es),
Locale::es_CR => Some(Locale::es),
Locale::es_CU => Some(Locale::es),
Locale::es_DO => Some(Locale::es),
Locale::es_EA => Some(Locale::es),
Locale::es_EC => Some(Locale::es),
Locale::es_GQ => Some(Locale::es),
Locale::es_GT => Some(Locale::es),
Locale::es_HN => Some(Locale::es),
Locale::es_IC => Some(Locale::es),
Locale::es_MX => Some(Locale::es),
Locale::es_NI => Some(Locale::es),
Locale::es_PA => Some(Locale::es),
Locale::es_PE => Some(Locale::es),
Locale::es_PH => Some(Locale::es),
Locale::es_PR => Some(Locale::es),
Locale::es_PY => Some(Locale::es),
Locale::es_SV => Some(Locale::es),
Locale::es_US => Some(Locale::es),
Locale::es_UY => Some(Locale::es),
Locale::es_VE => Some(Locale::es),
Locale::et => None,
Locale::eu => None,
Locale::ewo => None,
Locale::fa => None,
Locale::fa_AF => Some(Locale::fa),
Locale::ff => None,
Locale::ff_Adlm => Some(Locale::ff),
Locale::ff_Adlm_BF => Some(Locale::ff_Adlm),
Locale::ff_Adlm_CM => Some(Locale::ff_Adlm),
Locale::ff_Adlm_GH => Some(Locale::ff_Adlm),
Locale::ff_Adlm_GM => Some(Locale::ff_Adlm),
Locale::ff_Adlm_GW => Some(Locale::ff_Adlm),
Locale::ff_Adlm_LR => Some(Locale::ff_Adlm),
Locale::ff_Adlm_MR => Some(Locale::ff_Adlm),
Locale::ff_Adlm_NE => Some(Locale::ff_Adlm),
Locale::ff_Adlm_NG => Some(Locale::ff_Adlm),
Locale::ff_Adlm_SL => Some(Locale::ff_Adlm),
Locale::ff_Adlm_SN => Some(Locale::ff_Adlm),
Locale::ff_Latn => Some(Locale::ff),
Locale::ff_Latn_BF => Some(Locale::ff_Latn),
Locale::ff_Latn_CM => Some(Locale::ff_Latn),
Locale::ff_Latn_GH => Some(Locale::ff_Latn),
Locale::ff_Latn_GM => Some(Locale::ff_Latn),
Locale::ff_Latn_GN => Some(Locale::ff_Latn),
Locale::ff_Latn_GW => Some(Locale::ff_Latn),
Locale::ff_Latn_LR => Some(Locale::ff_Latn),
Locale::ff_Latn_MR => Some(Locale::ff_Latn),
Locale::ff_Latn_NE => Some(Locale::ff_Latn),
Locale::ff_Latn_NG => Some(Locale::ff_Latn),
Locale::ff_Latn_SL => Some(Locale::ff_Latn),
Locale::fi => None,
Locale::fil => None,
Locale::fo => None,
Locale::fo_DK => Some(Locale::fo),
Locale::fr => None,
Locale::fr_BE => Some(Locale::fr),
Locale::fr_BF => Some(Locale::fr),
Locale::fr_BI => Some(Locale::fr),
Locale::fr_BJ => Some(Locale::fr),
Locale::fr_BL => Some(Locale::fr),
Locale::fr_CA => Some(Locale::fr),
Locale::fr_CD => Some(Locale::fr),
Locale::fr_CF => Some(Locale::fr),
Locale::fr_CG => Some(Locale::fr),
Locale::fr_CH => Some(Locale::fr),
Locale::fr_CI => Some(Locale::fr),
Locale::fr_CM => Some(Locale::fr),
Locale::fr_DJ => Some(Locale::fr),
Locale::fr_DZ => Some(Locale::fr),
Locale::fr_GA => Some(Locale::fr),
Locale::fr_GF => Some(Locale::fr),
Locale::fr_GN => Some(Locale::fr),
Locale::fr_GP => Some(Locale::fr),
Locale::fr_GQ => Some(Locale::fr),
Locale::fr_HT => Some(Locale::fr),
Locale::fr_KM => Some(Locale::fr),
Locale::fr_LU => Some(Locale::fr),
Locale::fr_MA => Some(Locale::fr),
Locale::fr_MC => Some(Locale::fr),
Locale::fr_MF => Some(Locale::fr),
Locale::fr_MG => Some(Locale::fr),
Locale::fr_ML => Some(Locale::fr),
Locale::fr_MQ => Some(Locale::fr),
Locale::fr_MR => Some(Locale::fr),
Locale::fr_MU => Some(Locale::fr),
Locale::fr_NC => Some(Locale::fr),
Locale::fr_NE => Some(Locale::fr),
Locale::fr_PF => Some(Locale::fr),
Locale::fr_PM => Some(Locale::fr),
Locale::fr_RE => Some(Locale::fr),
Locale::fr_RW => Some(Locale::fr),
Locale::fr_SC => Some(Locale::fr),
Locale::fr_SN => Some(Locale::fr),
Locale::fr_SY => Some(Locale::fr),
Locale::fr_TD => Some(Locale::fr),
Locale::fr_TG => Some(Locale::fr),
Locale::fr_TN => Some(Locale::fr),
Locale::fr_VU => Some(Locale::fr),
Locale::fr_WF => Some(Locale::fr),
Locale::fr_YT => Some(Locale::fr),
Locale::frr => None,
Locale::fur => None,
Locale::fy => None,
Locale::ga => None,
Locale::ga_GB => Some(Locale::ga),
Locale::gaa => None,
Locale::gd => None,
Locale::gez => None,
Locale::gez_ER => Some(Locale::gez),
Locale::gl => None,
Locale::gn => None,
Locale::gsw => None,
Locale::gsw_FR => Some(Locale::gsw),
Locale::gsw_LI => Some(Locale::gsw),
Locale::gu => None,
Locale::guz => None,
Locale::gv => None,
Locale::ha => None,
Locale::ha_Arab => Some(Locale::ha),
Locale::ha_Arab_SD => Some(Locale::ha_Arab),
Locale::ha_GH => Some(Locale::ha),
Locale::ha_NE => Some(Locale::ha),
Locale::haw => None,
Locale::he => None,
Locale::hi => None,
Locale::hi_Latn => Some(Locale::hi),
Locale::hnj => None,
Locale::hnj_Hmnp => Some(Locale::hnj),
Locale::hr => None,
Locale::hr_BA => Some(Locale::hr),
Locale::hsb => None,
Locale::ht => None,
Locale::hu => None,
Locale::hy => None,
Locale::ia => None,
Locale::id => None,
Locale::ie => None,
Locale::ig => None,
Locale::ii => None,
Locale::io => None,
Locale::is => None,
Locale::it => None,
Locale::it_CH => Some(Locale::it),
Locale::it_SM => Some(Locale::it),
Locale::it_VA => Some(Locale::it),
Locale::iu => None,
Locale::iu_Latn => Some(Locale::iu),
Locale::ja => None,
Locale::jbo => None,
Locale::jgo => None,
Locale::jmc => None,
Locale::jv => None,
Locale::ka => None,
Locale::kaa => None,
Locale::kaa_Cyrl => Some(Locale::kaa),
Locale::kaa_Latn => Some(Locale::kaa),
Locale::kab => None,
Locale::kaj => None,
Locale::kam => None,
Locale::kcg => None,
Locale::kde => None,
Locale::kea => None,
Locale::kek => None,
Locale::ken => None,
Locale::kgp => None,
Locale::khq => None,
Locale::ki => None,
Locale::kk => None,
Locale::kk_Arab => Some(Locale::kk),
Locale::kk_Cyrl => Some(Locale::kk),
Locale::kk_KZ => Some(Locale::kk),
Locale::kkj => None,
Locale::kl => None,
Locale::kln => None,
Locale::km => None,
Locale::kn => None,
Locale::ko => None,
Locale::ko_CN => Some(Locale::ko),
Locale::ko_KP => Some(Locale::ko),
Locale::kok => None,
Locale::kok_Deva => Some(Locale::kok),
Locale::kok_Latn => Some(Locale::kok),
Locale::kpe => None,
Locale::kpe_GN => Some(Locale::kpe),
Locale::ks => None,
Locale::ks_Arab => Some(Locale::ks),
Locale::ks_Deva => Some(Locale::ks),
Locale::ksb => None,
Locale::ksf => None,
Locale::ksh => None,
Locale::ku => None,
Locale::ku_Arab => Some(Locale::ku),
Locale::ku_Arab_IR => Some(Locale::ku_Arab),
Locale::ku_Latn => Some(Locale::ku),
Locale::ku_Latn_IQ => Some(Locale::ku_Latn),
Locale::ku_Latn_SY => Some(Locale::ku_Latn),
Locale::ku_TR => Some(Locale::ku),
Locale::kw => None,
Locale::kxv => None,
Locale::kxv_Deva => Some(Locale::kxv),
Locale::kxv_Latn => Some(Locale::kxv),
Locale::kxv_Orya => Some(Locale::kxv),
Locale::kxv_Telu => Some(Locale::kxv),
Locale::ky => None,
Locale::la => None,
Locale::lag => None,
Locale::lb => None,
Locale::lg => None,
Locale::lij => None,
Locale::lkt => None,
Locale::lld => None,
Locale::lmo => None,
Locale::ln => None,
Locale::ln_AO => Some(Locale::ln),
Locale::ln_CF => Some(Locale::ln),
Locale::ln_CG => Some(Locale::ln),
Locale::lo => None,
Locale::lrc => None,
Locale::lrc_IQ => Some(Locale::lrc),
Locale::lt => None,
Locale::ltg => None,
Locale::lu => None,
Locale::luo => None,
Locale::luy => None,
Locale::lv => None,
Locale::lzz => None,
Locale::mai => None,
Locale::mas => None,
Locale::mas_TZ => Some(Locale::mas),
Locale::mdf => None,
Locale::mer => None,
Locale::mfe => None,
Locale::mg => None,
Locale::mgh => None,
Locale::mgo => None,
Locale::mhn => None,
Locale::mi => None,
Locale::mic => None,
Locale::mk => None,
Locale::ml => None,
Locale::mn => None,
Locale::mn_Mong => Some(Locale::mn),
Locale::mn_Mong_MN => Some(Locale::mn_Mong),
Locale::mni => None,
Locale::mni_Beng => Some(Locale::mni),
Locale::mni_Mtei => Some(Locale::mni),
Locale::moh => None,
Locale::mr => None,
Locale::ms => None,
Locale::ms_Arab => Some(Locale::ms),
Locale::ms_Arab_BN => Some(Locale::ms_Arab),
Locale::ms_BN => Some(Locale::ms),
Locale::ms_ID => Some(Locale::ms),
Locale::ms_SG => Some(Locale::ms),
Locale::mt => None,
Locale::mua => None,
Locale::mus => None,
Locale::mww => None,
Locale::mww_Hmnp => Some(Locale::mww),
Locale::my => None,
Locale::myv => None,
Locale::mzn => None,
Locale::naq => None,
Locale::nb => None,
Locale::nb_SJ => Some(Locale::nb),
Locale::nd => None,
Locale::nds => None,
Locale::nds_NL => Some(Locale::nds),
Locale::ne => None,
Locale::ne_IN => Some(Locale::ne),
Locale::nl => None,
Locale::nl_AW => Some(Locale::nl),
Locale::nl_BE => Some(Locale::nl),
Locale::nl_BQ => Some(Locale::nl),
Locale::nl_CW => Some(Locale::nl),
Locale::nl_SR => Some(Locale::nl),
Locale::nl_SX => Some(Locale::nl),
Locale::nmg => None,
Locale::nn => None,
Locale::nnh => None,
Locale::no => None,
Locale::nqo => None,
Locale::nr => None,
Locale::nso => None,
Locale::nus => None,
Locale::nv => None,
Locale::ny => None,
Locale::nyn => None,
Locale::oc => None,
Locale::oc_ES => Some(Locale::oc),
Locale::oka => None,
Locale::oka_US => Some(Locale::oka),
Locale::om => None,
Locale::om_KE => Some(Locale::om),
Locale::or => None,
Locale::os => None,
Locale::os_RU => Some(Locale::os),
Locale::osa => None,
Locale::pa => None,
Locale::pa_Arab => Some(Locale::pa),
Locale::pa_Guru => Some(Locale::pa),
Locale::pap => None,
Locale::pap_AW => Some(Locale::pap),
Locale::pcm => None,
Locale::pi => None,
Locale::pi_Latn => Some(Locale::pi),
Locale::pis => None,
Locale::pl => None,
Locale::pms => None,
Locale::prg => None,
Locale::ps => None,
Locale::ps_PK => Some(Locale::ps),
Locale::pt => None,
Locale::pt_AO => Some(Locale::pt),
Locale::pt_CH => Some(Locale::pt),
Locale::pt_CV => Some(Locale::pt),
Locale::pt_GQ => Some(Locale::pt),
Locale::pt_GW => Some(Locale::pt),
Locale::pt_LU => Some(Locale::pt),
Locale::pt_MO => Some(Locale::pt),
Locale::pt_MZ => Some(Locale::pt),
Locale::pt_PT => Some(Locale::pt),
Locale::pt_ST => Some(Locale::pt),
Locale::pt_TL => Some(Locale::pt),
Locale::qu => None,
Locale::qu_BO => Some(Locale::qu),
Locale::qu_EC => Some(Locale::qu),
Locale::quc => None,
Locale::raj => None,
Locale::rhg => None,
Locale::rhg_Rohg => Some(Locale::rhg),
Locale::rhg_Rohg_BD => Some(Locale::rhg_Rohg),
Locale::rif => None,
Locale::rm => None,
Locale::rn => None,
Locale::ro => None,
Locale::ro_MD => Some(Locale::ro),
Locale::rof => None,
Locale::ru => None,
Locale::ru_BY => Some(Locale::ru),
Locale::ru_KG => Some(Locale::ru),
Locale::ru_KZ => Some(Locale::ru),
Locale::ru_MD => Some(Locale::ru),
Locale::ru_UA => Some(Locale::ru),
Locale::rw => None,
Locale::rwk => None,
Locale::sa => None,
Locale::sah => None,
Locale::saq => None,
Locale::sat => None,
Locale::sat_Deva => Some(Locale::sat),
Locale::sat_Olck => Some(Locale::sat),
Locale::sbp => None,
Locale::sc => None,
Locale::scn => None,
Locale::sd => None,
Locale::sd_Arab => Some(Locale::sd),
Locale::sd_Deva => Some(Locale::sd),
Locale::sdh => None,
Locale::sdh_IQ => Some(Locale::sdh),
Locale::se => None,
Locale::se_FI => Some(Locale::se),
Locale::se_SE => Some(Locale::se),
Locale::seh => None,
Locale::ses => None,
Locale::sg => None,
Locale::sgs => None,
Locale::shi => None,
Locale::shi_Latn => Some(Locale::shi),
Locale::shi_Tfng => Some(Locale::shi),
Locale::shn => None,
Locale::shn_TH => Some(Locale::shn),
Locale::si => None,
Locale::sid => None,
Locale::sk => None,
Locale::skr => None,
Locale::sl => None,
Locale::sma => None,
Locale::sma_NO => Some(Locale::sma),
Locale::smj => None,
Locale::smj_NO => Some(Locale::smj),
Locale::smn => None,
Locale::sms => None,
Locale::sn => None,
Locale::so => None,
Locale::so_DJ => Some(Locale::so),
Locale::so_ET => Some(Locale::so),
Locale::so_KE => Some(Locale::so),
Locale::sq => None,
Locale::sq_MK => Some(Locale::sq),
Locale::sq_XK => Some(Locale::sq),
Locale::sr => None,
Locale::sr_Cyrl => Some(Locale::sr),
Locale::sr_Cyrl_BA => Some(Locale::sr_Cyrl),
Locale::sr_Cyrl_ME => Some(Locale::sr_Cyrl),
Locale::sr_Cyrl_XK => Some(Locale::sr_Cyrl),
Locale::sr_Latn => Some(Locale::sr),
Locale::sr_Latn_BA => Some(Locale::sr_Latn),
Locale::sr_Latn_ME => Some(Locale::sr_Latn),
Locale::sr_Latn_XK => Some(Locale::sr_Latn),
Locale::ss => None,
Locale::ss_SZ => Some(Locale::ss),
Locale::ssy => None,
Locale::st => None,
Locale::st_LS => Some(Locale::st),
Locale::su => None,
Locale::su_Latn => Some(Locale::su),
Locale::suz => None,
Locale::suz_Deva => Some(Locale::suz),
Locale::suz_Sunu => Some(Locale::suz),
Locale::sv => None,
Locale::sv_AX => Some(Locale::sv),
Locale::sv_FI => Some(Locale::sv),
Locale::sw => None,
Locale::sw_CD => Some(Locale::sw),
Locale::sw_KE => Some(Locale::sw),
Locale::sw_UG => Some(Locale::sw),
Locale::syr => None,
Locale::syr_SY => Some(Locale::syr),
Locale::szl => None,
Locale::ta => None,
Locale::ta_LK => Some(Locale::ta),
Locale::ta_MY => Some(Locale::ta),
Locale::ta_SG => Some(Locale::ta),
Locale::te => None,
Locale::teo => None,
Locale::teo_KE => Some(Locale::teo),
Locale::tg => None,
Locale::th => None,
Locale::ti => None,
Locale::ti_ER => Some(Locale::ti),
Locale::tig => None,
Locale::tk => None,
Locale::tn => None,
Locale::tn_BW => Some(Locale::tn),
Locale::to => None,
Locale::tok => None,
Locale::tpi => None,
Locale::tr => None,
Locale::tr_CY => Some(Locale::tr),
Locale::trv => None,
Locale::trw => None,
Locale::ts => None,
Locale::tt => None,
Locale::twq => None,
Locale::tyv => None,
Locale::tzm => None,
Locale::ug => None,
Locale::uk => None,
Locale::und => None,
Locale::ur => None,
Locale::ur_IN => Some(Locale::ur),
Locale::uz => None,
Locale::uz_Arab => Some(Locale::uz),
Locale::uz_Cyrl => Some(Locale::uz),
Locale::uz_Latn => Some(Locale::uz),
Locale::vai => None,
Locale::vai_Latn => Some(Locale::vai),
Locale::vai_Vaii => Some(Locale::vai),
Locale::ve => None,
Locale::vec => None,
Locale::vi => None,
Locale::vmw => None,
Locale::vo => None,
Locale::vun => None,
Locale::wa => None,
Locale::wae => None,
Locale::wal => None,
Locale::wbp => None,
Locale::wo => None,
Locale::xh => None,
Locale::xnr => None,
Locale::xog => None,
Locale::yav => None,
Locale::yi => None,
Locale::yo => None,
Locale::yo_BJ => Some(Locale::yo),
Locale::yrl => None,
Locale::yrl_CO => Some(Locale::yrl),
Locale::yrl_VE => Some(Locale::yrl),
Locale::yue => None,
Locale::yue_Hans => Some(Locale::yue),
Locale::yue_Hant => Some(Locale::yue),
Locale::yue_Hant_CN => Some(Locale::yue_Hant),
Locale::yue_Hant_MO => Some(Locale::yue_Hant),
Locale::za => None,
Locale::zgh => None,
Locale::zh => None,
Locale::zh_Hans => Some(Locale::zh),
Locale::zh_Hans_HK => Some(Locale::zh_Hans),
Locale::zh_Hans_MO => Some(Locale::zh_Hans),
Locale::zh_Hans_MY => Some(Locale::zh_Hans),
Locale::zh_Hans_SG => Some(Locale::zh_Hans),
Locale::zh_Hant => Some(Locale::zh),
Locale::zh_Hant_HK => Some(Locale::zh_Hant),
Locale::zh_Hant_MO => Some(Locale::zh_Hant),
Locale::zh_Hant_MY => Some(Locale::zh_Hant),
Locale::zh_Latn => Some(Locale::zh),
Locale::zu => None,
}
}
pub fn from_flexible(s: &str) -> Result<Self, LocaleError> {
let normalized = s.replace('_', "-").to_lowercase();
Self::from_str(&normalized)
}
pub fn negotiate(&self, available: &[Locale]) -> Option<Self> {
if available.contains(self) {
return Some(*self);
}
let mut current = *self;
while let Some(fallback) = current.fallback() {
if available.contains(&fallback) {
return Some(fallback);
}
current = fallback;
}
None
}
pub fn suggest(input: &str) -> Vec<Self> {
let normalized = input.replace('-', "_").to_lowercase();
let mut suggestions = Vec::new();
for &locale_str in AVAILABLE_LOCALES.iter() {
let locale_normalized = locale_str.replace('-', "_").to_lowercase();
let distance = _levenshtein_distance(&normalized, &locale_normalized);
if distance <= 3 {
suggestions.push((distance, locale_str));
}
}
suggestions.sort_by(|a, b| a.0.cmp(&b.0).then_with(|| a.1.cmp(b.1)));
suggestions
.into_iter()
.take(5)
.filter_map(|(_, s)| Self::from_str(s).ok())
.collect()
}
pub fn language_code(&self) -> &'static str {
match self {
Locale::aa => "aa",
Locale::aa_DJ => "aa",
Locale::aa_ER => "aa",
Locale::ab => "ab",
Locale::af => "af",
Locale::af_NA => "af",
Locale::agq => "agq",
Locale::ak => "ak",
Locale::am => "am",
Locale::an => "an",
Locale::ann => "ann",
Locale::apc => "apc",
Locale::ar => "ar",
Locale::ar_AE => "ar",
Locale::ar_BH => "ar",
Locale::ar_DJ => "ar",
Locale::ar_DZ => "ar",
Locale::ar_EG => "ar",
Locale::ar_EH => "ar",
Locale::ar_ER => "ar",
Locale::ar_IL => "ar",
Locale::ar_IQ => "ar",
Locale::ar_JO => "ar",
Locale::ar_KM => "ar",
Locale::ar_KW => "ar",
Locale::ar_LB => "ar",
Locale::ar_LY => "ar",
Locale::ar_MA => "ar",
Locale::ar_MR => "ar",
Locale::ar_OM => "ar",
Locale::ar_PS => "ar",
Locale::ar_QA => "ar",
Locale::ar_SA => "ar",
Locale::ar_SD => "ar",
Locale::ar_SO => "ar",
Locale::ar_SS => "ar",
Locale::ar_SY => "ar",
Locale::ar_TD => "ar",
Locale::ar_TN => "ar",
Locale::ar_YE => "ar",
Locale::arn => "arn",
Locale::as_ => "as",
Locale::asa => "asa",
Locale::ast => "ast",
Locale::az => "az",
Locale::az_Arab => "az",
Locale::az_Arab_IQ => "az",
Locale::az_Arab_TR => "az",
Locale::az_Cyrl => "az",
Locale::az_Latn => "az",
Locale::ba => "ba",
Locale::bal => "bal",
Locale::bal_Arab => "bal",
Locale::bal_Latn => "bal",
Locale::bas => "bas",
Locale::be => "be",
Locale::be_tarask => "be",
Locale::bem => "bem",
Locale::bew => "bew",
Locale::bez => "bez",
Locale::bg => "bg",
Locale::bgc => "bgc",
Locale::bgn => "bgn",
Locale::bgn_AE => "bgn",
Locale::bgn_AF => "bgn",
Locale::bgn_IR => "bgn",
Locale::bgn_OM => "bgn",
Locale::bho => "bho",
Locale::blo => "blo",
Locale::blt => "blt",
Locale::bm => "bm",
Locale::bm_Nkoo => "bm",
Locale::bn => "bn",
Locale::bn_IN => "bn",
Locale::bo => "bo",
Locale::bo_IN => "bo",
Locale::bqi => "bqi",
Locale::br => "br",
Locale::brx => "brx",
Locale::bs => "bs",
Locale::bs_Cyrl => "bs",
Locale::bs_Latn => "bs",
Locale::bss => "bss",
Locale::bua => "bua",
Locale::byn => "byn",
Locale::ca => "ca",
Locale::ca_AD => "ca",
Locale::ca_ES_valencia => "ca",
Locale::ca_FR => "ca",
Locale::ca_IT => "ca",
Locale::cad => "cad",
Locale::cch => "cch",
Locale::ccp => "ccp",
Locale::ccp_IN => "ccp",
Locale::ce => "ce",
Locale::ceb => "ceb",
Locale::cgg => "cgg",
Locale::cho => "cho",
Locale::chr => "chr",
Locale::cic => "cic",
Locale::ckb => "ckb",
Locale::ckb_IR => "ckb",
Locale::co => "co",
Locale::cop => "cop",
Locale::cs => "cs",
Locale::csw => "csw",
Locale::cu => "cu",
Locale::cv => "cv",
Locale::cy => "cy",
Locale::da => "da",
Locale::da_GL => "da",
Locale::dav => "dav",
Locale::de => "de",
Locale::de_AT => "de",
Locale::de_BE => "de",
Locale::de_CH => "de",
Locale::de_IT => "de",
Locale::de_LI => "de",
Locale::de_LU => "de",
Locale::dje => "dje",
Locale::doi => "doi",
Locale::dsb => "dsb",
Locale::dua => "dua",
Locale::dv => "dv",
Locale::dyo => "dyo",
Locale::dz => "dz",
Locale::ebu => "ebu",
Locale::ee => "ee",
Locale::ee_TG => "ee",
Locale::el => "el",
Locale::el_CY => "el",
Locale::el_polyton => "el",
Locale::en => "en",
Locale::en_001 => "en",
Locale::en_150 => "en",
Locale::en_AE => "en",
Locale::en_AG => "en",
Locale::en_AI => "en",
Locale::en_AS => "en",
Locale::en_AT => "en",
Locale::en_AU => "en",
Locale::en_BB => "en",
Locale::en_BE => "en",
Locale::en_BI => "en",
Locale::en_BM => "en",
Locale::en_BS => "en",
Locale::en_BW => "en",
Locale::en_BZ => "en",
Locale::en_CA => "en",
Locale::en_CC => "en",
Locale::en_CH => "en",
Locale::en_CK => "en",
Locale::en_CM => "en",
Locale::en_CX => "en",
Locale::en_CY => "en",
Locale::en_CZ => "en",
Locale::en_DE => "en",
Locale::en_DG => "en",
Locale::en_DK => "en",
Locale::en_DM => "en",
Locale::en_Dsrt => "en",
Locale::en_EE => "en",
Locale::en_ER => "en",
Locale::en_ES => "en",
Locale::en_FI => "en",
Locale::en_FJ => "en",
Locale::en_FK => "en",
Locale::en_FM => "en",
Locale::en_FR => "en",
Locale::en_GB => "en",
Locale::en_GD => "en",
Locale::en_GE => "en",
Locale::en_GG => "en",
Locale::en_GH => "en",
Locale::en_GI => "en",
Locale::en_GM => "en",
Locale::en_GS => "en",
Locale::en_GU => "en",
Locale::en_GY => "en",
Locale::en_HK => "en",
Locale::en_HU => "en",
Locale::en_ID => "en",
Locale::en_IE => "en",
Locale::en_IL => "en",
Locale::en_IM => "en",
Locale::en_IN => "en",
Locale::en_IO => "en",
Locale::en_IT => "en",
Locale::en_JE => "en",
Locale::en_JM => "en",
Locale::en_JP => "en",
Locale::en_KE => "en",
Locale::en_KI => "en",
Locale::en_KN => "en",
Locale::en_KY => "en",
Locale::en_LC => "en",
Locale::en_LR => "en",
Locale::en_LS => "en",
Locale::en_LT => "en",
Locale::en_LV => "en",
Locale::en_MG => "en",
Locale::en_MH => "en",
Locale::en_MO => "en",
Locale::en_MP => "en",
Locale::en_MS => "en",
Locale::en_MT => "en",
Locale::en_MU => "en",
Locale::en_MV => "en",
Locale::en_MW => "en",
Locale::en_MY => "en",
Locale::en_NA => "en",
Locale::en_NF => "en",
Locale::en_NG => "en",
Locale::en_NL => "en",
Locale::en_NO => "en",
Locale::en_NR => "en",
Locale::en_NU => "en",
Locale::en_NZ => "en",
Locale::en_PG => "en",
Locale::en_PH => "en",
Locale::en_PK => "en",
Locale::en_PL => "en",
Locale::en_PN => "en",
Locale::en_PR => "en",
Locale::en_PT => "en",
Locale::en_PW => "en",
Locale::en_RO => "en",
Locale::en_RW => "en",
Locale::en_SB => "en",
Locale::en_SC => "en",
Locale::en_SD => "en",
Locale::en_SE => "en",
Locale::en_SG => "en",
Locale::en_SH => "en",
Locale::en_SI => "en",
Locale::en_SK => "en",
Locale::en_SL => "en",
Locale::en_SS => "en",
Locale::en_SX => "en",
Locale::en_SZ => "en",
Locale::en_Shaw => "en",
Locale::en_TC => "en",
Locale::en_TK => "en",
Locale::en_TO => "en",
Locale::en_TT => "en",
Locale::en_TV => "en",
Locale::en_TZ => "en",
Locale::en_UA => "en",
Locale::en_UG => "en",
Locale::en_UM => "en",
Locale::en_VC => "en",
Locale::en_VG => "en",
Locale::en_VI => "en",
Locale::en_VU => "en",
Locale::en_WS => "en",
Locale::en_ZA => "en",
Locale::en_ZM => "en",
Locale::en_ZW => "en",
Locale::eo => "eo",
Locale::es => "es",
Locale::es_419 => "es",
Locale::es_AR => "es",
Locale::es_BO => "es",
Locale::es_BR => "es",
Locale::es_BZ => "es",
Locale::es_CL => "es",
Locale::es_CO => "es",
Locale::es_CR => "es",
Locale::es_CU => "es",
Locale::es_DO => "es",
Locale::es_EA => "es",
Locale::es_EC => "es",
Locale::es_GQ => "es",
Locale::es_GT => "es",
Locale::es_HN => "es",
Locale::es_IC => "es",
Locale::es_MX => "es",
Locale::es_NI => "es",
Locale::es_PA => "es",
Locale::es_PE => "es",
Locale::es_PH => "es",
Locale::es_PR => "es",
Locale::es_PY => "es",
Locale::es_SV => "es",
Locale::es_US => "es",
Locale::es_UY => "es",
Locale::es_VE => "es",
Locale::et => "et",
Locale::eu => "eu",
Locale::ewo => "ewo",
Locale::fa => "fa",
Locale::fa_AF => "fa",
Locale::ff => "ff",
Locale::ff_Adlm => "ff",
Locale::ff_Adlm_BF => "ff",
Locale::ff_Adlm_CM => "ff",
Locale::ff_Adlm_GH => "ff",
Locale::ff_Adlm_GM => "ff",
Locale::ff_Adlm_GW => "ff",
Locale::ff_Adlm_LR => "ff",
Locale::ff_Adlm_MR => "ff",
Locale::ff_Adlm_NE => "ff",
Locale::ff_Adlm_NG => "ff",
Locale::ff_Adlm_SL => "ff",
Locale::ff_Adlm_SN => "ff",
Locale::ff_Latn => "ff",
Locale::ff_Latn_BF => "ff",
Locale::ff_Latn_CM => "ff",
Locale::ff_Latn_GH => "ff",
Locale::ff_Latn_GM => "ff",
Locale::ff_Latn_GN => "ff",
Locale::ff_Latn_GW => "ff",
Locale::ff_Latn_LR => "ff",
Locale::ff_Latn_MR => "ff",
Locale::ff_Latn_NE => "ff",
Locale::ff_Latn_NG => "ff",
Locale::ff_Latn_SL => "ff",
Locale::fi => "fi",
Locale::fil => "fil",
Locale::fo => "fo",
Locale::fo_DK => "fo",
Locale::fr => "fr",
Locale::fr_BE => "fr",
Locale::fr_BF => "fr",
Locale::fr_BI => "fr",
Locale::fr_BJ => "fr",
Locale::fr_BL => "fr",
Locale::fr_CA => "fr",
Locale::fr_CD => "fr",
Locale::fr_CF => "fr",
Locale::fr_CG => "fr",
Locale::fr_CH => "fr",
Locale::fr_CI => "fr",
Locale::fr_CM => "fr",
Locale::fr_DJ => "fr",
Locale::fr_DZ => "fr",
Locale::fr_GA => "fr",
Locale::fr_GF => "fr",
Locale::fr_GN => "fr",
Locale::fr_GP => "fr",
Locale::fr_GQ => "fr",
Locale::fr_HT => "fr",
Locale::fr_KM => "fr",
Locale::fr_LU => "fr",
Locale::fr_MA => "fr",
Locale::fr_MC => "fr",
Locale::fr_MF => "fr",
Locale::fr_MG => "fr",
Locale::fr_ML => "fr",
Locale::fr_MQ => "fr",
Locale::fr_MR => "fr",
Locale::fr_MU => "fr",
Locale::fr_NC => "fr",
Locale::fr_NE => "fr",
Locale::fr_PF => "fr",
Locale::fr_PM => "fr",
Locale::fr_RE => "fr",
Locale::fr_RW => "fr",
Locale::fr_SC => "fr",
Locale::fr_SN => "fr",
Locale::fr_SY => "fr",
Locale::fr_TD => "fr",
Locale::fr_TG => "fr",
Locale::fr_TN => "fr",
Locale::fr_VU => "fr",
Locale::fr_WF => "fr",
Locale::fr_YT => "fr",
Locale::frr => "frr",
Locale::fur => "fur",
Locale::fy => "fy",
Locale::ga => "ga",
Locale::ga_GB => "ga",
Locale::gaa => "gaa",
Locale::gd => "gd",
Locale::gez => "gez",
Locale::gez_ER => "gez",
Locale::gl => "gl",
Locale::gn => "gn",
Locale::gsw => "gsw",
Locale::gsw_FR => "gsw",
Locale::gsw_LI => "gsw",
Locale::gu => "gu",
Locale::guz => "guz",
Locale::gv => "gv",
Locale::ha => "ha",
Locale::ha_Arab => "ha",
Locale::ha_Arab_SD => "ha",
Locale::ha_GH => "ha",
Locale::ha_NE => "ha",
Locale::haw => "haw",
Locale::he => "he",
Locale::hi => "hi",
Locale::hi_Latn => "hi",
Locale::hnj => "hnj",
Locale::hnj_Hmnp => "hnj",
Locale::hr => "hr",
Locale::hr_BA => "hr",
Locale::hsb => "hsb",
Locale::ht => "ht",
Locale::hu => "hu",
Locale::hy => "hy",
Locale::ia => "ia",
Locale::id => "id",
Locale::ie => "ie",
Locale::ig => "ig",
Locale::ii => "ii",
Locale::io => "io",
Locale::is => "is",
Locale::it => "it",
Locale::it_CH => "it",
Locale::it_SM => "it",
Locale::it_VA => "it",
Locale::iu => "iu",
Locale::iu_Latn => "iu",
Locale::ja => "ja",
Locale::jbo => "jbo",
Locale::jgo => "jgo",
Locale::jmc => "jmc",
Locale::jv => "jv",
Locale::ka => "ka",
Locale::kaa => "kaa",
Locale::kaa_Cyrl => "kaa",
Locale::kaa_Latn => "kaa",
Locale::kab => "kab",
Locale::kaj => "kaj",
Locale::kam => "kam",
Locale::kcg => "kcg",
Locale::kde => "kde",
Locale::kea => "kea",
Locale::kek => "kek",
Locale::ken => "ken",
Locale::kgp => "kgp",
Locale::khq => "khq",
Locale::ki => "ki",
Locale::kk => "kk",
Locale::kk_Arab => "kk",
Locale::kk_Cyrl => "kk",
Locale::kk_KZ => "kk",
Locale::kkj => "kkj",
Locale::kl => "kl",
Locale::kln => "kln",
Locale::km => "km",
Locale::kn => "kn",
Locale::ko => "ko",
Locale::ko_CN => "ko",
Locale::ko_KP => "ko",
Locale::kok => "kok",
Locale::kok_Deva => "kok",
Locale::kok_Latn => "kok",
Locale::kpe => "kpe",
Locale::kpe_GN => "kpe",
Locale::ks => "ks",
Locale::ks_Arab => "ks",
Locale::ks_Deva => "ks",
Locale::ksb => "ksb",
Locale::ksf => "ksf",
Locale::ksh => "ksh",
Locale::ku => "ku",
Locale::ku_Arab => "ku",
Locale::ku_Arab_IR => "ku",
Locale::ku_Latn => "ku",
Locale::ku_Latn_IQ => "ku",
Locale::ku_Latn_SY => "ku",
Locale::ku_TR => "ku",
Locale::kw => "kw",
Locale::kxv => "kxv",
Locale::kxv_Deva => "kxv",
Locale::kxv_Latn => "kxv",
Locale::kxv_Orya => "kxv",
Locale::kxv_Telu => "kxv",
Locale::ky => "ky",
Locale::la => "la",
Locale::lag => "lag",
Locale::lb => "lb",
Locale::lg => "lg",
Locale::lij => "lij",
Locale::lkt => "lkt",
Locale::lld => "lld",
Locale::lmo => "lmo",
Locale::ln => "ln",
Locale::ln_AO => "ln",
Locale::ln_CF => "ln",
Locale::ln_CG => "ln",
Locale::lo => "lo",
Locale::lrc => "lrc",
Locale::lrc_IQ => "lrc",
Locale::lt => "lt",
Locale::ltg => "ltg",
Locale::lu => "lu",
Locale::luo => "luo",
Locale::luy => "luy",
Locale::lv => "lv",
Locale::lzz => "lzz",
Locale::mai => "mai",
Locale::mas => "mas",
Locale::mas_TZ => "mas",
Locale::mdf => "mdf",
Locale::mer => "mer",
Locale::mfe => "mfe",
Locale::mg => "mg",
Locale::mgh => "mgh",
Locale::mgo => "mgo",
Locale::mhn => "mhn",
Locale::mi => "mi",
Locale::mic => "mic",
Locale::mk => "mk",
Locale::ml => "ml",
Locale::mn => "mn",
Locale::mn_Mong => "mn",
Locale::mn_Mong_MN => "mn",
Locale::mni => "mni",
Locale::mni_Beng => "mni",
Locale::mni_Mtei => "mni",
Locale::moh => "moh",
Locale::mr => "mr",
Locale::ms => "ms",
Locale::ms_Arab => "ms",
Locale::ms_Arab_BN => "ms",
Locale::ms_BN => "ms",
Locale::ms_ID => "ms",
Locale::ms_SG => "ms",
Locale::mt => "mt",
Locale::mua => "mua",
Locale::mus => "mus",
Locale::mww => "mww",
Locale::mww_Hmnp => "mww",
Locale::my => "my",
Locale::myv => "myv",
Locale::mzn => "mzn",
Locale::naq => "naq",
Locale::nb => "nb",
Locale::nb_SJ => "nb",
Locale::nd => "nd",
Locale::nds => "nds",
Locale::nds_NL => "nds",
Locale::ne => "ne",
Locale::ne_IN => "ne",
Locale::nl => "nl",
Locale::nl_AW => "nl",
Locale::nl_BE => "nl",
Locale::nl_BQ => "nl",
Locale::nl_CW => "nl",
Locale::nl_SR => "nl",
Locale::nl_SX => "nl",
Locale::nmg => "nmg",
Locale::nn => "nn",
Locale::nnh => "nnh",
Locale::no => "no",
Locale::nqo => "nqo",
Locale::nr => "nr",
Locale::nso => "nso",
Locale::nus => "nus",
Locale::nv => "nv",
Locale::ny => "ny",
Locale::nyn => "nyn",
Locale::oc => "oc",
Locale::oc_ES => "oc",
Locale::oka => "oka",
Locale::oka_US => "oka",
Locale::om => "om",
Locale::om_KE => "om",
Locale::or => "or",
Locale::os => "os",
Locale::os_RU => "os",
Locale::osa => "osa",
Locale::pa => "pa",
Locale::pa_Arab => "pa",
Locale::pa_Guru => "pa",
Locale::pap => "pap",
Locale::pap_AW => "pap",
Locale::pcm => "pcm",
Locale::pi => "pi",
Locale::pi_Latn => "pi",
Locale::pis => "pis",
Locale::pl => "pl",
Locale::pms => "pms",
Locale::prg => "prg",
Locale::ps => "ps",
Locale::ps_PK => "ps",
Locale::pt => "pt",
Locale::pt_AO => "pt",
Locale::pt_CH => "pt",
Locale::pt_CV => "pt",
Locale::pt_GQ => "pt",
Locale::pt_GW => "pt",
Locale::pt_LU => "pt",
Locale::pt_MO => "pt",
Locale::pt_MZ => "pt",
Locale::pt_PT => "pt",
Locale::pt_ST => "pt",
Locale::pt_TL => "pt",
Locale::qu => "qu",
Locale::qu_BO => "qu",
Locale::qu_EC => "qu",
Locale::quc => "quc",
Locale::raj => "raj",
Locale::rhg => "rhg",
Locale::rhg_Rohg => "rhg",
Locale::rhg_Rohg_BD => "rhg",
Locale::rif => "rif",
Locale::rm => "rm",
Locale::rn => "rn",
Locale::ro => "ro",
Locale::ro_MD => "ro",
Locale::rof => "rof",
Locale::ru => "ru",
Locale::ru_BY => "ru",
Locale::ru_KG => "ru",
Locale::ru_KZ => "ru",
Locale::ru_MD => "ru",
Locale::ru_UA => "ru",
Locale::rw => "rw",
Locale::rwk => "rwk",
Locale::sa => "sa",
Locale::sah => "sah",
Locale::saq => "saq",
Locale::sat => "sat",
Locale::sat_Deva => "sat",
Locale::sat_Olck => "sat",
Locale::sbp => "sbp",
Locale::sc => "sc",
Locale::scn => "scn",
Locale::sd => "sd",
Locale::sd_Arab => "sd",
Locale::sd_Deva => "sd",
Locale::sdh => "sdh",
Locale::sdh_IQ => "sdh",
Locale::se => "se",
Locale::se_FI => "se",
Locale::se_SE => "se",
Locale::seh => "seh",
Locale::ses => "ses",
Locale::sg => "sg",
Locale::sgs => "sgs",
Locale::shi => "shi",
Locale::shi_Latn => "shi",
Locale::shi_Tfng => "shi",
Locale::shn => "shn",
Locale::shn_TH => "shn",
Locale::si => "si",
Locale::sid => "sid",
Locale::sk => "sk",
Locale::skr => "skr",
Locale::sl => "sl",
Locale::sma => "sma",
Locale::sma_NO => "sma",
Locale::smj => "smj",
Locale::smj_NO => "smj",
Locale::smn => "smn",
Locale::sms => "sms",
Locale::sn => "sn",
Locale::so => "so",
Locale::so_DJ => "so",
Locale::so_ET => "so",
Locale::so_KE => "so",
Locale::sq => "sq",
Locale::sq_MK => "sq",
Locale::sq_XK => "sq",
Locale::sr => "sr",
Locale::sr_Cyrl => "sr",
Locale::sr_Cyrl_BA => "sr",
Locale::sr_Cyrl_ME => "sr",
Locale::sr_Cyrl_XK => "sr",
Locale::sr_Latn => "sr",
Locale::sr_Latn_BA => "sr",
Locale::sr_Latn_ME => "sr",
Locale::sr_Latn_XK => "sr",
Locale::ss => "ss",
Locale::ss_SZ => "ss",
Locale::ssy => "ssy",
Locale::st => "st",
Locale::st_LS => "st",
Locale::su => "su",
Locale::su_Latn => "su",
Locale::suz => "suz",
Locale::suz_Deva => "suz",
Locale::suz_Sunu => "suz",
Locale::sv => "sv",
Locale::sv_AX => "sv",
Locale::sv_FI => "sv",
Locale::sw => "sw",
Locale::sw_CD => "sw",
Locale::sw_KE => "sw",
Locale::sw_UG => "sw",
Locale::syr => "syr",
Locale::syr_SY => "syr",
Locale::szl => "szl",
Locale::ta => "ta",
Locale::ta_LK => "ta",
Locale::ta_MY => "ta",
Locale::ta_SG => "ta",
Locale::te => "te",
Locale::teo => "teo",
Locale::teo_KE => "teo",
Locale::tg => "tg",
Locale::th => "th",
Locale::ti => "ti",
Locale::ti_ER => "ti",
Locale::tig => "tig",
Locale::tk => "tk",
Locale::tn => "tn",
Locale::tn_BW => "tn",
Locale::to => "to",
Locale::tok => "tok",
Locale::tpi => "tpi",
Locale::tr => "tr",
Locale::tr_CY => "tr",
Locale::trv => "trv",
Locale::trw => "trw",
Locale::ts => "ts",
Locale::tt => "tt",
Locale::twq => "twq",
Locale::tyv => "tyv",
Locale::tzm => "tzm",
Locale::ug => "ug",
Locale::uk => "uk",
Locale::und => "und",
Locale::ur => "ur",
Locale::ur_IN => "ur",
Locale::uz => "uz",
Locale::uz_Arab => "uz",
Locale::uz_Cyrl => "uz",
Locale::uz_Latn => "uz",
Locale::vai => "vai",
Locale::vai_Latn => "vai",
Locale::vai_Vaii => "vai",
Locale::ve => "ve",
Locale::vec => "vec",
Locale::vi => "vi",
Locale::vmw => "vmw",
Locale::vo => "vo",
Locale::vun => "vun",
Locale::wa => "wa",
Locale::wae => "wae",
Locale::wal => "wal",
Locale::wbp => "wbp",
Locale::wo => "wo",
Locale::xh => "xh",
Locale::xnr => "xnr",
Locale::xog => "xog",
Locale::yav => "yav",
Locale::yi => "yi",
Locale::yo => "yo",
Locale::yo_BJ => "yo",
Locale::yrl => "yrl",
Locale::yrl_CO => "yrl",
Locale::yrl_VE => "yrl",
Locale::yue => "yue",
Locale::yue_Hans => "yue",
Locale::yue_Hant => "yue",
Locale::yue_Hant_CN => "yue",
Locale::yue_Hant_MO => "yue",
Locale::za => "za",
Locale::zgh => "zgh",
Locale::zh => "zh",
Locale::zh_Hans => "zh",
Locale::zh_Hans_HK => "zh",
Locale::zh_Hans_MO => "zh",
Locale::zh_Hans_MY => "zh",
Locale::zh_Hans_SG => "zh",
Locale::zh_Hant => "zh",
Locale::zh_Hant_HK => "zh",
Locale::zh_Hant_MO => "zh",
Locale::zh_Hant_MY => "zh",
Locale::zh_Latn => "zh",
Locale::zu => "zu",
}
}
pub fn region_code(&self) -> Option<&'static str> {
match self {
Locale::aa => None,
Locale::aa_DJ => Some("DJ"),
Locale::aa_ER => Some("ER"),
Locale::ab => None,
Locale::af => None,
Locale::af_NA => Some("NA"),
Locale::agq => None,
Locale::ak => None,
Locale::am => None,
Locale::an => None,
Locale::ann => None,
Locale::apc => None,
Locale::ar => None,
Locale::ar_AE => Some("AE"),
Locale::ar_BH => Some("BH"),
Locale::ar_DJ => Some("DJ"),
Locale::ar_DZ => Some("DZ"),
Locale::ar_EG => Some("EG"),
Locale::ar_EH => Some("EH"),
Locale::ar_ER => Some("ER"),
Locale::ar_IL => Some("IL"),
Locale::ar_IQ => Some("IQ"),
Locale::ar_JO => Some("JO"),
Locale::ar_KM => Some("KM"),
Locale::ar_KW => Some("KW"),
Locale::ar_LB => Some("LB"),
Locale::ar_LY => Some("LY"),
Locale::ar_MA => Some("MA"),
Locale::ar_MR => Some("MR"),
Locale::ar_OM => Some("OM"),
Locale::ar_PS => Some("PS"),
Locale::ar_QA => Some("QA"),
Locale::ar_SA => Some("SA"),
Locale::ar_SD => Some("SD"),
Locale::ar_SO => Some("SO"),
Locale::ar_SS => Some("SS"),
Locale::ar_SY => Some("SY"),
Locale::ar_TD => Some("TD"),
Locale::ar_TN => Some("TN"),
Locale::ar_YE => Some("YE"),
Locale::arn => None,
Locale::as_ => None,
Locale::asa => None,
Locale::ast => None,
Locale::az => None,
Locale::az_Arab => None,
Locale::az_Arab_IQ => Some("IQ"),
Locale::az_Arab_TR => Some("TR"),
Locale::az_Cyrl => None,
Locale::az_Latn => None,
Locale::ba => None,
Locale::bal => None,
Locale::bal_Arab => None,
Locale::bal_Latn => None,
Locale::bas => None,
Locale::be => None,
Locale::be_tarask => None,
Locale::bem => None,
Locale::bew => None,
Locale::bez => None,
Locale::bg => None,
Locale::bgc => None,
Locale::bgn => None,
Locale::bgn_AE => Some("AE"),
Locale::bgn_AF => Some("AF"),
Locale::bgn_IR => Some("IR"),
Locale::bgn_OM => Some("OM"),
Locale::bho => None,
Locale::blo => None,
Locale::blt => None,
Locale::bm => None,
Locale::bm_Nkoo => None,
Locale::bn => None,
Locale::bn_IN => Some("IN"),
Locale::bo => None,
Locale::bo_IN => Some("IN"),
Locale::bqi => None,
Locale::br => None,
Locale::brx => None,
Locale::bs => None,
Locale::bs_Cyrl => None,
Locale::bs_Latn => None,
Locale::bss => None,
Locale::bua => None,
Locale::byn => None,
Locale::ca => None,
Locale::ca_AD => Some("AD"),
Locale::ca_ES_valencia => None,
Locale::ca_FR => Some("FR"),
Locale::ca_IT => Some("IT"),
Locale::cad => None,
Locale::cch => None,
Locale::ccp => None,
Locale::ccp_IN => Some("IN"),
Locale::ce => None,
Locale::ceb => None,
Locale::cgg => None,
Locale::cho => None,
Locale::chr => None,
Locale::cic => None,
Locale::ckb => None,
Locale::ckb_IR => Some("IR"),
Locale::co => None,
Locale::cop => None,
Locale::cs => None,
Locale::csw => None,
Locale::cu => None,
Locale::cv => None,
Locale::cy => None,
Locale::da => None,
Locale::da_GL => Some("GL"),
Locale::dav => None,
Locale::de => None,
Locale::de_AT => Some("AT"),
Locale::de_BE => Some("BE"),
Locale::de_CH => Some("CH"),
Locale::de_IT => Some("IT"),
Locale::de_LI => Some("LI"),
Locale::de_LU => Some("LU"),
Locale::dje => None,
Locale::doi => None,
Locale::dsb => None,
Locale::dua => None,
Locale::dv => None,
Locale::dyo => None,
Locale::dz => None,
Locale::ebu => None,
Locale::ee => None,
Locale::ee_TG => Some("TG"),
Locale::el => None,
Locale::el_CY => Some("CY"),
Locale::el_polyton => None,
Locale::en => None,
Locale::en_001 => None,
Locale::en_150 => None,
Locale::en_AE => Some("AE"),
Locale::en_AG => Some("AG"),
Locale::en_AI => Some("AI"),
Locale::en_AS => Some("AS"),
Locale::en_AT => Some("AT"),
Locale::en_AU => Some("AU"),
Locale::en_BB => Some("BB"),
Locale::en_BE => Some("BE"),
Locale::en_BI => Some("BI"),
Locale::en_BM => Some("BM"),
Locale::en_BS => Some("BS"),
Locale::en_BW => Some("BW"),
Locale::en_BZ => Some("BZ"),
Locale::en_CA => Some("CA"),
Locale::en_CC => Some("CC"),
Locale::en_CH => Some("CH"),
Locale::en_CK => Some("CK"),
Locale::en_CM => Some("CM"),
Locale::en_CX => Some("CX"),
Locale::en_CY => Some("CY"),
Locale::en_CZ => Some("CZ"),
Locale::en_DE => Some("DE"),
Locale::en_DG => Some("DG"),
Locale::en_DK => Some("DK"),
Locale::en_DM => Some("DM"),
Locale::en_Dsrt => None,
Locale::en_EE => Some("EE"),
Locale::en_ER => Some("ER"),
Locale::en_ES => Some("ES"),
Locale::en_FI => Some("FI"),
Locale::en_FJ => Some("FJ"),
Locale::en_FK => Some("FK"),
Locale::en_FM => Some("FM"),
Locale::en_FR => Some("FR"),
Locale::en_GB => Some("GB"),
Locale::en_GD => Some("GD"),
Locale::en_GE => Some("GE"),
Locale::en_GG => Some("GG"),
Locale::en_GH => Some("GH"),
Locale::en_GI => Some("GI"),
Locale::en_GM => Some("GM"),
Locale::en_GS => Some("GS"),
Locale::en_GU => Some("GU"),
Locale::en_GY => Some("GY"),
Locale::en_HK => Some("HK"),
Locale::en_HU => Some("HU"),
Locale::en_ID => Some("ID"),
Locale::en_IE => Some("IE"),
Locale::en_IL => Some("IL"),
Locale::en_IM => Some("IM"),
Locale::en_IN => Some("IN"),
Locale::en_IO => Some("IO"),
Locale::en_IT => Some("IT"),
Locale::en_JE => Some("JE"),
Locale::en_JM => Some("JM"),
Locale::en_JP => Some("JP"),
Locale::en_KE => Some("KE"),
Locale::en_KI => Some("KI"),
Locale::en_KN => Some("KN"),
Locale::en_KY => Some("KY"),
Locale::en_LC => Some("LC"),
Locale::en_LR => Some("LR"),
Locale::en_LS => Some("LS"),
Locale::en_LT => Some("LT"),
Locale::en_LV => Some("LV"),
Locale::en_MG => Some("MG"),
Locale::en_MH => Some("MH"),
Locale::en_MO => Some("MO"),
Locale::en_MP => Some("MP"),
Locale::en_MS => Some("MS"),
Locale::en_MT => Some("MT"),
Locale::en_MU => Some("MU"),
Locale::en_MV => Some("MV"),
Locale::en_MW => Some("MW"),
Locale::en_MY => Some("MY"),
Locale::en_NA => Some("NA"),
Locale::en_NF => Some("NF"),
Locale::en_NG => Some("NG"),
Locale::en_NL => Some("NL"),
Locale::en_NO => Some("NO"),
Locale::en_NR => Some("NR"),
Locale::en_NU => Some("NU"),
Locale::en_NZ => Some("NZ"),
Locale::en_PG => Some("PG"),
Locale::en_PH => Some("PH"),
Locale::en_PK => Some("PK"),
Locale::en_PL => Some("PL"),
Locale::en_PN => Some("PN"),
Locale::en_PR => Some("PR"),
Locale::en_PT => Some("PT"),
Locale::en_PW => Some("PW"),
Locale::en_RO => Some("RO"),
Locale::en_RW => Some("RW"),
Locale::en_SB => Some("SB"),
Locale::en_SC => Some("SC"),
Locale::en_SD => Some("SD"),
Locale::en_SE => Some("SE"),
Locale::en_SG => Some("SG"),
Locale::en_SH => Some("SH"),
Locale::en_SI => Some("SI"),
Locale::en_SK => Some("SK"),
Locale::en_SL => Some("SL"),
Locale::en_SS => Some("SS"),
Locale::en_SX => Some("SX"),
Locale::en_SZ => Some("SZ"),
Locale::en_Shaw => None,
Locale::en_TC => Some("TC"),
Locale::en_TK => Some("TK"),
Locale::en_TO => Some("TO"),
Locale::en_TT => Some("TT"),
Locale::en_TV => Some("TV"),
Locale::en_TZ => Some("TZ"),
Locale::en_UA => Some("UA"),
Locale::en_UG => Some("UG"),
Locale::en_UM => Some("UM"),
Locale::en_VC => Some("VC"),
Locale::en_VG => Some("VG"),
Locale::en_VI => Some("VI"),
Locale::en_VU => Some("VU"),
Locale::en_WS => Some("WS"),
Locale::en_ZA => Some("ZA"),
Locale::en_ZM => Some("ZM"),
Locale::en_ZW => Some("ZW"),
Locale::eo => None,
Locale::es => None,
Locale::es_419 => None,
Locale::es_AR => Some("AR"),
Locale::es_BO => Some("BO"),
Locale::es_BR => Some("BR"),
Locale::es_BZ => Some("BZ"),
Locale::es_CL => Some("CL"),
Locale::es_CO => Some("CO"),
Locale::es_CR => Some("CR"),
Locale::es_CU => Some("CU"),
Locale::es_DO => Some("DO"),
Locale::es_EA => Some("EA"),
Locale::es_EC => Some("EC"),
Locale::es_GQ => Some("GQ"),
Locale::es_GT => Some("GT"),
Locale::es_HN => Some("HN"),
Locale::es_IC => Some("IC"),
Locale::es_MX => Some("MX"),
Locale::es_NI => Some("NI"),
Locale::es_PA => Some("PA"),
Locale::es_PE => Some("PE"),
Locale::es_PH => Some("PH"),
Locale::es_PR => Some("PR"),
Locale::es_PY => Some("PY"),
Locale::es_SV => Some("SV"),
Locale::es_US => Some("US"),
Locale::es_UY => Some("UY"),
Locale::es_VE => Some("VE"),
Locale::et => None,
Locale::eu => None,
Locale::ewo => None,
Locale::fa => None,
Locale::fa_AF => Some("AF"),
Locale::ff => None,
Locale::ff_Adlm => None,
Locale::ff_Adlm_BF => Some("BF"),
Locale::ff_Adlm_CM => Some("CM"),
Locale::ff_Adlm_GH => Some("GH"),
Locale::ff_Adlm_GM => Some("GM"),
Locale::ff_Adlm_GW => Some("GW"),
Locale::ff_Adlm_LR => Some("LR"),
Locale::ff_Adlm_MR => Some("MR"),
Locale::ff_Adlm_NE => Some("NE"),
Locale::ff_Adlm_NG => Some("NG"),
Locale::ff_Adlm_SL => Some("SL"),
Locale::ff_Adlm_SN => Some("SN"),
Locale::ff_Latn => None,
Locale::ff_Latn_BF => Some("BF"),
Locale::ff_Latn_CM => Some("CM"),
Locale::ff_Latn_GH => Some("GH"),
Locale::ff_Latn_GM => Some("GM"),
Locale::ff_Latn_GN => Some("GN"),
Locale::ff_Latn_GW => Some("GW"),
Locale::ff_Latn_LR => Some("LR"),
Locale::ff_Latn_MR => Some("MR"),
Locale::ff_Latn_NE => Some("NE"),
Locale::ff_Latn_NG => Some("NG"),
Locale::ff_Latn_SL => Some("SL"),
Locale::fi => None,
Locale::fil => None,
Locale::fo => None,
Locale::fo_DK => Some("DK"),
Locale::fr => None,
Locale::fr_BE => Some("BE"),
Locale::fr_BF => Some("BF"),
Locale::fr_BI => Some("BI"),
Locale::fr_BJ => Some("BJ"),
Locale::fr_BL => Some("BL"),
Locale::fr_CA => Some("CA"),
Locale::fr_CD => Some("CD"),
Locale::fr_CF => Some("CF"),
Locale::fr_CG => Some("CG"),
Locale::fr_CH => Some("CH"),
Locale::fr_CI => Some("CI"),
Locale::fr_CM => Some("CM"),
Locale::fr_DJ => Some("DJ"),
Locale::fr_DZ => Some("DZ"),
Locale::fr_GA => Some("GA"),
Locale::fr_GF => Some("GF"),
Locale::fr_GN => Some("GN"),
Locale::fr_GP => Some("GP"),
Locale::fr_GQ => Some("GQ"),
Locale::fr_HT => Some("HT"),
Locale::fr_KM => Some("KM"),
Locale::fr_LU => Some("LU"),
Locale::fr_MA => Some("MA"),
Locale::fr_MC => Some("MC"),
Locale::fr_MF => Some("MF"),
Locale::fr_MG => Some("MG"),
Locale::fr_ML => Some("ML"),
Locale::fr_MQ => Some("MQ"),
Locale::fr_MR => Some("MR"),
Locale::fr_MU => Some("MU"),
Locale::fr_NC => Some("NC"),
Locale::fr_NE => Some("NE"),
Locale::fr_PF => Some("PF"),
Locale::fr_PM => Some("PM"),
Locale::fr_RE => Some("RE"),
Locale::fr_RW => Some("RW"),
Locale::fr_SC => Some("SC"),
Locale::fr_SN => Some("SN"),
Locale::fr_SY => Some("SY"),
Locale::fr_TD => Some("TD"),
Locale::fr_TG => Some("TG"),
Locale::fr_TN => Some("TN"),
Locale::fr_VU => Some("VU"),
Locale::fr_WF => Some("WF"),
Locale::fr_YT => Some("YT"),
Locale::frr => None,
Locale::fur => None,
Locale::fy => None,
Locale::ga => None,
Locale::ga_GB => Some("GB"),
Locale::gaa => None,
Locale::gd => None,
Locale::gez => None,
Locale::gez_ER => Some("ER"),
Locale::gl => None,
Locale::gn => None,
Locale::gsw => None,
Locale::gsw_FR => Some("FR"),
Locale::gsw_LI => Some("LI"),
Locale::gu => None,
Locale::guz => None,
Locale::gv => None,
Locale::ha => None,
Locale::ha_Arab => None,
Locale::ha_Arab_SD => Some("SD"),
Locale::ha_GH => Some("GH"),
Locale::ha_NE => Some("NE"),
Locale::haw => None,
Locale::he => None,
Locale::hi => None,
Locale::hi_Latn => None,
Locale::hnj => None,
Locale::hnj_Hmnp => None,
Locale::hr => None,
Locale::hr_BA => Some("BA"),
Locale::hsb => None,
Locale::ht => None,
Locale::hu => None,
Locale::hy => None,
Locale::ia => None,
Locale::id => None,
Locale::ie => None,
Locale::ig => None,
Locale::ii => None,
Locale::io => None,
Locale::is => None,
Locale::it => None,
Locale::it_CH => Some("CH"),
Locale::it_SM => Some("SM"),
Locale::it_VA => Some("VA"),
Locale::iu => None,
Locale::iu_Latn => None,
Locale::ja => None,
Locale::jbo => None,
Locale::jgo => None,
Locale::jmc => None,
Locale::jv => None,
Locale::ka => None,
Locale::kaa => None,
Locale::kaa_Cyrl => None,
Locale::kaa_Latn => None,
Locale::kab => None,
Locale::kaj => None,
Locale::kam => None,
Locale::kcg => None,
Locale::kde => None,
Locale::kea => None,
Locale::kek => None,
Locale::ken => None,
Locale::kgp => None,
Locale::khq => None,
Locale::ki => None,
Locale::kk => None,
Locale::kk_Arab => None,
Locale::kk_Cyrl => None,
Locale::kk_KZ => Some("KZ"),
Locale::kkj => None,
Locale::kl => None,
Locale::kln => None,
Locale::km => None,
Locale::kn => None,
Locale::ko => None,
Locale::ko_CN => Some("CN"),
Locale::ko_KP => Some("KP"),
Locale::kok => None,
Locale::kok_Deva => None,
Locale::kok_Latn => None,
Locale::kpe => None,
Locale::kpe_GN => Some("GN"),
Locale::ks => None,
Locale::ks_Arab => None,
Locale::ks_Deva => None,
Locale::ksb => None,
Locale::ksf => None,
Locale::ksh => None,
Locale::ku => None,
Locale::ku_Arab => None,
Locale::ku_Arab_IR => Some("IR"),
Locale::ku_Latn => None,
Locale::ku_Latn_IQ => Some("IQ"),
Locale::ku_Latn_SY => Some("SY"),
Locale::ku_TR => Some("TR"),
Locale::kw => None,
Locale::kxv => None,
Locale::kxv_Deva => None,
Locale::kxv_Latn => None,
Locale::kxv_Orya => None,
Locale::kxv_Telu => None,
Locale::ky => None,
Locale::la => None,
Locale::lag => None,
Locale::lb => None,
Locale::lg => None,
Locale::lij => None,
Locale::lkt => None,
Locale::lld => None,
Locale::lmo => None,
Locale::ln => None,
Locale::ln_AO => Some("AO"),
Locale::ln_CF => Some("CF"),
Locale::ln_CG => Some("CG"),
Locale::lo => None,
Locale::lrc => None,
Locale::lrc_IQ => Some("IQ"),
Locale::lt => None,
Locale::ltg => None,
Locale::lu => None,
Locale::luo => None,
Locale::luy => None,
Locale::lv => None,
Locale::lzz => None,
Locale::mai => None,
Locale::mas => None,
Locale::mas_TZ => Some("TZ"),
Locale::mdf => None,
Locale::mer => None,
Locale::mfe => None,
Locale::mg => None,
Locale::mgh => None,
Locale::mgo => None,
Locale::mhn => None,
Locale::mi => None,
Locale::mic => None,
Locale::mk => None,
Locale::ml => None,
Locale::mn => None,
Locale::mn_Mong => None,
Locale::mn_Mong_MN => Some("MN"),
Locale::mni => None,
Locale::mni_Beng => None,
Locale::mni_Mtei => None,
Locale::moh => None,
Locale::mr => None,
Locale::ms => None,
Locale::ms_Arab => None,
Locale::ms_Arab_BN => Some("BN"),
Locale::ms_BN => Some("BN"),
Locale::ms_ID => Some("ID"),
Locale::ms_SG => Some("SG"),
Locale::mt => None,
Locale::mua => None,
Locale::mus => None,
Locale::mww => None,
Locale::mww_Hmnp => None,
Locale::my => None,
Locale::myv => None,
Locale::mzn => None,
Locale::naq => None,
Locale::nb => None,
Locale::nb_SJ => Some("SJ"),
Locale::nd => None,
Locale::nds => None,
Locale::nds_NL => Some("NL"),
Locale::ne => None,
Locale::ne_IN => Some("IN"),
Locale::nl => None,
Locale::nl_AW => Some("AW"),
Locale::nl_BE => Some("BE"),
Locale::nl_BQ => Some("BQ"),
Locale::nl_CW => Some("CW"),
Locale::nl_SR => Some("SR"),
Locale::nl_SX => Some("SX"),
Locale::nmg => None,
Locale::nn => None,
Locale::nnh => None,
Locale::no => None,
Locale::nqo => None,
Locale::nr => None,
Locale::nso => None,
Locale::nus => None,
Locale::nv => None,
Locale::ny => None,
Locale::nyn => None,
Locale::oc => None,
Locale::oc_ES => Some("ES"),
Locale::oka => None,
Locale::oka_US => Some("US"),
Locale::om => None,
Locale::om_KE => Some("KE"),
Locale::or => None,
Locale::os => None,
Locale::os_RU => Some("RU"),
Locale::osa => None,
Locale::pa => None,
Locale::pa_Arab => None,
Locale::pa_Guru => None,
Locale::pap => None,
Locale::pap_AW => Some("AW"),
Locale::pcm => None,
Locale::pi => None,
Locale::pi_Latn => None,
Locale::pis => None,
Locale::pl => None,
Locale::pms => None,
Locale::prg => None,
Locale::ps => None,
Locale::ps_PK => Some("PK"),
Locale::pt => None,
Locale::pt_AO => Some("AO"),
Locale::pt_CH => Some("CH"),
Locale::pt_CV => Some("CV"),
Locale::pt_GQ => Some("GQ"),
Locale::pt_GW => Some("GW"),
Locale::pt_LU => Some("LU"),
Locale::pt_MO => Some("MO"),
Locale::pt_MZ => Some("MZ"),
Locale::pt_PT => Some("PT"),
Locale::pt_ST => Some("ST"),
Locale::pt_TL => Some("TL"),
Locale::qu => None,
Locale::qu_BO => Some("BO"),
Locale::qu_EC => Some("EC"),
Locale::quc => None,
Locale::raj => None,
Locale::rhg => None,
Locale::rhg_Rohg => None,
Locale::rhg_Rohg_BD => Some("BD"),
Locale::rif => None,
Locale::rm => None,
Locale::rn => None,
Locale::ro => None,
Locale::ro_MD => Some("MD"),
Locale::rof => None,
Locale::ru => None,
Locale::ru_BY => Some("BY"),
Locale::ru_KG => Some("KG"),
Locale::ru_KZ => Some("KZ"),
Locale::ru_MD => Some("MD"),
Locale::ru_UA => Some("UA"),
Locale::rw => None,
Locale::rwk => None,
Locale::sa => None,
Locale::sah => None,
Locale::saq => None,
Locale::sat => None,
Locale::sat_Deva => None,
Locale::sat_Olck => None,
Locale::sbp => None,
Locale::sc => None,
Locale::scn => None,
Locale::sd => None,
Locale::sd_Arab => None,
Locale::sd_Deva => None,
Locale::sdh => None,
Locale::sdh_IQ => Some("IQ"),
Locale::se => None,
Locale::se_FI => Some("FI"),
Locale::se_SE => Some("SE"),
Locale::seh => None,
Locale::ses => None,
Locale::sg => None,
Locale::sgs => None,
Locale::shi => None,
Locale::shi_Latn => None,
Locale::shi_Tfng => None,
Locale::shn => None,
Locale::shn_TH => Some("TH"),
Locale::si => None,
Locale::sid => None,
Locale::sk => None,
Locale::skr => None,
Locale::sl => None,
Locale::sma => None,
Locale::sma_NO => Some("NO"),
Locale::smj => None,
Locale::smj_NO => Some("NO"),
Locale::smn => None,
Locale::sms => None,
Locale::sn => None,
Locale::so => None,
Locale::so_DJ => Some("DJ"),
Locale::so_ET => Some("ET"),
Locale::so_KE => Some("KE"),
Locale::sq => None,
Locale::sq_MK => Some("MK"),
Locale::sq_XK => Some("XK"),
Locale::sr => None,
Locale::sr_Cyrl => None,
Locale::sr_Cyrl_BA => Some("BA"),
Locale::sr_Cyrl_ME => Some("ME"),
Locale::sr_Cyrl_XK => Some("XK"),
Locale::sr_Latn => None,
Locale::sr_Latn_BA => Some("BA"),
Locale::sr_Latn_ME => Some("ME"),
Locale::sr_Latn_XK => Some("XK"),
Locale::ss => None,
Locale::ss_SZ => Some("SZ"),
Locale::ssy => None,
Locale::st => None,
Locale::st_LS => Some("LS"),
Locale::su => None,
Locale::su_Latn => None,
Locale::suz => None,
Locale::suz_Deva => None,
Locale::suz_Sunu => None,
Locale::sv => None,
Locale::sv_AX => Some("AX"),
Locale::sv_FI => Some("FI"),
Locale::sw => None,
Locale::sw_CD => Some("CD"),
Locale::sw_KE => Some("KE"),
Locale::sw_UG => Some("UG"),
Locale::syr => None,
Locale::syr_SY => Some("SY"),
Locale::szl => None,
Locale::ta => None,
Locale::ta_LK => Some("LK"),
Locale::ta_MY => Some("MY"),
Locale::ta_SG => Some("SG"),
Locale::te => None,
Locale::teo => None,
Locale::teo_KE => Some("KE"),
Locale::tg => None,
Locale::th => None,
Locale::ti => None,
Locale::ti_ER => Some("ER"),
Locale::tig => None,
Locale::tk => None,
Locale::tn => None,
Locale::tn_BW => Some("BW"),
Locale::to => None,
Locale::tok => None,
Locale::tpi => None,
Locale::tr => None,
Locale::tr_CY => Some("CY"),
Locale::trv => None,
Locale::trw => None,
Locale::ts => None,
Locale::tt => None,
Locale::twq => None,
Locale::tyv => None,
Locale::tzm => None,
Locale::ug => None,
Locale::uk => None,
Locale::und => None,
Locale::ur => None,
Locale::ur_IN => Some("IN"),
Locale::uz => None,
Locale::uz_Arab => None,
Locale::uz_Cyrl => None,
Locale::uz_Latn => None,
Locale::vai => None,
Locale::vai_Latn => None,
Locale::vai_Vaii => None,
Locale::ve => None,
Locale::vec => None,
Locale::vi => None,
Locale::vmw => None,
Locale::vo => None,
Locale::vun => None,
Locale::wa => None,
Locale::wae => None,
Locale::wal => None,
Locale::wbp => None,
Locale::wo => None,
Locale::xh => None,
Locale::xnr => None,
Locale::xog => None,
Locale::yav => None,
Locale::yi => None,
Locale::yo => None,
Locale::yo_BJ => Some("BJ"),
Locale::yrl => None,
Locale::yrl_CO => Some("CO"),
Locale::yrl_VE => Some("VE"),
Locale::yue => None,
Locale::yue_Hans => None,
Locale::yue_Hant => None,
Locale::yue_Hant_CN => Some("CN"),
Locale::yue_Hant_MO => Some("MO"),
Locale::za => None,
Locale::zgh => None,
Locale::zh => None,
Locale::zh_Hans => None,
Locale::zh_Hans_HK => Some("HK"),
Locale::zh_Hans_MO => Some("MO"),
Locale::zh_Hans_MY => Some("MY"),
Locale::zh_Hans_SG => Some("SG"),
Locale::zh_Hant => None,
Locale::zh_Hant_HK => Some("HK"),
Locale::zh_Hant_MO => Some("MO"),
Locale::zh_Hant_MY => Some("MY"),
Locale::zh_Latn => None,
Locale::zu => None,
}
}
}
fn _levenshtein_distance(s1: &str, s2: &str) -> usize {
let len1 = s1.len();
let len2 = s2.len();
if len1 == 0 {
return len2;
}
if len2 == 0 {
return len1;
}
let mut prev = vec![0; len2 + 1];
let mut curr = vec![0; len2 + 1];
for (i, prev_i) in prev.iter_mut().enumerate().take(len2 + 1) {
*prev_i = i;
}
for (i, c1) in s1.chars().enumerate() {
curr[0] = i + 1;
for (j, c2) in s2.chars().enumerate() {
let cost = if c1 == c2 { 0 } else { 1 };
curr[j + 1] =
std::cmp::min(std::cmp::min(curr[j] + 1, prev[j + 1] + 1), prev[j] + cost);
}
std::mem::swap(&mut prev, &mut curr);
}
prev[len2]
}
impl fmt::Display for Locale {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.as_str())
}
}
impl FromStr for Locale {
type Err = LocaleError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
let normalized = s.replace('_', "-").to_lowercase();
if let Some(&locale_str) = LOCALE_MAP.get(normalized.as_str()) {
return match locale_str {
"aa" => Ok(Locale::aa),
"aa-DJ" => Ok(Locale::aa_DJ),
"aa-ER" => Ok(Locale::aa_ER),
"ab" => Ok(Locale::ab),
"af" => Ok(Locale::af),
"af-NA" => Ok(Locale::af_NA),
"agq" => Ok(Locale::agq),
"ak" => Ok(Locale::ak),
"am" => Ok(Locale::am),
"an" => Ok(Locale::an),
"ann" => Ok(Locale::ann),
"apc" => Ok(Locale::apc),
"ar" => Ok(Locale::ar),
"ar-AE" => Ok(Locale::ar_AE),
"ar-BH" => Ok(Locale::ar_BH),
"ar-DJ" => Ok(Locale::ar_DJ),
"ar-DZ" => Ok(Locale::ar_DZ),
"ar-EG" => Ok(Locale::ar_EG),
"ar-EH" => Ok(Locale::ar_EH),
"ar-ER" => Ok(Locale::ar_ER),
"ar-IL" => Ok(Locale::ar_IL),
"ar-IQ" => Ok(Locale::ar_IQ),
"ar-JO" => Ok(Locale::ar_JO),
"ar-KM" => Ok(Locale::ar_KM),
"ar-KW" => Ok(Locale::ar_KW),
"ar-LB" => Ok(Locale::ar_LB),
"ar-LY" => Ok(Locale::ar_LY),
"ar-MA" => Ok(Locale::ar_MA),
"ar-MR" => Ok(Locale::ar_MR),
"ar-OM" => Ok(Locale::ar_OM),
"ar-PS" => Ok(Locale::ar_PS),
"ar-QA" => Ok(Locale::ar_QA),
"ar-SA" => Ok(Locale::ar_SA),
"ar-SD" => Ok(Locale::ar_SD),
"ar-SO" => Ok(Locale::ar_SO),
"ar-SS" => Ok(Locale::ar_SS),
"ar-SY" => Ok(Locale::ar_SY),
"ar-TD" => Ok(Locale::ar_TD),
"ar-TN" => Ok(Locale::ar_TN),
"ar-YE" => Ok(Locale::ar_YE),
"arn" => Ok(Locale::arn),
"as" => Ok(Locale::as_),
"asa" => Ok(Locale::asa),
"ast" => Ok(Locale::ast),
"az" => Ok(Locale::az),
"az-Arab" => Ok(Locale::az_Arab),
"az-Arab-IQ" => Ok(Locale::az_Arab_IQ),
"az-Arab-TR" => Ok(Locale::az_Arab_TR),
"az-Cyrl" => Ok(Locale::az_Cyrl),
"az-Latn" => Ok(Locale::az_Latn),
"ba" => Ok(Locale::ba),
"bal" => Ok(Locale::bal),
"bal-Arab" => Ok(Locale::bal_Arab),
"bal-Latn" => Ok(Locale::bal_Latn),
"bas" => Ok(Locale::bas),
"be" => Ok(Locale::be),
"be-tarask" => Ok(Locale::be_tarask),
"bem" => Ok(Locale::bem),
"bew" => Ok(Locale::bew),
"bez" => Ok(Locale::bez),
"bg" => Ok(Locale::bg),
"bgc" => Ok(Locale::bgc),
"bgn" => Ok(Locale::bgn),
"bgn-AE" => Ok(Locale::bgn_AE),
"bgn-AF" => Ok(Locale::bgn_AF),
"bgn-IR" => Ok(Locale::bgn_IR),
"bgn-OM" => Ok(Locale::bgn_OM),
"bho" => Ok(Locale::bho),
"blo" => Ok(Locale::blo),
"blt" => Ok(Locale::blt),
"bm" => Ok(Locale::bm),
"bm-Nkoo" => Ok(Locale::bm_Nkoo),
"bn" => Ok(Locale::bn),
"bn-IN" => Ok(Locale::bn_IN),
"bo" => Ok(Locale::bo),
"bo-IN" => Ok(Locale::bo_IN),
"bqi" => Ok(Locale::bqi),
"br" => Ok(Locale::br),
"brx" => Ok(Locale::brx),
"bs" => Ok(Locale::bs),
"bs-Cyrl" => Ok(Locale::bs_Cyrl),
"bs-Latn" => Ok(Locale::bs_Latn),
"bss" => Ok(Locale::bss),
"bua" => Ok(Locale::bua),
"byn" => Ok(Locale::byn),
"ca" => Ok(Locale::ca),
"ca-AD" => Ok(Locale::ca_AD),
"ca-ES-valencia" => Ok(Locale::ca_ES_valencia),
"ca-FR" => Ok(Locale::ca_FR),
"ca-IT" => Ok(Locale::ca_IT),
"cad" => Ok(Locale::cad),
"cch" => Ok(Locale::cch),
"ccp" => Ok(Locale::ccp),
"ccp-IN" => Ok(Locale::ccp_IN),
"ce" => Ok(Locale::ce),
"ceb" => Ok(Locale::ceb),
"cgg" => Ok(Locale::cgg),
"cho" => Ok(Locale::cho),
"chr" => Ok(Locale::chr),
"cic" => Ok(Locale::cic),
"ckb" => Ok(Locale::ckb),
"ckb-IR" => Ok(Locale::ckb_IR),
"co" => Ok(Locale::co),
"cop" => Ok(Locale::cop),
"cs" => Ok(Locale::cs),
"csw" => Ok(Locale::csw),
"cu" => Ok(Locale::cu),
"cv" => Ok(Locale::cv),
"cy" => Ok(Locale::cy),
"da" => Ok(Locale::da),
"da-GL" => Ok(Locale::da_GL),
"dav" => Ok(Locale::dav),
"de" => Ok(Locale::de),
"de-AT" => Ok(Locale::de_AT),
"de-BE" => Ok(Locale::de_BE),
"de-CH" => Ok(Locale::de_CH),
"de-IT" => Ok(Locale::de_IT),
"de-LI" => Ok(Locale::de_LI),
"de-LU" => Ok(Locale::de_LU),
"dje" => Ok(Locale::dje),
"doi" => Ok(Locale::doi),
"dsb" => Ok(Locale::dsb),
"dua" => Ok(Locale::dua),
"dv" => Ok(Locale::dv),
"dyo" => Ok(Locale::dyo),
"dz" => Ok(Locale::dz),
"ebu" => Ok(Locale::ebu),
"ee" => Ok(Locale::ee),
"ee-TG" => Ok(Locale::ee_TG),
"el" => Ok(Locale::el),
"el-CY" => Ok(Locale::el_CY),
"el-polyton" => Ok(Locale::el_polyton),
"en" => Ok(Locale::en),
"en-001" => Ok(Locale::en_001),
"en-150" => Ok(Locale::en_150),
"en-AE" => Ok(Locale::en_AE),
"en-AG" => Ok(Locale::en_AG),
"en-AI" => Ok(Locale::en_AI),
"en-AS" => Ok(Locale::en_AS),
"en-AT" => Ok(Locale::en_AT),
"en-AU" => Ok(Locale::en_AU),
"en-BB" => Ok(Locale::en_BB),
"en-BE" => Ok(Locale::en_BE),
"en-BI" => Ok(Locale::en_BI),
"en-BM" => Ok(Locale::en_BM),
"en-BS" => Ok(Locale::en_BS),
"en-BW" => Ok(Locale::en_BW),
"en-BZ" => Ok(Locale::en_BZ),
"en-CA" => Ok(Locale::en_CA),
"en-CC" => Ok(Locale::en_CC),
"en-CH" => Ok(Locale::en_CH),
"en-CK" => Ok(Locale::en_CK),
"en-CM" => Ok(Locale::en_CM),
"en-CX" => Ok(Locale::en_CX),
"en-CY" => Ok(Locale::en_CY),
"en-CZ" => Ok(Locale::en_CZ),
"en-DE" => Ok(Locale::en_DE),
"en-DG" => Ok(Locale::en_DG),
"en-DK" => Ok(Locale::en_DK),
"en-DM" => Ok(Locale::en_DM),
"en-Dsrt" => Ok(Locale::en_Dsrt),
"en-EE" => Ok(Locale::en_EE),
"en-ER" => Ok(Locale::en_ER),
"en-ES" => Ok(Locale::en_ES),
"en-FI" => Ok(Locale::en_FI),
"en-FJ" => Ok(Locale::en_FJ),
"en-FK" => Ok(Locale::en_FK),
"en-FM" => Ok(Locale::en_FM),
"en-FR" => Ok(Locale::en_FR),
"en-GB" => Ok(Locale::en_GB),
"en-GD" => Ok(Locale::en_GD),
"en-GE" => Ok(Locale::en_GE),
"en-GG" => Ok(Locale::en_GG),
"en-GH" => Ok(Locale::en_GH),
"en-GI" => Ok(Locale::en_GI),
"en-GM" => Ok(Locale::en_GM),
"en-GS" => Ok(Locale::en_GS),
"en-GU" => Ok(Locale::en_GU),
"en-GY" => Ok(Locale::en_GY),
"en-HK" => Ok(Locale::en_HK),
"en-HU" => Ok(Locale::en_HU),
"en-ID" => Ok(Locale::en_ID),
"en-IE" => Ok(Locale::en_IE),
"en-IL" => Ok(Locale::en_IL),
"en-IM" => Ok(Locale::en_IM),
"en-IN" => Ok(Locale::en_IN),
"en-IO" => Ok(Locale::en_IO),
"en-IT" => Ok(Locale::en_IT),
"en-JE" => Ok(Locale::en_JE),
"en-JM" => Ok(Locale::en_JM),
"en-JP" => Ok(Locale::en_JP),
"en-KE" => Ok(Locale::en_KE),
"en-KI" => Ok(Locale::en_KI),
"en-KN" => Ok(Locale::en_KN),
"en-KY" => Ok(Locale::en_KY),
"en-LC" => Ok(Locale::en_LC),
"en-LR" => Ok(Locale::en_LR),
"en-LS" => Ok(Locale::en_LS),
"en-LT" => Ok(Locale::en_LT),
"en-LV" => Ok(Locale::en_LV),
"en-MG" => Ok(Locale::en_MG),
"en-MH" => Ok(Locale::en_MH),
"en-MO" => Ok(Locale::en_MO),
"en-MP" => Ok(Locale::en_MP),
"en-MS" => Ok(Locale::en_MS),
"en-MT" => Ok(Locale::en_MT),
"en-MU" => Ok(Locale::en_MU),
"en-MV" => Ok(Locale::en_MV),
"en-MW" => Ok(Locale::en_MW),
"en-MY" => Ok(Locale::en_MY),
"en-NA" => Ok(Locale::en_NA),
"en-NF" => Ok(Locale::en_NF),
"en-NG" => Ok(Locale::en_NG),
"en-NL" => Ok(Locale::en_NL),
"en-NO" => Ok(Locale::en_NO),
"en-NR" => Ok(Locale::en_NR),
"en-NU" => Ok(Locale::en_NU),
"en-NZ" => Ok(Locale::en_NZ),
"en-PG" => Ok(Locale::en_PG),
"en-PH" => Ok(Locale::en_PH),
"en-PK" => Ok(Locale::en_PK),
"en-PL" => Ok(Locale::en_PL),
"en-PN" => Ok(Locale::en_PN),
"en-PR" => Ok(Locale::en_PR),
"en-PT" => Ok(Locale::en_PT),
"en-PW" => Ok(Locale::en_PW),
"en-RO" => Ok(Locale::en_RO),
"en-RW" => Ok(Locale::en_RW),
"en-SB" => Ok(Locale::en_SB),
"en-SC" => Ok(Locale::en_SC),
"en-SD" => Ok(Locale::en_SD),
"en-SE" => Ok(Locale::en_SE),
"en-SG" => Ok(Locale::en_SG),
"en-SH" => Ok(Locale::en_SH),
"en-SI" => Ok(Locale::en_SI),
"en-SK" => Ok(Locale::en_SK),
"en-SL" => Ok(Locale::en_SL),
"en-SS" => Ok(Locale::en_SS),
"en-SX" => Ok(Locale::en_SX),
"en-SZ" => Ok(Locale::en_SZ),
"en-Shaw" => Ok(Locale::en_Shaw),
"en-TC" => Ok(Locale::en_TC),
"en-TK" => Ok(Locale::en_TK),
"en-TO" => Ok(Locale::en_TO),
"en-TT" => Ok(Locale::en_TT),
"en-TV" => Ok(Locale::en_TV),
"en-TZ" => Ok(Locale::en_TZ),
"en-UA" => Ok(Locale::en_UA),
"en-UG" => Ok(Locale::en_UG),
"en-UM" => Ok(Locale::en_UM),
"en-VC" => Ok(Locale::en_VC),
"en-VG" => Ok(Locale::en_VG),
"en-VI" => Ok(Locale::en_VI),
"en-VU" => Ok(Locale::en_VU),
"en-WS" => Ok(Locale::en_WS),
"en-ZA" => Ok(Locale::en_ZA),
"en-ZM" => Ok(Locale::en_ZM),
"en-ZW" => Ok(Locale::en_ZW),
"eo" => Ok(Locale::eo),
"es" => Ok(Locale::es),
"es-419" => Ok(Locale::es_419),
"es-AR" => Ok(Locale::es_AR),
"es-BO" => Ok(Locale::es_BO),
"es-BR" => Ok(Locale::es_BR),
"es-BZ" => Ok(Locale::es_BZ),
"es-CL" => Ok(Locale::es_CL),
"es-CO" => Ok(Locale::es_CO),
"es-CR" => Ok(Locale::es_CR),
"es-CU" => Ok(Locale::es_CU),
"es-DO" => Ok(Locale::es_DO),
"es-EA" => Ok(Locale::es_EA),
"es-EC" => Ok(Locale::es_EC),
"es-GQ" => Ok(Locale::es_GQ),
"es-GT" => Ok(Locale::es_GT),
"es-HN" => Ok(Locale::es_HN),
"es-IC" => Ok(Locale::es_IC),
"es-MX" => Ok(Locale::es_MX),
"es-NI" => Ok(Locale::es_NI),
"es-PA" => Ok(Locale::es_PA),
"es-PE" => Ok(Locale::es_PE),
"es-PH" => Ok(Locale::es_PH),
"es-PR" => Ok(Locale::es_PR),
"es-PY" => Ok(Locale::es_PY),
"es-SV" => Ok(Locale::es_SV),
"es-US" => Ok(Locale::es_US),
"es-UY" => Ok(Locale::es_UY),
"es-VE" => Ok(Locale::es_VE),
"et" => Ok(Locale::et),
"eu" => Ok(Locale::eu),
"ewo" => Ok(Locale::ewo),
"fa" => Ok(Locale::fa),
"fa-AF" => Ok(Locale::fa_AF),
"ff" => Ok(Locale::ff),
"ff-Adlm" => Ok(Locale::ff_Adlm),
"ff-Adlm-BF" => Ok(Locale::ff_Adlm_BF),
"ff-Adlm-CM" => Ok(Locale::ff_Adlm_CM),
"ff-Adlm-GH" => Ok(Locale::ff_Adlm_GH),
"ff-Adlm-GM" => Ok(Locale::ff_Adlm_GM),
"ff-Adlm-GW" => Ok(Locale::ff_Adlm_GW),
"ff-Adlm-LR" => Ok(Locale::ff_Adlm_LR),
"ff-Adlm-MR" => Ok(Locale::ff_Adlm_MR),
"ff-Adlm-NE" => Ok(Locale::ff_Adlm_NE),
"ff-Adlm-NG" => Ok(Locale::ff_Adlm_NG),
"ff-Adlm-SL" => Ok(Locale::ff_Adlm_SL),
"ff-Adlm-SN" => Ok(Locale::ff_Adlm_SN),
"ff-Latn" => Ok(Locale::ff_Latn),
"ff-Latn-BF" => Ok(Locale::ff_Latn_BF),
"ff-Latn-CM" => Ok(Locale::ff_Latn_CM),
"ff-Latn-GH" => Ok(Locale::ff_Latn_GH),
"ff-Latn-GM" => Ok(Locale::ff_Latn_GM),
"ff-Latn-GN" => Ok(Locale::ff_Latn_GN),
"ff-Latn-GW" => Ok(Locale::ff_Latn_GW),
"ff-Latn-LR" => Ok(Locale::ff_Latn_LR),
"ff-Latn-MR" => Ok(Locale::ff_Latn_MR),
"ff-Latn-NE" => Ok(Locale::ff_Latn_NE),
"ff-Latn-NG" => Ok(Locale::ff_Latn_NG),
"ff-Latn-SL" => Ok(Locale::ff_Latn_SL),
"fi" => Ok(Locale::fi),
"fil" => Ok(Locale::fil),
"fo" => Ok(Locale::fo),
"fo-DK" => Ok(Locale::fo_DK),
"fr" => Ok(Locale::fr),
"fr-BE" => Ok(Locale::fr_BE),
"fr-BF" => Ok(Locale::fr_BF),
"fr-BI" => Ok(Locale::fr_BI),
"fr-BJ" => Ok(Locale::fr_BJ),
"fr-BL" => Ok(Locale::fr_BL),
"fr-CA" => Ok(Locale::fr_CA),
"fr-CD" => Ok(Locale::fr_CD),
"fr-CF" => Ok(Locale::fr_CF),
"fr-CG" => Ok(Locale::fr_CG),
"fr-CH" => Ok(Locale::fr_CH),
"fr-CI" => Ok(Locale::fr_CI),
"fr-CM" => Ok(Locale::fr_CM),
"fr-DJ" => Ok(Locale::fr_DJ),
"fr-DZ" => Ok(Locale::fr_DZ),
"fr-GA" => Ok(Locale::fr_GA),
"fr-GF" => Ok(Locale::fr_GF),
"fr-GN" => Ok(Locale::fr_GN),
"fr-GP" => Ok(Locale::fr_GP),
"fr-GQ" => Ok(Locale::fr_GQ),
"fr-HT" => Ok(Locale::fr_HT),
"fr-KM" => Ok(Locale::fr_KM),
"fr-LU" => Ok(Locale::fr_LU),
"fr-MA" => Ok(Locale::fr_MA),
"fr-MC" => Ok(Locale::fr_MC),
"fr-MF" => Ok(Locale::fr_MF),
"fr-MG" => Ok(Locale::fr_MG),
"fr-ML" => Ok(Locale::fr_ML),
"fr-MQ" => Ok(Locale::fr_MQ),
"fr-MR" => Ok(Locale::fr_MR),
"fr-MU" => Ok(Locale::fr_MU),
"fr-NC" => Ok(Locale::fr_NC),
"fr-NE" => Ok(Locale::fr_NE),
"fr-PF" => Ok(Locale::fr_PF),
"fr-PM" => Ok(Locale::fr_PM),
"fr-RE" => Ok(Locale::fr_RE),
"fr-RW" => Ok(Locale::fr_RW),
"fr-SC" => Ok(Locale::fr_SC),
"fr-SN" => Ok(Locale::fr_SN),
"fr-SY" => Ok(Locale::fr_SY),
"fr-TD" => Ok(Locale::fr_TD),
"fr-TG" => Ok(Locale::fr_TG),
"fr-TN" => Ok(Locale::fr_TN),
"fr-VU" => Ok(Locale::fr_VU),
"fr-WF" => Ok(Locale::fr_WF),
"fr-YT" => Ok(Locale::fr_YT),
"frr" => Ok(Locale::frr),
"fur" => Ok(Locale::fur),
"fy" => Ok(Locale::fy),
"ga" => Ok(Locale::ga),
"ga-GB" => Ok(Locale::ga_GB),
"gaa" => Ok(Locale::gaa),
"gd" => Ok(Locale::gd),
"gez" => Ok(Locale::gez),
"gez-ER" => Ok(Locale::gez_ER),
"gl" => Ok(Locale::gl),
"gn" => Ok(Locale::gn),
"gsw" => Ok(Locale::gsw),
"gsw-FR" => Ok(Locale::gsw_FR),
"gsw-LI" => Ok(Locale::gsw_LI),
"gu" => Ok(Locale::gu),
"guz" => Ok(Locale::guz),
"gv" => Ok(Locale::gv),
"ha" => Ok(Locale::ha),
"ha-Arab" => Ok(Locale::ha_Arab),
"ha-Arab-SD" => Ok(Locale::ha_Arab_SD),
"ha-GH" => Ok(Locale::ha_GH),
"ha-NE" => Ok(Locale::ha_NE),
"haw" => Ok(Locale::haw),
"he" => Ok(Locale::he),
"hi" => Ok(Locale::hi),
"hi-Latn" => Ok(Locale::hi_Latn),
"hnj" => Ok(Locale::hnj),
"hnj-Hmnp" => Ok(Locale::hnj_Hmnp),
"hr" => Ok(Locale::hr),
"hr-BA" => Ok(Locale::hr_BA),
"hsb" => Ok(Locale::hsb),
"ht" => Ok(Locale::ht),
"hu" => Ok(Locale::hu),
"hy" => Ok(Locale::hy),
"ia" => Ok(Locale::ia),
"id" => Ok(Locale::id),
"ie" => Ok(Locale::ie),
"ig" => Ok(Locale::ig),
"ii" => Ok(Locale::ii),
"io" => Ok(Locale::io),
"is" => Ok(Locale::is),
"it" => Ok(Locale::it),
"it-CH" => Ok(Locale::it_CH),
"it-SM" => Ok(Locale::it_SM),
"it-VA" => Ok(Locale::it_VA),
"iu" => Ok(Locale::iu),
"iu-Latn" => Ok(Locale::iu_Latn),
"ja" => Ok(Locale::ja),
"jbo" => Ok(Locale::jbo),
"jgo" => Ok(Locale::jgo),
"jmc" => Ok(Locale::jmc),
"jv" => Ok(Locale::jv),
"ka" => Ok(Locale::ka),
"kaa" => Ok(Locale::kaa),
"kaa-Cyrl" => Ok(Locale::kaa_Cyrl),
"kaa-Latn" => Ok(Locale::kaa_Latn),
"kab" => Ok(Locale::kab),
"kaj" => Ok(Locale::kaj),
"kam" => Ok(Locale::kam),
"kcg" => Ok(Locale::kcg),
"kde" => Ok(Locale::kde),
"kea" => Ok(Locale::kea),
"kek" => Ok(Locale::kek),
"ken" => Ok(Locale::ken),
"kgp" => Ok(Locale::kgp),
"khq" => Ok(Locale::khq),
"ki" => Ok(Locale::ki),
"kk" => Ok(Locale::kk),
"kk-Arab" => Ok(Locale::kk_Arab),
"kk-Cyrl" => Ok(Locale::kk_Cyrl),
"kk-KZ" => Ok(Locale::kk_KZ),
"kkj" => Ok(Locale::kkj),
"kl" => Ok(Locale::kl),
"kln" => Ok(Locale::kln),
"km" => Ok(Locale::km),
"kn" => Ok(Locale::kn),
"ko" => Ok(Locale::ko),
"ko-CN" => Ok(Locale::ko_CN),
"ko-KP" => Ok(Locale::ko_KP),
"kok" => Ok(Locale::kok),
"kok-Deva" => Ok(Locale::kok_Deva),
"kok-Latn" => Ok(Locale::kok_Latn),
"kpe" => Ok(Locale::kpe),
"kpe-GN" => Ok(Locale::kpe_GN),
"ks" => Ok(Locale::ks),
"ks-Arab" => Ok(Locale::ks_Arab),
"ks-Deva" => Ok(Locale::ks_Deva),
"ksb" => Ok(Locale::ksb),
"ksf" => Ok(Locale::ksf),
"ksh" => Ok(Locale::ksh),
"ku" => Ok(Locale::ku),
"ku-Arab" => Ok(Locale::ku_Arab),
"ku-Arab-IR" => Ok(Locale::ku_Arab_IR),
"ku-Latn" => Ok(Locale::ku_Latn),
"ku-Latn-IQ" => Ok(Locale::ku_Latn_IQ),
"ku-Latn-SY" => Ok(Locale::ku_Latn_SY),
"ku-TR" => Ok(Locale::ku_TR),
"kw" => Ok(Locale::kw),
"kxv" => Ok(Locale::kxv),
"kxv-Deva" => Ok(Locale::kxv_Deva),
"kxv-Latn" => Ok(Locale::kxv_Latn),
"kxv-Orya" => Ok(Locale::kxv_Orya),
"kxv-Telu" => Ok(Locale::kxv_Telu),
"ky" => Ok(Locale::ky),
"la" => Ok(Locale::la),
"lag" => Ok(Locale::lag),
"lb" => Ok(Locale::lb),
"lg" => Ok(Locale::lg),
"lij" => Ok(Locale::lij),
"lkt" => Ok(Locale::lkt),
"lld" => Ok(Locale::lld),
"lmo" => Ok(Locale::lmo),
"ln" => Ok(Locale::ln),
"ln-AO" => Ok(Locale::ln_AO),
"ln-CF" => Ok(Locale::ln_CF),
"ln-CG" => Ok(Locale::ln_CG),
"lo" => Ok(Locale::lo),
"lrc" => Ok(Locale::lrc),
"lrc-IQ" => Ok(Locale::lrc_IQ),
"lt" => Ok(Locale::lt),
"ltg" => Ok(Locale::ltg),
"lu" => Ok(Locale::lu),
"luo" => Ok(Locale::luo),
"luy" => Ok(Locale::luy),
"lv" => Ok(Locale::lv),
"lzz" => Ok(Locale::lzz),
"mai" => Ok(Locale::mai),
"mas" => Ok(Locale::mas),
"mas-TZ" => Ok(Locale::mas_TZ),
"mdf" => Ok(Locale::mdf),
"mer" => Ok(Locale::mer),
"mfe" => Ok(Locale::mfe),
"mg" => Ok(Locale::mg),
"mgh" => Ok(Locale::mgh),
"mgo" => Ok(Locale::mgo),
"mhn" => Ok(Locale::mhn),
"mi" => Ok(Locale::mi),
"mic" => Ok(Locale::mic),
"mk" => Ok(Locale::mk),
"ml" => Ok(Locale::ml),
"mn" => Ok(Locale::mn),
"mn-Mong" => Ok(Locale::mn_Mong),
"mn-Mong-MN" => Ok(Locale::mn_Mong_MN),
"mni" => Ok(Locale::mni),
"mni-Beng" => Ok(Locale::mni_Beng),
"mni-Mtei" => Ok(Locale::mni_Mtei),
"moh" => Ok(Locale::moh),
"mr" => Ok(Locale::mr),
"ms" => Ok(Locale::ms),
"ms-Arab" => Ok(Locale::ms_Arab),
"ms-Arab-BN" => Ok(Locale::ms_Arab_BN),
"ms-BN" => Ok(Locale::ms_BN),
"ms-ID" => Ok(Locale::ms_ID),
"ms-SG" => Ok(Locale::ms_SG),
"mt" => Ok(Locale::mt),
"mua" => Ok(Locale::mua),
"mus" => Ok(Locale::mus),
"mww" => Ok(Locale::mww),
"mww-Hmnp" => Ok(Locale::mww_Hmnp),
"my" => Ok(Locale::my),
"myv" => Ok(Locale::myv),
"mzn" => Ok(Locale::mzn),
"naq" => Ok(Locale::naq),
"nb" => Ok(Locale::nb),
"nb-SJ" => Ok(Locale::nb_SJ),
"nd" => Ok(Locale::nd),
"nds" => Ok(Locale::nds),
"nds-NL" => Ok(Locale::nds_NL),
"ne" => Ok(Locale::ne),
"ne-IN" => Ok(Locale::ne_IN),
"nl" => Ok(Locale::nl),
"nl-AW" => Ok(Locale::nl_AW),
"nl-BE" => Ok(Locale::nl_BE),
"nl-BQ" => Ok(Locale::nl_BQ),
"nl-CW" => Ok(Locale::nl_CW),
"nl-SR" => Ok(Locale::nl_SR),
"nl-SX" => Ok(Locale::nl_SX),
"nmg" => Ok(Locale::nmg),
"nn" => Ok(Locale::nn),
"nnh" => Ok(Locale::nnh),
"no" => Ok(Locale::no),
"nqo" => Ok(Locale::nqo),
"nr" => Ok(Locale::nr),
"nso" => Ok(Locale::nso),
"nus" => Ok(Locale::nus),
"nv" => Ok(Locale::nv),
"ny" => Ok(Locale::ny),
"nyn" => Ok(Locale::nyn),
"oc" => Ok(Locale::oc),
"oc-ES" => Ok(Locale::oc_ES),
"oka" => Ok(Locale::oka),
"oka-US" => Ok(Locale::oka_US),
"om" => Ok(Locale::om),
"om-KE" => Ok(Locale::om_KE),
"or" => Ok(Locale::or),
"os" => Ok(Locale::os),
"os-RU" => Ok(Locale::os_RU),
"osa" => Ok(Locale::osa),
"pa" => Ok(Locale::pa),
"pa-Arab" => Ok(Locale::pa_Arab),
"pa-Guru" => Ok(Locale::pa_Guru),
"pap" => Ok(Locale::pap),
"pap-AW" => Ok(Locale::pap_AW),
"pcm" => Ok(Locale::pcm),
"pi" => Ok(Locale::pi),
"pi-Latn" => Ok(Locale::pi_Latn),
"pis" => Ok(Locale::pis),
"pl" => Ok(Locale::pl),
"pms" => Ok(Locale::pms),
"prg" => Ok(Locale::prg),
"ps" => Ok(Locale::ps),
"ps-PK" => Ok(Locale::ps_PK),
"pt" => Ok(Locale::pt),
"pt-AO" => Ok(Locale::pt_AO),
"pt-CH" => Ok(Locale::pt_CH),
"pt-CV" => Ok(Locale::pt_CV),
"pt-GQ" => Ok(Locale::pt_GQ),
"pt-GW" => Ok(Locale::pt_GW),
"pt-LU" => Ok(Locale::pt_LU),
"pt-MO" => Ok(Locale::pt_MO),
"pt-MZ" => Ok(Locale::pt_MZ),
"pt-PT" => Ok(Locale::pt_PT),
"pt-ST" => Ok(Locale::pt_ST),
"pt-TL" => Ok(Locale::pt_TL),
"qu" => Ok(Locale::qu),
"qu-BO" => Ok(Locale::qu_BO),
"qu-EC" => Ok(Locale::qu_EC),
"quc" => Ok(Locale::quc),
"raj" => Ok(Locale::raj),
"rhg" => Ok(Locale::rhg),
"rhg-Rohg" => Ok(Locale::rhg_Rohg),
"rhg-Rohg-BD" => Ok(Locale::rhg_Rohg_BD),
"rif" => Ok(Locale::rif),
"rm" => Ok(Locale::rm),
"rn" => Ok(Locale::rn),
"ro" => Ok(Locale::ro),
"ro-MD" => Ok(Locale::ro_MD),
"rof" => Ok(Locale::rof),
"ru" => Ok(Locale::ru),
"ru-BY" => Ok(Locale::ru_BY),
"ru-KG" => Ok(Locale::ru_KG),
"ru-KZ" => Ok(Locale::ru_KZ),
"ru-MD" => Ok(Locale::ru_MD),
"ru-UA" => Ok(Locale::ru_UA),
"rw" => Ok(Locale::rw),
"rwk" => Ok(Locale::rwk),
"sa" => Ok(Locale::sa),
"sah" => Ok(Locale::sah),
"saq" => Ok(Locale::saq),
"sat" => Ok(Locale::sat),
"sat-Deva" => Ok(Locale::sat_Deva),
"sat-Olck" => Ok(Locale::sat_Olck),
"sbp" => Ok(Locale::sbp),
"sc" => Ok(Locale::sc),
"scn" => Ok(Locale::scn),
"sd" => Ok(Locale::sd),
"sd-Arab" => Ok(Locale::sd_Arab),
"sd-Deva" => Ok(Locale::sd_Deva),
"sdh" => Ok(Locale::sdh),
"sdh-IQ" => Ok(Locale::sdh_IQ),
"se" => Ok(Locale::se),
"se-FI" => Ok(Locale::se_FI),
"se-SE" => Ok(Locale::se_SE),
"seh" => Ok(Locale::seh),
"ses" => Ok(Locale::ses),
"sg" => Ok(Locale::sg),
"sgs" => Ok(Locale::sgs),
"shi" => Ok(Locale::shi),
"shi-Latn" => Ok(Locale::shi_Latn),
"shi-Tfng" => Ok(Locale::shi_Tfng),
"shn" => Ok(Locale::shn),
"shn-TH" => Ok(Locale::shn_TH),
"si" => Ok(Locale::si),
"sid" => Ok(Locale::sid),
"sk" => Ok(Locale::sk),
"skr" => Ok(Locale::skr),
"sl" => Ok(Locale::sl),
"sma" => Ok(Locale::sma),
"sma-NO" => Ok(Locale::sma_NO),
"smj" => Ok(Locale::smj),
"smj-NO" => Ok(Locale::smj_NO),
"smn" => Ok(Locale::smn),
"sms" => Ok(Locale::sms),
"sn" => Ok(Locale::sn),
"so" => Ok(Locale::so),
"so-DJ" => Ok(Locale::so_DJ),
"so-ET" => Ok(Locale::so_ET),
"so-KE" => Ok(Locale::so_KE),
"sq" => Ok(Locale::sq),
"sq-MK" => Ok(Locale::sq_MK),
"sq-XK" => Ok(Locale::sq_XK),
"sr" => Ok(Locale::sr),
"sr-Cyrl" => Ok(Locale::sr_Cyrl),
"sr-Cyrl-BA" => Ok(Locale::sr_Cyrl_BA),
"sr-Cyrl-ME" => Ok(Locale::sr_Cyrl_ME),
"sr-Cyrl-XK" => Ok(Locale::sr_Cyrl_XK),
"sr-Latn" => Ok(Locale::sr_Latn),
"sr-Latn-BA" => Ok(Locale::sr_Latn_BA),
"sr-Latn-ME" => Ok(Locale::sr_Latn_ME),
"sr-Latn-XK" => Ok(Locale::sr_Latn_XK),
"ss" => Ok(Locale::ss),
"ss-SZ" => Ok(Locale::ss_SZ),
"ssy" => Ok(Locale::ssy),
"st" => Ok(Locale::st),
"st-LS" => Ok(Locale::st_LS),
"su" => Ok(Locale::su),
"su-Latn" => Ok(Locale::su_Latn),
"suz" => Ok(Locale::suz),
"suz-Deva" => Ok(Locale::suz_Deva),
"suz-Sunu" => Ok(Locale::suz_Sunu),
"sv" => Ok(Locale::sv),
"sv-AX" => Ok(Locale::sv_AX),
"sv-FI" => Ok(Locale::sv_FI),
"sw" => Ok(Locale::sw),
"sw-CD" => Ok(Locale::sw_CD),
"sw-KE" => Ok(Locale::sw_KE),
"sw-UG" => Ok(Locale::sw_UG),
"syr" => Ok(Locale::syr),
"syr-SY" => Ok(Locale::syr_SY),
"szl" => Ok(Locale::szl),
"ta" => Ok(Locale::ta),
"ta-LK" => Ok(Locale::ta_LK),
"ta-MY" => Ok(Locale::ta_MY),
"ta-SG" => Ok(Locale::ta_SG),
"te" => Ok(Locale::te),
"teo" => Ok(Locale::teo),
"teo-KE" => Ok(Locale::teo_KE),
"tg" => Ok(Locale::tg),
"th" => Ok(Locale::th),
"ti" => Ok(Locale::ti),
"ti-ER" => Ok(Locale::ti_ER),
"tig" => Ok(Locale::tig),
"tk" => Ok(Locale::tk),
"tn" => Ok(Locale::tn),
"tn-BW" => Ok(Locale::tn_BW),
"to" => Ok(Locale::to),
"tok" => Ok(Locale::tok),
"tpi" => Ok(Locale::tpi),
"tr" => Ok(Locale::tr),
"tr-CY" => Ok(Locale::tr_CY),
"trv" => Ok(Locale::trv),
"trw" => Ok(Locale::trw),
"ts" => Ok(Locale::ts),
"tt" => Ok(Locale::tt),
"twq" => Ok(Locale::twq),
"tyv" => Ok(Locale::tyv),
"tzm" => Ok(Locale::tzm),
"ug" => Ok(Locale::ug),
"uk" => Ok(Locale::uk),
"und" => Ok(Locale::und),
"ur" => Ok(Locale::ur),
"ur-IN" => Ok(Locale::ur_IN),
"uz" => Ok(Locale::uz),
"uz-Arab" => Ok(Locale::uz_Arab),
"uz-Cyrl" => Ok(Locale::uz_Cyrl),
"uz-Latn" => Ok(Locale::uz_Latn),
"vai" => Ok(Locale::vai),
"vai-Latn" => Ok(Locale::vai_Latn),
"vai-Vaii" => Ok(Locale::vai_Vaii),
"ve" => Ok(Locale::ve),
"vec" => Ok(Locale::vec),
"vi" => Ok(Locale::vi),
"vmw" => Ok(Locale::vmw),
"vo" => Ok(Locale::vo),
"vun" => Ok(Locale::vun),
"wa" => Ok(Locale::wa),
"wae" => Ok(Locale::wae),
"wal" => Ok(Locale::wal),
"wbp" => Ok(Locale::wbp),
"wo" => Ok(Locale::wo),
"xh" => Ok(Locale::xh),
"xnr" => Ok(Locale::xnr),
"xog" => Ok(Locale::xog),
"yav" => Ok(Locale::yav),
"yi" => Ok(Locale::yi),
"yo" => Ok(Locale::yo),
"yo-BJ" => Ok(Locale::yo_BJ),
"yrl" => Ok(Locale::yrl),
"yrl-CO" => Ok(Locale::yrl_CO),
"yrl-VE" => Ok(Locale::yrl_VE),
"yue" => Ok(Locale::yue),
"yue-Hans" => Ok(Locale::yue_Hans),
"yue-Hant" => Ok(Locale::yue_Hant),
"yue-Hant-CN" => Ok(Locale::yue_Hant_CN),
"yue-Hant-MO" => Ok(Locale::yue_Hant_MO),
"za" => Ok(Locale::za),
"zgh" => Ok(Locale::zgh),
"zh" => Ok(Locale::zh),
"zh-Hans" => Ok(Locale::zh_Hans),
"zh-Hans-HK" => Ok(Locale::zh_Hans_HK),
"zh-Hans-MO" => Ok(Locale::zh_Hans_MO),
"zh-Hans-MY" => Ok(Locale::zh_Hans_MY),
"zh-Hans-SG" => Ok(Locale::zh_Hans_SG),
"zh-Hant" => Ok(Locale::zh_Hant),
"zh-Hant-HK" => Ok(Locale::zh_Hant_HK),
"zh-Hant-MO" => Ok(Locale::zh_Hant_MO),
"zh-Hant-MY" => Ok(Locale::zh_Hant_MY),
"zh-Latn" => Ok(Locale::zh_Latn),
"zu" => Ok(Locale::zu),
_ => unreachable!(),
};
}
Err(LocaleError::UnknownLocale(s.to_string()))
}
}
impl TryFrom<&str> for Locale {
type Error = LocaleError;
fn try_from(value: &str) -> Result<Self, Self::Error> {
Self::from_str(value)
}
}
impl From<Locale> for &'static str {
fn from(loc: Locale) -> Self {
loc.as_str()
}
}
impl From<Locale> for String {
fn from(loc: Locale) -> Self {
loc.as_str().to_string()
}
}
impl From<&Locale> for &'static str {
fn from(loc: &Locale) -> Self {
loc.as_str()
}
}