]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - src/session-child.c
Make greeter and user sessions inherit the system default locale, this is needed...
[sojka/lightdm.git] / src / session-child.c
index e48ec43a886a35690db1c4da1283fe41f65a16a8..ae15b466ab98b2d1221f57a28aec9737159ec6b8 100644 (file)
@@ -193,6 +193,19 @@ session_child_run (int argc, char **argv)
     gchar *console_kit_cookie;
     const gchar *path;
     GError *error = NULL;
+    const gchar *locale_value;
+    gchar *locale_var;
+    static const gchar * const locale_var_names[] = {
+        "LC_COLLATE",
+        "LC_CTYPE",
+        "LC_MONETARY",
+        "LC_NUMERIC",
+        "LC_TIME",
+        "LC_MESSAGES",
+        "LC_ALL",
+        "LANG",
+        NULL
+    };
 
 #if !defined(GLIB_VERSION_2_36)
     g_type_init ();
@@ -335,6 +348,17 @@ session_child_run (int argc, char **argv)
             pam_putenv (pam_handle, g_strdup_printf ("LOGNAME=%s", username));
             pam_putenv (pam_handle, g_strdup_printf ("HOME=%s", user_get_home_directory (user)));
             pam_putenv (pam_handle, g_strdup_printf ("SHELL=%s", user_get_shell (user)));
+
+            /* Let the greeter and user session inherit the system default locale */
+            for (i = 0; locale_var_names[i] != NULL; i++)
+            {
+                if ((locale_value = g_getenv (locale_var_names[i])) != NULL)
+                {
+                    locale_var = g_strdup_printf ("%s=%s", locale_var_names[i], locale_value);
+                    pam_putenv (pam_handle, locale_var);
+                    g_free (locale_var);
+                }
+            }
         }
     }