jinja macro中的烧瓶巴贝尔

时间:2015-11-09 17:33:18

标签: python flask flask-wtforms babel

我认为我的模板中的babel翻译工作正常,因为这样的简单字符串:

<label class="control-label">{{_('Start')}}</label>
根据我的messages.po

,它翻译得很好

但是现在在我的表格中我大多数时候都想使用这个宏:

{% macro render_field_with_errors(field) %}
<div class="form-group">
    {{ field.label }} {{ field(class_='form-control', **kwargs)|safe }}
    {% if field.errors %}
    <ul>
        {% for error in field.errors %}
        <li>{{ error }}</li>
        {% endfor %}
    </ul>
    {% endif %}
</div>
{% endmacro %}

我希望{{ field.label }}翻译

所以我改变了我的表格类,添加了getttext(),如下所示,更新了我的messages.pot,翻译了messages.po,删除了模糊,编译。

class ProfileForm(Form):
    location = StringField(gettext('location'), validators=[DataRequired()])
    password = PasswordField(gettext('password'), validators=[DataRequired()])
    unit = SelectField(gettext('unit'), coerce=int, choices=[(1, 'kilometers / meters'), (2, 'miles / feet')])
    submit = SubmitField(gettext('Update'))

遗憾的是,字段无法翻译,页面中的其余字段为。我错过了什么吗?显然是的!

1 个答案:

答案 0 :(得分:0)

解决方案是在lazy_gettext

中使用gettext代替class ProfileForm(Form):

lazy_gettext