贡献翻译
本项目使用 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 的基本使用。
- 使用 GitHub fork 项目,将 fork 后的项目克隆到你的本地。
- 切换到
dev/commands_i18n
分支,使用命令git checkout dev/commands_i18n
。基于dev/commands_i18n
分支建立自己的分支,使用命令git branch my_translations
。 - 使用任意编辑器打开
priv/gettext
目录,会看到一些.pot
文件和en
文件夹。如果您需要贡献英文翻译,那么需要编辑的是en/LC_MESSAGES/commands.po
文件。
你需要掌握 GitHub 的 Pull request 发起流程。
提交修改
编辑你需要翻译的部分,可以是某一个 msgstr
,通常你只需要关注自己想要改进或添加的翻译,不需要关注其它部分。如果你特别有热情,想翻译所有内容,那当然是欢迎的。
打开 PR
完成后提交代码,在 GitHub 上发起 Pull request。对于提交消息,你不用特别在意,使用中文都没关系。因为你的 PR 在合并前会被 rebase
(重新整理)。
注意:你应该向 dev/commands_i18n
分支发起合并请求,而不是 develop
或 master
。
翻译部分并不是当前的开发重心,开发者可能不会非常积极的促进国际化方面的功能。但如果你有在这方面遇到困难,可以随时提问,我们会为你解答。