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