include substring handling

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
This commit is contained in:
2021-02-28 19:14:48 +01:00
parent 26cf43bfae
commit 157da4228a
3 changed files with 23 additions and 9 deletions

View File

@@ -33,6 +33,7 @@ locales = { version = "~0.1" }
orbtk = { path = "../../orbtk" } orbtk = { path = "../../orbtk" }
#regex = { version = "~1" } #regex = { version = "~1" }
serde = { version = "~1.0", features = ["derive"] } serde = { version = "~1.0", features = ["derive"] }
substring = { version = "~1" }
#tokio = { version = "~0.2", features = ["macros", "rt-threaded", "stream", "time"] } #tokio = { version = "~0.2", features = ["macros", "rt-threaded", "stream", "time"] }
tracing = { version = "~0.1" } tracing = { version = "~0.1" }
tracing-subscriber = { version = "~0.2.0", features = ["tracing-log"] } tracing-subscriber = { version = "~0.2.0", features = ["tracing-log"] }

View File

@@ -18,6 +18,7 @@ use cfg_if::cfg_if;
use serde::Deserialize; use serde::Deserialize;
use std::env; use std::env;
//use std::process; //use std::process;
use substring::Substring;
use tracing::{info, trace, Level}; use tracing::{info, trace, Level};
use orbtk::{ use orbtk::{
@@ -59,7 +60,9 @@ static ADVOTRACKER_DE_DE: &str = include_str!("../assets/advotracker/advotracker
/// Get the active language environment. /// Get the active language environment.
fn get_lang() -> String { fn get_lang() -> String {
// get system environment // get system environment
let mut lang = env::var("LANG").unwrap_or("C".to_string()); let mut lang = env::var("LANG").unwrap_or_else(|_| "C".to_string());
lang = lang.substring(0,5).to_string(); // "de_DE.UTF-8" -> "de_DE"
info!("GUI-Language: preset to {:?}", lang);
// testing environment: read from .env file // testing environment: read from .env file
dotenv().ok(); dotenv().ok();
@@ -70,6 +73,8 @@ fn get_lang() -> String {
Err(e) => { info!(target: "advotracker", "{}", e) } Err(e) => { info!(target: "advotracker", "{}", e) }
} }
trace!(target: "advotracker", lang = ?lang); trace!(target: "advotracker", lang = ?lang);
// return the active language
lang lang
} }
@@ -143,7 +148,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
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);
trace!(target: "advotracker", message = ?res, state = ?state); trace!(target: "advotracker", process = ?res, state = ?state);
trace!(target: "advotracker", environment = "system", lang = ?lang); trace!(target: "advotracker", environment = "system", lang = ?lang);
trace!(target: "advotracker", machine = ?&machine_kind); trace!(target: "advotracker", machine = ?&machine_kind);
@@ -151,7 +156,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
res = t!("parse.environment", lang); res = t!("parse.environment", lang);
trace!(target: "advotracker", environment = "envy", lang = ?lang); trace!(target: "advotracker", environment = "envy", lang = ?lang);
state = t!("state.finished", lang); state = t!("state.finished", lang);
trace!(target: "advotracker", message = ?res, state = ?state); trace!(target: "advotracker", process = ?res, state = ?state);
// initialize viperus structure // initialize viperus structure
let mut viperus = Viperus::new(); let mut viperus = Viperus::new();
@@ -173,9 +178,13 @@ 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();
// if no dictionary is set for the default language e.g. english the content of the text property will drawn. // 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.
//let language = lang.substring(0,5); // "de_DE.UTF-8" -> "de_DE"
//info!("GUI-Language: preset to {:?}", language);
let localization = RonLocalization::create() let localization = RonLocalization::create()
.language("en_US") .language(&lang)
.dictionary("de_DE", ADVOTRACKER_DE_DE) .dictionary("de_DE", ADVOTRACKER_DE_DE)
.build(); .build();
@@ -186,9 +195,9 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
Window::new() Window::new()
.title("AdvoTracker - DirectCall") .title("AdvoTracker - DirectCall")
.position((500.0, 100.0)) .position((500.0, 100.0))
.size(580.0, 320.0) .size(800.0, 600.0)
//.min_width(460.0) //.min_width(460.0)
//.min_height(180.0) //.min_height(380.0)
.resizeable(true) .resizeable(true)
.child(main_view::MainView::new().build(ctx)) .child(main_view::MainView::new().build(ctx))
.build(ctx) .build(ctx)

View File

@@ -8,6 +8,7 @@
use dotenv::dotenv; use dotenv::dotenv;
use serde::Deserialize; use serde::Deserialize;
use std::env; use std::env;
use substring::Substring;
use tracing::{info, trace}; use tracing::{info, trace};
use orbtk::prelude::*; use orbtk::prelude::*;
@@ -28,10 +29,11 @@ struct Environment {
/// Provides generic methods to handle states of datatypes. /// Provides generic methods to handle states of datatypes.
pub trait GlobalState { pub trait GlobalState {
/// Get the active language environment.
fn get_lang() -> String { fn get_lang() -> String {
// get system environment // get system environment
let mut lang = env::var("LANG").unwrap_or("C".to_string()); let mut lang = env::var("LANG").unwrap_or_else(|_| "C".to_string());
lang = lang.substring(0,5).to_string(); // "de_DE.UTF-8" -> "de_DE"
info!("GUI-Language: preset to {:?}", lang);
// testing environment: read from .env file // testing environment: read from .env file
dotenv().ok(); dotenv().ok();
@@ -42,6 +44,8 @@ pub trait GlobalState {
Err(e) => { info!(target: "advotracker", "{}", e) } Err(e) => { info!(target: "advotracker", "{}", e) }
} }
trace!(target: "advotracker", lang = ?lang); trace!(target: "advotracker", lang = ?lang);
// return the active language
lang lang
} }