Description: Adjustments due to handling of languages Forwarded: not-needed Author: Gunnar Hjalmarsson Index: trunk/liblightdm-gobject/language.c =================================================================== --- trunk.orig/liblightdm-gobject/language.c +++ trunk/liblightdm-gobject/language.c @@ -40,7 +40,7 @@ static GList *languages = NULL; static void update_languages (void) { - gchar *command = "locale -a"; + gchar *command = "/usr/share/language-tools/language-options"; gchar *stdout_text = NULL, *stderr_text = NULL; gint exit_status; gboolean result; @@ -161,15 +161,39 @@ lightdm_get_language (void) { const gchar *lang; GList *link; + static const gchar *short_lang = NULL; + + if (short_lang) + goto match; lang = g_getenv ("LANG"); if (!lang) return NULL; + /* Convert to a short form language code */ + gchar *command = g_strconcat ("/usr/share/language-tools/language-validate ", lang, NULL); + gchar *out; + GError *error = NULL; + if (g_spawn_command_line_sync (command, &out, NULL, NULL, &error)) + { + short_lang = g_strdup (g_strchomp (out)); + g_free (out); + g_free (command); + } + else + { + g_warning ("Failed to run '%s': %s", command, error->message); + g_error_free (error); + g_free (command); + return NULL; + } + +match: + for (link = lightdm_get_languages (); link; link = link->next) { LightDMLanguage *language = link->data; - if (lightdm_language_matches (language, lang)) + if (lightdm_language_matches (language, short_lang)) return language; } Index: trunk/tests/scripts/language-env.conf =================================================================== --- trunk.orig/tests/scripts/language-env.conf +++ trunk/tests/scripts/language-env.conf @@ -24,8 +24,8 @@ user-session=default #?SESSION-X-0 CONNECT-XSERVER # Check environment variables -#?*SESSION-X-0 READ-ENV NAME=LANG -#?SESSION-X-0 READ-ENV NAME=LANG VALUE=en_AU +#?*SESSION-X-0 READ-ENV NAME=LANGUAGE +#?SESSION-X-0 READ-ENV NAME=LANGUAGE VALUE=en_AU #?*SESSION-X-0 READ-ENV NAME=GDM_LANG #?SESSION-X-0 READ-ENV NAME=GDM_LANG VALUE=en_AU Index: trunk/src/seat.c =================================================================== --- trunk.orig/src/seat.c +++ trunk/src/seat.c @@ -1020,7 +1020,7 @@ configure_session (Session *session, Ses } if (language && language[0] != '\0') { - session_set_env (session, "LANG", language); + session_set_env (session, "LANGUAGE", language); session_set_env (session, "GDM_LANG", language); } }