持續(xù)本地化集成——Continuous Localization Integration

1. 持續(xù)本地化集成

傳統(tǒng)的本地化集成,通常是需要在項目結束之后,才開始這項工作,這對于快速開發(fā),限制了版本迭代,增加了整個項目控制的復雜性。

持續(xù)本地化集成(Continuous Localization Integration),遵循著持續(xù)化規(guī)則,以代碼倉庫為中心,自動析取所有需要本地化的字符串,同步到一個可視化的翻譯平臺,并將翻譯平臺的翻譯結果同步會代碼倉庫,各部門分工協(xié)作,無縫配合,可以使整個項目的快速迭代,縮短版本開發(fā)周期。

2. 收費服務

  1. Weblate

支持收費服務
支持開源的免費服務
weblate托管在github
支持本地服務器安裝,可自行安裝托管代碼

  1. Transifex

支持收費服務
支持開源的免費服務

  1. Crowdin

提供從注冊開始,兩周的免費試用
試用期間可以體驗所有功能
試用結束后,必須選擇付費服務

3. 開源軟件(免費)

  1. Mojito(Box)

Box公司開源的一個持續(xù)本地化平臺
依靠開源社區(qū)完成主要的功能和后續(xù)的產(chǎn)品的維護。
項目托管到Github上。
采用Java語言
數(shù)據(jù)庫后端支持MySQL

  1. Serge(Evernote)

Evernote(印象筆記)開源的一個持續(xù)本地化平臺
接口的擴展性比較強
命令行接口
支持多種翻譯平臺(Pootle,官方推薦)
社區(qū)比較活躍,Github 的 Issues 能得到快速回復
支持多種后端數(shù)據(jù)庫,MySQL,Sqlite等
采用Perl語言
項目托管到Github

4. Serge + Pootle

Serge(String Extraction and Resource Generation Engine)

安裝過程可以在serge.io上有對應的教程,但是有幾點需要注意的地方(我踩過的坑)

  1. cpancpanm

Serge 是一個由Perl語言開發(fā)的項目,其使用cpanm安裝所有的依賴包,并生成可執(zhí)行文件。熟悉Perl的人可能非常的熟悉cpancpanm兩個依賴包管理工具。本人作為一個不熟悉Perl的移動端開發(fā)人員,在初始化cpan的時候,遇到了一個比較大的麻煩。

簡單的了解一下cpancpnam,在Mac系統(tǒng)上,默認的搭載了Perlcpan。但是,如果你從來沒有使用過cpan,第一次運行的時候,cpan會去初始化它的基本配置。
如果有移動端(iOS)開發(fā)經(jīng)驗的人,可以類比一下Cocoapods的安裝。

初始化cpan的時候,可以會詢問你權限的問題,提供三種,獨立lib,sudo,手動。如果你是新手,個人建議采用sudo的方式,cpan默認的是第一種,這種情況下,需要更改你的PATH,有可能會帶來很多的問題,我在安裝的時候,就一路采用默認的方式,結果導致了cpanm安裝之后,找不到命令,不知道是我操作的不對,還是對Mac兼容性的問題。

如果想了解更多的使用方法和規(guī)則,可以查看 cpancpanm.

  1. PATH的影響

由于本人的電腦上配置了Macports和Homebrew兩個第三方軟件的安裝和管理工具,導致了本機上的PATH錯綜復雜,Perl命令都很難找到,包括其對應的Lib路徑。

解決方法,把在 Macports 和 Homebrew 上安裝的Perl全部強制卸載,使用系統(tǒng)搭載的Perl, 在 Mac OS 10.12上,搭載的是5.18,由于在Mac OS 10.11 后,Mac 系統(tǒng)采用了SIP,來保護系統(tǒng)軟件的完整性,系統(tǒng)的perl不能更換。但是,5.18已經(jīng)夠Serge的運行的最低依賴, serge要求,perl要大于5.10。

  1. Pootle 對Sqlite的支持問題

Pootle按照官方的文檔已經(jīng)部署完成,但是,在運行serge pull-ts的時候,使用無法更新對應的.po文件,從而就無法更新repo,導致翻譯的結果,沒法push到項目的遠程倉庫。

一直以為是Serge的問題,但是后來發(fā)現(xiàn)不是,是Pootle的問題。Pootle在初始化Sqlite數(shù)據(jù)庫的時候,可能內部出錯,但是翻譯的內容無法寫會到數(shù)據(jù)庫,只保留在內存中,所以才導致了,在從Pootle同步到.po文件的時候,內容無法更新。

借鑒了 Build and install 2.7dev from scratch issue,重新運行了一下 pootle initdb 然后就恢復正常了。

官方建議,如果是開發(fā)和發(fā)布服務的時候,不要使用Sqlite作為后端的數(shù)據(jù)庫,更換MySQL或者PostgreSQL。

5. 參考文獻

  1. Serge
  2. Pootle
  3. Weblate
  4. Transifex
  5. Crowdin
  6. Build and install 2.7dev from scratch
  7. cpan
  8. cpanm
  9. Pottle Installation
  10. How to write a wrapper script to run Pootle's manage.py from within a virtual environment?
  11. Box開源持續(xù)本土化平臺Mojito [本地化,開源,持續(xù),產(chǎn)品,社區(qū)]
  12. Serge: A Free, Open Source Platform for Continuous Localization from Evernote
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容