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);
+ }
+ }
}
}