Подтвердить что ты не робот

Django - множественная плюрализация в модели администратора

У меня это было очень долгое время, но без результатов. Я начинаю с 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 работает. Это не то, как запустить множественную плюрализацию в целом, но как изменить что-либо в админке (например, новую абстрактную модель и т.д.), Чтобы запустить ее там...

4b9b3361

Ответ 1

После того, как вы попали в источники Django, это невозможно сделать в администраторах, не перекрывая многие функции.

Ответ 2

Вам нужно добавить файл .po:

"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"

Затем в шаблоне вы используете форму множественного числа, передающую действительный счетчик. Gettext имеет всю необходимую информацию:

  • Он знает, сколько существует множественных чисел
  • Он знает, как вычислять множественное число для числа
  • Django передает msg_id для множественного числа и счетчика.