--- a/src/session-child.c +++ a/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); + } + } } }