localisation/init.lua

38 lines
1.1 KiB
Lua

-- Minetest 0.4 mod: localisation
-- See README.txt for licensing and other information.
-- LOCALISATION
if minetest.setting_get("language") == nil then
minetest.setting_set("language", "EN")
end
function translate(label_list,msg_label,...)
local function translation(label_list,language,msg_label,...)
local msg = label_list[language][msg_label]
local args = {...}
for key,arg in ipairs(args) do
msg = string.gsub(msg, "%$"..key.."", arg)
end
return msg
end
local function err(language,msg_label)
return "Translate("..language..","..msg_label..") = No translations available"
end
local language = minetest.setting_get("language") -- has previously been defined as EN if not set
local fallback = "EN"
if label_list[language] == nil then
-- Fallback on english
language = fallback
if label_list[language] == nil then
return
end err(language,msg_label)
else
if label_list[language][msg_label] == nil then
if language == fallback then
return err(language,msg_label)
else
return translation(label_list,fallback,msg_label,...)
end
end
end
return translation(label_list,language,msg_label,...)
end