Django i18n:是否有gettext的替代品?

6
我正在寻找一种翻译我的Django项目的方法。Django提供的内置机制非常好,但有几个弱点,这使我去寻找替代方案。
项目所有者必须能够编辑包括英语(原始翻译)在内的每个翻译。使用gettext等工具可以编辑翻译,例如Pootle,但原始字符串仍然硬编码在文件源或模板中。产品所有者无法更改它们。
可能的解决方案是让gettext翻译一些唯一的标识符,并将它们翻译成包括英语在内的所有语言,如下所示:
_('form_sumbit_button')

但是这使得像Pootle这样的工具对于翻译者几乎不可能使用。

问题:是否有适合我需求的Django项目翻译工具?

3个回答

4
如果您使用一些消息ID,它们可能是难以理解的(“message_2215”),或者您将被迫将消息ID与实际消息同步(“请按任意键”=“please_press_any_key” =>“按任意键继续”=“any_key_to_continue”)。 无论哪种方式,对于程序员和工具来说,真正的字符串更好。
然而,如果您为字符串雇用单独的校对人员,则可以执行以下操作:
1. 创建一个英语“翻译”文件(是的,这可行) 2. 让您的校对人员使用Pootle或任何其他工具从英语翻译成英语 3. 确保您的程序员通过更新代码中的字符串来保持该翻译文件未翻译。 4. (可选)创建一种独立于主要代码部署翻译的方式,以便您可以快速修复拼写错误。

1

您可以尝试使用 _("message_id") 方法来使用 Pootle,具体取决于 Pootle 的定制难度(我不了解其内部结构,因此无法确定,但据我所知它使用 Django,其中模板更改通常很简单)。

例如,Pootle 的翻译界面有“原文”和“翻译”两个部分;您可以适应模板,在“原文”部分下显示“参考”部分,其中显示使用特定参考语言(例如英语)的某些规范化翻译。

或者您还可以使用 Pootle 的 alternative source language 功能,无需对 Pootle 进行自定义。您可以使用未使用的语言代码(或虚构的代码)存储翻译的规范版本。


0

使用标识符与 Gettext 完全兼容,并且有一些支持此功能的工具。但是,对于一些翻译人员来说,这可能不太常见,因为他们习惯于仅下载 .po 文件进行离线翻译,而这在单语言翻译中无法使用。

例如,Weblate 完全支持单语言 Gettext 文件(我是该工具的作者):https://docs.weblate.org/en/latest/formats.html#monolingual-gettext


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接