mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Add support for translating content titles and descriptions (#12208)
This commit is contained in:
parent
57de599a29
commit
b4be483d3e
12 changed files with 252 additions and 47 deletions
|
@ -363,6 +363,9 @@ int ModApiMainMenu::l_get_content_info(lua_State *L)
|
|||
lua_pushstring(L, spec.name.c_str());
|
||||
lua_setfield(L, -2, "name");
|
||||
|
||||
lua_pushstring(L, spec.title.c_str());
|
||||
lua_setfield(L, -2, "title");
|
||||
|
||||
lua_pushstring(L, spec.type.c_str());
|
||||
lua_setfield(L, -2, "type");
|
||||
|
||||
|
@ -383,6 +386,9 @@ int ModApiMainMenu::l_get_content_info(lua_State *L)
|
|||
lua_pushstring(L, spec.path.c_str());
|
||||
lua_setfield(L, -2, "path");
|
||||
|
||||
lua_pushstring(L, spec.textdomain.c_str());
|
||||
lua_setfield(L, -2, "textdomain");
|
||||
|
||||
if (spec.type == "mod") {
|
||||
ModSpec spec;
|
||||
spec.path = path;
|
||||
|
@ -432,8 +438,7 @@ int ModApiMainMenu::l_check_mod_configuration(lua_State *L)
|
|||
// Ignore non-string keys
|
||||
if (lua_type(L, -2) != LUA_TSTRING) {
|
||||
throw LuaError(
|
||||
"Unexpected non-string key in table passed to "
|
||||
"core.check_mod_configuration");
|
||||
"Unexpected non-string key in table passed to core.check_mod_configuration");
|
||||
}
|
||||
|
||||
std::string modpath = luaL_checkstring(L, -1);
|
||||
|
@ -472,7 +477,6 @@ int ModApiMainMenu::l_check_mod_configuration(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
|
||||
lua_newtable(L);
|
||||
|
||||
lua_pushboolean(L, modmgr.isConsistent());
|
||||
|
@ -500,7 +504,25 @@ int ModApiMainMenu::l_check_mod_configuration(lua_State *L)
|
|||
index++;
|
||||
}
|
||||
lua_setfield(L, -2, "satisfied_mods");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
int ModApiMainMenu::l_get_content_translation(lua_State *L)
|
||||
{
|
||||
GUIEngine* engine = getGuiEngine(L);
|
||||
sanity_check(engine != NULL);
|
||||
|
||||
std::string path = luaL_checkstring(L, 1);
|
||||
std::string domain = luaL_checkstring(L, 2);
|
||||
std::string string = luaL_checkstring(L, 3);
|
||||
std::string lang = gettext("LANG_CODE");
|
||||
if (lang == "LANG_CODE")
|
||||
lang = "";
|
||||
|
||||
auto *translations = engine->getContentTranslations(path, domain, lang);
|
||||
string = wide_to_utf8(translate_string(utf8_to_wide(string), translations));
|
||||
lua_pushstring(L, string.c_str());
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -1102,6 +1124,7 @@ void ModApiMainMenu::Initialize(lua_State *L, int top)
|
|||
API_FCT(get_games);
|
||||
API_FCT(get_content_info);
|
||||
API_FCT(check_mod_configuration);
|
||||
API_FCT(get_content_translation);
|
||||
API_FCT(start);
|
||||
API_FCT(close);
|
||||
API_FCT(show_keys_menu);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue