KDE 简体中文翻译启用 Crowdin 在线协作平台

hosiet | 2017/12/22

其实这已经算旧闻了,但消息的传播并不顺畅,想必还有不少朋友不了解相关的情况,所以我在这里算是再进行一次宣传。

给时间紧迫太长不读(TL;DR)的朋友的一句话新闻:现在任何人都可以在 Crowdin 平台上使用网页在线翻译 KDE 了(仅限简体中文),网址是 https://crowdin.com/project/kdeorg/zh-CN,欢迎各位参与。

下面是正文。

历史

历史上,KDE 的翻译一直使用 SVN 提交。对简体中文团队来说,有 SVN 提交权限的管理者可以直接提交翻译,或是接受其他贡献者发送到 kde-china 邮件列表中的翻译文件,在检查后帮助进行提交。显然,这样的工作流对提交者和翻译者来说有较大的负担:

  • 外部贡献者必须使用电子邮件和邮件列表,变相提高了门槛;
  • 审阅过程中如有修改需要打回则多出了邮件来往,拉长了工作时间;
  • KDE 翻译所需的软件(lokalize)和对 po 文件的处理均对翻译者的技术水平提出了要求。

这样的要求不一定都是坏事,但显然还有可以改进的空间。今年(2017年)春天,以某个事件为契机,#kde-cn 的 IRC 频道(同时联通一个电报群组)中发生了关于工作流改进的讨论。在 guoyunhe 的推动下,KDE 简体中文翻译团队实现了工作流的迁移:从邮件列表 + SVN 手工提交切换到了 Crowdin 在线协作翻译平台 + 定期 SVN 文件同步的流程上来。

我们获得了 Crowdin 的支持,由于 kde 是著名的开源项目,翻译得以免费托管在网站上。任何人可以访问如下网址:

https://crowdin.com/project/kdeorg

注册一个帐号(或使用谷歌等社交帐号登录)即可立刻参与到翻译工作中来。

更多信息

更多信息,请见 KDE 简中翻译团队主页。KDE 简体中文翻译团队协作的正式主页是 https://community.kde.org/KDE_Localization/zh-cn,上面提供了与 KDE 简体中文翻译相关的各类信息与注意事项。

常见问题

翻译有什么建议吗?
尽量只翻译自己熟悉的内容;善用翻译存储和术语表;有翻译难点请结合应用程序界面和源代码理解其含义;还有问题也可参与群聊讨论或在邮件列表讨论翻译方式。详情请见上述团队主页。
我该怎么加入#kde-cn电报群组?
请见上述团队主页,页面上有链接。也可加入 Freenode 服务器上的 #kde-cn 频道,频道主题中包含了群组邀请链接。
SVN 翻译仓库与 Crowdin 翻译多久同步一次?
暂时没有固定周期,但一般不会多于一个月。如有需要,可以联系管理员进行同步。

ONE FEEDBACK

  1. 一些我自己的体会。

    目前这个同步流程还是不能完全自动化的,必须有人看管。原因有以下几点:

    1. 文件太多,上传模板和下载翻译都可能出现超时的状况。Crowdin 的服务器有时候会比较繁忙,上传要花费几个小时,而下载要花费几十分钟。
    2. 需要手动构建。意思是需要手动在网页上点那个构建按钮,才能开始全部构建一遍。而下载脚本下载的时候可能会构建,也可能不会构建,这是个 Bug。所以每次我都要手动构建完,再去下载翻译。
    3. SVN 有质量检查。比如一个字符串里有 3 个 %n 而翻译只有两个,SVN 就会认为这是一个错误而拒绝提交。但是 Crowdin 不会做这样的检查,即使对不上也会构建翻译。遇到提交被拒绝的时候,需要我手动去修正错误的字符串。一开始这种情况很常见,因为很多模糊翻译吧。现在已经几乎没有了。

    做改变是很难的。从邮件列表提交,到 Crowdin 平台,有很多头疼的问题,很多次我都想放弃了。但是毕竟干了这么多年,对这件事是有感情的,不想它以后就偃旗息鼓了。于是就一直坚持下来了。

    技术问题都是比较好解决的,最重要的是获得所有贡献者的认可。一旦接入 Crowdin,意味着所有翻译者必须放弃自己原有的 SVN 直接提交的方式,改变自己的工作习惯。要特别感谢为此作出牺牲的各位前辈,毕竟比起 SVN 直接提交,Crowdin 确实有些慢了。

    一旦进行一项比较大的改动,就有更大的风险存在。开始的几个月我经常被突然发现的问题折腾得死去活来。自己起的头,就要负责到底。

Leave a Reply

Your email address will not be published. Required fields are marked *

Note: Commenter is allowed to use '@User+blank' to automatically notify your reply to other commenter. e.g, if ABC is one of commenter of this post, then write '@ABC '(exclude ') will automatically send your comment to ABC. Using '@all ' to notify all previous commenters. Be sure that the value of User should exactly match with commenter's name (case sensitive).