WTForms l10n和i18n无法正常工作

时间:2015-10-08 18:14:08

标签: python python-2.7 flask wtforms flask-wtforms

我正在学习使用烧瓶。我无法使WTForms内置翻译工作

http://wtforms.readthedocs.org/en/latest/i18n.html#using-the-built-in-translations-provider

这是我的Form类

class MyBaseForm(Form):
class Meta:
    locales = ['es_ES', 'es']

class LoginAdminForm(MyBaseForm):
    user = StringField('user', validators=[validators.InputRequired()])
    password = StringField('password', validators=[validators.InputRequired()])

这是路由

app = Flask(__name__)
app.config.from_object('config')

@app.route('/admin', methods=['GET', 'POST'])
def adminLogin():
    form = LoginAdminForm()
    if form.validate_on_submit():
        return redirect('/index') #TODO: Redirect to actual admin menu
    return render_template("adminLogin.html", title="Admin login",form=form)

这是配置

WTF_CSRF_ENABLED = True
SECRET_KEY = 'you-will-never-guess'

这是adminLogin.html

{% extends "base.html" %}
{% block content %}
  <form action="" method="post" name="login">
    {{ form.hidden_tag() }}
    <p>
      Usuario:
      {{ form.user }}
      {% for error in form.password.errors %}
        <span style="color: red;">[{{ error }}]</span>
      {% endfor %}<br>
      Ingrese Contraseña:
      {{ form.password }}
      {% for error in form.password.errors %}
        <span style="color: red;">[{{ error }}]</span>
      {% endfor %}<br>
    </p>
    <p><input type="submit" value="Acceder"></p>
{% endblock %}

base.html只是一个空的html骨架 错误总是以英语出现。我也试过在构造函数中传递参数不起作用

form = LoginAdminForm(meta={'locales': ['en_US', 'en']})
编辑:经过一段时间的游戏后,我放弃了烧瓶-WTForm并使用了纯粹的WTForms。然后它奏效了。我猜这是一个关于flask-WTForm的bug。如果我没有得到答案,我会选择纯粹的WTForms

1 个答案:

答案 0 :(得分:0)

我正在使用的方法有效,但只有WTForm NOT with flask-WTForm。我假设这是一个错误。我找不到任何关于它的文档。 我现在将使用纯WTForm,因为它似乎解决了这个问题。