У меня это было очень долгое время, но без результатов. Я начинаю с Django, поэтому я не знаю всех его функций. Но эта проблема очень важна для клиента:-( Не могли бы вы мне помочь?
Итак, я определил эту модель:
from django.utils.translation import ugettext_lazy as _
class Product(Model):
#translation for model and set db table name
class Meta:
verbose_name = _('product')
verbose_name_plural = _('products')
...
Теперь, из-за чешского языка, мне нужны эти записи в списке admin:
- 0 výrobků
- 1 výrobek
- 2-4 výrobky
- 5- výrobků
Всюду, я использую ungettext
успешно. Однако, я не знаю, как получить счет в Meta. Я нашел это абстрактным (но кажется бесполезным):
class Model(DjangoModel):
class Meta:
abstract = True
def get_description(self):
return ungettext(self.verbose_name, self.verbose_name_plural, self.count) % \
{'count':self.count, 'name':self.name}
Источник из интернационализация django: счетчик не доступен при маркировке строк для плюрализации
Возможно, в конце было бы хорошо показать определение языка (пытался добавить/удалить% s из msgid
):
msgid "%s product"
msgid_plural "%s products"
msgstr[0] "%s 1 výrobek"
msgstr[1] "%s 2 výrobky"
msgstr[2] "%s 5 výrobků"
Если вам нужна дополнительная информация для вопроса, обязательно предоставим ее.
Спасибо вам большое заблаговременно.
UPDATE
Пожалуйста, убедитесь, что я использую следующее в файле .po:
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
Еще раз, где-нибудь еще, кроме моделей админов, IT работает. Это не то, как запустить множественную плюрализацию в целом, но как изменить что-либо в админке (например, новую абстрактную модель и т.д.), Чтобы запустить ее там...