Сделать администратором Django использование переведенных имен полей
Я делаю локализацию приложения Django.
Веб-интерфейс на лицевой панели отлично работает, а сайт администратора Django также выбирает выбранный язык.
Но в некоторых местах он использует только языковые настройки и использует английские версии имен полей и столбцов по умолчанию, хотя они были переведены. Зачем? Как я могу использовать переведенные имена для имен столбцов и полей в интерфейсе администратора?
Пример:
class Order(models.Model):
OPTIONS = ( (0, _("Bank transfer") ), (1, _("Cash on delivery") ), )
user = models.ForeignKey(User, name=_("User") )
payment = models.IntegerField(choices=self.OPTIONS, name=_("Payment"))
Для чего я получаю:
- Переведенные стандартные административные тексты, такие как "Добро пожаловать" и "Выход" в верхней части
- Переведенные параметры SELECT для типа платежа
- НЕ переведенные имена столбцов и метки форм для полей ( "Пользователь", "Оплата" ).
Я использую Django 1.0.2. Тексты, которые не переводятся, отображались в файлах локалей вместе с теми, которые работают.
Подзапрос: возможно ли локализовать имена приложений?
Ответы
Ответ 1
Оказалось, что я устанавливаю переведенную версию для name вместо verbose_name.
Это работает:
class Order(models.Model):
OPTIONS = ( (0, _("Bank transfer") ), (1, _("Cash on delivery") ), )
user = models.ForeignKey(User, verbose_name=_("User") )
payment = models.IntegerField(choices=self.OPTIONS, verbose_name=_("Payment"))
Ответ 2
TomA получил правильный ответ.
Но Django теперь принимает первый аргумент как подробное имя поля, кроме для ForeignKey
, ManyToManyField
и OneToOneField
типы полей.
Поэтому, если вы ленивы, вы также можете написать:
payment = models.IntegerField(_("Payment"), choices=self.OPTIONS)
Вам все равно придется использовать аргумент ключевого слова для примера ForeignKey
, хотя:
user = models.ForeignKey(User, verbose_name=_("User"))
Ответ 3
Возможно, вы используете пользовательскую модель ModelForm для этой модели (в admin.py)? Вам нужно будет добавить значение gettext-ed для метки полей, которые вы переопределите.
Локализация имен приложений невозможна, так как Django 1.0 - не уверен в 1.1.