diff -ur gnome-control-center-2.30.1.orig/capplets/about-me/gnome-about-me-password.c gnome-control-center-2.30.1/capplets/about-me/gnome-about-me-password.c
--- gnome-control-center-2.30.1.orig/capplets/about-me/gnome-about-me-password.c	2010-08-06 01:35:58.223008685 +0200
+++ gnome-control-center-2.30.1/capplets/about-me/gnome-about-me-password.c	2010-08-06 01:44:32.179009816 +0200
@@ -171,24 +171,18 @@
 spawn_passwd (PasswordDialog *pdialog, GError **error)
 {
 	gchar	*argv[2];
-	gchar	*envp[1];
+	gchar	*old_locale;
 	gint	my_stdin, my_stdout, my_stderr;
 
 	argv[0] = "/usr/bin/passwd";	/* Is it safe to rely on a hard-coded path? */
 	argv[1] = NULL;
-
-	envp[0] = NULL;					/* If we pass an empty array as the environment,
-									 * will the childs environment be empty, and the
-									 * locales set to the C default? From the manual:
-									 * "If envp is NULL, the child inherits its
-									 * parent'senvironment."
-									 * If I'm wrong here, we somehow have to set
-									 * the locales here.
-									 */
+	/* We change the LC_ALL variable temporarily and clean up afterwards */
+	if ((old_locale = g_getenv("LC_ALL")) == NULL) old_locale = "";
+	g_setenv("LC_ALL","C",TRUE);
 
 	if (!g_spawn_async_with_pipes (NULL,						/* Working directory */
 								   argv,						/* Argument vector */
-								   envp,						/* Environment */
+								   NULL,						/* Inherited environment */
 								   G_SPAWN_DO_NOT_REAP_CHILD,	/* Flags */
 								   NULL,						/* Child setup */
 								   NULL,						/* Data to child setup */
@@ -200,9 +194,13 @@
 
 		/* An error occured */
 		free_passwd_resources (pdialog);
+		/* Reset LC_ALL */
+		g_setenv("LC_ALL",old_locale,TRUE);
 
 		return FALSE;
 	}
+	/* Reset LC_ALL */
+	g_setenv("LC_ALL",old_locale,TRUE);
 
 	/* 2>&1 */
 	if (dup2 (my_stderr, my_stdout) == -1) {
