Skip to content

KDE-China/crowdin

Repository files navigation

Crowdin 翻译同步工作流

Crowdin

翻译流程

加入交流群

开源工作交流是要务。目前有两个主要的交流群:

  • 微信 - 没有公开链接,加群主 guoyunhebrave 为好友,然后邀请加入群
  • Telegram - 点击加入

注册 Crowdin

项目主页

注册后,加入团队,即可开始翻译。但是在动工之前,请先仔细阅读下面的内容,了解基本的翻译注意事项。

Crowdin 是一个在线翻译协作平台。于 2017 年由 Guo Yunhe 引入。在此之前,只有少数拥有 KDE 提交权限的开发者可以直接翻译,其他人只能发送翻译文件到邮件列表,然后等人审核。Crowdin 带来的便利有以下几点:

  • 开放参与。任何人都可以注册账号,加入团队,翻译贡献。每个人的翻译记录都会被记录下来,而不会被覆盖或丢弃。贡献者之间相互审核,选择最优的翻译。已通过的翻译会被 KDE 包含,或者最新的翻译。
  • 透明运作。任何操作都会记录在活动日志当中,有不当翻译或者蓄意破坏很容易被发现并撤销。同时管理员的行为也会被监督。
  • 翻译存储。不止 KDE 项目的翻译存储,Crowdin 上成千上万开源项目的翻译存储都可以作为参考。使翻译更加便利。
  • 机器翻译。虽然机器翻译质量参差不齐,但也是一种有益的参考。
  • 分支同步。KDE 有两个主要分支,trunk 和 stable。以前我们要同时翻译两个分支,用 Lokalize 设置起来十分繁琐。而 Crowdin 可以自动将两个分支上对应的文件的翻译同步,无需重复翻译或者进行复杂的设置。
  • 操作简单。不需要会使用 Subversion 和 Lokalize 等工具,不需要每次手动在邮件列表投递。

使用 Crowdin

请参考此链接 https://crowdin.com/page/tour#tab_translators

翻译建议和审核

选择 Chinese (China) 语言进行翻译,之后可以选择要翻译的文件。每个翻译文件和文件夹都有一个翻译进度。蓝色条代表已经翻译,绿色条代表已经审核。同一条目可以有多个 Suggestion ,也就是翻译建议。翻译者和审核者可以通过投票来决定哪一个更加适合。最终导出的翻译会选择被审核的那个翻译,如果没有审核,则会选择最近的翻译建议。

在 Crowdin 上并没有承包认领,也没有访问限制。任何团队成员都可以翻译所有文件。与之前通过邮件列表和 SVN 提交相比,重复翻译和冲突的概率极低,零散的翻译更容易被添加。

  1. 如果一个字符串没有翻译,则你可以提交新的翻译建议。新的翻译建议虽然尚未审核,但也会同步到 KDE 项目中。
  2. 如果一个字符串已有翻译,但尚未审核通过,则新提交的翻译会被优先采用,同步到 KDE 项目中。
  3. 如果一个字符串已有翻译,且已经审核通过,则新提交的翻译不会被使用。如果你认为已审核通过的翻译有问题,可以在右侧的评论面板中提出,并选中 Issue。管理员和原翻译者都会收到通知,并作出回复。

翻译存储和机器翻译

在翻译界面,你可能会看到有翻译存储和机器翻译的结果。这些结果可以用来辅助翻译。

翻译存储利用的是 KDE 中的其他翻译条目,以及 Crowdin 上的其他软件翻译项目的翻译。请注意这些翻译也可能是包含错误的,因此在选用之前,请仔细检查。

机器翻译利用的是微软翻译服务。和 Google 翻译一样,机器翻译在处理长句子的时候常常南辕北辙。即使是简单单词的翻译,也要考虑语境和特殊用法。因此机器翻译必须经过检查修订之后才能使用。

术语表

