【问题标题】:How to change language of flask babel on a button click?如何在单击按钮时更改烧瓶 babel 的语言?
【发布时间】:2020-04-09 11:39:57
【问题描述】:

我有 Flask 中的函数,它以英文返回网站。此外,我希望能够通过 html 按钮在网站上使用德语。如何通过按钮将语言从英语更改为德语,从德语更改为英语?另外,是否可以只在调用时使用函数get_locale,而不是自动运行?

@babel.localeselector
def get_locale():
     return 'en'  

【问题讨论】:

    标签: python flask translation python-babel flask-babel


    【解决方案1】:

    首先你需要将地址存储在主应用文件中:

    @app.route('/language=<language>')
    def set_language(language=None):
        session['language'] = language
        return redirect(url_for('home'))
    

    您需要在主应用程序文件中更改为 get_locale 函数的相同地址:

    @babel.localeselector
    def get_locale():
        if request.args.get('language'):
            session['language'] = request.args.get('language')
        return session.get('language', 'en')
    

    从模板访问当前语言:

    app.config['LANGUAGES'] =  {
        'en': 'English',
        'ge': 'German',
    }
    app.secret_key = "super secret key"
    
        @app.context_processor
        def inject_conf_var():
            return dict(AVAILABLE_LANGUAGES=app.config['LANGUAGES'], CURRENT_LANGUAGE=session.get('language', request.accept_languages.best_match(app.config['LANGUAGES'].keys())))
    

    这里是模板文件:

    {% for language in AVAILABLE_LANGUAGES.items() %}
        {% if CURRENT_LANGUAGE == language[0] %}
            {{ language[1] }}
        {% else %}
            <a href="{{ url_for('set_language', language=language[0]) }}" >{{ language[1] }}</a>
        {%  endif %}
    {% endfor %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      相关资源
      最近更新 更多