多语言是app出海必须进行适配的,通常我们每一期多语言文本不是很多的情况下可以手动添加,但是对于首次进行多语言设置,手动添加无疑让每一个开发头大
Excel转.arb
安装node环境 根据平台 自行安装即可
1、先看文件结构
2、步骤
1、cd到项目根目录、使用npm init 命令一直回车生成package.json
2、执行 npm install node-xlsx 添加excel转json依赖库
3、执行 npm install shelljs 添加js 执行shell命令依赖库
3、Excel文件格式
4、生成.arb
1、cd到脚本文件夹
2、执行 node transform_script.js
3、查看有没有报错,无报错就可以直接使用了
5、脚本
const xlsx = require('node-xlsx');
const path = require('path');
const fs = require('fs');
const shell = require('shelljs')
//要生成的arb文件名和数据,文件名需改成自己项目中相关arb文件名字
const LangData = [
{
fileName: "intl_zh_TW.arb",
data: {}
},
{
fileName: "intl_zh_HK.arb",
data: {}
},
{
fileName: "intl_en_US.arb",
data: {}
},
{
fileName: "intl_ko_KR.arb",
data: {}
},
{
fileName: "intl_ja_JP.arb",
data: {}
}
]
main()
function main() {
initData()
const workSheetsFromFile = xlsx.parse(path.resolve(__dirname, './本地化.xlsx'));
dealSheet(workSheetsFromFile)
LangData.forEach(item => {
let filePath = path.resolve(__dirname, `./${item.fileName}`)
try {
//将json数据写入到对应的arb文件
fs.writeFileSync(filePath, JSON.stringify(item.data, null, 2), { encoding: 'utf8', flag: 'w' })
} catch (error) {
console.log(error);
}
});
//执行flutter命令,将arb文件生成I10n.dart
// shell.exec('flutter pub global run intl_utils:generate')
}
function initData() {
//创建arb文件
for (langKey in LangData) {
let data = LangData[langKey];
let filePath = path.resolve(__dirname, `./${data.fileName}`)
try {
let fileData = fs.readFileSync(filePath, { encoding: 'utf-8' })
data.data = JSON.parse(fileData);
} catch (e) {
// console.error(e)
}
}
}
//获取excel文件中的数据
function dealSheet(workSheetsFromFile) {
workSheetsFromFile.map(sheet => {
dealRow(sheet);
})
}
function dealRow(sheet) {
// console.log("sheet",sheet);
//将excel中的数据按照列放到:LangData 中的data中
let langList = sheet.data.filter(column => column.length);
if (Array.isArray(langList)) {
LangData.map((item, index) => {
langList.map((row) => {
const key = row[0]
const value = row[index + 1]
if (value && value.length) {
item.data[key] = value
}
// loadData(row, rowIndex, langList)
})
});
}
}
.arb 转 Excel
一般我们开发过程中 会先添加到.arb文件相应的key,最后 才进行翻译,此时需要导出为excel供翻译人员进行翻译
1、文件结构
2、执行脚本
python3 laungvage.py
3、脚本
过程中若是没有 pandas 请自行安装即可
import pandas as pd
import json
# JSON data to be converted to Excel
#data = {
# "reply_expand_comments": "展開{value}條評論",
# "profile_post_create": "發佈一則動態,讓大家看到你"
#}
with open('app_zh_Hant.arb', 'r') as file:
# 读取并解析JSON数据
data = json.load(file)
# Creating a DataFrame from the provided dictionary
df = pd.DataFrame(list(data.items()), columns=["Key", "Value"])
# Saving the DataFrame to an Excel file
file_path = 'translated_strings.xlsx'
df.to_excel(file_path, index=False)
print(f"Excel file saved to {file_path}")