diff options
Diffstat (limited to 'init/src/host/locale.rs')
| -rw-r--r-- | init/src/host/locale.rs | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/init/src/host/locale.rs b/init/src/host/locale.rs index 6dc43b2..d955297 100644 --- a/init/src/host/locale.rs +++ b/init/src/host/locale.rs @@ -1,9 +1,22 @@ +// NOTE: Ts file contains setting localisation by environment variables +// Main logic implemented but how i think it can contain with broken logic or checks +// At least if check failed it set C.UTF8 (fallback locale) +// And why is std::env::set_var unsafe???? + use crate::host::timezone::set_timezone; use crate::log::{log_success, log_warning}; use std::fs; use std::io::Write; use std::process::Command; +/// Main function which setting system locale. +/// +/// Logic && Checks +/// 1. Reading /etc/default/locale to find needed language. +/// If it broken/has syntax errors skipping this step +/// 2. Checking for locale avalible (also switching `-` and `_`), +/// if not uses fallback locale. +/// pub fn set_locale(locale: Option<String>) -> Result<(), Box<dyn std::error::Error>> { let loc = match locale { Some(l) => l, @@ -23,10 +36,10 @@ pub fn set_locale(locale: Option<String>) -> Result<(), Box<dyn std::error::Erro } } - if let Ok(lang_env) = std::env::var("LANG") - && !lang_env.is_empty() { - return set_system_locale(&lang_env); - + if let Ok(lang_env) = std::env::var("LANG") + && !lang_env.is_empty() + { + return set_system_locale(&lang_env); } if locale_exists("C.UTF-8") { "C.UTF-8".to_string() |
