advotracker: implement get_lang
* readin language environment and preset the strings Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
This commit is contained in:
@@ -5,7 +5,10 @@
|
|||||||
* SPDX-License-Identifier: (0BSD or MIT)
|
* SPDX-License-Identifier: (0BSD or MIT)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use dotenv::dotenv;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
use std::env;
|
||||||
|
use tracing::{info, trace};
|
||||||
|
|
||||||
use orbtk::prelude::*;
|
use orbtk::prelude::*;
|
||||||
|
|
||||||
@@ -23,8 +26,25 @@ struct Environment {
|
|||||||
rust_log: String,
|
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 {
|
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::<Environment>() {
|
||||||
|
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.
|
// /// Navigates to the given entity.
|
||||||
// fn navigate(&self, to: Entity, ctx: &mut Context<'_>) {
|
// fn navigate(&self, to: Entity, ctx: &mut Context<'_>) {
|
||||||
// if let Some(old_focused_element) = ctx.window().get::<Global>("global").focused_widget {
|
// if let Some(old_focused_element) = ctx.window().get::<Global>("global").focused_widget {
|
||||||
@@ -53,3 +73,9 @@ pub trait GlobalState {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// #[cfg(test)]
|
||||||
|
// mod tests {
|
||||||
|
// #[test]
|
||||||
|
// assert_eq!(2 + 2, 4);
|
||||||
|
// }
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
use dotenv::dotenv;
|
|
||||||
use locales::t;
|
use locales::t;
|
||||||
use orbtk::{
|
use orbtk::{
|
||||||
prelude::*,
|
prelude::*,
|
||||||
@@ -14,7 +13,7 @@ use orbtk::theme::DARK_THEME_RON;
|
|||||||
use orbtk::theme::LIGHT_THEME_RON;
|
use orbtk::theme::LIGHT_THEME_RON;
|
||||||
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use std::{env, process};
|
use std::process;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::time::{Duration, SystemTime};
|
use std::time::{Duration, SystemTime};
|
||||||
use tracing::{error, info, trace};
|
use tracing::{error, info, trace};
|
||||||
@@ -134,23 +133,6 @@ impl PolicyCheckState {
|
|||||||
TextBox::text_set(&mut ctx.widget(), String::from(""));
|
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::<Environment>() {
|
|
||||||
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
|
/// Import policy numbers into hashmap
|
||||||
fn import_data(&mut self, ctx: &mut Context<'_>)
|
fn import_data(&mut self, ctx: &mut Context<'_>)
|
||||||
-> Result<(), Box<dyn std::error::Error>> {
|
-> Result<(), Box<dyn std::error::Error>> {
|
||||||
|
|||||||
@@ -12,18 +12,19 @@
|
|||||||
//extern crate lazy_static;
|
//extern crate lazy_static;
|
||||||
|
|
||||||
//use chrono::{Local, DateTime};
|
//use chrono::{Local, DateTime};
|
||||||
|
use dotenv::dotenv;
|
||||||
use locales::t;
|
use locales::t;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
//use std::env;
|
use std::env;
|
||||||
//use std::process;
|
//use std::process;
|
||||||
use tracing::{trace, Level};
|
use tracing::{info, trace, Level};
|
||||||
|
|
||||||
use orbtk::prelude::*;
|
use orbtk::prelude::*;
|
||||||
|
|
||||||
// The Main view
|
// The Main view
|
||||||
use advotracker::{
|
use advotracker::{
|
||||||
widgets::main_view,
|
|
||||||
callbacks::policycheck_state::PolicyCheckState,
|
callbacks::policycheck_state::PolicyCheckState,
|
||||||
|
widgets::main_view,
|
||||||
};
|
};
|
||||||
|
|
||||||
mod parse_args;
|
mod parse_args;
|
||||||
@@ -33,6 +34,7 @@ mod parse_args;
|
|||||||
/// this is primarily used in testing scenarios (eg. debugging)
|
/// this is primarily used in testing scenarios (eg. debugging)
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
struct Environment {
|
struct Environment {
|
||||||
|
lang: String,
|
||||||
test_lang: String,
|
test_lang: String,
|
||||||
rust_log: String,
|
rust_log: String,
|
||||||
}
|
}
|
||||||
@@ -40,6 +42,23 @@ struct Environment {
|
|||||||
// German localization file.
|
// German localization file.
|
||||||
static ADVOTRACKER_DE_DE: &str = include_str!("../resources/advotracker/advotracker_de_DE.ron");
|
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::<Environment>() {
|
||||||
|
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<dyn std::error::Error>> {
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
use parse_args::parse_args;
|
use parse_args::parse_args;
|
||||||
use tracing_subscriber::fmt;
|
use tracing_subscriber::fmt;
|
||||||
@@ -69,7 +88,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
|
|
||||||
tracing::subscriber::with_default(subscriber, || {
|
tracing::subscriber::with_default(subscriber, || {
|
||||||
// get system environment
|
// get system environment
|
||||||
let lang = PolicyCheckState::get_lang();
|
let lang = get_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);
|
||||||
|
|||||||
Reference in New Issue
Block a user