Excel 转 Json 、Node.js实现(应用场景:i18n国际化)
// 导入模块
const xlsx = require('xlsx');
const i18n = require('i18n');
const fs = require('fs');
const path = require('path');
// 设置i18n的配置项
i18n.configure({
locales: ['en', 'zh-cn'], // 支持的语言列表
directory: __dirname + '/locales', // 语言文件所在目录
defaultLocale: 'en', // 默认语言
queryParameter: 'lang', // URL中用于语言切换的查询参数
autoReload: true, // 是否自动重载语言文件
updateFiles: false // 是否更新语言文件
});
// 从Excel文件读取数据并转换为JSON对象
const excelToJson = (filePath) => {
// 读取Excel文件
const workbook = xlsx.readFile(filePath);
// 获取第一个工作表
const sheetName = workbook.SheetNames[0];
const sheet = workbook.Sheets[sheetName];
// 将工作表转换为JSON对象
const jsonData = xlsx.utils.sheet_to_json(sheet);
return jsonData;
};
// 将JSON对象保存为语言文件
const saveJsonToLocale = (jsonData, locale) => {
const filePath = path.join(__dirname, 'locales', `${locale}.json`);
const fileContent = JSON.stringify(jsonData, null, 2); // 格式化为可读的JSON
fs.writeFileSync(filePath, fileContent, 'utf-8');
};
// 主函数
const main = () => {
// 读取Excel文件并转换为JSON
const jsonData = excelToJson('translations.xlsx');
// 遍历语言列表,保存每种语言的JSON文件
i18n.configure.locales.forEach(locale => {
saveJsonToLocale(jsonData.map(row => ({ [locale]: row[locale] })), locale);
});
};
// 执行主函数
main();
这段代码首先导入了必要的模块,然后配置了i18n模块的选项。接着定义了从Excel文件读取数据并转换为JSON对象的函数excelToJson
,以及将JSON对象保存为语言文件的函数saveJsonToLocale
。最后,主函数main
执行这些操作,将Excel文件中的翻译数据按不同语言保存为JSON文件。
评论已关闭