1

我在 Flask 中有这个功能,它以英文返回网站。此外,我希望能够通过 html 按钮在网站上使用德语。如何通过按钮将语言从英语更改为德语,从德语更改为英语?此外,是否可以仅在调用时使用函数 get_locale,而不是自动运行?

@babel.localeselector
def get_locale():
     return 'en'  
4

1 回答 1

1

首先您需要将地址存储在主应用程序文件中:

@app.route('/language=<language>')
def set_language(language=None):
    session['language'] = language
    return redirect(url_for('home'))

比您需要在主应用程序文件中更改为 get_locale 函数的相同地址:

@babel.localeselector
def get_locale():
    if request.args.get('language'):
        session['language'] = request.args.get('language')
    return session.get('language', 'en')

从模板访问当前语言:

app.config['LANGUAGES'] =  {
    'en': 'English',
    'ge': 'German',
}
app.secret_key = "super secret key"

    @app.context_processor
    def inject_conf_var():
        return dict(AVAILABLE_LANGUAGES=app.config['LANGUAGES'], CURRENT_LANGUAGE=session.get('language', request.accept_languages.best_match(app.config['LANGUAGES'].keys())))

这里是模板文件:

{% for language in AVAILABLE_LANGUAGES.items() %}
    {% if CURRENT_LANGUAGE == language[0] %}
        {{ language[1] }}
    {% else %}
        <a href="{{ url_for('set_language', language=language[0]) }}" >{{ language[1] }}</a>
    {%  endif %}
{% endfor %}
于 2020-09-30T14:54:06.133 回答