2

如何使用 Flask-Babel 为每个用户翻译特定语言的页面?我可以翻译所有用户页面设置:“app.config['BABEL_DEFAULT_LOCALE'] = 'en'”。如何按用户翻译?

4

1 回答 1

5

请参阅文档:http ://pythonhosted.org/Flask-Babel/#configuration :

from flask import g, request

@babel.localeselector
def get_locale():
    # if a user is logged in, use the locale from the user settings
    user = getattr(g, 'user', None)
    if user is not None:
        return user.locale
    # otherwise try to guess the language from the user accept
    # header the browser transmits.  We support de/fr/en in this
    # example.  The best match wins.
    return request.accept_languages.best_match(['de', 'fr', 'en'])

您可以从数据库中的用户、url、域或子域、用户请求标头中获取语言环境。您可以拥有自己的语言环境检测方法,但您需要使用babel.localeselector. 如果babel.localeselector无法获取语言环境,则使用BABEL_DEFAULT_LOCALE.

当您获得正确的语言环境时,您还需要为每个支持的语言环境创建.po翻译.mo。不要忘记每个翻译的字符串都必须标记为要翻译。

于 2013-10-11T08:36:54.270 回答