Django:有没有办法用"du"非正式地解决?

Ali*_*uis 5 python django

与英语相比,有两个不同的"版本",你可以用德语与他人交谈.您可以使用正式的,更客观的"Sie"或非正式的,更个性化的"du".

所以,虽然你只是说"你能帮助我吗?" 用英语,你可以说

  • Können SIE MIR helfen?(正式的,当你真的不认识这个人的时候)
  • Kannst du mir helfen?(非正式的,当你已经知道这个人的时候)

在德国.

我现在的问题是,对于我的Django应用程序,我想使用第二个版本("du"),因为它更适合我的Web应用程序.事实是,Django(我所知道的?)只支持正式版本,现在我在Web应用程序中存在不一致之处.有时候,你可以阅读"du"和有时"Sie"(来自默认的Django翻译).

当然,我可以用"du"删除我手动添加的句子,但我不喜欢它,因为网页将适用于彼此了解的人.

我的两个问题:

  1. 有没有办法让Django使用我可能错过的非正式翻译?
  2. 如果Django没有提供此功能,有没有办法让Django支持它(我很乐意提供/更改翻译).或者你知道其他一些解决方案吗?

Jam*_*ett 2

Django 的翻译系统只是gettext,因此您可以使用 的功能gettext

您可能需要的是上下文标记。Django支持这个

因此,您可以使用“正式”或“非正式”上下文标记来标记要翻译的字符串,这将允许您提供字符串的多个翻译(每个不同的上下文标记一个)。

因此,例如,如果您的模板代码包含两者

[% trans "Can you help me?" context "formal" %}
Run Code Online (Sandbox Code Playgroud)

{% trans "Can you help me?" context "informal" %}
Run Code Online (Sandbox Code Playgroud)

那么你的.po文件将以该字符串两次结束,你可以提供正式和非正式的翻译,Django 将为你请求的上下文提取正确的翻译。