wgui: i18n: use fallback

This commit is contained in:
Aleksander
2025-08-03 12:03:23 +02:00
parent b2902f8f7f
commit 17b4eaa1e4

View File

@@ -43,8 +43,6 @@ impl Translation {
pub struct I18n { pub struct I18n {
json_root_translated: serde_json::Value, // any language json_root_translated: serde_json::Value, // any language
// TODO
json_root_fallback: serde_json::Value, // english json_root_fallback: serde_json::Value, // english
} }
@@ -88,7 +86,7 @@ impl I18n {
} }
} }
let data_english = provider.load_from_path(&format!("lang/{lang}.json"))?; let data_english = provider.load_from_path("lang/en.json")?;
let data_translated = provider.load_from_path(&format!("lang/{lang}.json"))?; let data_translated = provider.load_from_path(&format!("lang/{lang}.json"))?;
let json_root_fallback = serde_json::from_str(str::from_utf8(&data_english)?)?; let json_root_fallback = serde_json::from_str(str::from_utf8(&data_english)?)?;
@@ -102,9 +100,15 @@ impl I18n {
pub fn translate(&mut self, translation_key: &str) -> Rc<str> { pub fn translate(&mut self, translation_key: &str) -> Rc<str> {
if let Some(translated) = find_translation(translation_key, &self.json_root_translated) { if let Some(translated) = find_translation(translation_key, &self.json_root_translated) {
Rc::from(translated) return Rc::from(translated);
} else { }
if let Some(translated_fallback) = find_translation(translation_key, &self.json_root_fallback) {
log::warn!("missing translation for key \"{translation_key}\", using \"en\" instead");
return Rc::from(translated_fallback);
}
log::error!("missing translation for key \"{translation_key}\"");
Rc::from(translation_key) // show translation key as a fallback Rc::from(translation_key) // show translation key as a fallback
} }
} }
}