use crate::*;
impl fmt::Display for Lang {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let lang_str: &str = match self {
Lang::EnUsUtf8 => "English (US)",
Lang::ZhCnUtf8 => "中文 (中国)",
Lang::FrFrUtf8 => "Français (France)",
Lang::DeDeUtf8 => "Deutsch (Deutschland)",
Lang::EsEsUtf8 => "Español (España)",
Lang::ItItUtf8 => "Italiano (Italia)",
Lang::JaJpUtf8 => "日本語 (日本)",
Lang::KoKrUtf8 => "한국어 (한국)",
Lang::PtPtUtf8 => "Português (Portugal)",
Lang::RuRuUtf8 => "Русский (Россия)",
Lang::ArSaUtf8 => "العربية (السعودية)",
Lang::HiInUtf8 => "हिन्दी (भारत)",
Lang::ThThUtf8 => "ภาษาไทย (ประเทศไทย)",
Lang::ViVnUtf8 => "Tiếng Việt (Việt Nam)",
Lang::NlNlUtf8 => "Nederlands (Nederland)",
Lang::SvSeUtf8 => "Svenska (Sverige)",
Lang::FiFiUtf8 => "Suomi (Suomi)",
};
write!(f, "{lang_str}")
}
}
impl Lang {
pub fn value(&self) -> u64 {
match self {
Lang::EnUsUtf8 => 0, Lang::ZhCnUtf8 => 28800, Lang::FrFrUtf8 => 3600, Lang::DeDeUtf8 => 3600, Lang::EsEsUtf8 => 3600, Lang::ItItUtf8 => 3600, Lang::JaJpUtf8 => 32400, Lang::KoKrUtf8 => 32400, Lang::PtPtUtf8 => 3600, Lang::RuRuUtf8 => 10800, Lang::ArSaUtf8 => 10800, Lang::HiInUtf8 => 19800, Lang::ThThUtf8 => 25200, Lang::ViVnUtf8 => 25200, Lang::NlNlUtf8 => 3600, Lang::SvSeUtf8 => 3600, Lang::FiFiUtf8 => 3600, }
}
}
impl FromStr for Lang {
type Err = ();
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"en_US.UTF-8" => Ok(Lang::EnUsUtf8),
"zh_CN.UTF-8" => Ok(Lang::ZhCnUtf8),
"fr_FR.UTF-8" => Ok(Lang::FrFrUtf8),
"de_DE.UTF-8" => Ok(Lang::DeDeUtf8),
"es_ES.UTF-8" => Ok(Lang::EsEsUtf8),
"it_IT.UTF-8" => Ok(Lang::ItItUtf8),
"ja_JP.UTF-8" => Ok(Lang::JaJpUtf8),
"ko_KR.UTF-8" => Ok(Lang::KoKrUtf8),
"pt_PT.UTF-8" => Ok(Lang::PtPtUtf8),
"ru_RU.UTF-8" => Ok(Lang::RuRuUtf8),
"ar_SA.UTF-8" => Ok(Lang::ArSaUtf8),
"hi_IN.UTF-8" => Ok(Lang::HiInUtf8),
"th_TH.UTF-8" => Ok(Lang::ThThUtf8),
"vi_VN.UTF-8" => Ok(Lang::ViVnUtf8),
"nl_NL.UTF-8" => Ok(Lang::NlNlUtf8),
"sv_SE.UTF-8" => Ok(Lang::SvSeUtf8),
"fi_FI.UTF-8" => Ok(Lang::FiFiUtf8),
_ => Err(()),
}
}
}