Использование ' ugettext` в определении поля Django
В моем файле models.py
я определяю поле для модели следующим образом:
description = models.CharField(
max_length=40,
default=_('Bla bla bla'),
)
Теперь _
- это django.utils.translation.ugettext
, и я хочу использовать в качестве значения по умолчанию еврейский перевод 'Bla bla bla'
, который является 'בלה בלה בלה'
. (Сайт только на иврите.) Строка правильно переведена в файле сообщений. Но когда я запускаю Django admin и создаю новый объект, я вижу английский 'bla bla bla'
на поле. Я предполагаю, что английский язык является активным языком при компиляции модуля models.py
. Как я могу решить эту проблему и сделать ее Иврит?
ugettext
и просто написать иврит внутри модуля Python, но я предпочитаю избегать этого, чтобы предотвратить кодирование ада.2 ответа:
Попробуйте
ugettext_lazy
Https://docs.djangoproject.com/en/1.3/topics/i18n/internationalization/#lazy-translation
Всегда используйте ленивые переводы в Django модели.
Ugettext просто помечает строки как переводимые. Это не делает никакого перевода для вас, как такового. Вы должны создать языковые файлы (.mo и .po), а затем установите параметр LANGUAGE_CODE в соответствие. Читать документация Django на интернационализации и локализации для более подробной информации.