Как перевести форму в Django? - PullRequest
5 голосов
/ 19 декабря 2011

Я хочу перевести форму Джанго.Как перевести метки полей?

Я пробовал field.label=ugettext_lazy(field.label), но метки не заполняются в файле django.po

Возможно, я неправильно понял концепцию ugettext_lazy,Я думаю

Проще говоря, я хочу, чтобы метки полей были помещены в файл django.po.

Другие переводы, выполненные с использованием тегов ugettext и {% trans %}, работают хорошо

Мне удалось перевести поля, основанные на модели, установив verbose_name, но когда я пытаюсь это сделать для поля формы, я получаю TypeError

Ответы [ 3 ]

6 голосов
/ 12 апреля 2012

Я уточню, что:

from django.utils.translation import ugettext_lazy as _
...
first_name = forms.CharField(label=_(u'First name'))

Вероятно, возникнет ошибка, потому что формы не могут хорошо управлять прокси-объектом, таким как _ (u'First name '), и результат рендеринга является недействительным. Я проверял это на python2.x и django 1.3 / 1.4

Причина кроется в скомпилированных .po сообщениях, изначально созданных разными o.s. и библиотеки (это может зависеть от python, django, os. версии библиотек). Если у вас есть эта ошибка, вы должны заново создать локализованные сообщения.

5 голосов
/ 19 декабря 2011
from django.utils.translation import ugettext_lazy as _
first_name = forms.CharField(label=_(u'First name'))
5 голосов
/ 19 декабря 2011
class ExampleForm(forms.Form):
    f1 = forms.CharField(label= ugettext_lazy('field label'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...