1. 持续本地化集成
传统的本地化集成,通常是需要在项目结束之后,才开始这项工作,这对于快速开发,限制了版本迭代,增加了整个项目控制的复杂性。
持续本地化集成(Continuous Localization Integration),遵循着持续化规则,以代码仓库为中心,自动析取所有需要本地化的字符串,同步到一个可视化的翻译平台,并将翻译平台的翻译结果同步会代码仓库,各部门分工协作,无缝配合,可以使整个项目的快速迭代,缩短版本开发周期。
2. 收费服务
支持收费服务
支持开源的免费服务
weblate托管在github
支持本地服务器安装,可自行安装托管代码
支持收费服务
支持开源的免费服务
提供从注册开始,两周的免费试用
试用期间可以体验所有功能
试用结束后,必须选择付费服务
3. 开源软件(免费)
- Mojito(Box)
Box公司开源的一个持续本地化平台
依靠开源社区完成主要的功能和后续的产品的维护。
项目托管到Github上。
采用Java语言
数据库后端支持MySQL
- Serge(Evernote)
Evernote(印象笔记)开源的一个持续本地化平台
接口的扩展性比较强
命令行接口
支持多种翻译平台(Pootle,官方推荐)
社区比较活跃,Github 的 Issues 能得到快速回复
支持多种后端数据库,MySQL,Sqlite等
采用Perl语言
项目托管到Github上
4. Serge + Pootle
Serge(String Extraction and Resource Generation Engine)
安装过程可以在serge.io上有对应的教程,但是有几点需要注意的地方(我踩过的坑)
-
cpan
和cpanm
Serge 是一个由Perl
语言开发的项目,其使用cpanm
安装所有的依赖包,并生成可执行文件。熟悉Perl
的人可能非常的熟悉cpan
和cpanm
两个依赖包管理工具。本人作为一个不熟悉Perl
的移动端开发人员,在初始化cpan
的时候,遇到了一个比较大的麻烦。
简单的了解一下cpan
和cpnam
,在Mac系统上,默认的搭载了Perl
和cpan
。但是,如果你从来没有使用过cpan
,第一次运行的时候,cpan
会去初始化它的基本配置。
如果有移动端(iOS)开发经验的人,可以类比一下Cocoapods的安装。
初始化cpan的时候,可以会询问你权限的问题,提供三种,独立lib,sudo,手动。如果你是新手,个人建议采用sudo的方式,cpan
默认的是第一种,这种情况下,需要更改你的PATH
,有可能会带来很多的问题,我在安装的时候,就一路采用默认的方式,结果导致了cpanm
安装之后,找不到命令,不知道是我操作的不对,还是对Mac兼容性的问题。
如果想了解更多的使用方法和规则,可以查看 cpan 和 cpanm.
- PATH的影响
由于本人的电脑上配置了Macports和Homebrew两个第三方软件的安装和管理工具,导致了本机上的PATH
错综复杂,Perl
命令都很难找到,包括其对应的Lib路径。
解决方法,把在 Macports 和 Homebrew 上安装的Perl
全部强制卸载,使用系统搭载的Perl
, 在 Mac OS 10.12上,搭载的是5.18,由于在Mac OS 10.11 后,Mac 系统采用了SIP,来保护系统软件的完整性,系统的perl
不能更换。但是,5.18已经够Serge的运行的最低依赖, serge要求,perl要大于5.10。
- Pootle 对Sqlite的支持问题
Pootle按照官方的文档已经部署完成,但是,在运行serge pull-ts
的时候,使用无法更新对应的.po文件,从而就无法更新repo,导致翻译的结果,没法push到项目的远程仓库。
一直以为是Serge的问题,但是后来发现不是,是Pootle的问题。Pootle在初始化Sqlite数据库的时候,可能内部出错,但是翻译的内容无法写会到数据库,只保留在内存中,所以才导致了,在从Pootle同步到.po文件的时候,内容无法更新。
借鉴了 Build and install 2.7dev from scratch issue,重新运行了一下 pootle initdb
然后就恢复正常了。
官方建议,如果是开发和发布服务的时候,不要使用Sqlite作为后端的数据库,更换MySQL或者PostgreSQL。
5. 参考文献
- Serge
- Pootle
- Weblate
- Transifex
- Crowdin
- Build and install 2.7dev from scratch
- cpan
- cpanm
- Pottle Installation
- How to write a wrapper script to run Pootle's manage.py from within a virtual environment?
- Box开源持续本土化平台Mojito [本地化,开源,持续,产品,社区]
- Serge: A Free, Open Source Platform for Continuous Localization from Evernote