Django перевод ngettext не работает с gettext в одном файле

вот моя установка для генерации переводов для единственного и множественного числа текста

from django.utils.translations import ngettext as _
from django.utils.translations import gettext

num = 3
my_plural_string = _("{num} apple", "{num} apples", num).format(num=num)
my_single_string = gettext("this is a text")


При использовании ngettext и gettext в одном файле созданный файл .po не включает атрибут msgid_plural для первой строки

#: .\test_app\test_translation.py:10
msgid "{num} apple"
msgstr ""

#: .\test_app\test_translation.py:11
msgid "this is a text"
msgstr ""

Самое странное в этой ситуации то, что если вы измените импорт следующим образом

from django.utils.translation import ngettext
from django.utils.translation import gettext as _

Это будет работать, как ожидалось :)

Вы не можете псевдоним ngettext обозначить как _. Только функции с одним аргументом (gettext или gettext_lazy) могут быть псевдонимами _, как указано в документации. Причина в том, как работает xgettext (инструмент GNU gettext).

Вернуться на верх