首页 > 解决方案 > 如何使用 Flask-Babel 在 flask_wtf 中本地化 QuerySelectField 返回的数据

问题描述

我想使用 Flask-Babel 本地化应用程序中的内容。现在我了解了 Flask-Babel 的工作原理以及它用于本地化静态内容的方式。

我使用 Flask-wtf 创建了许多表单,它们使用 QuerySelectField 从数据库中获取数据。这是具有 QuerySelectField 的注册表单。

from flask_babel import _, lazy_gettext as _l

class RegistrationForm(FlaskForm):
    username = StringField(_l('Username'), validators=[DataRequired()])
    email = StringField(_l('Email'), validators=[DataRequired(), Email()])
    country = QuerySelectField(_l('Country'),
                           blank_text=u'-- please choose --',
                           query_factory=lambda: Country.query,
                           allow_blank=False)
    password = PasswordField(_l('Password'), validators=[DataRequired()])
    password2 = PasswordField(
        _l('Repeat Password'), validators=[DataRequired(),
                                           EqualTo('password')])
    submit = SubmitField(_l('Register'))

无论如何,可以使用 babel 将国家/地区值本地化,而不必在数据库中以不同语言存储国家/地区吗?

标签: pythonflaskflask-wtformsflask-babel

解决方案


据我所知,Flask-Babel 用于本地化静态内容(中的字符串.py.html),您不能将其用于从数据库输出的动态内容。对于此用例,您可能需要使用Google Translation APIMicrosoft translate等翻译服务。


推荐阅读