#[derive(Clone, Copy, PartialEq, Eq, Debug, Default)]
pub enum Lang {
#[default]
Fr,
En,
}
impl Lang {
pub fn detect() -> Self {
let v = std::env::var("LC_ALL")
.or_else(|_| std::env::var("LC_MESSAGES"))
.or_else(|_| std::env::var("LANG"))
.unwrap_or_default()
.to_lowercase();
if v.starts_with("fr") {
Lang::Fr
} else {
Lang::En
}
}
pub fn code(self) -> &'static str {
match self {
Lang::Fr => "fr",
Lang::En => "en",
}
}
pub fn toggled(self) -> Self {
match self {
Lang::Fr => Lang::En,
Lang::En => Lang::Fr,
}
}
pub fn msg_capturing(self) -> &'static str {
self.pick("Capture de l'écran…", "Capturing screen…")
}
pub fn msg_saving_image(self) -> &'static str {
self.pick("Sauvegarde de l'image…", "Saving image…")
}
pub fn msg_building_html(self) -> &'static str {
self.pick("Création du HTML…", "Building HTML…")
}
pub fn msg_compressing(self) -> &'static str {
self.pick("Compression…", "Compressing…")
}
pub fn pick(self, fr: &'static str, en: &'static str) -> &'static str {
match self {
Lang::Fr => fr,
Lang::En => en,
}
}
}