术语表提供了一些专有名词的翻译,列在翻译界面的右侧。比如 Brush 在绘图软件中统一称为“笔刷”,Image 在 K3b 中是“镜像”的意思。

评论

翻译界面的右侧还有 Comments 功能,你可以写下要注意的地方,参考链接,截图或者发表疑问。这些信息将帮助其他翻译者更好地翻译。

导出和更新

在 Crowdin 平台上翻译的文件,会经过手工导出并上传到 SVN。这个频率大概是每周一次。目前是由 Guo Yunhe 来操作。

stable 和 trunk 分支

stable 是当前已经发布的分支,而 trunk 是正在开发的分支。两者的大部分内容是相同的,Crowdin 会自动同步两个分支中相同的翻译,免去一些重复劳动。重复的,隐藏的条目以灰色显示,一般情况下不需要编辑它们。由于 stable 先于 trunk 分支,因此大部分需要翻译的内容,实际上在 stable 中。而 trunk 只包含与 stable 不同的条目,数量较少。

文件结构和优先级

对于每个分支,翻译文件都按照类别分在不同的目录里。有些比较重要,应该优先翻译;有些则不太重要,可以延后翻译。

核心部分:

  • frameworks - KDE 基础框架和服务
  • kde-workspace - Plasma 工作空间,包括各种小部件和系统设置
  • applications - 核心应用,包括 Dolphin 文件管理器,Konsole 控制台,Kate/Kwrite 编辑器,Konqueror 网页浏览器

核心部分完成度较高,只需修修补补即可。

应用程序:

  • pim - 邮件,日历,通讯录,聊天等应用。
  • calligra - 文档,图表,绘画等办公应用。然而由于 Linux 用户使用 LibreOffice 和 OpenOffice 的较多,翻译需求并不很急迫。可优先翻译 krita。
  • kdegraphics - 图像查看器,截图工具,去色其,屏幕标尺,扫描仪和 PDF 查看器。gwenview,spectacle 和 okular 是关键应用。
  • kdemultimedia - 音视频编辑器和播放器。dragonplayer 和 kdenlive 是比较重要的应用。
  • kdeutils - 压缩工具,计算器,计时器等小工具。虽然是小工具,但是还都挺常用的。
  • kdenetwork - 网络账户集成,在线分享,网络存储,远程控制等。
  • kdeedu - 教育和科学应用。其中 marble 是很关键的应用。
  • kdegames - 内置小游戏。
  • kdeadmin - 系统管理工具,配置 systemd 服务和 cron 计划任务。
  • kdesdk - 翻译工具和编辑器等开发工具。一般只有开发者需要。

extragear- - 一些不常用软件和插件,优先级比较低。

playground- - 一些新的还不稳定的应用,优先级最低。不建议翻译。

kdereview - 正在审核的应用,源从 playground 或者外部项目,通过后会进入 extragear 或应用程序目录。因为此处的文件经常重命名或移动,不建议翻译这里的文件。可以等到成熟之后再进行翻译。

wikitolearn - 好像是一个在线教育网站,貌似和 KDE 没有直接联系,不建议翻译。

翻译规范

基本要领

  1. 简洁规范。
  2. 忠实原文。
  3. 用语一致。
  4. 易于使用。

标点符号

通常用全角的标点符号:

,。:;“”‘’

通常用半角的标点符号:

( ) [ ] / \ |
点号

优先使用全角的点号,包括逗号,句号,冒号,分号,问号。

此操作不可撤销,您确定要继续吗?

可用的设备:

某些特殊的字符串,比如关键字列表,使用英文逗号或分号作为分隔符。这种情况下必须使用英文逗号或英文分号。

dolphin,file management,文件管理
括号

全部的小括号使用半角,也就是英文括号。左括号前,和右括号后需要保留空格(快捷键除外)。

安装 (需要重启)
省略号

