參考鏈接:https://stackoverflow.com/questions/61120324/how-to-change-language-of-flask-babel-on-a-button-click
我的flask-babel都已經(jīng)設(shè)置好了叛氨,才能進(jìn)入一下的代碼工作
首先闪水,您需要將地址存儲在主應(yīng)用程序文件view.py中:
@app.route('/language=<language>')
def set_language(language=None):
session['language'] = language
return redirect(url_for('home'))
然后在 init.py 中:
@babel.localeselector
def get_locale():
if request.args.get('language'):
session['language'] = request.args.get('language')
return session.get('language', 'en')
要從模板訪問當(dāng)前語言攒巍,請執(zhí)行以下操作:
如果你自己有config.py文件,并在文件中已設(shè)置app.config['LANGUAGES']渺尘,在這里不用設(shè)置了
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 %}