Использование ' 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 3

2 ответа:

Попробуйте ugettext_lazy

Https://docs.djangoproject.com/en/1.3/topics/i18n/internationalization/#lazy-translation

Всегда используйте ленивые переводы в Django модели.

Ugettext просто помечает строки как переводимые. Это не делает никакого перевода для вас, как такового. Вы должны создать языковые файлы (.mo и .po), а затем установите параметр LANGUAGE_CODE в соответствие. Читать документация Django на интернационализации и локализации для более подробной информации.