Это решение, которое я наткнулся:
Сначала вы установили маршрут, который будет обрабатывать изменения языка и будет хранить выбранный язык на сессии:
@app.route('/language/<language>')
def set_language(language=None):
session['language'] = language
return redirect(url_for('index'))
Во-вторых, вы должны изменить немного код, который вы должны получить выбранный язык сессии:
@babel.localeselector
def get_locale():
# if the user has set up the language manually it will be stored in the session,
# so we use the locale from the user settings
try:
language = session['language']
except KeyError:
language = None
if language is not None:
return language
return request.accept_languages.best_match(app.config['LANGUAGES'].keys())
вы должны также быть в состоянии получить доступ к CURRENT_LANGUAGE из шаблонов, s О, вы можете придать ей:
@app.context_processor
def inject_conf_var():
return dict(
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 %}
Надеется, что это помогает!