Я добавляю локализацию в свое приложение Flask с помощью Flask-Babel, и я не могу изменить язык. Я следовал всем инструкциям Babel по созданию файлов po / mo - я не верю, что моя проблема связана с данными перевода ... я не знаю, как изменить язык ... кажется, что это так / должно быть очевидно.
Моя отладка показывает, что babel.localeselector
не вызывается. Моя реализация вызывает refresh()
, что, я думаю, должно вызывать babel.localeselector
(как-то ... потому что я не понимаю, как это работает, поскольку команда refresh()
, кажется, просто удаляет некоторые ключи из контекста приложения ... I не знаю, как это вызывает вызов babel.localeselector
)
app = Flask(__name__)
babel = Babel(app)
@babel.localeselector
def get_locale():
# if a user is logged in, use the locale from the user settings
user = User.get_by_id(session['user_id'])
if user is not None: return user.lang
return 'en'
и, когда пользователь входит в систему, эта функция вызывается,
from flask_babel import refresh
def login(user_id):
# Gets called when user successfully logs in
refresh()
Я подтвердил, что refresh()
вызывается.
Но язык не изменился.
ОБНОВЛЕНИЕ:
Также попробовал это,
from flask import current_app
from common.models import User
from flask_babel import refresh
def login(user_id):
# Gets called when user successfully logs in
user = User.get_by_id(user_id)
current_app.config['BABEL_DEFAULT_LOCALE'] = user.lang
refresh()