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).