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

时间:2018-04-29 07:12:21

标签: 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支持它(我很乐意提供/更改翻译)。或者你知道其他一些解决方案吗?

1 个答案:

答案 0 :(得分:2)

Django的翻译系统仅为gettext,因此您可以使用gettext的功能。

你可能想要的是contextual markers。 Django supports this

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

因此,例如,如果您有包含

的模板代码
[% trans "Can you help me?" context "formal" %}

{% trans "Can you help me?" context "informal" %}

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