0

我在使用 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' ) }}
4

0 回答 0