use std::collections::HashMap; use serde::{Serialize, Deserialize}; use crate::defs::DictFromFile; #[derive(Debug, Clone, Serialize, Deserialize ,Default)] pub struct Local { pub id: String, pub itms: HashMap } impl DictFromFile for Local { fn fix_root_path(&mut self, _root_path: String ) { } } impl Local { pub fn new(id: String, itms: HashMap) -> Self { Self { id, itms } } #[allow(dead_code)] pub fn itm(&self, key: &str, dflt: &str) -> String { match self.itms.get(key) { Some(val) => format!("{}",val), None => if dflt.is_empty() { format!("{}",key) } else { format!("{}",dflt) } } } pub fn get_lang(locales: &HashMap, key: &str, dflt: &str) -> Local { match locales.get(key) { Some(val) => val.to_owned(), None => match locales.get(dflt) { Some(val) => val.to_owned(), None => Local::new(String::from(""),HashMap::new()), } } } }