【问题标题】:Flask WTF localization with Babel使用 Babel 进行 Flask WTF 本地化
【发布时间】:2015-07-27 08:35:06
【问题描述】:

我使用了 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”选项

【问题讨论】:

  • 你能发布一个错误的例子吗?
  • 是的。我编辑了我的帖子。够了吗?

标签: python flask flask-wtforms python-babel


【解决方案1】:

验证器Required 的消息是通过Required(message=error_message) 设置的,也可以使用 babel 进行翻译。详情请参阅WTForms documentation

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')])

【讨论】:

  • 我觉得有误会。我不想翻译这些消息。我想翻译字段的占位符。字段为空时显示的项目
  • 在我的本地化案例中,我在 python 脚本中翻译占位符,并将翻译后的消息发送到 html 表单,以下列方式使用它们:{{form.name(placeholder=ui.get('login'))}} 其中form.namewtforms.fields.StringField,而@ 987654328@ 是带有翻译占位符的字典。
  • 不是我所期待的,但它对我有用。谢谢
  • 你能解释一下ui字典吗?你如何定义它?在哪里?
  • 这是一个简单的字典,用于存储我的本地化消息。它看起来像:ui = {'login': 'Ім’я користувача', 'password': 'Пароль'} 我更喜欢这种类型的本地化项目。
【解决方案2】:

试试lazy_gettext('')

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

HTML中:

{{form.username.label (class="form-control-label") }}

【讨论】:

    猜你喜欢
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    相关资源
    最近更新 更多