diff -up gdm-2.21.9/gui/simple-greeter/gdm-languages.c.lang-tip gdm-2.21.9/gui/simple-greeter/gdm-languages.c --- gdm-2.21.9/gui/simple-greeter/gdm-languages.c.lang-tip 2008-02-25 17:21:43.000000000 -0500 +++ gdm-2.21.9/gui/simple-greeter/gdm-languages.c 2008-03-17 17:57:09.000000000 -0400 @@ -630,15 +630,18 @@ get_translated_language (const char *cod const char *translated_name; char *old_locale; - old_locale = g_strdup (setlocale (LC_MESSAGES, NULL)); - setlocale (LC_MESSAGES, locale); - translated_name = dgettext ("iso_639", language); + if (locale != NULL) { + 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); - + if (locale != NULL) { + setlocale (LC_MESSAGES, old_locale); + g_free (old_locale); + } } return name; @@ -676,13 +679,18 @@ get_translated_territory (const char *co const char *translated_territory; char *old_locale; - old_locale = g_strdup (setlocale (LC_MESSAGES, NULL)); - setlocale (LC_MESSAGES, locale); - translated_territory = dgettext ("iso_3166", territory); - setlocale (LC_MESSAGES, old_locale); - g_free (old_locale); + if (locale != NULL) { + old_locale = g_strdup (setlocale (LC_MESSAGES, NULL)); + setlocale (LC_MESSAGES, locale); + } + translated_territory = dgettext ("iso_3166", territory); name = get_first_item_in_semicolon_list (translated_territory); + + if (locale != NULL) { + setlocale (LC_MESSAGES, old_locale); + g_free (old_locale); + } } return name; @@ -929,7 +937,8 @@ territories_init (void) } char * -gdm_get_language_from_name (const char *name) +gdm_get_language_from_name (const char *name, + const char *locale) { char *full_language; char *language_code; @@ -956,10 +965,10 @@ gdm_get_language_from_name (const char * goto out; } - language = get_translated_language (language_code, name); + language = get_translated_language (language_code, locale); if (territory_code != NULL) { - territory = get_translated_territory (territory_code, name); + territory = get_translated_territory (territory_code, locale); } else { territory = NULL; } diff -up gdm-2.21.9/gui/simple-greeter/gdm-language-option-widget.c.lang-tip gdm-2.21.9/gui/simple-greeter/gdm-language-option-widget.c --- gdm-2.21.9/gui/simple-greeter/gdm-language-option-widget.c.lang-tip 2008-02-25 17:21:43.000000000 -0500 +++ gdm-2.21.9/gui/simple-greeter/gdm-language-option-widget.c 2008-03-17 17:56:41.000000000 -0400 @@ -144,15 +144,18 @@ gdm_language_option_widget_lookup_item ( char **comment) { char *language; + char *readable_language; - language = gdm_get_language_from_name (locale); + language = gdm_get_language_from_name (locale, locale); if (language == NULL) { return FALSE; } + readable_language = gdm_get_language_from_name (locale, NULL); + *name = language; - *comment = g_strdup (""); + *comment = readable_language; return TRUE; } diff -up gdm-2.21.9/gui/simple-greeter/gdm-languages.h.lang-tip gdm-2.21.9/gui/simple-greeter/gdm-languages.h --- gdm-2.21.9/gui/simple-greeter/gdm-languages.h.lang-tip 2008-02-20 10:56:46.000000000 -0500 +++ gdm-2.21.9/gui/simple-greeter/gdm-languages.h 2008-03-17 15:38:16.000000000 -0400 @@ -26,7 +26,8 @@ G_BEGIN_DECLS -char * gdm_get_language_from_name (const char *name); +char * gdm_get_language_from_name (const char *name, + const char *locale); char ** gdm_get_all_language_names (void); void gdm_parse_language_name (const char *name, char **language_codep, diff -up gdm-2.21.9/gui/simple-greeter/gdm-language-chooser-widget.c.lang-tip gdm-2.21.9/gui/simple-greeter/gdm-language-chooser-widget.c --- gdm-2.21.9/gui/simple-greeter/gdm-language-chooser-widget.c.lang-tip 2008-02-25 17:21:43.000000000 -0500 +++ gdm-2.21.9/gui/simple-greeter/gdm-language-chooser-widget.c 2008-03-17 17:56:08.000000000 -0400 @@ -117,21 +117,24 @@ gdm_language_chooser_widget_add_language { char *language; char *normalized_name; + char *readable_language; normalized_name = gdm_normalize_language_name (name); - language = gdm_get_language_from_name (normalized_name); + language = gdm_get_language_from_name (normalized_name, normalized_name); + readable_language = gdm_get_language_from_name (normalized_name, NULL); if (language != NULL) { gdm_chooser_widget_add_item (GDM_CHOOSER_WIDGET (widget), normalized_name, NULL, language, - "", + readable_language, 0, FALSE, FALSE); g_free (language); } + g_free (readable_language); g_free (normalized_name); }