From 6b3f8a7b42814d67e96360cdd694709949991172 Mon Sep 17 00:00:00 2001 From: Earthgames Date: Sat, 7 Mar 2026 12:26:39 +0100 Subject: [PATCH] Only convert locale one time --- wayvr/src/gui/panel/label.rs | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/wayvr/src/gui/panel/label.rs b/wayvr/src/gui/panel/label.rs index b4e3e5cd..dd785c52 100644 --- a/wayvr/src/gui/panel/label.rs +++ b/wayvr/src/gui/panel/label.rs @@ -130,6 +130,14 @@ pub(super) fn setup_custom_label( .ok() }), format: format.into(), + locale: { + let i18n = app.wgui_globals.i18n(); + let locale = i18n.get_locale(); + match pure_rust_locales::Locale::try_from(locale.to_string().as_str()) { + Ok(loc) => loc, + Err(_) => pure_rust_locales::Locale::en_US, + } + }, }; Box::new(move |common, data, _, _| { @@ -213,6 +221,7 @@ fn battery_on_tick( struct ClockLabelState { timezone: Option, format: Rc, + locale: chrono::Locale, } fn clock_on_tick( @@ -220,22 +229,19 @@ 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_localized(&state.format, locale)), + || { + format!( + "{}", + Local::now().format_localized(&state.format, state.locale) + ) + }, |tz| { format!( "{}", Local::now() .with_timezone(tz) - .format_localized(&state.format, locale) + .format_localized(&state.format, state.locale) ) }, );