Flask-Babel no funciona en la página de inicio de sesión

Tengo una aplicación Flask / Dash que usa el módulo Flask-Babel . La traducción funciona como un encanto después de iniciar sesión y navegar por las páginas. Sin embargo, no puedo hacer que funcione para la página de inicio de sesión que siempre se mostrará en inglés. messages.po y messages.mo contienen las cadenas de traducción que preparé para la página de inicio de sesión, por lo que la parte de comstackción parece funcionar bien.

Aquí hay un fragmento de mi app.py (con una opción codificada de español):

 import dash from dash.dependencies import Input, Output from flask import Flask, request from flask_babel import Babel # some more imports... # (...) def main(): update_dataframes() app = dash.Dash( "MyApp", url_base_pathname='/summary', static_folder="static", sharing=True, csrf_protect=False ) # Hook Flask-Babel to the app babel = Babel(app.server) @babel.localeselector def get_locale(): # return request.accept_languages.best_match(context.config['LANGUAGES'].keys()) return 'es' # App layout app.layout = build_app_layout(context) # Setup callbacks setup_callbacks(app) setup_login(app, app.server, context.config) # Start Dash/Flask app app.server.run( port=context.config['DEPLOY']['SERVER_PORT'], debug=context.config['DEPLOY']['SERVER_DEBUG'], threaded=context.config['DEPLOY']['SERVER_THREADED'] ) # Interval tread to update all dataframes ThreadPoolExecutor(max_workers=1).submit(update_dataframes_thread) if __name__ == '__main__': main() 

A continuación, una parte del método setup_login(...) llamado anteriormente. Me gustaría notar que app.server se le pasa desde el código anterior, después de que Flask-Babel se haya enganchado a la aplicación (no sé si eso importa mucho):

 from dash_flask_login import FlaskLoginAuth from flask_login import LoginManager, UserMixin, login_user, logout_user # (...) login_app = Dash( name='login-app', url_base_pathname='/login', server=app.server ) 

Lo que intenté: enganchar de nuevo el Flask-Babel para la login_app ( login_app ) ( login_app ), pero eso no funcionó (de todos modos sigue siendo la misma app.server ).

Me he encontrado con esta pregunta de SO con un problema similar, pero parece ser específico para el módulo Flask-Security (no es mi caso).

    ¿Qué me falta para traducir la página de inicio de sesión?

    Aunque no he encontrado una razón directa por la que una combinación de Dash y Flask-Login no funcionen con Flask-Babel en la página de inicio de sesión, resolví el problema con una solución: estoy actualizando dinámicamente el componente HTML generado a través de la callback de Dash. Decorador justo después de cargar la página. La función simplemente sustituye la some_string original en inglés con la some_string gettext(some_string) que se detecta correctamente en las devoluciones de llamada. De esta manera, la página se carga en inglés y se traduce de inmediato, a medida que las devoluciones de llamada entran en acción. Ejemplo mínimo:

     app.layout = html.Div( [ html.H1('Hello World!', id='h1'), html.Div(html.A('login', href='/login') ] ) # Display the message translated to another language @app.callback( Output('h1', 'children'), [Input('url', 'search')] ) def translate_message(children): return gettext('Hello World!')