采用三个点号作为省略号。虽然 Unicode 中确实有一个省略号的字符,但在键盘上输入不是很方便。因此开发者通常采用三个点号来替代。中文键盘虽然可以比较方便地输入省略号,但为保持一致,我们仍然采用三个点号作为省略号。

正在加载...
引号

使用全角的单引号和双引号。

英文中有时使用单引号,有时使用双引号。中文中对单引号和双引号的用法有所规范,最外层必须使用双引号,只有在双引号内的引用才使用单引号。

Click 'Confirm' button to continue.

点击“确认”按钮继续。
破折号/横线

短横线一般指范围,比如 0-9 ,或者是特殊格式 2017-01-10 ,这种情况就采用普通的短横线即可,不要使用破折号。

出现英文破折号(—)的情况非常少见,一般是在文档或大段的提示信息里。如果遇到这种情况,使用中文破折号——。英文的破折号 / M-dash 容易被误认为中文的数字“一”,不利于阅读。

快捷键

英文中,快捷键是用 & 标记单词中的一个字母作为快捷键的。但是中文中没有字母,因此需要在末尾加上一个括号,填写快捷键。这个括号与中文之间没有空格,快捷键字母必须大写。如果英文是以冒号或省略号结尾,则快捷键放到冒号之前。

&File
文件(&F)

Trans&late
翻译(&L)

&Open...
打开(&O)...

空格

汉字之间(包括标点)一定是没有空格的。

汉字与英文(包括英文标点)和阿拉伯数字之间要保留空格。但中文标点符号和英文,数字之间则不需要空格。

Dolphin 是 KDE 的默认文件管理器。

链接 URL:

一些字符串有开头和末尾的空格,很容易被忽略。Lokalize 和 Crowdin 都会高亮显示这些空格。如果空格是因为英文手动换行造成的,那么中文可以不留空格。如果不是,那么可以保留空格。(下面的例子用下划线代替空格方便阅读)

_(unavailable)
_(不可用)

换行

按回车造成的换行,是 PO 文件里代码换行。这种换行可以让代码易读,但最终显示的文本仍然是不换行的。

由于目前所用的 PO 编辑器和在线翻译平台都能很好地自动换行,因此手动去折行并不是必要的。即使是翻译时看到英文是折行的,中文也不一定需要折行。

显示文本换行,需要用 \n 转义字符,或者在 HTML 字符串里用 <br> 标签。

英文名

软件名

绝大部分软件,比如 Plasma,Dolphin,Kdenlive,Amarok 等,名字都是不翻译的,直接使用英文即可。

人名和组织名

开发者姓名用英文或其母语,不做翻译。

项目名称和组织名称,一般也是不翻译的。比如 Google

英文缩写

一些通用的英文缩写不需要翻译,比如 URL,UI,RGB,HTML。

命令和文件

系统命令不翻译,翻译者需要根据语境和 Linux 知识来判断。

Cannot start update-alternatives.
无法启动 update-alternatives。

update-alternatives 是一个关键的 Linux 命令行工具。

不适合翻译的名词

比如 Java,YouTube,Skype,iPod,Linux 等没有正式中文译名的名词。

Android,Windows,Mozilla 等虽然有正式中文译名,但使用不及英文广泛的,也不翻译。

没有正式翻译的术语

一些较为复杂的技术术语,如果无法找到确切翻译,则可以保留英文。这通常比自己发明一个要好。

Build a tun link capable of forwarding IPv6 traffic.
建立能够转发 IPv6 通信量 tun 链接。

礼貌用语

You --> 您

出于礼貌,You 总是翻译成“您”,而不是“你”。

祈使句中的“请”

英文的祈使句有时候会以 Please 开头,但有时候会省略。对于没有 Please 的祈使句,中文也要补充“请”,显得更为礼貌。

No result found. Try again.
未找到结果。请重试。

省略

a/an

英文的冠词 a/an 在中文中大部分可以省略。

Choose a category for the eBook.
为电子书选择分类。

我们用“分类”,而不是“一个分类”。

译者留名

