Django поле кортежа / выбора не переводится - PullRequest
0 голосов
/ 10 января 2020

У меня есть Integer ModelField с набором вариантов выбора.

field = models.IntegerField(choices=CHOICES_CONSTANT)

Этот CHOICES_CONSTANT определен в другом файле и импортирован

CHOICES_CONSTANT = (
    (0, _('One')),
    (1, _('Two')),
    ...
)

_ от from django.utils.translation import ugettext_lazy as _, так как поле модели требует от вас ленивых переводов.

Я также импортирую CHOICES_CONSTANT в другие файлы (например, отчеты), где в отчете я могу сказать str(dict(CHOICE_CONSTANT)[object.field]) if object.field else '' .

Этот str(dict(CHOICES_CONSTANT)[object.field]) if object.field else '' не переводится. На самом деле, если я просто print(CHOICES_CONSTANT), он сразу оценивает язык по умолчанию (Engli sh).

В других местах я бы сделал object.get_field_display(), и это тоже не переводится.

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 10 января 2020

Я потратил слишком много времени на то, чтобы смотреть в неправильном направлении ...

Ленивые загруженные переводы работали правильно. Проблема заключалась в том, что LOCALE_PATHS в settings.py не включало папку root directory locale/. Константы CHOICES_CONSTANT и другие хранятся в каталоге проекта, а не в приложении, поэтому приложение не получает переводы из каталога root.

...