diff options
author | Ray Strode <rstrode@redhat.com> | 2008-02-25 21:20:35 +0000 |
---|---|---|
committer | Ray Strode <halfline@src.gnome.org> | 2008-02-25 21:20:35 +0000 |
commit | cdcb55912330732844ee2f301c887721cf654f74 (patch) | |
tree | 8bc606336cd9e06637a50e503415e811fd1015e4 | |
parent | d2c1566cef7db90d21a7afbda8e66bbf8454409d (diff) | |
download | gdm-cdcb55912330732844ee2f301c887721cf654f74.tar.gz |
Move some duplicated code for pulling language/territory names out into a
2008-02-25 Ray Strode <rstrode@redhat.com>
* gui/simple-greeter/gdm-languages.c:
(get_first_item_in_semicolon_list),
(get_translated_language),
(get_translated_territory):
Move some duplicated code for pulling
language/territory names out into a common
function
svn path=/trunk/; revision=5856
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-languages.c | 32 |
2 files changed, 33 insertions, 9 deletions
@@ -1,5 +1,15 @@ 2008-02-25 Ray Strode <rstrode@redhat.com> + * gui/simple-greeter/gdm-languages.c: + (get_first_item_in_semicolon_list), + (get_translated_language), + (get_translated_territory): + Move some duplicated code for pulling + language/territory names out into a common + function + +2008-02-25 Ray Strode <rstrode@redhat.com> + * gui/simple-greeter/gdm-language-option-widget.c (gdm_language_option_widget_set_current_language_name): Normalize language name before adding to the list, so diff --git a/gui/simple-greeter/gdm-languages.c b/gui/simple-greeter/gdm-languages.c index efdd9a73..130cf698 100644 --- a/gui/simple-greeter/gdm-languages.c +++ b/gui/simple-greeter/gdm-languages.c @@ -455,6 +455,24 @@ get_language (const char *code) } static char * +get_first_item_in_semicolon_list (const char *list) +{ + char **items; + char *item; + + /* Some entries in iso codes have multiple values, separated + * by semicolons. Not really sure which one to pick, so + * we just arbitrarily pick the first one. + */ + items = g_strsplit (list, "; ", 2); + + item = g_strdup (items[0]); + g_strfreev (items); + + return item; +} + +static char * get_translated_language (const char *code, const char *locale) { @@ -472,14 +490,13 @@ get_translated_language (const char *code, old_locale = g_strdup (setlocale (LC_MESSAGES, NULL)); setlocale (LC_MESSAGES, locale); translated_name = dgettext ("iso_639", language); + + name = get_first_item_in_semicolon_list (translated_name); + setlocale (LC_MESSAGES, old_locale); g_free (old_locale); - names = g_strsplit (translated_name, "; ", 2); - - name = g_strdup (names[0]); - g_strfreev (names); - } + } return name; } @@ -523,10 +540,7 @@ get_translated_territory (const char *code, setlocale (LC_MESSAGES, old_locale); g_free (old_locale); - territories = g_strsplit (translated_territory, "; ", 2); - - name = g_strdup (territories[0]); - g_strfreev (territories); + name = get_first_item_in_semicolon_list (translated_territory); } return name; |