ルーマニア語と英語の翻訳を使用することができたアプリケーションがあります。「英語」ボタンを押してウェブサイトを英語に翻訳したいのですが、「ルーマニア語」を押すと、ウェブサイトはルーマニア語に翻訳されます。私はこれまでのところこれを行うことができましたが、英語またはルーマニア語をクリックするたびに、ウェブサイトはホームページに移動します. フラスコページを現在のページ、たとえば連絡先ページにリダイレクトするにはどうすればよいですか? 現在、連絡先ページで英語を押すと、ウェブサイトは英語に翻訳されますが、ホームページにリダイレクトされます。翻訳にはFlask Babelを使用しています。ボタンの場合、index.html にコードがあります。
<a class="dropdown-item" href="/language/en">English</a>
<a class="dropdown-item" href="/language/ro">Romanian</a>
翻訳用の app.py のコードは次のとおりです。
LANGUAGES = {
'en': 'English',
'ro': 'Romanian'
}
@app.route('/')
def home():
return render_template("index.html")
@app.route('/language/<language>')
def set_language(language=None):
session['language'] = language
return redirect(url_for('home'))
@babel.localeselector
def get_locale():
try:
language = session['language']
except KeyError:
language = None
if language is not None:
return language
return request.accept_languages.best_match(LANGUAGES.keys())
@app.context_processor
def inject_conf_var():
return dict(
AVAILABLE_LANGUAGES=LANGUAGES,
CURRENT_LANGUAGE=session.get('language', request.accept_languages.best_match(LANGUAGES.keys())))
編集:解決策:
def redirect_url(default='index'):
return request.args.get('next') or \
request.referrer or \
url_for(default)
@app.route('/language/<language>')
def set_language(language=None):
session['language'] = language
return redirect(redirect_url()) #redirect to current url