Django 中的 pgettext_lazy 是什么?

May*_*aja 5 django django-rest-framework

我正在使用一个开源项目(用 Django 制作)。我无法理解pgettext_lazy是用来做什么的。你能告诉我吗

  1. 什么是 pgettext_lazy?
  2. pgettext_lazy 的用法?

Wil*_*sem 7

pgettext_lazy(..)[Django-doc]是一个用来翻译文本的函数。Django 文档中有一个关于翻译部分[Django-doc]讨论了这一点。

pgettext_lazypgettext. 这是一个进行上下文感知翻译 [Django-doc]的函数。上下文感知翻译处理一个单词可以以多种方式翻译的事实。例如May可以翻译为月份的名称,或动词。

我们可以通过添加“上下文标记”来明确如何翻译它,从而调用翻译:

from django.utils.translation import pgettext

month = pgettext("month name", "May")
Run Code Online (Sandbox Code Playgroud)

在您的.po文件中,您用来定义翻译的文件,然后您可以添加上下文标记:

msgctxt "month name"
msgid "May"
msgstr ""
Run Code Online (Sandbox Code Playgroud)

您可以在视图中以激活的语言进行翻译,但您不能仅在例如help_text模型中定义该翻译。事实上,如果你要调用pgettext(..)一个models.py文件。它将翻译成当时help_text活跃的语言。但是,如果稍后使用不同语言的用户使用它help_text,则不会将其翻译成其他语言。

通过使翻译延迟,翻译过程被推迟,直到str(..)对结果调用a 。这样,如果您在模板中渲染惰性对象,它将被翻译成用户的语言。

您可以在文档翻译部分找到更多相关信息。

  • @MayankBudhiraja:如果这令人满意地回答了您的问题,请随意接受它(绿色勾号),以便其他用户知道有一个正确的答案。 (2认同)