【问题标题】:Flask-Babel how to use translation in Jinja template fileFlask-Babel 如何在 Jinja 模板文件中使用翻译
【发布时间】:2012-03-01 11:14:36
【问题描述】:

在我的 Flask 应用程序的 main.py 文件中,我定义了:

from flaskext.babel import gettext
....
def somefun():
    return render_template('some.html', messages=messages)

在模板文件 some.html 中,我使用了:

<input type='text' name='keywords' value='{{ keywords|default('') }}' placeholder='{{ gettext('Search...') }}' />

这给出了一个错误:

<input type='text' name='keywords' value='{{ keywords|default('') }}' placeholder='{{ gettext('Search...') }}' />
UndefinedError: 'gettext' is undefined

如何导入这个函数供模板使用?

【问题讨论】:

    标签: python flask jinja2 gettext flask-babel


    【解决方案1】:

    不幸的是,这根本没有记录,但 Flask-Babel 透明地使用 Jinja2's i18n extension。这意味着默认情况下,可以使用以下表达式函数:gettextngettext_

    也可以使用模板标签:

    {% trans %}foo{% endtrans%}
    
    {% trans num %}
    There is {{ num }} object.
    {% pluralize %}
    There are {{ num }} objects.
    {% endtrans %}
    

    还有正在等待补丁的bug report about missing docs ;)

    【讨论】:

    • 这不是真的,我不能在没有任何导入操作的情况下使用“_”。
    • @BrentJiang 你真的初始化了 Flask-Babel 扩展吗?
    • 谢谢,在 create 'from flaskext.babel import Babel' 和 'babel = Babel(app)' 之后就可以使用了
    • 你是救命稻草
    • 我需要{% trans with name=varFromContext %}Hello {{ name }}{% endtrans %}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    相关资源
    最近更新 更多