Интернационализация Django очень хорошая (gettext based, LocaleMiddleware), но каков правильный способ перевода имени модели и атрибутов для страниц администрирования? Я не нашел ничего об этом в документации:
- http://docs.djangoproject.com/en/dev/topics/i18n/internationalization/
- http://www.djangobook.com/en/2.0/chapter19/
Я хотел бы иметь "Выбрать заказ для изменения" вместо "Выбрать порядок для изменения". Обратите внимание: "порядок" не переведен.
Сначала я определил модель, активированную USE_I18N = True
в settings.py, запустите django-admin makemessages -l ru
. По умолчанию для имен моделей и атрибутов не создаются записи.
Грепинг в исходном коде Django нашел:
$ ack "Select %s to change"
contrib/admin/views/main.py
70: self.title = (self.is_popup and ugettext('Select %s') % force_unicode(self.opts.verbose_name) or ugettext('Select %s to change') % force_unicode(self.opts.verbose_name))
Таким образом, мета-свойство verbose_name
, похоже, играет определенную роль здесь. Пытался использовать его:
class Order(models.Model):
subject = models.CharField(max_length=150)
description = models.TextField()
class Meta:
verbose_name = _('order')
Теперь обновленный po
файл содержит msgid 'order'
, который можно перевести. Поэтому я включил перевод. К сожалению, на страницах администратора отображается тот же микс "Выберите порядок для изменения".
В настоящее время я использую Django 1.1.1. Может ли кто-нибудь указать мне на соответствующую документацию? Потому что Google не может.;-) Тем временем я буду копать глубже в исходный код django...