Интернационализация Django очень хорошая (на основе gettext, LocaleMiddleware), но как правильно перевести название модели и атрибуты для страниц администратора? Я не нашел ничего об этом в документации:
Я бы хотел иметь "Выберите заказ для изменений" вместо "Выберите заказ для изменений". Обратите внимание, что «заказ» не переведен.
Сначала я определил модель, активировал 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.
Может ли кто-нибудь указать мне соответствующую документацию? Потому что гуглить не могу. ;-) А пока я углублюсь в исходный код django ...