我在使用 Flask Babel 和 python3.6 时遇到问题。
我的代码如下:
@babel.localeselector
def get_locale():
lang_supported = app.config.get('LANGUAGES', [])
lang = request.accept_languages.best_match(lang_supported.keys())
print('de', lang_supported)
return lang
我没有在控制台上打印任何内容。我不知道我做错了什么。
我的应用程序在同一文件中按以下方式启动:
app = Flask(__name__)
app.config.from_object("config")
babel = Babel(app)
在我的配置文件中,与 Babel 相关的所有内容如下:
LANGUAGES = {
'en': 'English',
'de': 'Deutsch'
}
# BABEL_TRANSLATION_DIRECTORIES = '/path/to/flask/translations'
# BABEL_DEFAULT_LOCALE = 'de'
# BABEL_DEFAULT_TIMEZONE = 'Europe/Berlin'
在寻找一些解决方案时,我还尝试了注释行。
我能够使用 pybabel 并创建我的.pot
, .po
, .mo
, 文件。我为“de”创建了我的翻译
我没有找到任何关于为什么我的print
声明没有执行的信息。当我手动创建 acontext_processor
并调用 myget_locale()
时,打印语句按预期显示。
如果您需要更多调试信息,请告诉我。
更新:调用 gettext 的代码示例
在视图内部,我将其称为例如:
from flask_babel import gettext as _
print(_('Hello'))
或者
from flask_babel import gettext
print(gettext('Hello'))
在 Jinja2 中:
{{ _( 'Hello' ) }}