Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[CSM] Fix and improve minetest.get_language()
Previously this method would accidentally reset the locale
and break everything.
  • Loading branch information
sfan5 committed Nov 11, 2019
1 parent 2c4cf50 commit c44318a
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 9 deletions.
17 changes: 11 additions & 6 deletions clientmods/preview/init.lua
Expand Up @@ -9,13 +9,18 @@ core.register_on_shutdown(function()
end)
local id = nil

local server_info = core.get_server_info()
print("Server version: " .. server_info.protocol_version)
print("Server ip: " .. server_info.ip)
print("Server address: " .. server_info.address)
print("Server port: " .. server_info.port)
do
local server_info = core.get_server_info()
print("Server version: " .. server_info.protocol_version)
print("Server ip: " .. server_info.ip)
print("Server address: " .. server_info.address)
print("Server port: " .. server_info.port)

print("CSM restrictions: " .. dump(core.get_csm_restrictions()))
print("CSM restrictions: " .. dump(core.get_csm_restrictions()))

local l1, l2 = core.get_language()
print("Configured language: " .. l1 .. " / " .. l2)
end

mod_channel = core.mod_channel_join("experimental_preview")

Expand Down
4 changes: 3 additions & 1 deletion doc/client_lua_api.txt
Expand Up @@ -634,7 +634,9 @@ Minetest namespace reference
the trailing separator. This is useful to load additional Lua files
contained in your mod:
e.g. `dofile(minetest.get_modpath(minetest.get_current_modname()) .. "stuff.lua")`
* `minetest.get_language()`: returns the currently set gettext language.
* `minetest.get_language()`: returns two strings
* the current gettext locale
* the current language code (the same as used for client-side translations)
* `minetest.get_version()`: returns a table containing components of the
engine version. Components:
* `project`: Name of the project, eg, "Minetest"
Expand Down
9 changes: 7 additions & 2 deletions src/script/lua_api/l_client.cpp
Expand Up @@ -230,9 +230,14 @@ int ModApiClient::l_get_node_or_nil(lua_State *L)

int ModApiClient::l_get_language(lua_State *L)
{
char *locale = setlocale(LC_ALL, "");
char *locale = setlocale(LC_MESSAGES, NULL);
std::string lang = gettext("LANG_CODE");
if (lang == "LANG_CODE")
lang = "";

lua_pushstring(L, locale);
return 1;
lua_pushstring(L, lang.c_str());
return 2;
}

int ModApiClient::l_get_wielded_item(lua_State *L)
Expand Down

0 comments on commit c44318a

Please sign in to comment.