Форма Django и i18n

У меня есть формы, которые я хочу отобразить на различных языках: Я использовал параметр метки для установки параметра и использовал ugettext () на маркировках:

agreed_tos = forms.BooleanField(label=ugettext('I agree to the terms of service and to the privacy policy.'))

Но когда я представляю форму в своем шаблоне, с помощью

{{form.as_p}}

Маркировки не переводятся. У кого-то есть решение для этой проблемы?

12
задан madewulf 22 April 2010 в 21:53
поделиться

1 ответ

Вы должны использовать ugettext_lazy () :

from django.utils.translation import ugettext_lazy

# ... 
  agreed_tos = forms.BooleanField(label=ugettext_lazy('I agree to the terms of service and to the privacy policy.'))

Атрибуты модели и формы инициализируются при запуске вашего приложения Django. Если вы используете ugettext () , перевод будет установлен один раз при инициализации и никогда не изменится. ugettext_lazy () решает эту проблему, переводя строку при обращении к ее значению, а не при вызове функции.

20
ответ дан 2 December 2019 в 18:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: