Mô đun:I18n
Giao diện
Mô đun này được đánh giá là alpha. Nó đã sẵn sàng cho đầu vào của bên thứ ba và có thể được sử dụng trên một vài trang để xem có vấn đề gì phát sinh không, nhưng nên xem. Đề xuất cho các tính năng mới hoặc thay đổi trong cơ chế đầu vào và đầu ra của mô đun đều được chào đón. |
Sử dụng
{{#invoke:I18n|function_name}}
local p = {}
-- Credit to http://stackoverflow.com/a/1283608/2644759
-- cc-by-sa 3.0
local function tableMerge(t1, t2, overwrite)
for k,v in pairs(t2) do
if type(v) == "table" and type(t1[k]) == "table" then
-- since type(t1[k]) == type(v) == "table", so t1[k] and v is true
tableMerge(t1[k], v, overwrite) -- t2[k] == v
else
if overwrite or t1[k] == nil then t1[k] = v end
end
end
return t1
end
function p.loadI18n(name, i18n_arg)
local exist, res = pcall(require, name)
if exist and next(res) ~= nil then
if i18n_arg then
tableMerge(i18n_arg, res.i18n, true)
elseif type(i18n) == "table" then
-- merge to global i18n
tableMerge(i18n, res.i18n, true)
end
end
end
function p.loadI18nFrame(frame, i18n_arg)
p.loadI18n(frame:getTitle().."/i18n", i18n_arg)
end
return p