From 76bd750852855a306f5a885e2d0931a6d5307711 Mon Sep 17 00:00:00 2001 From: UchiWerfer Date: Tue, 7 Oct 2025 23:29:29 +0200 Subject: [PATCH 1/2] added localization for month and weekday to calendar-widget --- i18n/en/libcosmic.ftl | 21 +++++++++++++++++++++ src/widget/calendar.rs | 42 +++++++++++++++++++++++++++++++++++++++--- 2 files changed, 60 insertions(+), 3 deletions(-) diff --git a/i18n/en/libcosmic.ftl b/i18n/en/libcosmic.ftl index 45266a9bd1b..119ac38ecb3 100644 --- a/i18n/en/libcosmic.ftl +++ b/i18n/en/libcosmic.ftl @@ -9,3 +9,24 @@ designers = Designers artists = Artists translators = Translators documenters = Documenters + +# Calendar +january = January { $year } +february = February { $year } +march = March { $year } +april = April { $year } +may = May { $year } +june = June { $year } +july = July { $year } +august = August { $year } +september = September { $year } +october = October { $year } +november = November { $year } +december = December { $year } +monday = Mon +tuesday = Tue +wednesday = Wed +thursday = Thu +friday = Fri +saturday = Sat +sunday = Sun diff --git a/src/widget/calendar.rs b/src/widget/calendar.rs index a1aace33c69..7660570f2c7 100644 --- a/src/widget/calendar.rs +++ b/src/widget/calendar.rs @@ -8,7 +8,8 @@ use std::cmp; use crate::iced_core::{Alignment, Length, Padding}; use crate::widget::{Grid, button, column, grid, icon, row, text}; use apply::Apply; -use chrono::{Datelike, Days, Local, Months, NaiveDate, Weekday}; +use chrono::{Datelike, Days, Local, Month, Months, NaiveDate, Weekday}; +use crate::fl; /// A widget that displays an interactive calendar. pub fn calendar( @@ -129,7 +130,42 @@ where icon.padding([0, 12]).on_press($on_press) }}; } - let date = text(this.model.visible.format("%B %Y").to_string()).size(18); + macro_rules! translate_month { + ($month:expr, $year:expr) => {{ + match $month { + chrono::Month::January => fl!("january", year=$year), + chrono::Month::February => fl!("february", year=$year), + chrono::Month::March => fl!("march", year=$year), + chrono::Month::April => fl!("april", year=$year), + chrono::Month::May => fl!("may", year=$year), + chrono::Month::June => fl!("june", year=$year), + chrono::Month::July => fl!("july", year=$year), + chrono::Month::August => fl!("august", year=$year), + chrono::Month::September => fl!("september", year=$year), + chrono::Month::October => fl!("october", year=$year), + chrono::Month::November => fl!("november", year=$year), + chrono::Month::December => fl!("december", year=$year) + } + }} + } + macro_rules! translate_weekday { + ($weekday:expr) => {{ + match $weekday { + Weekday::Mon => fl!("monday"), + Weekday::Tue => fl!("tuesday"), + Weekday::Wed => fl!("wednesday"), + Weekday::Thu => fl!("thursday"), + Weekday::Fri => fl!("friday"), + Weekday::Sat => fl!("saturday"), + Weekday::Sun => fl!("sunday") + } + }} + } + + let date = text(translate_month!( + Month::try_from(this.model.visible.month() as u8) + .expect("Previously valid month is suddenly invalid"), + this.model.visible.year())).size(18); let month_controls = row::with_capacity(2) .push(icon!("go-previous-symbolic", (this.on_prev)())) @@ -142,7 +178,7 @@ where let mut first_day_of_week = this.first_day_of_week; for _ in 0..7 { calendar_grid = calendar_grid.push( - text(first_day_of_week.to_string()) + text(translate_weekday!(first_day_of_week)) .size(12) .width(Length::Fixed(36.0)) .align_x(Alignment::Center), From 8f04455505f6d1f155baf5c61911e1dc43ec1d1c Mon Sep 17 00:00:00 2001 From: UchiWerfer Date: Tue, 7 Oct 2025 23:30:29 +0200 Subject: [PATCH 2/2] added German translations to the localization of the calendar-widget --- i18n/de/libcosmic.ftl | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/i18n/de/libcosmic.ftl b/i18n/de/libcosmic.ftl index 3806cc59dc4..7d8dfe93ffe 100644 --- a/i18n/de/libcosmic.ftl +++ b/i18n/de/libcosmic.ftl @@ -9,3 +9,24 @@ designers = Designer*innen artists = Künstler*innen translators = Übersetzer*innen documenters = Dokumentierer*innen + +# Calendar +january = Januar { $year } +february = Februar { $year } +march = März { $year } +april = April { $year } +may = Mai { $year } +june = Juni { $year } +july = Juli { $year } +august = August { $year } +september = September { $year } +october = Oktober { $year } +november = November { $year } +december = Dezember { $year } +monday = Mo +tuesday = Di +wednesday = Mi +thursday = Do +friday = Fr +saturday = Sa +sunday = So