summaryrefslogtreecommitdiff
path: root/init/src/host/locale.rs
diff options
context:
space:
mode:
authornamilsk <namilsk@namilsk.tech>2026-01-31 21:26:26 +0300
committernamilsk <namilsk@namilsk.tech>2026-01-31 21:26:26 +0300
commita5749a5d8d38b0db2ce5548473f8a61b674578a6 (patch)
treefe9227f4b40345a2730ce9373c740787e7ca5506 /init/src/host/locale.rs
parentb81a55bea1525b2fcf84591eb902926fb1d0cece (diff)
Started writing service-utils and adding docstrings
Diffstat (limited to 'init/src/host/locale.rs')
-rw-r--r--init/src/host/locale.rs21
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()