[gnome-calendar] event-editor/schedule-section: Fix localization mix
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar] event-editor/schedule-section: Fix localization mix
- Date: Sat, 12 Feb 2022 16:56:32 +0000 (UTC)
commit ad7ff65a4d74a9e7e251ec7e1a8c2e81d80de0fc
Author: Björn Daase <bjoern daase net>
Date: Thu Feb 3 22:46:31 2022 +0100
event-editor/schedule-section: Fix localization mix
The gcal_util_translate_time_string function is a plain copy of
gnome-shells shell_util_translate_time_string solving the same problem.
Fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/581
src/gui/event-editor/gcal-schedule-section.c | 4 ++--
src/utils/gcal-utils.c | 35 ++++++++++++++++++++++++++++
src/utils/gcal-utils.h | 2 ++
3 files changed, 39 insertions(+), 2 deletions(-)
---
diff --git a/src/gui/event-editor/gcal-schedule-section.c b/src/gui/event-editor/gcal-schedule-section.c
index 4a20eb2c..7f13d9a7 100644
--- a/src/gui/event-editor/gcal-schedule-section.c
+++ b/src/gui/event-editor/gcal-schedule-section.c
@@ -235,7 +235,7 @@ format_datetime_for_display (GDateTime *date,
{
case -7 ... -2:
/* Translators: %A is the weekday name (e.g. Sunday, Monday, etc) */
- formatted_date = g_date_time_format (local_dt, _("Last %A"));
+ formatted_date = g_date_time_format (local_dt, gcal_util_translate_time_string (_("Last %A")));
break;
case -1:
@@ -252,7 +252,7 @@ format_datetime_for_display (GDateTime *date,
case 2 ... 7:
/* Translators: %A is the weekday name (e.g. Sunday, Monday, etc) */
- formatted_date = g_date_time_format (local_dt, _("This %A"));
+ formatted_date = g_date_time_format (local_dt, gcal_util_translate_time_string (_("This %A")));
break;
default:
diff --git a/src/utils/gcal-utils.c b/src/utils/gcal-utils.c
index 1b253dcf..044a0158 100644
--- a/src/utils/gcal-utils.c
+++ b/src/utils/gcal-utils.c
@@ -1325,3 +1325,38 @@ gcal_utils_ask_recurrence_modification_type (GtkWidget *parent,
gtk_window_present (GTK_WINDOW (dialog));
}
+
+/**
+ * gcal_util_translate_time_string:
+ * @str: String to translate
+ *
+ * Translate @str according to the locale defined by LC_TIME; unlike
+ * dcgettext(), the translations is still taken from the LC_MESSAGES
+ * catalogue and not the LC_TIME one.
+ *
+ * Returns: the translated string
+ */
+const gchar *
+gcal_util_translate_time_string (const gchar *str)
+{
+ const gchar *locale = g_getenv ("LC_TIME");
+ const gchar *res;
+ gchar *sep;
+ locale_t old_loc;
+ locale_t loc = (locale_t) 0;
+
+ if (locale)
+ loc = newlocale (LC_MESSAGES_MASK, locale, (locale_t) 0);
+
+ old_loc = uselocale (loc);
+
+ sep = strchr (str, '\004');
+ res = g_dpgettext (NULL, str, sep ? sep - str + 1 : 0);
+
+ uselocale (old_loc);
+
+ if (loc != (locale_t) 0)
+ freelocale (loc);
+
+ return res;
+}
diff --git a/src/utils/gcal-utils.h b/src/utils/gcal-utils.h
index 42931afc..11392be1 100644
--- a/src/utils/gcal-utils.h
+++ b/src/utils/gcal-utils.h
@@ -135,4 +135,6 @@ void gcal_utils_ask_recurrence_modification_type (GtkWidget
GcalAskRecurrenceCallback callback,
gpointer user_data);
+const gchar * gcal_util_translate_time_string (const gchar *str);
+
#endif /* __GCAL_UTILS_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]