Что такое pgettext_lazy в Django? - PullRequest
2 голосов
/ 05 января 2020

Я работал с проектом с открытым исходным кодом (сделано в Django). Я не мог понять, для чего используется pgettext_lazy. Подскажите пожалуйста

  1. Что такое pgettext_lazy?
  2. Использование pgettext_lazy?

1 Ответ

2 голосов
/ 05 января 2020

pgettext_lazy(..) [Django -doc] - это функция, используемая для перевода текста. Документация Django содержит раздел по переводу [Django -doc] , в котором обсуждается это.

pgettext_lazy - это ленивый вариант pgettext , Эта функция делает контекстно-зависимые переводы [Django -doc] . Контекстные переводы имеют дело с тем фактом, что слово может быть переведено несколькими способами. Например, May можно перевести как название месяца или глагол.

Мы можем пояснить, как его перевести, добавив «маркер контекста» и, таким образом, вызвать перевод с помощью:

from django.utils.translation import pgettext

month = pgettext(<b>"month name"</b>, "May")

В ваших .po файлах, которые вы используете для определения переводов, вы можете затем добавить маркер контекста:

<b>msgctxt "month name"</b>
msgid "May"
msgstr ""

You может выполнять переводы в представлениях на языке, который активируется, но вы не можете просто определить этот перевод, например, help_text модели. Действительно, если бы вы позвонили pgettext(..) в models.py файле. Это переведет help_text на язык, который активен в то время. Но если впоследствии пользователь с другим языком использует этот help_text, он не будет переведен на другой язык.

Делая перевод ленивый , процесс перевода будет отложено до вызова str(..) результата. Таким образом, если вы отобразите ленивый объект в шаблоне, он будет переведен на язык пользователя.

Дополнительную информацию об этом можно найти в разделе Перевод в документация .

...