#![allow(dead_code)]
use strum::{AsRefStr, EnumCount, EnumIter, EnumString};
use super::Lang;
#[derive(
Debug,
PartialEq,
Clone,
Copy,
Eq,
PartialOrd,
Ord,
Hash,
Default,
EnumCount,
EnumIter,
EnumString,
AsRefStr,
serde::Serialize,
serde::Deserialize,
)]
#[strum(serialize_all = "kebab-case")]
pub enum AccurateLang {
#[default]
Auto,
En,
Fr,
De,
Es,
It,
Pt,
Ru,
ZhCn,
Ja,
Ko,
}
impl AccurateLang {
pub const fn len() -> usize {
AccurateLang::COUNT
}
pub fn fullname(&self) -> &str {
let lang: &Lang = self.into();
lang.fullname()
}
pub fn is_accurate_lang(lang: &Lang) -> bool {
let accurate_lang: &AccurateLang = lang.into();
if accurate_lang == &AccurateLang::Auto {
if lang == &Lang::Auto {
return true;
}
return false;
}
true
}
}
impl From<&AccurateLang> for &Lang {
fn from(lang: &AccurateLang) -> Self {
match lang {
AccurateLang::Auto => &Lang::Auto,
AccurateLang::En => &Lang::En,
AccurateLang::Fr => &Lang::Fr,
AccurateLang::De => &Lang::De,
AccurateLang::Es => &Lang::Es,
AccurateLang::It => &Lang::It,
AccurateLang::Pt => &Lang::Pt,
AccurateLang::Ru => &Lang::Ru,
AccurateLang::ZhCn => &Lang::ZhCn,
AccurateLang::Ja => &Lang::Ja,
AccurateLang::Ko => &Lang::Ko,
}
}
}
impl From<AccurateLang> for Lang {
fn from(lang: AccurateLang) -> Self {
lang.into()
}
}
impl From<&Lang> for &AccurateLang {
fn from(lang: &Lang) -> Self {
match lang {
Lang::Auto => &AccurateLang::Auto,
Lang::En => &AccurateLang::En,
Lang::Fr => &AccurateLang::Fr,
Lang::De => &AccurateLang::De,
Lang::Es => &AccurateLang::Es,
Lang::It => &AccurateLang::It,
Lang::Pt => &AccurateLang::Pt,
Lang::Ru => &AccurateLang::Ru,
Lang::ZhCn => &AccurateLang::ZhCn,
Lang::Ja => &AccurateLang::Ja,
Lang::Ko => &AccurateLang::Ko,
_ => &AccurateLang::Auto,
}
}
}
impl From<Lang> for AccurateLang {
fn from(lang: Lang) -> Self {
match lang {
Lang::Auto => AccurateLang::Auto,
Lang::En => AccurateLang::En,
Lang::Fr => AccurateLang::Fr,
Lang::De => AccurateLang::De,
Lang::Es => AccurateLang::Es,
Lang::It => AccurateLang::It,
Lang::Pt => AccurateLang::Pt,
Lang::Ru => AccurateLang::Ru,
Lang::ZhCn => AccurateLang::ZhCn,
Lang::Ja => AccurateLang::Ja,
Lang::Ko => AccurateLang::Ko,
_ => AccurateLang::Auto,
}
}
}