+static gchar *
+get_language ()
+{
+ GtkTreeIter iter;
+ gchar *language;
+
+ if (!gtk_combo_box_get_active_iter (language_combo, &iter))
+ return NULL;
+
+ gtk_tree_model_get (gtk_combo_box_get_model (language_combo), &iter, 1, &language, -1);
+
+ return language;
+}
+
+static void
+set_language (const gchar *language)
+{
+ GtkTreeModel *model = gtk_combo_box_get_model (language_combo);
+ GtkTreeIter iter;
+ const gchar *default_language = NULL;
+
+ if (language && gtk_tree_model_get_iter_first (model, &iter))
+ {
+ do
+ {
+ gchar *s;
+ gboolean matched;
+ gtk_tree_model_get (model, &iter, 1, &s, -1);
+ matched = strcmp (s, language) == 0;
+ g_free (s);
+ if (matched)
+ {
+ gtk_combo_box_set_active_iter (language_combo, &iter);
+ return;
+ }
+ } while (gtk_tree_model_iter_next (model, &iter));
+ }
+
+ /* If failed to find this language, then try the default */
+ if (lightdm_get_language ())
+ default_language = lightdm_language_get_code (lightdm_get_language ());
+ if (default_language && g_strcmp0 (default_language, language) != 0)
+ set_language (default_language);
+}
+