diff options
author | Gunnar Hjalmarsson <gunnarhj@ubuntu.com> | 2020-09-21 13:13:10 +0000 |
---|---|---|
committer | Marco Trevisan <mail@3v1n0.net> | 2020-09-21 13:13:10 +0000 |
commit | 5aee280a29eab749b917b871bb6ef70d7b490451 (patch) | |
tree | ddeee33560024dab6cba6c6da08c480408d6e071 | |
parent | 06ba53c3c168539cd8c0ad8ed7f1635342cddccf (diff) | |
download | gnome-control-center-5aee280a29eab749b917b871bb6ef70d7b490451.tar.gz |
common: Display locale @modifiers properly
Fixes GNOME/gnome-desktop#50
-rw-r--r-- | meson.build | 2 | ||||
-rw-r--r-- | panels/common/cc-language-chooser.c | 24 |
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 (); |