Flask-Babelモジュールを使用するFlask/Dashアプリがあります。ログインしてページを閲覧した後、翻訳は魅力のように機能します。ただし、常に英語で表示されるログインページでは機能させることができません。との両方に、ログイン ページ用に用意した翻訳文字列が含まれているため、コンパイル部分は正常に機能しているようです。messages.po
messages.mo
これが私のスニペットですapp.py
(ハードコーディングされたスペイン語の選択があります):
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()
以下は、setup_login(...)
上記で呼び出されたメソッドの一部です。Flask-Babel がアプリにフックされた後app.server
、上記のコードから渡されたことに注目したいと思います (それが重要かどうかはよくわかりません)。
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
)
私が試したこと: Dash() インスタンスに対して Flask-Babel を再度フックしましたlogin_app
が、うまくいきませんでした (とにかく同じapp.server
です)。
同様の問題でこのSOの質問に出くわしましたが、Flask-Securityモジュールに固有のようです(私の場合ではありません)。
ログインページを翻訳するには何が欠けていますか?