]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blob - debian/patches/04_language_handling.patch
f9d86855d4da4d40db5771bb1e15894a4c9d4de4
[sojka/lightdm.git] / debian / patches / 04_language_handling.patch
1 Description: Adjustments due to handling of languages
2 Forwarded: not-needed
3 Author: Gunnar Hjalmarsson <gunnarhj@ubuntu.com>
4
5 Index: trunk/liblightdm-gobject/language.c
6 ===================================================================
7 --- trunk.orig/liblightdm-gobject/language.c
8 +++ trunk/liblightdm-gobject/language.c
9 @@ -40,7 +40,7 @@ static GList *languages = NULL;
10  static void
11  update_languages (void)
12  {
13 -    gchar *command = "locale -a";
14 +    gchar *command = "/usr/share/language-tools/language-options";
15      gchar *stdout_text = NULL, *stderr_text = NULL;
16      gint exit_status;
17      gboolean result;
18 @@ -161,15 +161,39 @@ lightdm_get_language (void)
19  {
20      const gchar *lang;
21      GList *link;
22 +    static const gchar *short_lang = NULL;
23 +
24 +    if (short_lang)
25 +        goto match;
26  
27      lang = g_getenv ("LANG");
28      if (!lang)
29          return NULL;
30  
31 +    /* Convert to a short form language code */
32 +    gchar *command = g_strconcat ("/usr/share/language-tools/language-validate ", lang, NULL);
33 +    gchar *out;
34 +    GError *error = NULL;
35 +    if (g_spawn_command_line_sync (command, &out, NULL, NULL, &error))
36 +    {
37 +        short_lang = g_strdup (g_strchomp (out));
38 +        g_free (out);
39 +        g_free (command);
40 +    }
41 +    else
42 +    {
43 +        g_warning ("Failed to run '%s': %s", command, error->message);
44 +        g_error_free (error);
45 +        g_free (command);
46 +        return NULL;
47 +    }
48 +
49 +match:
50 +
51      for (link = lightdm_get_languages (); link; link = link->next)
52      {
53          LightDMLanguage *language = link->data;
54 -        if (lightdm_language_matches (language, lang))
55 +        if (lightdm_language_matches (language, short_lang))
56              return language;
57      }
58  
59 Index: trunk/tests/scripts/language-env.conf
60 ===================================================================
61 --- trunk.orig/tests/scripts/language-env.conf
62 +++ trunk/tests/scripts/language-env.conf
63 @@ -24,8 +24,8 @@ user-session=default
64  #?SESSION-X-0 CONNECT-XSERVER
65  
66  # Check environment variables
67 -#?*SESSION-X-0 READ-ENV NAME=LANG
68 -#?SESSION-X-0 READ-ENV NAME=LANG VALUE=en_AU
69 +#?*SESSION-X-0 READ-ENV NAME=LANGUAGE
70 +#?SESSION-X-0 READ-ENV NAME=LANGUAGE VALUE=en_AU
71  #?*SESSION-X-0 READ-ENV NAME=GDM_LANG
72  #?SESSION-X-0 READ-ENV NAME=GDM_LANG VALUE=en_AU
73  
74 Index: trunk/src/seat.c
75 ===================================================================
76 --- trunk.orig/src/seat.c
77 +++ trunk/src/seat.c
78 @@ -1006,7 +1006,7 @@ configure_session (Session *session, Ses
79      }
80      if (language && language[0] != '\0')
81      {
82 -        session_set_env (session, "LANG", language);
83 +        session_set_env (session, "LANGUAGE", language);
84          session_set_env (session, "GDM_LANG", language);
85      }
86  }