助力国际化 使用node读取翻译好的xlsx生成i18n文件
xlsx文件格式示例
完全体代码
同样的,引用了node-xlsx的依赖,注意安装
js
// 读取文件的地址
const path = './test.xlsx'
const fs = require('fs')
const xlsx = require('node-xlsx')
try {
// 读取文件并解析
const datas = xlsx.parse(fs.readFileSync(path))
// 判断是否有数据
if (datas[0]?.data?.length) {
const [{ data }] = datas
console.debug(`获取到${data.length}条数据`)
// 简单的判断下是否有重复的key, 若有则抛出错误
// 想知道哪个key重复 那就只有遍历了,这里偷个懒
if (new Set(data.map((arr) => arr[0])).size !== data.length) {
throw new Error('存在重复的key!')
}
// 遍历数据 格式化字符串(具体格式看项目配置)
let langCn = ''
let langEn = ''
data.forEach((arr) => {
langCn += `${arr[0]}:'${arr[1]}',`
langEn += `${arr[0]}:'${arr[2]}',`
})
langCn = `export default{message:{${langCn}}}`
langEn = `export default{message:{${langEn}}}`
// 输出文件
try {
fs.accessSync('./lang')
} catch (err) {
fs.mkdirSync('./lang')
}
fs.writeFileSync('lang/zh.js', langCn)
fs.writeFileSync('lang/en.js', langEn)
console.debug('i18n文件生成成功!')
} else {
throw new Error('读取的xlsx文件中没有数据')
}
} catch (err) {
console.debug(err)
}