void state_lang_menu(struct i_fn_args *a) { struct dfui_form *f; struct dfui_response *r; int done = 0; char *id; int cancelled = 0; while (!done) { f = dfui_form_create( "main_menu", _("Select Language"), _("Please select the language you wish you use."), "", "p", "role", "menu", "a", "default", "English", "English Standard Default", "", "a", "ru", "Russian", "Russian KOI8-R", "", NULL ); if (!dfui_be_present(a->c, f, &r)) abort_backend(); id = aura_strdup(dfui_response_get_action_id(r)); if (strcmp(id, "default") == 0) { state = state_welcome; return; } else { state = state_welcome; done = 1; } dfui_form_free(f); dfui_response_free(r); } /* set keymap, scrnmap, fonts */ if (!set_lang_syscons(id)) return; /* set envars */ if (!set_lang_envars(id)) return; dfui_be_set_global_setting(a->c, "lang", id, &cancelled); /* XXX if (!cancelled) ... ? */ /* let gettext know about changes */ ++_nl_msg_cat_cntr; }
static int lua_dfui_set_global_setting(lua_State *L) { struct dfui_connection *c; const char *key, *value; int cancelled; c = lua_check_dfui_connection(L, 1); key = luaL_checkstring(L, 2); value = luaL_checkstring(L, 3); dfui_be_set_global_setting(c, key, value, &cancelled); lua_pushnumber(L, cancelled); return(1); }