Files
Techmino/Zframework/languages.lua
MrZ626 7393b3c716 新语言:机翻
语言模块升级
支持更自由地添加语言(不再使用语言序号)
给getTip设置metatable的代码移出模块
2021-09-22 11:03:51 +08:00

50 lines
1.3 KiB
Lua

local LANG={}
--ONLY FIRST CALL MAKE SENSE
--Create LANG.get() and LANG.addScene()
function LANG.init(defaultLang,langList,publicText,pretreatFunc)
local function _langFallback(T0,T)
for k,v in next,T0 do
if type(v)=='table'and not v.refuseCopy then--refuseCopy: just copy pointer, not contents
if not T[k]then T[k]={}end
if type(T[k])=='table'then
_langFallback(v,T[k])
end
elseif not T[k]then
T[k]=v
end
end
end
--Set public text
for _,L in next,langList do
for key,list in next,publicText do L[key]=list end
end
--Fallback to default language
for name,L in next,langList do
if name~=defaultLang then
_langFallback(langList[L.fallback or defaultLang],L)
end
end
--Custom pretreatment for each language
for _,L in next,langList do
pretreatFunc(L)
end
function LANG.get(l)
return langList[l]
end
function LANG.addScene(name)
for _,L in next,langList do
if L.WidgetText and not L.WidgetText[name]then
L.WidgetText[name]={back=L.back}
end
end
end
function LANG.init()end
end
return LANG