Джанго форма и I18N - PullRequest
       6

Джанго форма и I18N

12 голосов
/ 23 апреля 2010

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

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

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

{{form.as_p}}

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

1 Ответ

20 голосов
/ 23 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...