Как использовать перевод в Flask? - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть приложение, в котором мне удалось использовать переводы на румынский и английский языки sh. Я хочу нажать кнопку "engli sh" и перевести сайт на английский язык sh, а при нажатии на "румынский" сайт должен перевести на румынский. До сих пор мне удавалось это сделать, но всякий раз, когда я нажимаю на ссылку «engli * 1012» или «румынский», веб-сайт переходит на домашнюю страницу. Как перенаправить страницу flask на текущую страницу, например страницу контактов? Теперь, если я нахожусь на странице контактов и нажимаю engli sh, веб-сайт переводится на engli sh, но перенаправляет меня на домашнюю страницу. Я использую Flask Babel для перевода. Для кнопки у меня есть код в индексе. 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...