Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

121 рядки
2.9 KiB

  1. require("Editor.CompileFile")
  2. -- 收集languageCN.lua里的语言
  3. local function collectLanguages(transDict)
  4. local Languages = require("languageCN");
  5. for i , v in pairs(Languages) do
  6. print("收集Lang文本" , v);
  7. local trans = XmlTranslator:collect(v);
  8. transDict[trans] = "";
  9. end
  10. end
  11. -- 收集一个语言片
  12. local function collectConfig(transDict , record , fieldName , translator)
  13. local trans = translator:collect(record[fieldName]);
  14. if type(trans) ~= "string" then
  15. error("trans不是字符串" .. type(trans) .. tostring(trans));
  16. end
  17. transDict[trans] = "";
  18. end
  19. -- 收集一个配置
  20. local function collectLanguageConfig(transDict , config)
  21. local desc = config:getConfigDesc();
  22. print("正在收集配置的语言:" , desc.XMLFile);
  23. if desc.Translation then
  24. for i , v in pairs(desc.Translation) do
  25. print("正在收集字段:" , i);
  26. for ii , vv in pairs(config) do
  27. if desc.SecondKeyName then
  28. for iii , vvv in pairs(vv) do
  29. collectConfig(transDict , vvv , i , v);
  30. end
  31. else
  32. collectConfig(transDict , vv , i , v);
  33. end
  34. end
  35. end
  36. end
  37. end
  38. -- 保存到文件
  39. local function saveXmlFile(transDict , dictFile)
  40. local f = io.open(dictFile , "wb");
  41. for i , v in pairsByKeys(transDict)do
  42. f:write(i);
  43. f:write("\n");
  44. end
  45. f:close();
  46. end
  47. -- 收集一个ui
  48. local function collectSingleUI(transDict , ui)
  49. if ui.collectText then
  50. local result = ui:collectText();
  51. for i , v in ipairs(result) do
  52. print("收集到UI语言:" , v);
  53. transDict[v] = "";
  54. end
  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. end
  79. visitPath("res/ui" , saveui);
  80. end
  81. -- 生成所有语言
  82. function generateDict(dictFile)
  83. -- initialize director
  84. local director = cc.Director:getInstance();
  85. local glview = director:getOpenGLView();
  86. if not glview then
  87. glview = cc.GLView:createWithRect("applyDict", {x=0,y=0,width=100,height=100});
  88. director:setOpenGLView(glview);
  89. end
  90. -- 加载xml
  91. loadAllXML()
  92. local transDict = {};
  93. -- 生成所有配置的语言
  94. for i , v in pairs(app.config) do
  95. if i ~= "Setting" and i ~= "RomSetting" then
  96. local desc = v:getConfigDesc();
  97. local filename = desc.XMLFile;
  98. collectLanguageConfig(transDict , v);
  99. end
  100. end
  101. -- 收集languageCN.lua里的语言
  102. collectLanguages(transDict);
  103. collectUILanguage(transDict);
  104. saveXmlFile(transDict , dictFile);
  105. end