我对 Python 和 Flask(使用 Jinja2 作为模板引擎)都很陌生,我不确定我的做法是否正确。我正在使用 Flask-Babel 扩展为我的 Web 应用程序添加 i18n 支持。我想从我的 js 代码中获取本地化字符串,例如:
var helloWorld = gettext('Hello, world');
console.log(helloWorld); //should log a localized hello world message
为此,我配置了 babel (babel.cfg):
[python: **/**.py]
[jinja2: **/**.html]
extensions=jinja2.ext.autoescape,jinja2.ext.with_
[javascript: **/**.js]
encoding = utf-8
它的初始化是(为简单起见省略了导入):
#main Flask app
app = Flask(__name__)
#localization
babel = Babel(app)
LANGUAGES = {
'ca': 'Catalan',
'en': 'English',
'de': 'Deutsch',
'es': 'Español',
'fi': 'Finnish',
'it': 'Italian'
}
@babel.localeselector
def get_locale():
return request.accept_languages.best_match(LANGUAGES.keys())
#some more stuff...
Babel 在构建 POT/PO 语言文件时识别该字符串,但由于未定义 gettext 函数,因此我似乎无法从 js 代码访问这些本地化字符串。Jinja2 似乎忽略了这部分。
有什么提示吗?