+static const char *lang_get_lang_name(struct lang_screen *screen)
+{
+ struct lang *lang;
+ int idx;
+
+ idx = widget_select_get_value(screen->widgets.lang_f);
+
+ /* Option -1 ("Unknown") can only be populated from the current
+ * language, so there's no change here */
+ if (idx == -1)
+ return NULL;
+
+ lang = &languages[idx];
+
+ return lang->name;
+}
+
+static int lang_process_form(struct lang_screen *screen)
+{
+ struct config *config;
+ const char *lang;
+ int rc;
+
+ config = config_copy(screen, screen->cui->config);
+
+ lang = lang_get_lang_name(screen);
+
+ if (!lang || (config->lang && !strcmp(lang, config->lang)))
+ return 0;
+
+ config->lang = talloc_strdup(screen, lang);
+
+ config->safe_mode = false;
+ rc = cui_send_config(screen->cui, config);
+ talloc_free(config);
+
+ if (rc)
+ pb_log("cui_send_config failed!\n");
+ else
+ pb_debug("config sent!\n");
+
+ return 0;
+}
+