Index: gui/greeter/greeter_parser.c
===================================================================
--- gui/greeter/greeter_parser.c	(revision 4687)
+++ gui/greeter/greeter_parser.c	(working copy)
@@ -1238,16 +1238,15 @@ parse_state_text (xmlNodePtr node,
 static gint
 is_current_locale (const char *lang)
 {
-  const GList *l = ve_i18n_get_language_list ("LC_MESSAGES");
-  int score = 0;
-  
-  while (l != NULL)
+  const gchar * const *langs;
+  gint score;
+
+  langs = g_get_language_names ();
+
+  for (score = 0; langs[score] != NULL; score++)
     {
-      if (strcmp (l->data, lang) == 0)
+      if (strcmp (langs[score], lang) == 0)
 	return score;
-
-      l = l->next;
-      score++;
     }
   return 1000;
 }
Index: gui/gdmconfig.c
===================================================================
--- gui/gdmconfig.c	(revision 4687)
+++ gui/gdmconfig.c	(working copy)
@@ -402,9 +402,10 @@ gdm_config_get_string (gchar *key)
 static gchar *
 _gdm_config_get_translated_string (gchar *key, gboolean reload, gboolean *changed)
 {
-        const GList *li;
-        char *newkey;
-        char *def;
+	const gchar * const *langs;
+	gchar *newkey;
+	gchar *def;
+	gint i;
 
 	/* Strip key */
 	newkey = g_strdup (key);
@@ -412,10 +413,10 @@ _gdm_config_get_translated_string (gchar
 	if (def != NULL)
 		*def = '\0';
 
-	for (li = ve_i18n_get_language_list ("LC_MESSAGES");
-	     li != NULL;
-	     li = li->next) {
-                gchar *full = g_strdup_printf ("%s[%s]", newkey, (char *)li->data);
+	langs = g_get_language_names ();
+
+	for (i = 0; langs[i] != NULL; i++) {
+                gchar *full = g_strdup_printf ("%s[%s]", newkey, langs[i]);
 
 		/*
 		 * Pass TRUE for last argument so it doesn't print errors for
