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_lang_envars(lua_State *L) { struct dfui_connection *c; const char *id; int result; c = lua_check_dfui_connection(L, 1); /* although note: not used */ id = luaL_checkstring(L, 2); result = set_lang_envars(id); lua_pushnumber(L, result); return(1); }