From f87ab8ce082da96365f410a1f4b0cc968edb5e9d Mon Sep 17 00:00:00 2001 From: Ralf Zerres Date: Sat, 26 Sep 2020 21:12:54 +0200 Subject: [PATCH] advotracker: implement get_lang * readin language environment and preset the strings Signed-off-by: Ralf Zerres --- advotracker/src/callbacks/global_state.rs | 28 ++++++++++++++++++- .../src/callbacks/policycheck_state.rs | 20 +------------ advotracker/src/main.rs | 27 +++++++++++++++--- 3 files changed, 51 insertions(+), 24 deletions(-) diff --git a/advotracker/src/callbacks/global_state.rs b/advotracker/src/callbacks/global_state.rs index 65494c8..a3574ad 100644 --- a/advotracker/src/callbacks/global_state.rs +++ b/advotracker/src/callbacks/global_state.rs @@ -5,7 +5,10 @@ * SPDX-License-Identifier: (0BSD or MIT) */ +use dotenv::dotenv; use serde::Deserialize; +use std::env; +use tracing::{info, trace}; use orbtk::prelude::*; @@ -23,8 +26,25 @@ struct Environment { rust_log: String, } -/// Provides generic methods to handle states of datatypes (e.g. used in `PolicyCheckState`). +/// Provides generic methods to handle states of datatypes. pub trait GlobalState { + /// Get the active language environment. + fn get_lang() -> String { + // get system environment + let mut lang = env::var("LANG").unwrap_or("C".to_string()); + + // testing environment: read from .env file + dotenv().ok(); + match envy::from_env::() { + Ok(environment) => { + if environment.test_lang != lang { lang = environment.test_lang; } + }, + Err(e) => { info!(target: "advotracker", "{}", e) } + } + trace!(target: "advotracker", lang = ?lang); + lang + } + // /// Navigates to the given entity. // fn navigate(&self, to: Entity, ctx: &mut Context<'_>) { // if let Some(old_focused_element) = ctx.window().get::("global").focused_widget { @@ -53,3 +73,9 @@ pub trait GlobalState { .unwrap(); } } + +// #[cfg(test)] +// mod tests { +// #[test] +// assert_eq!(2 + 2, 4); +// } diff --git a/advotracker/src/callbacks/policycheck_state.rs b/advotracker/src/callbacks/policycheck_state.rs index 35e3bf8..3c84f6e 100644 --- a/advotracker/src/callbacks/policycheck_state.rs +++ b/advotracker/src/callbacks/policycheck_state.rs @@ -1,4 +1,3 @@ -use dotenv::dotenv; use locales::t; use orbtk::{ prelude::*, @@ -14,7 +13,7 @@ use orbtk::theme::DARK_THEME_RON; use orbtk::theme::LIGHT_THEME_RON; use serde::Deserialize; -use std::{env, process}; +use std::process; use std::collections::HashMap; use std::time::{Duration, SystemTime}; use tracing::{error, info, trace}; @@ -134,23 +133,6 @@ impl PolicyCheckState { TextBox::text_set(&mut ctx.widget(), String::from("")); } - /// Get the active language environment. - pub fn get_lang() -> String { - // get system environment - let mut lang = env::var("LANG").unwrap_or("C".to_string()); - - // testing environment: read from .env file - dotenv().ok(); - match envy::from_env::() { - Ok(environment) => { - if environment.test_lang != lang { lang = environment.test_lang; } - }, - Err(e) => { info!(target: "advotracker", "{}", e) } - } - trace!(target: "advotracker", lang = ?lang); - lang - } - /// Import policy numbers into hashmap fn import_data(&mut self, ctx: &mut Context<'_>) -> Result<(), Box> { diff --git a/advotracker/src/main.rs b/advotracker/src/main.rs index 6ee8092..5cf0001 100644 --- a/advotracker/src/main.rs +++ b/advotracker/src/main.rs @@ -12,18 +12,19 @@ //extern crate lazy_static; //use chrono::{Local, DateTime}; +use dotenv::dotenv; use locales::t; use serde::Deserialize; -//use std::env; +use std::env; //use std::process; -use tracing::{trace, Level}; +use tracing::{info, trace, Level}; use orbtk::prelude::*; // The Main view use advotracker::{ - widgets::main_view, callbacks::policycheck_state::PolicyCheckState, + widgets::main_view, }; mod parse_args; @@ -33,6 +34,7 @@ mod parse_args; /// this is primarily used in testing scenarios (eg. debugging) #[derive(Debug, Deserialize)] struct Environment { + lang: String, test_lang: String, rust_log: String, } @@ -40,6 +42,23 @@ struct Environment { // German localization file. static ADVOTRACKER_DE_DE: &str = include_str!("../resources/advotracker/advotracker_de_DE.ron"); +/// Get the active language environment. +fn get_lang() -> String { + // get system environment + let mut lang = env::var("LANG").unwrap_or("C".to_string()); + + // testing environment: read from .env file + dotenv().ok(); + match envy::from_env::() { + Ok(environment) => { + if environment.test_lang != lang { lang = environment.test_lang; } + }, + Err(e) => { info!(target: "advotracker", "{}", e) } + } + trace!(target: "advotracker", lang = ?lang); + lang +} + fn main() -> Result<(), Box> { use parse_args::parse_args; use tracing_subscriber::fmt; @@ -69,7 +88,7 @@ fn main() -> Result<(), Box> { tracing::subscriber::with_default(subscriber, || { // get system environment - let lang = PolicyCheckState::get_lang(); + let lang = get_lang(); let mut state = t!("state.started", lang); let mut res = t!("parse.environment", lang);