翻译贡献者的名单会自动保存在 Crowdin 系统和 PO 文件的头部,但这些信息并不会显示在软件界面或者文档内。KDE 的翻译项目增加了一些特殊的字符串来记录翻译者,它们有特殊的翻译方法:

Your names

此处填写软件界面的翻译者名单的姓名,以英文逗号分隔。中文和英文名皆可,英文名可以更方便来自国外的开发者联系你。KDE 中国团队一般总是第一个,后续跟上每个翻译者的名字。

KDE China,Weng Xuetian,Guo Yunhe
Your emails

此处对应 Your names 的顺序一一对应填写电子邮件地址,也是以逗号分隔。

kde-china@kde.org,xxx@gmail.com,xxx@outlook.com

在 KDE 应用程序的“帮助”->“关于 XXX”->“翻译”界面,可以看到翻译者名单。

screenshot

CREDIT_FOR_TRANSLATORS

文档翻译中的翻译者致谢,通常用一句话描述。比如:

本文档由 KDE 中国团队翻译。
ROLES_OF_TRANSLATORS

通常是这个结构:

<authorgroup>
<author><firstname>Yunhe</firstname><surname>Guo</surname><email>xxx@gmail.com</email></author>
<author><firstname>Xuetian</firstname><surname>Weng</surname><email>xxx@gmail.com</email></author>
</authorgroup>

请参见 DocBook 手册

其他

照葫芦画瓢

看其他人是怎么翻译的,大概就知道要怎么做了。不需要太担心犯错误,新人的翻译都会被复核一遍的,撤销也很容易。

卖萌禁止

请勿使用“亲”这种非正式语言,因为卖萌的方式多种多样,到最后就难以控制质量,整齐划一了。

同步流程

源字符串流向: SVN --> Local --> Crowdin

翻译字符串流向: Crowdin --> Local --> SVN

系统需求

  1. git
  2. svn
  3. python
  4. gettext-tools
  5. crowdin-cli (version 2)
  6. python3-Sphinx

You also need an API key given by project maintainers. Create a file at ~/.crowdin.yaml:

"api_key" : "<your_key_string>"

初始化

git clone https://github.com/KDE-China/crowdin.git
cd crowdin
./init

同步

./sync

添加新语言

比如要添加中文(香港)。

首先在 Crowdin 网站上的设置里,添加新的 Target Language 。

然后需要修改 environment 脚本,在 $LANGS 里添加 zh_HK 。注意这里连字符是 _ 。然后运行

./init

最后运行翻译上传脚本:

./upload_translations zh-HK

注意语言代码里的连字符是 - 。

以后的同步流程不变。

常见问题解答

Crowdin 上传/下载进度卡住

没办法,重新跑吧。我们的文件太多又大,如果网络不好断了,只能重来。

SVN 提交被拒绝

得手动解决,挺累的。SVN 有检查脚本,如果源字符串和翻译字符串的变量或者换行不匹配,就容易被拒绝。这时你要看报错的是哪个文件哪一行,不止要手动编辑 PO 文件,还要在 Crowdin 上找到对应的字符串改了。这个事情还挺费力的,但是没有别的办法。

翻译大量丢失

翻译存储救命。有些软件经历一个大版本,导致模板变化,很可能会令翻译渐渐丢失。但是翻译存储里面的是不会丢的。这时候你需要去 Project Settings 然后打开 TM & MT 标签页,点击 Pre-translate 选 via TM 然后选项如下:

点击 Pre-Translate 按钮,可能会花上几个小时才能跑完,你可以关掉窗口等着。几个小时后,你就能在 Activities 里面看到有多少字符串被翻译了。

头部贡献者名单

Crowdin 不能更新头部注释内的贡献者名单,而且不能保留旧的注释。我们现在用一个脚本来将头部备份和恢复,但是 Crowdin 上的新翻译者,我们必须得手动添加到注释里面去。

Crowdin 设置

TODO