use std::convert::TryFrom;
use crate::prelude::*;
use Language::*;
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
pub enum Language {
Af,
Ak,
Am,
Ar,
ArAe,
ArBh,
ArDz,
ArEg,
ArIq,
ArJo,
ArKw,
ArLb,
ArLy,
ArMa,
ArOm,
ArQa,
ArSa,
ArSy,
ArTn,
ArYe,
Arn,
As,
Az,
AzCyrlAz,
AzLatnAz,
Ba,
Be,
Bg,
Bm,
Bn,
BnBd,
BnIn,
Bo,
Br,
Bs,
BsCyrl,
BsLatn,
Ca,
Co,
Cs,
Cy,
Da,
De,
DeAt,
DeCh,
DeDe,
DeLi,
DeLu,
Dsb,
Dv,
Ee,
El,
En,
En029,
EnAu,
EnBz,
EnCa,
EnGb,
EnIe,
EnIn,
EnJm,
EnMy,
EnNz,
EnPh,
EnSg,
EnTt,
EnUs,
EnZa,
EnZw,
Eo,
Es,
EsAr,
EsBo,
EsCl,
EsCo,
EsCr,
EsDo,
EsEc,
EsEs,
EsGt,
EsHn,
EsMx,
EsNi,
EsPa,
EsPe,
EsPr,
EsPy,
EsSv,
EsUs,
EsUy,
EsVe,
Et,
Eu,
Fa,
Fi,
Fil,
Fo,
Fr,
FrBe,
FrCa,
FrCh,
FrFr,
FrLu,
FrMc,
Fy,
Ga,
Gd,
Gl,
Gn,
Gsw,
Gu,
Ha,
He,
Hi,
Hmn,
Hr,
HrBa,
HrHr,
Hsb,
Ht,
Hu,
Hy,
Id,
Ig,
Ii,
Is,
It,
ItCh,
ItIt,
Iu,
Ja,
Jv,
Ka,
Kg,
Ki,
Kk,
Kl,
Km,
Kn,
Ko,
Kok,
Kr,
Ks,
Ky,
Lb,
Lg,
Ln,
Lo,
Lt,
Lv,
Mg,
Mi,
Mk,
Ml,
Mn,
MnMn,
MnMongCn,
Moh,
Mr,
Ms,
MsBn,
MsMy,
Mt,
My,
Nb,
NbNo,
Ne,
Nl,
NlBe,
NlNl,
Nn,
No,
Nso,
Ny,
Oc,
Om,
Or,
Pa,
Pl,
Prs,
Ps,
Pt,
PtBr,
PtPt,
Qu,
Quc,
Rm,
Rn,
Ro,
Ru,
Rw,
Sa,
Sah,
Sc,
Sd,
Se,
Si,
Sk,
Sl,
Sn,
So,
Sq,
Sr,
SrCyrlSp,
SrLatnSp,
St,
Su,
Sv,
SvFi,
SvSe,
Sw,
Syr,
Ta,
Te,
Tg,
Th,
Ti,
Tk,
Tl,
Tn,
Tr,
Ts,
Tt,
Tzm,
Ug,
Uk,
Ur,
Uz,
UzCyrlUz,
UzLatnUz,
Ve,
Vi,
Wo,
Xh,
Yo,
ZhCn,
ZhHk,
ZhHans,
ZhHant,
ZhMo,
ZhSg,
ZhTw,
Zu,
}
impl Language {
#[rustfmt::skip]
pub const fn all() -> [Self; 243] {
[
Af,
Ak,
Am,
Ar,
ArAe,
ArBh,
ArDz,
ArEg,
ArIq,
ArJo,
ArKw,
ArLb,
ArLy,
ArMa,
ArOm,
ArQa,
ArSa,
ArSy,
ArTn,
ArYe,
Arn,
As,
Az,
AzCyrlAz,
AzLatnAz,
Ba,
Be,
Bg,
Bm,
Bn,
BnBd,
BnIn,
Bo,
Br,
Bs,
BsCyrl,
BsLatn,
Ca,
Co,
Cs,
Cy,
Da,
De,
DeAt,
DeCh,
DeDe,
DeLi,
DeLu,
Dsb,
Dv,
Ee,
El,
En,
En029,
EnAu,
EnBz,
EnCa,
EnGb,
EnIe,
EnIn,
EnJm,
EnMy,
EnNz,
EnPh,
EnSg,
EnTt,
EnUs,
EnZa,
EnZw,
Eo,
Es,
EsAr,
EsBo,
EsCl,
EsCo,
EsCr,
EsDo,
EsEc,
EsEs,
EsGt,
EsHn,
EsMx,
EsNi,
EsPa,
EsPe,
EsPr,
EsPy,
EsSv,
EsUs,
EsUy,
EsVe,
Et,
Eu,
Fa,
Fi,
Fil,
Fo,
Fr,
FrBe,
FrCa,
FrCh,
FrFr,
FrLu,
FrMc,
Fy,
Ga,
Gd,
Gl,
Gn,
Gsw,
Gu,
Ha,
He,
Hi,
Hmn,
Hr,
HrBa,
HrHr,
Hsb,
Ht,
Hu,
Hy,
Id,
Ig,
Ii,
Is,
It,
ItCh,
ItIt,
Iu,
Ja,
Jv,
Ka,
Kg,
Ki,
Kk,
Kl,
Km,
Kn,
Ko,
Kok,
Kr,
Ks,
Ky,
Lb,
Lg,
Ln,
Lo,
Lt,
Lv,
Mg,
Mi,
Mk,
Ml,
Mn,
MnMn,
MnMongCn,
Moh,
Mr,
Ms,
MsBn,
MsMy,
Mt,
My,
Nb,
NbNo,
Ne,
Nl,
NlBe,
NlNl,
Nn,
No,
Nso,
Ny,
Oc,
Om,
Or,
Pa,
Pl,
Prs,
Ps,
Pt,
PtBr,
PtPt,
Qu,
Quc,
Rm,
Rn,
Ro,
Ru,
Rw,
Sa,
Sah,
Sc,
Sd,
Se,
Si,
Sk,
Sl,
Sn,
So,
Sq,
Sr,
SrCyrlSp,
SrLatnSp,
St,
Su,
Sv,
SvFi,
SvSe,
Sw,
Syr,
Ta,
Te,
Tg,
Th,
Ti,
Tk,
Tl,
Tn,
Tr,
Ts,
Tt,
Tzm,
Ug,
Uk,
Ur,
Uz,
UzCyrlUz,
UzLatnUz,
Ve,
Vi,
Wo,
Xh,
Yo,
ZhCn,
ZhHk,
ZhHans,
ZhHant,
ZhMo,
ZhSg,
ZhTw,
Zu,
]
}
pub fn tag(&self) -> &'static str {
match self {
Af => "af",
Ak => "ak",
Am => "am",
Ar => "ar",
ArAe => "ar-AE",
ArBh => "ar-BH",
ArDz => "ar-DZ",
ArEg => "ar-EG",
ArIq => "ar-IQ",
ArJo => "ar-JO",
ArKw => "ar-KW",
ArLb => "ar-LB",
ArLy => "ar-LY",
ArMa => "ar-MA",
ArOm => "ar-OM",
ArQa => "ar-QA",
ArSa => "ar-SA",
ArSy => "ar-SY",
ArTn => "ar-TN",
ArYe => "ar-YE",
Arn => "arn",
As => "as",
Az => "az",
AzCyrlAz => "az-Cyrl-AZ",
AzLatnAz => "az-Latn-AZ",
Ba => "ba",
Be => "be",
Bg => "bg",
Bm => "bm",
Bn => "bn",
BnBd => "bn-BD",
BnIn => "bn-IN",
Bo => "bo",
Br => "br",
Bs => "bs",
BsCyrl => "bs-Cyrl",
BsLatn => "bs-Latn",
Ca => "ca",
Co => "co",
Cs => "cs",
Cy => "cy",
Da => "da",
De => "de",
DeAt => "de-AT",
DeCh => "de-CH",
DeDe => "de-DE",
DeLi => "de-LI",
DeLu => "de-LU",
Dsb => "dsb",
Dv => "dv",
Ee => "ee",
El => "el",
En => "en",
En029 => "en-029",
EnAu => "en-AU",
EnBz => "en-BZ",
EnCa => "en-CA",
EnGb => "en-GB",
EnIe => "en-IE",
EnIn => "en-IN",
EnJm => "en-JM",
EnMy => "en-MY",
EnNz => "en-NZ",
EnPh => "en-PH",
EnSg => "en-SG",
EnTt => "en-TT",
EnUs => "en-US",
EnZa => "en-ZA",
EnZw => "en-ZW",
Eo => "eo",
Es => "es",
EsAr => "es-AR",
EsBo => "es-BO",
EsCl => "es-CL",
EsCo => "es-CO",
EsCr => "es-CR",
EsDo => "es-DO",
EsEc => "es-EC",
EsEs => "es-ES",
EsGt => "es-GT",
EsHn => "es-HN",
EsMx => "es-MX",
EsNi => "es-NI",
EsPa => "es-PA",
EsPe => "es-PE",
EsPr => "es-PR",
EsPy => "es-PY",
EsSv => "es-SV",
EsUs => "es-US",
EsUy => "es-UY",
EsVe => "es-VE",
Et => "et",
Eu => "eu",
Fa => "fa",
Fi => "fi",
Fil => "fil",
Fo => "fo",
Fr => "fr",
FrBe => "fr-BE",
FrCa => "fr-CA",
FrCh => "fr-CH",
FrFr => "fr-FR",
FrLu => "fr-LU",
FrMc => "fr-MC",
Fy => "fy",
Ga => "ga",
Gd => "gd",
Gl => "gl",
Gn => "gn",
Gsw => "gsw",
Gu => "gu",
Ha => "ha",
He => "he",
Hi => "hi",
Hmn => "hmn",
Hr => "hr",
HrBa => "hr-BA",
HrHr => "hr-HR",
Hsb => "hsb",
Ht => "ht",
Hu => "hu",
Hy => "hy",
Id => "id",
Ig => "ig",
Ii => "ii",
Is => "is",
It => "it",
ItCh => "it-CH",
ItIt => "it-IT",
Iu => "iu",
Ja => "ja",
Jv => "jv",
Ka => "ka",
Kg => "kg",
Ki => "ki",
Kk => "kk",
Kl => "kl",
Km => "km",
Kn => "kn",
Ko => "ko",
Kok => "kok",
Kr => "kr",
Ks => "ks",
Ky => "ky",
Lb => "lb",
Lg => "lg",
Ln => "ln",
Lo => "lo",
Lt => "lt",
Lv => "lv",
Mg => "mg",
Mi => "mi",
Mk => "mk",
Ml => "ml",
Mn => "mn",
MnMn => "mn-MN",
MnMongCn => "mn-Mong-CN",
Moh => "moh",
Mr => "mr",
Ms => "ms",
MsBn => "ms-BN",
MsMy => "ms-MY",
Mt => "mt",
My => "my",
Nb => "nb",
NbNo => "nb-NO",
Ne => "ne",
Nl => "nl",
NlBe => "nl-BE",
NlNl => "nl-NL",
Nn => "nn",
No => "no",
Nso => "nso",
Ny => "ny",
Oc => "oc",
Om => "om",
Or => "or",
Pa => "pa",
Pl => "pl",
Prs => "prs",
Ps => "ps",
Pt => "pt",
PtBr => "pt-BR",
PtPt => "pt-PT",
Qu => "qu",
Quc => "quc",
Rm => "rm",
Rn => "rn",
Ro => "ro",
Ru => "ru",
Rw => "rw",
Sa => "sa",
Sah => "sah",
Sc => "sc",
Sd => "sd",
Se => "se",
Si => "si",
Sk => "sk",
Sl => "sl",
Sn => "sn",
So => "so",
Sq => "sq",
Sr => "sr",
SrCyrlSp => "sr-Cyrl-SP",
SrLatnSp => "sr-Latn-SP",
St => "st",
Su => "su",
Sv => "sv",
SvFi => "sv-FI",
SvSe => "sv-SE",
Sw => "sw",
Syr => "syr",
Ta => "ta",
Te => "te",
Tg => "tg",
Th => "th",
Ti => "ti",
Tk => "tk",
Tl => "tl",
Tn => "tn",
Tr => "tr",
Ts => "ts",
Tt => "tt",
Tzm => "tzm",
Ug => "ug",
Uk => "uk",
Ur => "ur",
Uz => "uz",
UzCyrlUz => "uz-Cyrl-UZ",
UzLatnUz => "uz-Latn-UZ",
Ve => "ve",
Vi => "vi",
Wo => "wo",
Xh => "xh",
Yo => "yo",
ZhCn => "zh-CN",
ZhHk => "zh-HK",
ZhHans => "zh-Hans",
ZhHant => "zh-Hant",
ZhMo => "zh-MO",
ZhSg => "zh-SG",
ZhTw => "zh-TW",
Zu => "zu",
}
}
pub fn name(&self) -> &str {
match self {
Af => "Afrikaans",
Ak => "Akan",
Am => "Amharic",
Ar => "Arabic",
ArAe => "Arabic (U.A.E.)",
ArBh => "Arabic (Bahrain)",
ArDz => "Arabic (Algeria)",
ArEg => "Arabic (Egypt)",
ArIq => "Arabic (Iraq)",
ArJo => "Arabic (Jordan)",
ArKw => "Arabic (Kuwait)",
ArLb => "Arabic (Lebanon)",
ArLy => "Arabic (Libya)",
ArMa => "Arabic (Morocco)",
ArOm => "Arabic (Oman)",
ArQa => "Arabic (Qatar)",
ArSa => "Arabic (Saudi Arabia)",
ArSy => "Arabic (Syria)",
ArTn => "Arabic (Tunisia)",
ArYe => "Arabic (Yemen)",
Arn => "Mapudungun",
As => "Assamese",
Az => "Azeri",
AzCyrlAz => "Azeri (Cyrillic, Azerbaijan)",
AzLatnAz => "Azeri (Latin, Azerbaijan)",
Ba => "Bashkir",
Be => "Belarusian",
Bg => "Bulgarian",
Bm => "Bambara",
Bn => "Bengali",
BnBd => "Bengali (Bangladesh)",
BnIn => "Bengali (India)",
Bo => "Tibetan",
Br => "Breton",
Bs => "Bosnian",
BsCyrl => "Bosnian (Cyrillic)",
BsLatn => "Bosnian (Latin)",
Ca => "Catalan",
Co => "Corsican",
Cs => "Czech",
Cy => "Welsh",
Da => "Danish",
De => "German",
DeAt => "German (Austria)",
DeCh => "German (Switzerland)",
DeDe => "German (Germany)",
DeLi => "German (Liechtenstein)",
DeLu => "German (Luxembourg)",
Dsb => "Lower Sorbian (Germany)",
Dv => "Divehi",
Ee => "Ewe",
El => "Greek",
En => "English",
En029 => "English (Caribbean)",
EnAu => "English (Australia)",
EnBz => "English (Belize)",
EnCa => "English (Canada)",
EnGb => "English (United Kingdom)",
EnIe => "English (Ireland)",
EnIn => "English (India)",
EnJm => "English (Jamaica)",
EnMy => "English (Malaysia)",
EnNz => "English (New Zealand)",
EnPh => "English (Republic of the Philippines)",
EnSg => "English (Singapore)",
EnTt => "English (Trinidad and Tobago)",
EnUs => "English (United States)",
EnZa => "English (South Africa)",
EnZw => "English (Zimbabwe)",
Eo => "Esperanto",
Es => "Spanish",
EsAr => "Spanish (Argentina)",
EsBo => "Spanish (Bolivia)",
EsCl => "Spanish (Chile)",
EsCo => "Spanish (Colombia)",
EsCr => "Spanish (Costa Rica)",
EsDo => "Spanish (Dominican Republic)",
EsEc => "Spanish (Ecuador)",
EsEs => "Spanish (Spain)",
EsGt => "Spanish (Guatemala)",
EsHn => "Spanish (Honduras)",
EsMx => "Spanish (Mexico)",
EsNi => "Spanish (Nicaragua)",
EsPa => "Spanish (Panama)",
EsPe => "Spanish (Peru)",
EsPr => "Spanish (Puerto Rico)",
EsPy => "Spanish (Paraguay)",
EsSv => "Spanish (El Salvador)",
EsUs => "Spanish (United States)",
EsUy => "Spanish (Uruguay)",
EsVe => "Spanish (Venezuela)",
Et => "Estonian",
Eu => "Basque",
Fa => "Persian",
Fi => "Finnish",
Fil => "Filipino",
Fo => "Faroese",
Fr => "French",
FrBe => "French (Belgium)",
FrCa => "French (Canada)",
FrCh => "French (Switzerland)",
FrFr => "French (France)",
FrLu => "French (Luxembourg)",
FrMc => "French (Principality of Monaco)",
Fy => "Frisian",
Ga => "Irish",
Gd => "Scottish Gaelic",
Gl => "Galician",
Gn => "Guarani",
Gsw => "Alsatian",
Gu => "Gujarati",
Ha => "Hausa",
He => "Hebrew",
Hi => "Hindi",
Hmn => "Hmong",
Hr => "Croatian",
HrBa => "Croatian (Latin, Bosnia and Herzegovina)",
HrHr => "Croatian (Croatia)",
Hsb => "Upper Sorbian (Germany)",
Ht => "Haitian Creole",
Hu => "Hungarian",
Hy => "Armenian",
Id => "Indonesian",
Ig => "Igbo",
Ii => "Yi",
Is => "Icelandic",
It => "Italian",
ItCh => "Italian (Switzerland)",
ItIt => "Italian (Italy)",
Iu => "Inuktitut",
Ja => "Japanese",
Jv => "Javanese",
Ka => "Georgian",
Kg => "Kongo",
Ki => "Kikuyu",
Kk => "Kazakh",
Kl => "Greenlandic",
Km => "Khmer",
Kn => "Kannada",
Ko => "Korean",
Kok => "Konkani",
Kr => "Kanuri",
Ks => "Kashmiri",
Ky => "Kyrgyz",
Lb => "Luxembourgish",
Lg => "Luganda",
Ln => "Lingala",
Lo => "Lao",
Lt => "Lithuanian",
Lv => "Latvian",
Mg => "Malagasy",
Mi => "Maori",
Mk => "Macedonian",
Ml => "Malayalam",
Mn => "Mongolian",
MnMn => "Mongolian (Cyrillic, Mongolia)",
MnMongCn => "Mongolian (Traditional Mongolian, PRC)",
Moh => "Mohawk",
Mr => "Marathi",
Ms => "Malay",
MsBn => "Malay (Brunei Darussalam)",
MsMy => "Malay (Malaysia)",
Mt => "Maltese",
My => "Burmese (Myanmar)",
Nb => "Norwegian",
NbNo => "Norwegian, Bokmål (Norway)",
Ne => "Nepali",
Nl => "Dutch",
NlBe => "Dutch (Belgium)",
NlNl => "Dutch (Netherlands)",
Nn => "Norwegian, Nynorsk",
No => "Norwegian",
Nso => "Northern Sotho",
Ny => "Nyanja (Chichewa)",
Oc => "Occitan",
Om => "Oromo",
Or => "Oriya",
Pa => "Punjabi",
Pl => "Polish",
Prs => "Dari",
Ps => "Pashto",
Pt => "Portuguese",
PtBr => "Portuguese (Brazil)",
PtPt => "Portuguese (Portugal)",
Qu => "Quechua",
Quc => "K'iche",
Rm => "Romansh",
Rn => "Rundi",
Ro => "Romanian",
Ru => "Russian",
Rw => "Kinyarwanda",
Sa => "Sanskrit",
Sah => "Yakut",
Sc => "Sardinian",
Sd => "Sindhi",
Se => "Sami",
Si => "Sinhala",
Sk => "Slovak",
Sl => "Slovenian",
Sn => "Shona",
So => "Somali",
Sq => "Albanian",
Sr => "Serbian (Cyrillic)",
SrCyrlSp => "Serbian (Cyrillic)",
SrLatnSp => "Serbian (Latin)",
St => "Sotho",
Su => "Sundanese",
Sv => "Swedish",
SvFi => "Swedish (Finland)",
SvSe => "Swedish (Sweden)",
Sw => "Kiswahili",
Syr => "Syriac",
Ta => "Tamil",
Te => "Telugu",
Tg => "Tajik",
Th => "Thai",
Ti => "Tigrinya",
Tk => "Turkmen",
Tl => "Tagalog",
Tn => "Setswana",
Tr => "Turkish",
Ts => "Tsonga",
Tt => "Tatar",
Tzm => "Tamazight",
Ug => "Uighur",
Uk => "Ukrainian",
Ur => "Urdu",
Uz => "Uzbek",
UzCyrlUz => "Uzbek (Cyrillic, Uzbekistan)",
UzLatnUz => "Uzbek (Latin, Uzbekistan)",
Ve => "Venda",
Vi => "Vietnamese",
Wo => "Wolof",
Xh => "isiXhosa",
Yo => "Yoruba",
ZhCn => "Chinese (People's Republic of China)",
ZhHk => "Chinese (Hong Kong S.A.R.)",
ZhHans => "Chinese (Simplified)",
ZhHant => "Chinese (Traditional)",
ZhMo => "Chinese (Macao S.A.R.)",
ZhSg => "Chinese (Singapore)",
ZhTw => "Chinese (Taiwan)",
Zu => "isiZulu",
}
}
pub fn local_name(&self) -> &'static str {
match self {
Af => "Afrikaans",
Ak => "Akan",
Am => "አማርኛ",
Ar => "العربية",
ArAe => "العربية (الإمارات العربية المتحدة)",
ArBh => "العربية (البحرين)",
ArDz => "العربية (الجزائر)",
ArEg => "العربية (مصر)",
ArIq => "العربية (العراق)",
ArJo => "العربية (الأردن)",
ArKw => "العربية (الكويت)",
ArLb => "العربية (لبنان)",
ArLy => "العربية (ليبيا)",
ArMa => "العربية (المملكة المغربية)",
ArOm => "العربية (عمان)",
ArQa => "العربية (قطر)",
ArSa => "العربية (المملكة العربية السعودية)",
ArSy => "العربية (سوريا)",
ArTn => "العربية (تونس)",
ArYe => "العربية (اليمن)",
Arn => "Mapudungun",
As => "অসমীয়া",
Az => "Azərbaycanılı",
AzCyrlAz => "Азәрбајҹан (Азәрбајҹан)",
AzLatnAz => "Azərbaycanılı (Azərbaycanca)",
Ba => "Башҡорт",
Be => "Беларускі",
Bg => "български",
Bm => "bamanankan",
Bn => "বাংলা",
BnBd => "বাংলা (বাংলা)",
BnIn => "বাংলা (ভারত)",
Bo => "བོད་ཡིག",
Br => "brezhoneg",
Bs => "bosanski",
BsCyrl => "босански",
BsLatn => "bosanski",
Ca => "català",
Co => "Corsu",
Cs => "čeština",
Cy => "Cymraeg",
Da => "dansk",
De => "Deutsch",
DeAt => "Deutsch (Österreich)",
DeCh => "Deutsch (Schweiz)",
DeDe => "Deutsch (Deutschland)",
DeLi => "Deutsch (Liechtenstein)",
DeLu => "Deutsch (Luxemburg)",
Dsb => "dolnoserbšćina (Nimska)",
Dv => "ދިވެހިބަސް",
Ee => "Eʋegbe",
El => "ελληνικά",
En => "English",
En029 => "English (Caribbean)",
EnAu => "English (Australia)",
EnBz => "English (Belize)",
EnCa => "English (Canada)",
EnGb => "English (United Kingdom)",
EnIe => "English (Eire)",
EnIn => "English (India)",
EnJm => "English (Jamaica)",
EnMy => "English (Malaysia)",
EnNz => "English (New Zealand)",
EnPh => "English (Philippines)",
EnSg => "English (Singapore)",
EnTt => "English (Trinidad y Tobago)",
EnUs => "English (United States)",
EnZa => "English (South Africa)",
EnZw => "English (Zimbabwe)",
Eo => "Esperanto",
Es => "español",
EsAr => "Español (Argentina)",
EsBo => "Español (Bolivia)",
EsCl => "Español (Chile)",
EsCo => "Español (Colombia)",
EsCr => "Español (Costa Rica)",
EsDo => "Español (República Dominicana)",
EsEc => "Español (Ecuador)",
EsEs => "español (España)",
EsGt => "Español (Guatemala)",
EsHn => "Español (Honduras)",
EsMx => "Español (México)",
EsNi => "Español (Nicaragua)",
EsPa => "Español (Panamá)",
EsPe => "Español (Perú)",
EsPr => "Español (Puerto Rico)",
EsPy => "Español (Paraguay)",
EsSv => "Español (El Salvador)",
EsUs => "Español (Estados Unidos)",
EsUy => "Español (Uruguay)",
EsVe => "Español (Republica Bolivariana de Venezuela)",
Et => "eesti",
Eu => "euskara",
Fa => "فارسى",
Fi => "suomi",
Fil => "Filipino",
Fo => "føroyskt",
Fr => "français",
FrBe => "français (Belgique)",
FrCa => "français (Canada)",
FrCh => "français (Suisse)",
FrFr => "français (France)",
FrLu => "français (Luxembourg)",
FrMc => "français (Principauté de Monaco)",
Fy => "Frysk",
Ga => "Gaeilge",
Gd => "Gàidhlig",
Gl => "galego",
Gn => "Avañe'ẽ",
Gsw => "Elsässisch",
Gu => "ગુજરાતી",
Ha => "Hausa",
He => "עברית",
Hi => "हिंदी",
Hmn => "Hmoob",
Hr => "hrvatski",
HrBa => "hrvatski (Bosna i Hercegovina)",
HrHr => "hrvatski (Hrvatska)",
Hsb => "hornjoserbšćina (Němska)",
Ht => "Kreyòl ayisyen",
Hu => "magyar",
Hy => "Հայերեն",
Id => "Bahasa Indonesia",
Ig => "Igbo",
Ii => "ꆈꌠꁱꂷ",
Is => "íslenska",
It => "italiano",
ItCh => "italiano (Svizzera)",
ItIt => "italiano (Italia)",
Iu => "Inuktitut",
Ja => "日本語",
Jv => "ꦧꦱꦗꦮ",
Ka => "ქართული",
Kg => "Kongo",
Ki => "Gĩkũyũ",
Kk => "Қазащb",
Kl => "kalaallisut",
Km => "ខ្មែរ",
Kn => "ಕನ್ನಡ",
Ko => "한국어",
Kok => "कोंकणी",
Kr => "Kanuri",
Ks => "कॉशुर, كٲشُر",
Ky => "Кыргыз",
Lb => "Lëtzebuergesch",
Lg => "Luganda",
Ln => "Lingála",
Lo => "ລາວ",
Lt => "lietuvių",
Lv => "latviešu",
Mg => "fiteny malagasy",
Mi => "Reo Māori",
Mk => "македонски јазик",
Ml => "മലയാളം",
Mn => "Монгол хэл",
MnMn => "Монгол хэл (Монгол улс)",
MnMongCn => "ᠮᠣᠩᠭᠤᠯ ᠬᠡᠯᠡ (ᠪᠦᠭᠦᠳᠡ ᠨᠠᠢᠷᠠᠮᠳᠠᠬᠤ ᠳᠤᠮᠳᠠᠳᠤ ᠠᠷᠠᠳ ᠣᠯᠣᠰ)",
Moh => "Kanien'kéha",
Mr => "मराठी",
Ms => "Bahasa Malaysia",
MsBn => "Bahasa Malaysia (Brunei Darussalam)",
MsMy => "Bahasa Malaysia (Malaysia)",
Mt => "Malti",
My => "မြန်မာစာ",
Nb => "norsk",
NbNo => "norsk, bokmål (Norge)",
Ne => "नेपाली",
Nl => "Nederlands",
NlBe => "Nederlands (België)",
NlNl => "Nederlands (Nederland)",
Nn => "norsk, nynorsk",
No => "norsk",
Nso => "Sesotho sa Leboa",
Ny => "Nyanja (Chichewa)",
Oc => "Occitan",
Om => "Afaan Oromoo",
Or => "ଓଡ଼ିଆ",
Pa => "ਪੰਜਾਬੀ",
Pl => "polski",
Prs => "درى",
Ps => "پښتو",
Pt => "Português",
PtBr => "Português (Brasil)",
PtPt => "português (Portugal)",
Qu => "runasimi",
Quc => "K'iche",
Rm => "Rumantsch",
Rn => "Ikirundi",
Ro => "română",
Ru => "русский",
Rw => "Kinyarwanda",
Sa => "संस्कृत",
Sah => "саха",
Sc => "sardu",
Sd => "سنڌي, सिन्धी, ਸਿੰਧੀ",
Se => "davvisámegiella",
Si => "සිංහ",
Sk => "slovenčina",
Sl => "slovenski",
Sn => "chiShona",
So => "Soomaaliga, af Soomaali",
Sq => "shqipe",
Sr => "српски",
SrCyrlSp => "српски (Србија и Црна Гора)",
SrLatnSp => "srpski (Srbija i Crna Gora)",
St => "Sesotho",
Su => "Basa Sunda",
Sv => "svenska",
SvFi => "svenska (Finland)",
SvSe => "svenska (Sverige)",
Sw => "Kiswahili",
Syr => "ܣܘܪܝܝܐ",
Ta => "தமிழ்",
Te => "తెలుగు",
Tg => "Тоҷикӣ",
Th => "ไทย",
Ti => "ትግርኛ",
Tk => "türkmençe",
Tl => "Wikang Tagalog",
Tn => "Setswana",
Tr => "Türkçe",
Ts => "Xitsonga",
Tt => "Татар",
Tzm => "Tamazight",
Ug => "ئۇيغۇر يېزىقى",
Uk => "україньска",
Ur => "اُردو",
Uz => "U'zbek",
UzCyrlUz => "Ўзбек (Ўзбекистон)",
UzLatnUz => "U'zbek (U'zbekiston Respublikasi)",
Ve => "Tshivenḓa",
Vi => "Tiếng Việt",
Wo => "Wolof",
Xh => "isiXhosa",
Yo => "Yoruba",
ZhCn => "中文(中华人民共和国)",
ZhHk => "中文(香港特别行政區)",
ZhHans => "中文(简体)",
ZhHant => "中文(繁體)",
ZhMo => "中文(澳門特别行政區)",
ZhSg => "中文(新加坡)",
ZhTw => "中文(台灣)",
Zu => "isiZulu",
}
}
}
impl TryFrom<&str> for Language {
type Error = Error;
fn try_from(tag: &str) -> Result<Self, Self::Error> {
let this = match tag {
"af" => Af,
"ak" => Ak,
"am" => Am,
"ar" => Ar,
"ar-AE" => ArAe,
"ar-BH" => ArBh,
"ar-DZ" => ArDz,
"ar-EG" => ArEg,
"ar-IQ" => ArIq,
"ar-JO" => ArJo,
"ar-KW" => ArKw,
"ar-LB" => ArLb,
"ar-LY" => ArLy,
"ar-MA" => ArMa,
"ar-OM" => ArOm,
"ar-QA" => ArQa,
"ar-SA" => ArSa,
"ar-SY" => ArSy,
"ar-TN" => ArTn,
"ar-YE" => ArYe,
"arn" => Arn,
"as" => As,
"az" => Az,
"az-Cyrl-AZ" => AzCyrlAz,
"az-Latn-AZ" => AzLatnAz,
"ba" => Ba,
"be" => Be,
"bg" => Bg,
"bm" => Bm,
"bn" => Bn,
"bn-BD" => BnBd,
"bn-IN" => BnIn,
"bo" => Bo,
"br" => Br,
"bs" => Bs,
"bs-Cyrl" => BsCyrl,
"bs-Latn" => BsLatn,
"ca" => Ca,
"co" => Co,
"cs" => Cs,
"cy" => Cy,
"da" => Da,
"de" => De,
"de-AT" => DeAt,
"de-CH" => DeCh,
"de-DE" => DeDe,
"de-LI" => DeLi,
"de-LU" => DeLu,
"dsb" => Dsb,
"dv" => Dv,
"ee" => Ee,
"el" => El,
"en" => En,
"en-029" => En029,
"en-AU" => EnAu,
"en-BZ" => EnBz,
"en-CA" => EnCa,
"en-GB" => EnGb,
"en-IE" => EnIe,
"en-IN" => EnIn,
"en-JM" => EnJm,
"en-MY" => EnMy,
"en-NZ" => EnNz,
"en-PH" => EnPh,
"en-SG" => EnSg,
"en-TT" => EnTt,
"en-US" => EnUs,
"en-ZA" => EnZa,
"en-ZW" => EnZw,
"eo" => Eo,
"es" => Es,
"es-AR" => EsAr,
"es-BO" => EsBo,
"es-CL" => EsCl,
"es-CO" => EsCo,
"es-CR" => EsCr,
"es-DO" => EsDo,
"es-EC" => EsEc,
"es-ES" => EsEs,
"es-GT" => EsGt,
"es-HN" => EsHn,
"es-MX" => EsMx,
"es-NI" => EsNi,
"es-PA" => EsPa,
"es-PE" => EsPe,
"es-PR" => EsPr,
"es-PY" => EsPy,
"es-SV" => EsSv,
"es-US" => EsUs,
"es-UY" => EsUy,
"es-VE" => EsVe,
"et" => Et,
"eu" => Eu,
"fa" => Fa,
"fi" => Fi,
"fil" => Fil,
"fo" => Fo,
"fr" => Fr,
"fr-BE" => FrBe,
"fr-CA" => FrCa,
"fr-CH" => FrCh,
"fr-FR" => FrFr,
"fr-LU" => FrLu,
"fr-MC" => FrMc,
"fy" => Fy,
"ga" => Ga,
"gd" => Gd,
"gl" => Gl,
"gn" => Gn,
"gsw" => Gsw,
"gu" => Gu,
"ha" => Ha,
"he" => He,
"hi" => Hi,
"hmn" => Hmn,
"hr" => Hr,
"hr-BA" => HrBa,
"hr-HR" => HrHr,
"hsb" => Hsb,
"ht" => Ht,
"hu" => Hu,
"hy" => Hy,
"id" => Id,
"ig" => Ig,
"ii" => Ii,
"is" => Is,
"it" => It,
"it-CH" => ItCh,
"it-IT" => ItIt,
"iu" => Iu,
"ja" => Ja,
"jv" => Jv,
"ka" => Ka,
"kg" => Kg,
"ki" => Ki,
"kk" => Kk,
"kl" => Kl,
"km" => Km,
"kn" => Kn,
"ko" => Ko,
"kok" => Kok,
"kr" => Kr,
"ks" => Ks,
"ky" => Ky,
"lb" => Lb,
"lg" => Lg,
"ln" => Ln,
"lo" => Lo,
"lt" => Lt,
"lv" => Lv,
"mg" => Mg,
"mi" => Mi,
"mk" => Mk,
"ml" => Ml,
"mn" => Mn,
"mn-MN" => MnMn,
"mn-Mong-CN" => MnMongCn,
"moh" => Moh,
"mr" => Mr,
"ms" => Ms,
"ms-BN" => MsBn,
"ms-MY" => MsMy,
"mt" => Mt,
"my" => My,
"nb" => Nb,
"nb-NO" => NbNo,
"ne" => Ne,
"nl" => Nl,
"nl-BE" => NlBe,
"nl-NL" => NlNl,
"nn" => Nn,
"no" => No,
"nso" => Nso,
"ny" => Ny,
"oc" => Oc,
"om" => Om,
"or" => Or,
"pa" => Pa,
"pl" => Pl,
"prs" => Prs,
"ps" => Ps,
"pt" => Pt,
"pt-BR" => PtBr,
"pt-PT" => PtPt,
"qu" => Qu,
"quc" => Quc,
"rm" => Rm,
"rn" => Rn,
"ro" => Ro,
"ru" => Ru,
"rw" => Rw,
"sa" => Sa,
"sah" => Sah,
"sc" => Sc,
"sd" => Sd,
"se" => Se,
"si" => Si,
"sk" => Sk,
"sl" => Sl,
"sn" => Sn,
"so" => So,
"sq" => Sq,
"sr" => Sr,
"sr-Cyrl-SP" => SrCyrlSp,
"sr-Latn-SP" => SrLatnSp,
"st" => St,
"su" => Su,
"sv" => Sv,
"sv-FI" => SvFi,
"sv-SE" => SvSe,
"sw" => Sw,
"syr" => Syr,
"ta" => Ta,
"te" => Te,
"tg" => Tg,
"th" => Th,
"ti" => Ti,
"tk" => Tk,
"tl" => Tl,
"tn" => Tn,
"tr" => Tr,
"ts" => Ts,
"tt" => Tt,
"tzm" => Tzm,
"ug" => Ug,
"uk" => Uk,
"ur" => Ur,
"uz" => Uz,
"uz-Cyrl-UZ" => UzCyrlUz,
"uz-Latn-UZ" => UzLatnUz,
"ve" => Ve,
"vi" => Vi,
"wo" => Wo,
"xh" => Xh,
"yo" => Yo,
"zh-CN" => ZhCn,
"zh-HK" => ZhHk,
"zh-Hans" => ZhHans,
"zh-Hant" => ZhHant,
"zh-MO" => ZhMo,
"zh-SG" => ZhSg,
"zh-TW" => ZhTw,
"zu" => Zu,
_ => return Err(Error::UnsupportedLanguageTag(tag.into())),
};
Ok(this)
}
}
impl TryFrom<String> for Language {
type Error = Error;
fn try_from(value: String) -> Result<Self, Self::Error> {
Language::try_from(value.as_str())
}
}
#[cfg(feature = "serde")]
impl serde::Serialize for Language {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::ser::Serializer,
{
serializer.serialize_str(self.tag())
}
}
#[cfg(feature = "serde")]
impl<'de> serde::Deserialize<'de> for Language {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::de::Deserializer<'de>,
{
let tag = String::deserialize(deserializer)?;
Language::try_from(tag.as_str()).map_err(|_| serde::de::Error::unknown_variant(&tag, &[]))
}
}
#[cfg(feature = "utoipa")]
impl utoipa::PartialSchema for Language {
fn schema() -> utoipa::openapi::RefOr<utoipa::openapi::schema::Schema> {
let enum_values =
Language::all().iter().map(|language| language.tag().to_string()).collect::<Vec<_>>();
let object = utoipa::openapi::schema::ObjectBuilder::new()
.schema_type(utoipa::openapi::schema::SchemaType::Type(
utoipa::openapi::schema::Type::String,
))
.enum_values(Some(enum_values))
.build();
utoipa::openapi::RefOr::T(utoipa::openapi::schema::Schema::Object(object))
}
}
#[cfg(feature = "utoipa")]
impl utoipa::ToSchema for Language {}