From 12ceebec6df846346b172682aecf11e67d41f14c Mon Sep 17 00:00:00 2001 From: Earthgames Date: Sun, 1 Mar 2026 13:01:52 +0100 Subject: [PATCH] Used locale in chrono --- Cargo.lock | 8 ++++++++ wayvr/Cargo.toml | 3 ++- wayvr/src/gui/panel/label.rs | 19 +++++++++++++++++-- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a2c4ab85..86f41ee9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -932,6 +932,7 @@ dependencies = [ "iana-time-zone", "js-sys", "num-traits", + "pure-rust-locales", "wasm-bindgen", "windows-link 0.2.1", ] @@ -4194,6 +4195,12 @@ dependencies = [ "syn 2.0.113", ] +[[package]] +name = "pure-rust-locales" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "869675ad2d7541aea90c6d88c81f46a7f4ea9af8cd0395d38f11a95126998a0d" + [[package]] name = "pxfm" version = "0.1.27" @@ -6314,6 +6321,7 @@ dependencies = [ "mint", "openxr", "ovr_overlay", + "pure-rust-locales", "regex", "rosc", "rust-embed", diff --git a/wayvr/Cargo.toml b/wayvr/Cargo.toml index 5762f7cb..22c08795 100644 --- a/wayvr/Cargo.toml +++ b/wayvr/Cargo.toml @@ -44,7 +44,8 @@ xdg.workspace = true ash = "^0.38.0" # must match vulkano bytes = { version = "1.11.1" } -chrono = "0.4.42" +chrono = { version = "0.4.42", features = [ "unstable-locales"]} +pure-rust-locales = "0.8.2" chrono-tz = "0.10.4" config = "0.15.19" dbus = { version = "0.9.9" } diff --git a/wayvr/src/gui/panel/label.rs b/wayvr/src/gui/panel/label.rs index c281619e..b4e3e5cd 100644 --- a/wayvr/src/gui/panel/label.rs +++ b/wayvr/src/gui/panel/label.rs @@ -220,9 +220,24 @@ fn clock_on_tick( common: &mut event::CallbackDataCommon, data: &mut event::CallbackData, ) { + let locale = { + let binding = common.i18n(); + let locale = binding.get_locale(); + match pure_rust_locales::Locale::try_from(locale.to_string().as_str()) { + Ok(loc) => loc, + Err(_) => pure_rust_locales::Locale::en_US, + } + }; let date_time = state.timezone.as_ref().map_or_else( - || format!("{}", Local::now().format(&state.format)), - |tz| format!("{}", Local::now().with_timezone(tz).format(&state.format)), + || format!("{}", Local::now().format_localized(&state.format, locale)), + |tz| { + format!( + "{}", + Local::now() + .with_timezone(tz) + .format_localized(&state.format, locale) + ) + }, ); let label = data.obj.get_as_mut::().unwrap();