Использование `ugettext` в определении поля Django - PullRequest
3 голосов
/ 27 мая 2011

В моем файле models.py я определяю поле на модели следующим образом:

description = models.CharField(
    max_length=40,
    default=_('Bla bla bla'),
)

Теперь _ равно django.utils.translation.ugettext, и я хочу использовать в качестве значения по умолчанию перевод на иврит'Bla bla bla', что составляет 'בלה בלה בלה'.(Сайт только на иврите.) Строка правильно переведена в файл сообщений.Но когда я запускаю администратора Django и создаю новый объект, я вижу на поле английский 'bla bla bla'.Я предполагаю, что английский является активным языком при компиляции модуля models.py.Как я могу решить это и сделать это на иврите?

Я знаю, что одним из решений было бы отказаться от ugettext и просто написать иврит в модуле Python, но я предпочитаю избегать этого, чтобы предотвратить кодирование ада.

Ответы [ 2 ]

1 голос
/ 27 мая 2011

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

1 голос
/ 27 мая 2011

Попробуйте ugettext_lazy

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

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

...