Ответ 1
Важные вещи, не упомянутые в документации Django:
- запустите
django-admin compilemessages
, например. как часть вашей сборки обработать. Спасибо stevejalim! - применить django
ugettext_lazy()
к именам моделей (Meta
class иverbose_name
) Атрибут - (поле модели
verbose_name
) также может быть переведен с помощьюugettext_lazy()
- используйте ленивый перевод в метаданных модели, иначе перевод происходит при загрузке классов моделей и настроек ваших пользователей, особенно настройки браузера, не будут учитываться.
- Я использую некоторые области определения имен атрибутов, например. разделение имени модели и имена атрибутов с помощью трубы. Это же соглашение используется в рубиново-GetText. Предыстория: имена атрибутов, такие как "title" или "name", переведены по-разному на большинстве языков в зависимости от контекста. пример 'Book' title '- > ' Titel 'или' Buchtitel 'на немецком языке. Но "Chapter | title" будет переведен как "Überschrift".
Пример использования вышеприведенных принципов:
from django.utils.translation import ugettext_lazy as _
class Order(models.Model):
subject = models.CharField(max_length=150, verbose_name = _('Order|subject'))
description = models.TextField( verbose_name = _('Order|description'))
class Meta:
verbose_name = _('order')
verbose_name_plural = _('orders')
Или есть лучший способ перевести страницы модели и администратора?
В любом случае мы должны улучшить документацию Django и заполнить пробел!