main.rs: update lang_id handling
Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
This commit is contained in:
@@ -57,26 +57,31 @@ static ADVOTRACKER_DE_DE: &str = include_str!("../assets/advotracker/advotracker
|
|||||||
fn get_lang() -> String {
|
fn get_lang() -> String {
|
||||||
// get system environment
|
// get system environment
|
||||||
let mut lang_id = env::var("LANG").unwrap_or_else(|_| "En".to_string());
|
let mut lang_id = env::var("LANG").unwrap_or_else(|_| "En".to_string());
|
||||||
lang_id = lang_id.substring(0,1).to_uppercase(); // "de" -> "De"
|
let lang_variant = "";
|
||||||
lang_id = lang_id.substring(0,2).to_string(); // "de_DE.UTF-8" -> "de"
|
|
||||||
info!("GUI-Language: preset to {:?}", lang_id);
|
|
||||||
|
|
||||||
// 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();
|
dotenv().ok();
|
||||||
match envy::from_env::<Environment>() {
|
match envy::from_env::<Environment>() {
|
||||||
Ok(environment) => {
|
Ok(environment) => {
|
||||||
if environment.test_lang != lang_id {
|
if environment.test_lang != lang_id {
|
||||||
|
info!("GUI-Language: preset from .env to {:?}", lang_id);
|
||||||
lang_id = environment.test_lang;
|
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,2).to_string();
|
||||||
lang_id = lang_id.substring(0,1).to_uppercase(); // "de" -> "De"
|
lang_id.replace_range(..1, &lang_id.substring(0,1).to_string().to_uppercase() );
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Err(e) => { info!(target: "advotracker", "{}", e) }
|
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
|
// return the active language
|
||||||
let lang = format!("Lang::{}(\"\")", lang_id);
|
|
||||||
lang
|
lang
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +97,7 @@ cfg_if! {
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
fn theme_fluent() -> Theme {
|
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)
|
ThemeConfig::from(FLUENT_DARK_EXT)
|
||||||
.extend(ThemeConfig::from(THEME_FLUENT))
|
.extend(ThemeConfig::from(THEME_FLUENT))
|
||||||
.extend(ThemeConfig::from(THEME_FLUENT_COLORS_DARK))
|
.extend(ThemeConfig::from(THEME_FLUENT_COLORS_DARK))
|
||||||
@@ -146,8 +151,10 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
|
|
||||||
tracing::subscriber::with_default(collector, || {
|
tracing::subscriber::with_default(collector, || {
|
||||||
// get system environment
|
// get system environment
|
||||||
let _my_lang = get_lang();
|
let get_lang = get_lang();
|
||||||
|
println!("get_lang returns: {:?}", get_lang);
|
||||||
let lang = Lang::De("");
|
let lang = Lang::De("");
|
||||||
|
println!("lang returns: {:?}", lang);
|
||||||
|
|
||||||
let mut state = t!(state_started => lang);
|
let mut state = t!(state_started => lang);
|
||||||
let mut res = t!(parse_environment => lang);
|
let mut res = t!(parse_environment => lang);
|
||||||
@@ -185,11 +192,12 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
// use this only if you want to run it as web application.
|
// use this only if you want to run it as web application.
|
||||||
orbtk::initialize();
|
orbtk::initialize();
|
||||||
|
|
||||||
// Preset localization and language from given environment.
|
// Preset localization and language to "de_DE".
|
||||||
// if no dictionary is set for the chosen default language
|
// If the choosen language is not associated with a corresponding
|
||||||
// the content of the text property will be drawn.
|
// dictionary, the contents of the default text property will be
|
||||||
|
// rendered.
|
||||||
let localization = RonLocalization::create()
|
let localization = RonLocalization::create()
|
||||||
.language("de")
|
.language("de_DE")
|
||||||
.dictionary("de_DE", ADVOTRACKER_DE_DE)
|
.dictionary("de_DE", ADVOTRACKER_DE_DE)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user