I am adding localisation to my Flask app with Flask-Babel, and I cannot seem to change the language. I followed all the Babel instructions for creating the po/mo files - I don't believe my issue is related to the translation data... its that I don't know how to change languages... which seems like it would/should be obvious.
My debugging shows that babel.localeselector is not being called. My implementation calls refresh(), which I think should call babel.localeselector (somehow... because I don't see how it works, as the refresh() command seems to just delete some keys from the app context... I don't know how that triggers the call to 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' and, when the user logs in, this function is called,
from flask_babel import refresh def login(user_id): # Gets called when user successfully logs in refresh() I have confirmed refresh() is being called. But the language is not changed.
UPDATED: Also tried this,
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()