require("Editor.CompileFile") require("luaScript.Tools.Widgets.UIWidget") -- 收集languageCN.lua里的语言 local function collectLanguages(transDict) local Languages = require("languageCN"); local newLn = {}; for i , v in pairs(Languages) do print("收集Lang文本" , v); local translated = transDict[XmlTranslator:collect(v)]; if translated then newLn[i] = XmlTranslator:translate(v , translated); else newLn[i] = v; end end for i , v in pairs(newLn) do Languages[i] = v; end table.saveFile(Languages , "luaScript/Config/Languages/languageEN.lua"); end -- 收集一个语言片 local function collectConfig(transDict , record , fieldName , translator) local v = record[fieldName]; if v then local translated = transDict[translator:collect(v)]; if translated then record[fieldName] = translator:translate(v , translated); end end end -- 收集一个配置 local function collectLanguageConfig(transDict , config) local desc = config:getConfigDesc(); print("正在收集配置的语言:" , desc.XMLFile); if desc.Translation then for i , v in pairs(desc.Translation) do print("正在收集字段:" , i); for ii , vv in pairs(config) do if desc.SecondKeyName then for iii , vvv in pairs(vv) do collectConfig(transDict , vvv , i , v); end else collectConfig(transDict , vv , i , v); end end end saveLuaXMLConfig(config , desc, "dataconfig/" .. desc.XMLFile .. ".lua"); end end -- 收集一个ui local function collectSingleUI(transDict , ui) if ui.applyDict then ui:applyDict(transDict); end end -- 收集一个ui local function collectUI(transDict , ui) collectSingleUI(transDict , ui); -- 递归所有子 for i , v in pairs(ui:getChildren()) do collectUI(transDict , v); end end -- 收集所有UI的语言 local function collectUILanguage(transDict) local function saveui(fileName) -- 返回pathName , baseName , ext local pathName , baseName , ext = string.splitFilename(fileName); print(pathName , baseName , ext); if ext ~= "ui" then return false; end print("\n\n"); print("正在加载UI:" , fileName); local ui = cc.StreamObject:loadFromFile(fileName); collectUI(transDict , ui); ui:recalcAllPList(); ui:saveToFile(fileName); end visitPath("res/ui" , saveui); end -- 载入字典文件,返回字典表 local function loadDict(dictFile) local dict = {}; local function onStartElement(name , atts) if name == "item" then dict[atts.source] = atts.target; end end local result , err = tiny.load(dictFile , onStartElement); if not result then error(err); end return dict; end -- 生成所有语言 function applyDict(dictFile) -- initialize director local director = cc.Director:getInstance(); local glview = director:getOpenGLView(); if not glview then glview = cc.GLView:createWithRect("applyDict", {x=0,y=0,width=100,height=100}); director:setOpenGLView(glview); end local transDict = loadDict(dictFile) -- 加载xml loadAllXML() -- 生成所有配置的语言 for i , v in pairs(app.config) do if i ~= "Setting" and i ~= "RomSetting" then local desc = v:getConfigDesc(); local filename = desc.XMLFile; collectLanguageConfig(transDict , v); end end -- 收集languageCN.lua里的语言 collectLanguages(transDict); collectUILanguage(transDict); end