Ответ 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()
решает эту проблему, переведя строку, когда ее значение будет доступно, а не при вызове функции.