我正在寻找一种翻译我的Django项目的方法。随着Django提供的内置机制很棒,但有几个弱点让我去寻找替代方案。
项目所有者必须能够编辑包括英语(原始翻译)在内的所有翻译。使用gettext可以使用Pootle等工具编辑翻译,但原始字符串在文件源或模板中保持硬编码。产品所有者无法更改它们。
可能的解决方案是让gettext翻译一些唯一标识符,并将它们翻译成包括英语在内的所有语言,如下所示:
_('form_sumbit_button')
但这使得像pootle这样的工具几乎不可能用于翻译。
问题:有没有适合我需要的Django项目翻译工具?
答案 0 :(得分:2)
如果你使用某些消息ID,它们将是不可理解的(“message_2215”),或者你被迫将消息ID同步到实际消息(“请按任意键”=“please_press_any_key”=>“任何键继续“=”any_key_to_continue“)。无论哪种方式,真正的字符串对于程序员和工具来说都更好。
但是,如果您为字符串使用单独的校对器,则可以执行以下操作:
答案 1 :(得分:1)
你或许可以使用Pootle与_(“message_id”)方法,这取决于Pootle是如何轻松自定义的(我不知道内部因此我不能说,但是IIUC它使用Django模板变化通常是直截了当的。)
例如,Pootle的翻译屏幕有“原始”和“翻译”部分;您可以调整模板,在“原始”部分下显示“参考”部分,该部分使用特定参考语言(例如英语)显示一些规范翻译。
或者您可以使用Pootle的alternative source language功能,而无需自定义Pootle。您可以使用未使用的语言代码(或已组成的语言代码)存储翻译的规范版本。
答案 2 :(得分:0)
我遇到了同样的问题,我还没有建立任何第三方解决方案,所以我写了这个库:https://github.com/fabiocaccamo/django-kway
希望有人发现它有用。
答案 3 :(得分:0)
使用Gettext肯定可以使用标识符,并且有支持此功能的工具。然而,对于某些翻译人员而言,它们可能不常见,因为他们习惯只下载.po文件进行离线翻译,但对单语翻译不起作用。
例如Weblate支持单语Gettext文件就好(我是这个工具的作者):https://docs.weblate.org/en/latest/formats.html#monolingual-gettext