td-octopus 0.0.21 → 0.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cmds/getTransExcel.js +9 -0
- package/n.xls +0 -0
- package/o.xls +0 -0
- package/package.json +1 -1
- package/src/extract/getLangData.js +3 -0
- package/src/translateExcel/index.js +55 -0
- package/xlsx.js +35 -0
package/n.xls
ADDED
|
Binary file
|
package/o.xls
ADDED
|
Binary file
|
package/package.json
CHANGED
|
@@ -23,6 +23,9 @@ function getLangData(fileName) {
|
|
|
23
23
|
*/
|
|
24
24
|
function getLangJson(fileName) {
|
|
25
25
|
const fileContent = fs.readFileSync(fileName, { encoding: 'utf8' });
|
|
26
|
+
if(!fileContent) {
|
|
27
|
+
return {}
|
|
28
|
+
}
|
|
26
29
|
let obj = fileContent.match(/export\s*default\s*({[\s\S]+);?$/)[1];
|
|
27
30
|
obj = obj.replace(/\s*;\s*$/, '');
|
|
28
31
|
let jsObj = {};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Description: 翻译
|
|
3
|
+
* @Author: 郑泳健
|
|
4
|
+
* @Date: 2023-10-12 10:04:22
|
|
5
|
+
* @LastEditors: 郑泳健
|
|
6
|
+
* @LastEditTime: 2023-10-12 10:09:37
|
|
7
|
+
*/
|
|
8
|
+
const {
|
|
9
|
+
syncFiles,
|
|
10
|
+
otpPath,
|
|
11
|
+
flatObject,
|
|
12
|
+
getAdjustLangObjAndAddList,
|
|
13
|
+
generateExcel,
|
|
14
|
+
rewriteFiles,
|
|
15
|
+
} = require('../utils/translate');
|
|
16
|
+
const syncLang = require('../utils/syncLang')
|
|
17
|
+
const { getProjectConfig } = require('../utils/index')
|
|
18
|
+
const ora = require('ora');
|
|
19
|
+
const { OCTOPUS_CONFIG_FILE } = require('../utils/const')
|
|
20
|
+
|
|
21
|
+
const spinner = ora('开始translate');
|
|
22
|
+
|
|
23
|
+
// 同步不同的语言包
|
|
24
|
+
function index() {
|
|
25
|
+
(async () => {
|
|
26
|
+
const otpConfig = getProjectConfig()
|
|
27
|
+
const distLang = otpConfig && otpConfig.distLangs
|
|
28
|
+
const baiduApiKey = otpConfig && otpConfig.baiduApiKey
|
|
29
|
+
|
|
30
|
+
if (!Array.isArray(distLang)) {
|
|
31
|
+
console.log(`请配置${OCTOPUS_CONFIG_FILE}里面的distLangs`)
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
spinner.start('正在同步文件')
|
|
35
|
+
await syncFiles(distLang);
|
|
36
|
+
spinner.succeed('同步文件成功')
|
|
37
|
+
|
|
38
|
+
const zhCN = syncLang('zh-CN');
|
|
39
|
+
const zhCNFlat = flatObject(zhCN);
|
|
40
|
+
const enUS = syncLang('en-US')
|
|
41
|
+
const enUSFlat = flatObject(enUS);
|
|
42
|
+
|
|
43
|
+
// 删除掉多余的key,增加新的key,同时提取没有翻译过的key的列表
|
|
44
|
+
const { allList } = await getAdjustLangObjAndAddList('en-US', enUSFlat, zhCNFlat, null, spinner);
|
|
45
|
+
spinner.succeed('同步文件的key成功')
|
|
46
|
+
spinner.start(`正在生成${'en-US'} excel`)
|
|
47
|
+
// 生成excel
|
|
48
|
+
generateExcel(allList, otpPath + '/' + 'en-US', 'en-US');
|
|
49
|
+
spinner.succeed('生成成功')
|
|
50
|
+
})()
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
module.exports = {
|
|
54
|
+
index
|
|
55
|
+
}
|
package/xlsx.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const { read, utils, readFile, writeFile } = require('xlsx');
|
|
2
|
+
|
|
3
|
+
const wb = readFile('./n.xls');
|
|
4
|
+
const ws = wb.Sheets[wb.SheetNames[0]]; // get the first worksheet
|
|
5
|
+
const data = utils.sheet_to_json(ws); // generate objects
|
|
6
|
+
|
|
7
|
+
const old = readFile('./o.xls');
|
|
8
|
+
const oldws = old.Sheets[old.SheetNames[0]]; // get the first worksheet
|
|
9
|
+
const olddata = utils.sheet_to_json(oldws); // generate objects
|
|
10
|
+
for (let index = 0; index < data.length; index++) {
|
|
11
|
+
const element = data[index];
|
|
12
|
+
const cun = olddata.find(res => {
|
|
13
|
+
return res['中文'] === element['中文'] && res['需要翻译的字段'] === element['需要翻译的字段']
|
|
14
|
+
})
|
|
15
|
+
const cun2 = olddata.find(res => {
|
|
16
|
+
return res['中文'] === element['中文']
|
|
17
|
+
})
|
|
18
|
+
if (cun) {
|
|
19
|
+
element['人工翻译'] = cun['人工翻译']
|
|
20
|
+
} else if (cun2) {
|
|
21
|
+
element['人工翻译'] = cun2['人工翻译']
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const header = [
|
|
26
|
+
['需要翻译的字段', "中文", '百度翻译', '人工翻译'],
|
|
27
|
+
]
|
|
28
|
+
const body = data.map(x => ([x["需要翻译的字段"], x["中文"], x["百度翻译"], x["人工翻译"],]))
|
|
29
|
+
body.unshift(...header);
|
|
30
|
+
const workbook = utils.book_new();
|
|
31
|
+
var sheet = utils.aoa_to_sheet(body);
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
utils.book_append_sheet(workbook, sheet, 'sheet名称'); // 向 workbook 中添加 sheet
|
|
35
|
+
writeFile(workbook, 'xxx_translate_en-US.xls'); // 导出 workbook
|