Локализация Flask WTF с помощью Babel

Я использовал Flask Babel и локализовал свой проект, но у меня проблема с формами WTF, я не могу перевести поля, отображаемые, когда поле пустое. Любая помощь?

Это работает:

return jsonify({'error': gettext('Incorrect Data')}), 406

но при работе с классом Form Babel не извлекает поле. как это:

class LoginForm(Form):
    username = TextField(gettext(u'Username'), validators=[validators.Required()])
    password = PasswordField('Password', validators=[validators.Required()])

Я пробовал как с, так и без опции 'u'


person Community    schedule 27.07.2015    source источник
comment
Можете ли вы опубликовать пример того, что работает неправильно?   -  person wanderlust    schedule 27.07.2015
comment
Да. Я отредактировал свой пост. Этого достаточно?   -  person    schedule 27.07.2015


Ответы (2)


Сообщения для валидатора Required задаются через Required(message=error_message), также переводите их с помощью babel. Дополнительные сведения см. в документации по WTForms.

class LoginForm(Form):
    username = TextField(gettext(u'Username'), validators=[validators.Required(message='Validation failed for username')])
    password = PasswordField('Password', validators=[validators.Required(message='Validation failed for password')])
person wanderlust    schedule 27.07.2015
comment
Я думаю, что есть недоразумение. Я не хочу переводить сообщения. Я хочу перевести заполнители полей. Элементы, которые отображаются, когда поле пусто - person ; 27.07.2015
comment
В моем случае для локализации я перевожу заполнители в скрипт Python и отправляю переведенные сообщения в html-форму, где использую их следующим образом: {{form.name(placeholder=ui.get('login'))}}, где form.name — это wtforms.fields.StringField, а ui — это словарь с переведенными заполнителями. - person wanderlust; 27.07.2015
comment
Не то, что я ожидал, но это помогает мне. Спасибо - person ; 27.07.2015
comment
Не могли бы вы объяснить словарь пользовательского интерфейса? Как вы это определяете? Где? - person ; 27.07.2015
comment
Это простой словарь, в котором я храню свои локализованные сообщения. Это выглядит следующим образом: ui = {'login': 'Ім’я користувача', 'password': 'Пароль'} Я предпочитаю такой тип локализации своих проектов. - person wanderlust; 28.07.2015

попробуй с lazy_gettext('').

class LoginForm(Form):
    username = TextField(lazy_gettext(u'Username'), validators=[validators.Required()])

в HTML:

{{form.username.label (class="form-control-label") }}
person Oj G    schedule 14.05.2019