最近组里排了一个需求,对老项目进行国际化改造。让我干起了搬运翻译的活,主要维护en-US.json、zh-CN.json。屏幕小两个文件来回切换着写,真是麻烦。有时候一不留神还整劈叉了,zh-CN里老是忘记同步加key了。
于是想能不能用nodejs写个脚本,让我只关心en-US,自动同步生成zh-CN呢?
主要思路是: 先读取到en-us中的文件内容,然后生成一个新的内容写入到zh-cn中,最好能在en-us文件修改的时候就同步过去。
于是有了下面的尝试:
// 用于监听 en-US.json 文件的变化,自动同步到 zh-CN.json
console.log("正在监听 en-US.json 文件的变化");
const fs = require("fs");
// 定义要读取的 en-US.json 的路径
const enUSPath = "./src/locales/en-US.json";
// 定义要写入的 zh-CN.json 的路径
const zhCNPath = "./src/locales/zh-CN.json";
fs.watchFile(enUSPath, (curr, prev) => {
// 读取en-US.json 中的内容
fs.readFile(enUSPath, "utf-8", (err, data) => {
if (err) {
console.error(err);
return;
}
const enUS = JSON.parse(data); // 转换为对象
const zhCN = {}; // 定义一个空对象,用于存储转换后的数据
// eslint-disable-next-line guard-for-in
for (const key in enUS) {
zhCN[key] = key;
}
// 写入zh-CN.json
fs.writeFile(zhCNPath, JSON.stringify(zhCN, null, 2), "utf-8", (err) => {
if (err) {
console.error(err);
return;
}
console.log("zh-CN.json 同步成功");
});
});
});
跑起来一试,很稳。