从 Crowdin 合并翻译
Crowdin 会自动将 gitlab.pot 文件与 Crowdin 服务同步,将新添加的外部化字符串呈现给翻译社区。
GitLab Crowdin Bot 也会创建合并请求,将新批准的翻译提交合并到 locale/<language>/gitlab.po 文件中。查看 由 gitlab-crowdin-bot 创建的合并请求 以了解新的和已合并的合并请求。
验证
默认情况下,Crowdin 在提交消息中包含 [skip ci] 来提交翻译。这样可以避免运行过多的流水线。在合并翻译之前,请确保触发一个流水线来验证翻译。静态分析验证的是 Crowdin 不做的事情。为 master-i18n 分支在 https://gitlab.com/gitlab-org/gitlab/pipelines/new 创建一个新的流水线(需要 Developer 角色)。
流水线作业使用 PoLinter 类 验证翻译。如果 linter 发现任何错误,它们会出现在作业日志中。有关失败流水线的示例,请参阅 这些错误消息。
如果出现验证错误,您必须在 Crowdin 中手动拒绝有问题的字符串,并留下关于如何修复错误的评论:
- 使用
gitlab-crowdin-bot账号登录 Crowdin。 - 找到有问题的字符串。
- 选择 Current translation is wrong 来拒绝针对特定目标语言的翻译。
- 将作业日志中的错误消息作为评论包含在内。
然后无效的翻译将被排除,合并请求也会更新。在 issue 23256 中提出了自动化此过程的建议。
如果翻译由于尖括号(< 或 >)而无法通过验证,应该在 Crowdin 中拒绝。我们的字符串必须使用 variables 来处理 HTML。
暂停 Crowdin 端的集成一段时间可能很有用,这样翻译就不会不断涌来。您可以通过在 Crowdin 集成设置页面 上选择 Pause sync 来实现这一点。
合并翻译
在确定所有翻译都合适且流水线通过后,您可以将翻译合并到默认分支。合并翻译时,务必选择 Remove source branch 复选框。这会导致 Crowdin 在合并新翻译后从默认分支重新创建 master-i18n 分支。
我们正在讨论 自动化整个流程。
重新创建合并请求
Crowdin 在旧合并请求被关闭或合并后会立即创建一个新的合并请求。但它不会每次都重新创建 master-i18n 分支。要强制 Crowdin 重新创建分支,请关闭任何 打开的合并请求 并删除 master-18n 分支。
当合并请求包含已在默认分支上修复的失败时,可能需要这样做。
在 Crowdin 中重新创建 GitLab 集成
这些说明仅适用于 GitLab 团队成员。
如果由于某种原因 Crowdin 中的 GitLab 集成不存在,您可以按照以下步骤重新创建:
- 以
gitlab-crowdin-bot身份登录 GitLab。(如果您是 GitLab 团队成员,请在 GitLab 共享的 1Password 账户 中查找凭据。) - 使用 GitLab 集成登录 Crowdin。
- 转到 Settings > Integrations > GitLab > Set Up Integration。
- 选择
gitlab-org/gitlab仓库。 - 在 Select Branches for Translation 中,选择
master。 - 确保 Service Branch Name 是
master-i18n。
手动更新翻译级别
没有自动化的方法可以从 Crowdin 拉取翻译级别,以便在语言选择下拉列表中显示此信息。因此,翻译级别被硬编码在 i18n.rb 中的 TRANSLATION_LEVELS 常量中,并且必须定期更新。
要更新翻译级别: