summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGunnar Hjalmarsson <gunnarhj@ubuntu.com>2020-09-21 13:13:10 +0000
committerMarco Trevisan <mail@3v1n0.net>2020-09-21 13:13:10 +0000
commit5aee280a29eab749b917b871bb6ef70d7b490451 (patch)
treeddeee33560024dab6cba6c6da08c480408d6e071
parent06ba53c3c168539cd8c0ad8ed7f1635342cddccf (diff)
downloadgnome-control-center-5aee280a29eab749b917b871bb6ef70d7b490451.tar.gz
common: Display locale @modifiers properly
Fixes GNOME/gnome-desktop#50
-rw-r--r--meson.build2
-rw-r--r--panels/common/cc-language-chooser.c24
2 files changed, 22 insertions, 4 deletions
diff --git a/meson.build b/meson.build
index 9d9cf9133..6e31acfe1 100644
--- a/meson.build
+++ b/meson.build
@@ -122,7 +122,7 @@ colord_dep = dependency('colord', version: '>= 0.1.34')
gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0', version: '>= 2.23.0')
gio_dep = dependency('gio-2.0')
glib_dep = dependency('glib-2.0', version: '>= 2.56.0')
-gnome_desktop_dep = dependency('gnome-desktop-3.0', version: '>= 3.27.90')
+gnome_desktop_dep = dependency('gnome-desktop-3.0', version: '>= 3.33.4')
gnome_settings_dep = dependency('gnome-settings-daemon', version: '>= 3.27.90')
goa_dep = dependency('goa-1.0', version: goa_req_version)
gsettings_desktop_dep = dependency('gsettings-desktop-schemas', version: '>= 3.37.1')
diff --git a/panels/common/cc-language-chooser.c b/panels/common/cc-language-chooser.c
index 919cb1c6b..684367b22 100644
--- a/panels/common/cc-language-chooser.c
+++ b/panels/common/cc-language-chooser.c
@@ -52,6 +52,23 @@ struct _CcLanguageChooser {
G_DEFINE_TYPE (CcLanguageChooser, cc_language_chooser, GTK_TYPE_DIALOG)
+static gchar *
+get_language_label (const gchar *language_code,
+ const gchar *modifier,
+ const gchar *locale_id)
+{
+ g_autofree gchar *language = NULL;
+
+ language = gnome_get_language_from_code (language_code, locale_id);
+
+ if (modifier == NULL)
+ return g_steal_pointer (&language);
+ else {
+ g_autofree gchar *t_mod = gnome_get_translated_modifier (modifier, locale_id);
+ return g_strdup_printf ("%s — %s", language, t_mod);
+ }
+}
+
static GtkWidget *
language_widget_new (const gchar *locale_id,
gboolean is_extra)
@@ -62,16 +79,17 @@ language_widget_new (const gchar *locale_id,
g_autofree gchar *country = NULL;
g_autofree gchar *language_local = NULL;
g_autofree gchar *country_local = NULL;
+ g_autofree gchar *modifier = NULL;
GtkWidget *row;
GtkWidget *box;
GtkWidget *language_label;
GtkWidget *check;
GtkWidget *country_label;
- gnome_parse_locale (locale_id, &language_code, &country_code, NULL, NULL);
- language = gnome_get_language_from_code (language_code, locale_id);
+ gnome_parse_locale (locale_id, &language_code, &country_code, NULL, &modifier);
+ language = get_language_label (language_code, modifier, locale_id);
country = gnome_get_country_from_code (country_code, locale_id);
- language_local = gnome_get_language_from_code (language_code, NULL);
+ language_local = get_language_label (language_code, modifier, NULL);
country_local = gnome_get_country_from_code (country_code, NULL);
row = gtk_list_box_row_new ();