You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
3.3 KiB

  1. require("Editor.CompileFile")
  2. require("luaScript.Tools.Widgets.UIWidget")
  3. -- 收集languageCN.lua里的语言
  4. local function collectLanguages(transDict)
  5. local Languages = require("languageCN");
  6. local newLn = {};
  7. for i , v in pairs(Languages) do
  8. print("收集Lang文本" , v);
  9. local translated = transDict[XmlTranslator:collect(v)];
  10. if translated then
  11. newLn[i] = XmlTranslator:translate(v , translated);
  12. else
  13. newLn[i] = v;
  14. end
  15. end
  16. for i , v in pairs(newLn) do
  17. Languages[i] = v;
  18. end
  19. table.saveFile(Languages , "luaScript/Config/Languages/languageEN.lua");
  20. end
  21. -- 收集一个语言片
  22. local function collectConfig(transDict , record , fieldName , translator)
  23. local v = record[fieldName];
  24. if v then
  25. local translated = transDict[translator:collect(v)];
  26. if translated then
  27. record[fieldName] = translator:translate(v , translated);
  28. end
  29. end
  30. end
  31. -- 收集一个配置
  32. local function collectLanguageConfig(transDict , config)
  33. local desc = config:getConfigDesc();
  34. print("正在收集配置的语言:" , desc.XMLFile);
  35. if desc.Translation then
  36. for i , v in pairs(desc.Translation) do
  37. print("正在收集字段:" , i);
  38. for ii , vv in pairs(config) do
  39. if desc.SecondKeyName then
  40. for iii , vvv in pairs(vv) do
  41. collectConfig(transDict , vvv , i , v);
  42. end
  43. else
  44. collectConfig(transDict , vv , i , v);
  45. end
  46. end
  47. end
  48. saveLuaXMLConfig(config , desc, "dataconfig/" .. desc.XMLFile .. ".lua");
  49. end
  50. end
  51. -- 收集一个ui
  52. local function collectSingleUI(transDict , ui)
  53. if ui.applyDict then
  54. ui:applyDict(transDict);
  55. end
  56. end
  57. -- 收集一个ui
  58. local function collectUI(transDict , ui)
  59. collectSingleUI(transDict , ui);
  60. -- 递归所有子
  61. for i , v in pairs(ui:getChildren()) do
  62. collectUI(transDict , v);
  63. end
  64. end
  65. -- 收集所有UI的语言
  66. local function collectUILanguage(transDict)
  67. local function saveui(fileName)
  68. -- 返回pathName , baseName , ext
  69. local pathName , baseName , ext = string.splitFilename(fileName);
  70. print(pathName , baseName , ext);
  71. if ext ~= "ui" then
  72. return false;
  73. end
  74. print("\n\n");
  75. print("正在加载UI:" , fileName);
  76. local ui = cc.StreamObject:loadFromFile(fileName);
  77. collectUI(transDict , ui);
  78. ui:recalcAllPList();
  79. ui:saveToFile(fileName);
  80. end
  81. visitPath("res/ui" , saveui);
  82. end
  83. -- 载入字典文件,返回字典表
  84. local function loadDict(dictFile)
  85. local dict = {};
  86. local function onStartElement(name , atts)
  87. if name == "item" then
  88. dict[atts.source] = atts.target;
  89. end
  90. end
  91. local result , err = tiny.load(dictFile , onStartElement);
  92. if not result then
  93. error(err);
  94. end
  95. return dict;
  96. end
  97. -- 生成所有语言
  98. function applyDict(dictFile)
  99. -- initialize director
  100. local director = cc.Director:getInstance();
  101. local glview = director:getOpenGLView();
  102. if not glview then
  103. glview = cc.GLView:createWithRect("applyDict", {x=0,y=0,width=100,height=100});
  104. director:setOpenGLView(glview);
  105. end
  106. local transDict = loadDict(dictFile)
  107. -- 加载xml
  108. loadAllXML()
  109. -- 生成所有配置的语言
  110. for i , v in pairs(app.config) do
  111. if i ~= "Setting" and i ~= "RomSetting" then
  112. local desc = v:getConfigDesc();
  113. local filename = desc.XMLFile;
  114. collectLanguageConfig(transDict , v);
  115. end
  116. end
  117. -- 收集languageCN.lua里的语言
  118. collectLanguages(transDict);
  119. collectUILanguage(transDict);
  120. end