Skip to content

贡献翻译

绅士喵 edited this page Jul 27, 2023 · 7 revisions

背景介绍

本项目使用 gettext 处理翻译,在翻译前你必须对 gettext 有基本的认知。为了提交翻译你需要一个 GitHub 帐号,并掌握 Git/GitHub 的最基本使用。

通常在翻译前,已经使用 gettext 生成(或更新)了 .po 文件,直接编辑这些文件即可完成翻译。每一个 .po 被视作一个域(domain),Policr Mini 的 bot 部分的所有文字都被放在名为 commands 的域中。

如何翻译?

和其它翻译方案不同,gettext 通常不会用一种简写的形式表示键(key),而是直接用某一种默认语言作为键,称作 msgid。每一个 msgid 都紧靠着对应的 msgstr,也就是翻译的值(value)。

一个真实的例子

msgid "发生了一些未预料的情况,请向开发者反馈。"
msgstr "Some unexpected situations have occurred, please provide feedback to the developer."

这里的 msgid 字符串实际就是项目代码中的真实文字,它是中文的。当你需要翻译成英文时,在 msgstr 中写上对应的英文即可。不同的语言翻译位于不同的文件夹中。

正确的处理变量

msgid "您还剩 %{count} 秒,通过可解除限制。"

此处的 %{count} 并不是文字的一部分,而是变量,表示程序运行时动态插入的值。你需要把变量正确的放在翻译的文字中,如:

msgid "您还剩 %{count} 秒,通过可解除限制。"
msgstr "You have %{count} seconds remaining to pass and lift the restriction."

确定翻译位置

你需要掌握 Git 的基本使用。

  1. 使用 GitHub fork 项目,将 fork 后的项目克隆到你的本地。
  2. 切换到 dev/commands_i18n 分支,使用命令 git checkout dev/commands_i18n。基于 dev/commands_i18n 分支建立自己的分支,使用命令 git branch my_translations
  3. 使用任意编辑器打开 priv/gettext 目录,会看到一些 .pot 文件和 en 文件夹。如果您需要贡献英文翻译,那么需要编辑的是 en/LC_MESSAGES/commands.po 文件。

提交翻译

你需要掌握 GitHub 的 Pull request 发起流程。

提交修改

编辑你需要翻译的部分,可以是某一个 msgstr,通常你只需要关注自己想要改进或添加的翻译,不需要关注其它部分。如果你特别有热情,想翻译所有内容,那当然是欢迎的。

打开 PR

完成后提交代码,在 GitHub 上发起 Pull request。对于提交消息,你不用特别在意,使用中文都没关系。因为你的 PR 在合并前会被 rebase(重新整理)。

注意:你应该向 dev/commands_i18n 分支发起合并请求,而不是 developmaster

结束语

翻译部分并不是当前的开发重心,开发者可能不会非常积极的促进国际化方面的功能。但如果你有在这方面遇到困难,可以随时提问,我们会为你解答。