diff --git a/advotracker_client/src/main.rs b/advotracker_client/src/main.rs index e24af8e..5589902 100644 --- a/advotracker_client/src/main.rs +++ b/advotracker_client/src/main.rs @@ -57,26 +57,31 @@ static ADVOTRACKER_DE_DE: &str = include_str!("../assets/advotracker/advotracker fn get_lang() -> String { // get system environment let mut lang_id = env::var("LANG").unwrap_or_else(|_| "En".to_string()); - lang_id = lang_id.substring(0,1).to_uppercase(); // "de" -> "De" - lang_id = lang_id.substring(0,2).to_string(); // "de_DE.UTF-8" -> "de" - info!("GUI-Language: preset to {:?}", lang_id); + let lang_variant = ""; - // testing environment: read from .env file + // prepare lang_id to represent twine language prefix + // env: "de_DE.UTF-8" -> "De" + lang_id = lang_id.substring(0,2).to_string(); + lang_id.replace_range(..1, &lang_id.substring(0,1).to_string().to_uppercase() ); + + // handle testing environment variables (.env file) with precedence dotenv().ok(); match envy::from_env::() { Ok(environment) => { if environment.test_lang != lang_id { + info!("GUI-Language: preset from .env to {:?}", lang_id); lang_id = environment.test_lang; - lang_id = lang_id.substring(0,2).to_string(); // "de_DE.UTF-8" -> "de" - lang_id = lang_id.substring(0,1).to_uppercase(); // "de" -> "De" + lang_id = lang_id.substring(0,2).to_string(); + lang_id.replace_range(..1, &lang_id.substring(0,1).to_string().to_uppercase() ); } }, Err(e) => { info!(target: "advotracker", "{}", e) } } - trace!(target: "advotracker", lang_id = ?lang_id); + + let lang = format!("Lang::{}(\"{}\")", lang_id, lang_variant); + trace!(target: "advotracker", lang_id = ?lang_id, lang = ?lang); // return the active language - let lang = format!("Lang::{}(\"\")", lang_id); lang } @@ -92,7 +97,7 @@ cfg_if! { )) } fn theme_fluent() -> Theme { - orbtk::widgets::themes::theme_orbtk::register_fluent_fonts(Theme::from_config( + orbtk::widgets::themes::theme_fluent::register_fluent_fonts(Theme::from_config( ThemeConfig::from(FLUENT_DARK_EXT) .extend(ThemeConfig::from(THEME_FLUENT)) .extend(ThemeConfig::from(THEME_FLUENT_COLORS_DARK)) @@ -146,8 +151,10 @@ fn main() -> Result<(), Box> { tracing::subscriber::with_default(collector, || { // get system environment - let _my_lang = get_lang(); + let get_lang = get_lang(); + println!("get_lang returns: {:?}", get_lang); let lang = Lang::De(""); + println!("lang returns: {:?}", lang); let mut state = t!(state_started => lang); let mut res = t!(parse_environment => lang); @@ -185,11 +192,12 @@ fn main() -> Result<(), Box> { // use this only if you want to run it as web application. orbtk::initialize(); - // Preset localization and language from given environment. - // if no dictionary is set for the chosen default language - // the content of the text property will be drawn. + // Preset localization and language to "de_DE". + // If the choosen language is not associated with a corresponding + // dictionary, the contents of the default text property will be + // rendered. let localization = RonLocalization::create() - .language("de") + .language("de_DE") .dictionary("de_DE", ADVOTRACKER_DE_DE) .build();