项目背景
- 项目需要做国际化,接手任务时,之前已经做过了英语的国际化处理,本次需要做韩语的国际化
- 产品给的是翻译的韩语Excel文件
- 前端项目需要的是一一对应的json文件
解决方案分析
- 了解之前的实现方案:产品提供国际化的词条对应excel,前端需要对照一个一个替换,之前同事都是用的excel直接搜索key替换,手动一个一个替换,容易出错,且工作量巨大,ctrl + C / V / F 手得麻了,典型得重复性复制粘贴
容我思考一下国际化替换词条工作的可行方案
- 第一种,反正翻译的人也是要翻译的,不如流程改成,一开始前端就给了json,翻译的人直接翻译记录到json,这样同时避免了一定的人工遗漏问题
- 第二种,接手任务的时候,事已至此,给的就是Excel 那就想想咋替换快
具体分析思路&操作如下
- 首先 去Excel里搜索key再复制可就费劲多了,不好用,起码得在编辑器里看多好用
- 于是想到得第一步:转换excel文件为json ,不然也太难用了还要去excel里搜索复制粘贴,网上一搜就有免费的 :https://products.aspose.app/cells/zh/conversion/excel-to-json#google_vignette
- 然后,一个一个替换key也太费劲了,那不如写个脚本替换多好
- 实现代码如下:
const fs = require('fs');
const path = require('path');
const zhPath = path.join(__dirname, 'CHS.json');
const koPath = path.join(__dirname, 'ko.json');
const outputPath = path.join(__dirname, 'ko_with_zh_keys.json');
fs.readFile(zhPath, 'utf8', (err, zhData) => {
if (err) {
console.error('无法读取 CHS.json 文件:', err);
return;
}
fs.readFile(koPath, 'utf8', (err, koData) => {
if (err) {
console.error('无法读取 ko.json 文件:', err);
return;
}
const zhJson = JSON.parse(zhData);
let koData2 = JSON.parse(koData);
const resultJson = {};
for (const key in zhJson) {
let target = koData2.filter(item => item?.Code === key);
if (target[0]) {
resultJson[key] = target[0]['desc'];
} else {
resultJson[key] = zhJson[key];
console.warn(`ko.json 中缺少 key: ${key}`);
}
}
fs.writeFile(outputPath, JSON.stringify(resultJson, null, 2), 'utf8', (err) => {
if (err) {
console.error('无法写入输出文件:', err);
} else {
console.log('key 替换完成,输出文件路径:', outputPath);
}
});
});
});