use serde::Serialize;
use std::fmt;
#[derive(Clone, Debug, Serialize, Hash, Eq, PartialEq)]
#[serde(rename_all = "kebab-case")]
#[repr(usize)]
pub enum Language {
English,
Chinese,
German,
Spanish,
Russian,
Korean,
French,
Japanese,
Portuguese,
Turkish,
Polish,
Catalan,
Dutch,
Arabic,
Swedish,
Italian,
Indonesian,
Hindi,
Finnish,
Hebrew,
Ukrainian,
Greek,
Malay,
Czech,
Romanian,
Danish,
Hungarian,
Norwegian,
Thai,
Urdu,
Croatian,
Bulgarian,
Lithuanian,
Latin,
Malayalam,
Welsh,
Slovak,
Persian,
Latvian,
Bengali,
Serbian,
Azerbaijani,
Slovenian,
Estonian,
Macedonian,
Nepali,
Mongolian,
Bosnian,
Kazakh,
Albanian,
Swahili,
Galician,
Marathi,
Punjabi,
Sinhala,
Khmer,
Afrikaans,
Belarusian,
Gujarati,
Amharic,
Yiddish,
Lao,
Uzbek,
Faroese,
Pashto,
Maltese,
Sanskrit,
Luxembourgish,
Myanmar,
Tibetan,
Tagalog,
Assamese,
Tatar,
Hausa,
Javanese,
}
impl Language {
pub fn as_lang_code(&self) -> &'static str {
match self {
Language::English => "en",
Language::Chinese => "zh",
Language::German => "de",
Language::Spanish => "es",
Language::Russian => "ru",
Language::Korean => "ko",
Language::French => "fr",
Language::Japanese => "ja",
Language::Portuguese => "pt",
Language::Turkish => "tr",
Language::Polish => "pl",
Language::Catalan => "ca",
Language::Dutch => "nl",
Language::Arabic => "ar",
Language::Swedish => "sv",
Language::Italian => "it",
Language::Indonesian => "id",
Language::Hindi => "hi",
Language::Finnish => "fi",
Language::Hebrew => "he",
Language::Ukrainian => "uk",
Language::Greek => "el",
Language::Malay => "ms",
Language::Czech => "cs",
Language::Romanian => "ro",
Language::Danish => "da",
Language::Hungarian => "hu",
Language::Norwegian => "no",
Language::Thai => "th",
Language::Urdu => "ur",
Language::Croatian => "hr",
Language::Bulgarian => "bg",
Language::Lithuanian => "lt",
Language::Latin => "la",
Language::Malayalam => "ml",
Language::Welsh => "cy",
Language::Slovak => "sk",
Language::Persian => "fa",
Language::Latvian => "lv",
Language::Bengali => "bn",
Language::Serbian => "sr",
Language::Azerbaijani => "az",
Language::Slovenian => "sl",
Language::Estonian => "et",
Language::Macedonian => "mk",
Language::Nepali => "ne",
Language::Mongolian => "mn",
Language::Bosnian => "bs",
Language::Kazakh => "kk",
Language::Albanian => "sq",
Language::Swahili => "sw",
Language::Galician => "gl",
Language::Marathi => "mr",
Language::Punjabi => "pa",
Language::Sinhala => "si",
Language::Khmer => "km",
Language::Afrikaans => "af",
Language::Belarusian => "be",
Language::Gujarati => "gu",
Language::Amharic => "am",
Language::Yiddish => "yi",
Language::Lao => "lo",
Language::Uzbek => "uz",
Language::Faroese => "fo",
Language::Pashto => "ps",
Language::Maltese => "mt",
Language::Sanskrit => "sa",
Language::Luxembourgish => "lb",
Language::Myanmar => "my",
Language::Tibetan => "bo",
Language::Tagalog => "tl",
Language::Assamese => "as",
Language::Tatar => "tt",
Language::Hausa => "ha",
Language::Javanese => "jw",
}
}
}
impl fmt::Display for Language {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.as_lang_code())
}
}
impl PartialEq<&str> for Language {
fn eq(&self, other: &&str) -> bool {
self.to_string().as_str() == *other
}
}
pub const TESSERACT_LANGUAGES: [(&str, &str); 76] = [
("eng", "english"),
("chi_sim", "chinese"),
("deu", "german"),
("spa", "spanish"),
("rus", "russian"),
("kor", "korean"),
("fra", "french"),
("jpn", "japanese"),
("por", "portuguese"),
("tur", "turkish"),
("pol", "polish"),
("cat", "catalan"),
("nld", "dutch"),
("ara", "arabic"),
("swe", "swedish"),
("ita", "italian"),
("ind", "indonesian"),
("hin", "hindi"),
("fin", "finnish"),
("vie", "vietnamese"),
("heb", "hebrew"),
("ukr", "ukrainian"),
("ell", "greek"),
("msa", "malay"),
("ces", "czech"),
("ron", "romanian"),
("dan", "danish"),
("hun", "hungarian"),
("nor", "norwegian"),
("tha", "thai"),
("urd", "urdu"),
("hrv", "croatian"),
("bul", "bulgarian"),
("lit", "lithuanian"),
("lat", "latin"),
("mal", "malayalam"),
("cym", "welsh"),
("slk", "slovak"),
("fas", "persian"),
("lav", "latvian"),
("ben", "bengali"),
("srp", "serbian"),
("aze", "azerbaijani"),
("slv", "slovenian"),
("est", "estonian"),
("mkd", "macedonian"),
("nep", "nepali"),
("mon", "mongolian"),
("bos", "bosnian"),
("kaz", "kazakh"),
("sqi", "albanian"),
("swa", "swahili"),
("glg", "galician"),
("mar", "marathi"),
("pan", "punjabi"),
("sin", "sinhala"),
("khm", "khmer"),
("afr", "afrikaans"),
("bel", "belarusian"),
("guj", "gujarati"),
("amh", "amharic"),
("yid", "yiddish"),
("lao", "lao"),
("uzb", "uzbek"),
("fo", "faroese"),
("pus", "pashto"),
("mlt", "maltese"),
("san", "sanskrit"),
("lb", "luxembourgish"),
("mya", "myanmar"),
("bod", "tibetan"),
("tgl", "tagalog"),
("asm", "assamese"),
("tat", "tatar"),
("hau", "hausa"),
("jav", "javanese"),
];