require("Editor.CompileFile") -- 收集languageCN.lua里的语言 local function collectLanguages(transDict) local Languages = require("languageCN"); for i , v in pairs(Languages) do print("收集Lang文本" , v); local trans = XmlTranslator:collect(v); transDict[trans] = ""; end end -- 收集一个语言片 local function collectConfig(transDict , record , fieldName , translator) local trans = translator:collect(record[fieldName]); if type(trans) ~= "string" then error("trans不是字符串" .. type(trans) .. tostring(trans)); end transDict[trans] = ""; 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 end end -- 保存到文件 local function saveXmlFile(transDict , dictFile) local f = io.open(dictFile , "wb"); for i , v in pairsByKeys(transDict)do f:write(i); f:write("\n"); end f:close(); end -- 收集一个ui local function collectSingleUI(transDict , ui) if ui.collectText then local result = ui:collectText(); for i , v in ipairs(result) do print("收集到UI语言:" , v); transDict[v] = ""; end 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); end visitPath("res/ui" , saveui); end -- 生成所有语言 function generateDict(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 -- 加载xml loadAllXML() local transDict = {}; -- 生成所有配置的语言 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); saveXmlFile(transDict , dictFile); end