私はしばらくFlask-babelを掘り下げてきましたurl routing
が、単純なblueprint
. 縮小版アプリはこちら
私の__ init __.py ファイルで、
app = Flask(__name__)
babel.init_app(app)
@babel.localeselector
def get_locale():
return g.get('lang_code', 'fr')
from .mod_main import mod_main as main_blueprint
app.register_blueprint(main_blueprint,url_prefix='/<lang_code>')
ブループリントのviews.pyファイル内
@mod_main.url_defaults
def add_language_code(endpoint, values):
values.setdefault('lang_code', g.lang_code)
@mod_main.url_value_preprocessor
def pull_lang_code(endpoint, values):
g.lang_code = values.pop('lang_code')
@mod_main.route('/', methods=['GET', 'POST'])
def index():
return render_template('main/index.html')
に移動する限り、これは完全に正常に機能しますhttp://localhost:5000/fr
が、(言語なしで) に移動するとhttp://localhost:5000/
、404 エラーが発生します。通常 - ブループリントはプレフィックスとして lang_code を想定しているため。
ユーザーが初めてhttp://localhost:5000/
(lang なしで) に移動したときに、サイトが「fr」の言語を含むページを表示することを期待しています。ユーザーが英語に切り替えてに移動するとhttp://localhost:5000/
、フランス語ではなく英語で表示されます。これが機能していないようです!!!