Замена строки на "Plural-Forms: nplurals=2; plural= (n != 1);\n"
во всех случаях .po файлов, которые должны помочь вам!
gettext обычно переводит слово в слово, когда вы используете переводы Django (i18n & l10n). Но становится сложнее, когда вы хотите перевести (в основном) существительные в форму единственного / множественного числа.
Например, рассмотрим этот пример:
if n == 1:
string = "%d file is deleted"%n
else:
string = "%d files are deleted"%n
Для обработки перевода множественного числа в интернационализации, Plural-формы - это стандарт для подражания. Python-Django реализует ngettext следующим образом:
( посетите документацию для вашей версии Django )
ngettext('%d file is deleted', '%d files are deleted', n) % n
В большинстве языков n! = 1 считается множественным числом. В приведенном выше примере, когда n=1
Джанго должен учитывать '%d file is deleted'
и '%d files are deleted'
, когда n!=1
для переводов. Следовательно, определение для множественных форм в .po файлах выглядит так: "Plural-Forms: nplurals=2; plural= (n != 1);\n"
Теперь, когда вы запускаете makemessages
, Django пытается помочь вам, добавив строку "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
в файлы .po, намекая на эту строку, чтобы заменить ее нашим определением множественных форм.
Примечание:
Не каждый язык имеет 2 множественных числа, например, японский, вьетнамский, корейский, тайский не нужно различать единственное и множественное число (следовательно, Plural-Forms: nplurals=1; plural=0;
). С другой стороны, есть некоторые языки, такие как румынский, литовский, русский, польский, где nplurals=3
. Проверьте эту ссылку для дальнейших примеров.
Надеюсь, в вашем случае nplurals = 1. Если нет, посетите эту ссылку для множественного числа.