У меня есть формы, которые я хочу отобразить на различных языках: Я использовал параметр метки для установки параметра и использовал ugettext () на маркировках:
agreed_tos = forms.BooleanField(label=ugettext('I agree to the terms of service and to the privacy policy.'))
Но когда я представляю форму в своем шаблоне, с помощью
{{form.as_p}}
Маркировки не переводятся. У кого-то есть решение для этой проблемы?
Вы должны использовать 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 ()
решает эту проблему, переводя строку при обращении к ее значению, а не при вызове функции.