0

Flask-Babelモジュールを使用するFlask/Dashアプリがあります。ログインしてページを閲覧した後、翻訳は魅力のように機能します。ただし、常に英語で表示されるログインページでは機能させることができません。との両方に、ログイン ページ用に用意した翻訳文字列が含まれているため、コンパイル部分は正常に機能しているようです。messages.pomessages.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モジュールに固有のようです(私の場合ではありません)。

ログインページを翻訳するには何が欠けていますか?

4

1 に答える 1