如何在Flask Babel中配置下划线标签并替换已弃用Jinja2扩展?
Flask Babel 下划线标签(
_{{ "text" }})配置方案 1. 修正babel.cfg配置
无需添加已弃用的jinja2.ext.autoescape,jinja2.ext.with_,改为指定jinja2国际化扩展:
[python: **.py] [jinja2: **/templates/**.html] extensions=jinja2.ext.i18n
这个扩展是jinja2原生支持国际化的必要组件,能识别模板中的_()或_{{ "text" }}语法。
2. 在Flask应用中绑定下划线函数
在应用初始化代码里,将Flask Babel的gettext函数注册为Jinja2环境的全局_函数:
from flask import Flask from flask_babel import Babel, gettext app = Flask(__name__) # 配置Babel基础参数(示例) app.config['BABEL_DEFAULT_LOCALE'] = 'en' app.config['BABEL_TRANSLATION_DIRECTORIES'] = 'translations' babel = Babel(app) # 绑定下划线函数到Jinja环境 app.jinja_env.globals['_'] = gettext
3. 提取翻译文件
执行提取命令时确保指向正确的babel.cfg:
pybabel extract -F babel.cfg -o messages.pot .
这样配置后,模板中的_{{ "some text" }}就能被正常识别并提取到翻译文件中,同时不会出现扩展弃用的警告。
内容的提问来源于stack exchange,提问作者Thorben Dhaenens
相关产品推荐
相关产品推荐

