[gnome-initial-setup] language-page: Rearrange code dealing with locale



commit c1b5e618776d57f2f74d2d55acc6215d10a7f0c8
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Wed Feb 13 17:16:28 2013 -0500

    language-page: Rearrange code dealing with locale
    
    We left the locale in an inconsistent state after calling use_language,
    but sort of always fixed it up afterwards. This cleans that up so that
    use_language doesn't modify the locale ID, meaning that we can safely
    call it and then expect cc_common_language_get_current_language to work
    properly.

 .../pages/language/gis-language-page.c             |   13 ++++++-------
 1 files changed, 6 insertions(+), 7 deletions(-)
---
diff --git a/gnome-initial-setup/pages/language/gis-language-page.c b/gnome-initial-setup/pages/language/gis-language-page.c
index f387b21..e9ddbdd 100644
--- a/gnome-initial-setup/pages/language/gis-language-page.c
+++ b/gnome-initial-setup/pages/language/gis-language-page.c
@@ -113,13 +113,19 @@ sort_languages (gconstpointer a,
 static char *
 use_language (char *locale_id)
 {
+  char *current_locale_id;
   char *use, *language;
 
+  current_locale_id = g_strdup (setlocale (LC_MESSAGES, NULL));
+
   /* Translators: the parameter here is your language's name, like
    * "Use English", "Deutsch verwenden", etc. */
   setlocale (LC_MESSAGES, locale_id);
   use = _("Use %s");
 
+  setlocale (LC_MESSAGES, current_locale_id);
+  g_free (current_locale_id);
+
   language = gdm_get_language_from_name (locale_id, locale_id);
 
   return g_strdup_printf (use, language);
@@ -157,10 +163,8 @@ language_widget_new (char     *locale_id,
 {
   gchar *locale_name;
   LanguageWidget *widget = g_new0 (LanguageWidget, 1);
-  gchar *current_locale_id = cc_common_language_get_current_language ();
 
   locale_name = use_language (locale_id);
-  setlocale (LC_MESSAGES, current_locale_id);
 
   widget->box = padded_label_new (locale_name);
   widget->locale_id = g_strdup (locale_id);
@@ -173,7 +177,6 @@ language_widget_new (char     *locale_id,
                           gtk_image_new_from_icon_name ("object-select-symbolic", GTK_ICON_SIZE_MENU),
                           FALSE, FALSE, 0);
     }
-  g_free (current_locale_id);
 
   g_object_set_data_full (G_OBJECT (widget->box), "language-widget", widget,
                           language_widget_free);
@@ -203,7 +206,6 @@ add_languages (GisLanguagePage *page,
                GHashTable      *initial)
 {
   GisLanguagePagePrivate *priv = page->priv;
-  char *orig_locale_id = cc_common_language_get_current_language ();
 
   priv->adding_languages = TRUE;
 
@@ -235,9 +237,6 @@ add_languages (GisLanguagePage *page,
   gtk_widget_show (priv->language_list);
 
   priv->adding_languages = FALSE;
-
-  setlocale (LC_MESSAGES, orig_locale_id);
-  g_free (orig_locale_id);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]