开源跨端多语言管理解决方案

354

首先简单梳理一下多语言的管理流程

  1. 开发人员填写key和文本后,把文件交给翻译人员,文件可能是csv、excel、json、xml等
  2. 翻译人员翻译好,在交还给开发,开发需要导出平台对应的格式。比如 json、xml、strings(多格式支持)
  3. 文件可能需要版本管理,方便回顾开发、还是翻译的锅

基于上述流程,需求转变成需要一个在线的表格(google-sheet、vika)来完成开发、翻译的同步协作功能。并且表格支持API获取相应的数据,转换成想要的格式。 由于google-sheet 配置麻烦、还有翻墙的原因。最终选择了维格(vika)表. 维格表本身支持共享、多人同步、编辑历史、API,接下来数据转化就是一个麻烦点,于是我基于维格表API开发一个 intl_vika 翻译导出命令行工具。

核心如图所示 int_vika.png

用法

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!"}}