乐聚社区

标题: 基于 Gitlab 的多国语言管理方法 [打印本页]

作者: 零落    时间: 2021-2-3 09:31
标题: 基于 Gitlab 的多国语言管理方法
本帖最后由 零落 于 2021-2-4 13:44 编辑

文章来源:乐聚机器人研发总监黄怀贤的《基于Gitlab的多国语言管理方法》

如果你正在使用 Gitlab 或者 Github ,本文介绍的方法可能会对你有帮助。通过本文介绍的方法,能方便快捷地对翻译词条进行审核、讨论以及更新。


01

我们使用过的工具


1、使用 Excel 来整理和同步词条


2、Jabylon

官网:https://jabylon.org/

特点:支持 Android,iOS,以及 Java 的 .properties 格式文件。

问题:最后一次更新为 2017 年。


3、Weblate

官网: https://weblate.org/zh-hans/

有以下几个优点:

  • 和 Git高度集成,更新的词条都是作为一个个commit提交到Git中。这样也能方便地从原来回溯到内容的作者。

  • 只要设置好源代码的路径,Weblate就能自动地检测出相关的翻译问题,并解析成可以被编辑的词条。

  • 支持众多的格式:

    https://docs.weblate.org/en/latest/formats.html

  • 细致且完整的权限控制:

    https://docs.weblate.org/en/latest/admin/access.html

  • 支持第三方登录:

    https://docs.weblate.org/en/latest/admin/auth.html#authentication-backends

  • 特别是Gitlab:

    https://docs.weblate.org/en/latest/admin/auth.html#gitlab-oauth-2

总结:一个很好的软件,在现在没有完全迁移到新的方法之前,我们公司大部分项目使用的还是 Weblate。


02

使用心得

1、Excel 的维护成本较高,每次改动内容都需要手工校对。产品改一遍,开发再复制源码仓库中。并且想要找出变化的内容,只能依靠人肉比对和沟通。同时无法快速的针对某个词条进行讨论和改进。比如:某个词条翻译并不是特别文雅,这个时候开发可能需要在沟通群组中和产品进行沟通,再由产品发出修订之后的 Excel 文档。如果出现多次改动的情况就会耗费大量的人力去做重复的事情。


2、JABYLON 解决了校对和修订的问题。但是无法简单快捷的进行讨论。并且在使用的过程中发现如果是在翻译的文档中出现中文,会让导出的 iOS 翻译文件出现编码错误的问题。如果你在使用 JABYLON 的时候也遇到导出到 iOS 的词条出现编码错误的问题,这个 Emacs 的包应该能帮到你,链接如下:

https://github.com/carlos-wong/emacs-jabylon-ios


3、Weblate 解决了 JABYLON 编码的问题,同时能和 Gitlab 服务很好地结合到一起, 能根据提前配置好的 branch 来自动提交修改的词条。不过还是存在不能便捷地对翻译词条进行讨论以及快速迭代。因为讨论的记录是单独保留在 weblate 上的,后续在回溯的时候讨论的内容不能和提交的代码关联到一起。


03

如何结合 Gitlab 来推进翻译工作的进行以及自动整合到项目的源码中

众所周知我们是使用 软件研发流程 来进行需求文档的讨论和迭代的。基于这个方法,将翻译的文档当成需求文档来维护。这样就能使用原有的流程来讨论和修订翻译的词条。再结合 Gitlab Runner (如果你使用的是 Github 的话其实原理类似,只不过使用的是 Github Action) 可以使用将 CSV 格式转化为工程文件的方式将翻译同步到项目源代码的过程自动化。


以下是对一个基本的迭代过程进行描述。

1、由产品将要整理好的翻译词条(以 csv 为格式,Excel 可以导出和打开 csv 格式的文件)作为一个 Merge Request 来提交。

2、相关人员就能在 Merge Request 中对指定的词条进行评论和问题。

图片


3、多次修订之后当前的翻译以及符合要求。

图片
图片


每次Merge Request 发生改动都会触发 Gitlab 的 CI, CI 的工具会将翻译的文件转化为 Android,iOS,Web 对应格式的多国语言文件。并在 CI 的脚本中触发一次对应仓库的 Commit 来自动将修改的内容同步到开发项目的源码中。


04

总结

这样一来,翻译的相关文档也能通过评审来及时发现问题。并且能通过相关项目的 Git 记录来对问题进行溯源,快速地定位问题的原因。







欢迎光临 乐聚社区 (https://bbs.lejurobot.com/) Powered by Discuz! X3.4