File lightdm-make-sessions-inherit-system-default-locale.patch of Package lightdm

# HG changeset patch
# Parent 5c75825170f86b5485f5d543e87bfb7acf7418f1
Make greeter and user sessions inherit the system default locale

diff --git a/src/session-child.c b/src/session-child.c
--- a/src/session-child.c
+++ b/src/session-child.c
@@ -185,6 +185,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
+    };
 
     g_type_init ();
 
@@ -319,6 +332,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);
+                }
+            }
         }
     }
 
openSUSE Build Service is sponsored by