首先简单梳理一下多语言的管理流程
- 开发人员填写key和文本后,把文件交给翻译人员,文件可能是csv、excel、json、xml等
- 翻译人员翻译好,在交还给开发,开发需要导出平台对应的格式。比如 json、xml、strings(多格式支持)
- 文件可能需要版本管理,方便回顾开发、还是翻译的锅
基于上述流程,需求转变成需要一个在线的表格(google-sheet、vika)来完成开发、翻译的同步协作功能。并且表格支持API获取相应的数据,转换成想要的格式。 由于google-sheet 配置麻烦、还有翻墙的原因。最终选择了维格(vika)表. 维格表本身支持共享、多人同步、编辑历史、API,接下来数据转化就是一个麻烦点,于是我基于维格表API开发一个 intl_vika 翻译导出命令行工具。
核心如图所示
用法
Github
项目地址 github.com/guzishiwo/i… 欢迎star、pr
> python intl_vika/main.py --help
Usage: main.py [OPTIONS] COMMAND [ARGS]...
intl_vika 是一个用vika的表格来管理多语言资源的工具
模板参考地址:https://vika.cn/share/shrotLJ6naeinkBELMH3M
Options:
--help Show this message and exit.
Commands:
json json格式编码 (Web、Flutter)
sql [Todo] sql格式编码
strings strings格式编码 (iOS)
xml xml格式编码 (Android)
表格例子
Key [code=key] | Chinese [code=zh] | English [code=en] | Japanese [code=ja] |
---|---|---|---|
hello | 你好 | hello | こんにちは |
world | 世界 | world | 世界 |
home.message | 今天天气如何? | How is the weather like today? | 今日の天気はどうですか? |
json 格式命令
python3 intl_vika/main.py json --token=填写你的token --sheet=填写你的sheetid --output-dir=./example/json/
# 输出格式
example/json
├── en.json
├── ja.json
└── zh.json
strings 格式命令
python3 intl_vika/main.py strings --token=填写你的token --sheet=填写你的sheetid --output-dir=./example/strings/
# 输出格式
.
├── en.lproj
│ └── Localizable.strings
└── zh-Hans.lproj
└── Localizable.strings
### xml 格式命令
```shell
python3 intl_vika/main.py xml --token=填写你的token --sheet=填写你的sheetid --output-dir=./example/xml/
# 输出格式
example/xml
├── en.xml
├── ja.xml
└── zh.xml
元数据
表格中需要解析的列,必须包含以下的格式
表头支持的格式
[code=key] | 标识存储key的列 |
---|---|
[code={Locale}] | 标识存储本地化的列 |
Code={key} 列的数据
JSON 模式 key默认支持以点分割,导出的时候以map嵌套的方式展开
{"hello.world" : "hello world!"}
=>
{"hello": {"world": "hello world!"}}