首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flask应用程序不调用Babel localeselector

Flask应用程序不调用Babel localeselector
EN

Stack Overflow用户
提问于 2019-01-13 05:25:37
回答 1查看 476关注 0票数 0

我正在使用Flask-Babel将本地化添加到我的Flask应用程序中,但我似乎无法更改语言。我遵循了创建po/mo文件的所有Babel说明-我不认为我的问题与翻译数据有关……问题是我不知道如何改变语言。这似乎是显而易见的。

我的调试显示babel.localeselector没有被调用。我的实现调用了refresh(),我认为它应该称为babel.localeselector (不知何故...因为我不知道它是如何工作的,因为refresh()命令似乎只是从应用程序上下文中删除了一些键……我不知道这如何触发对babel.localeselector的调用)

代码语言:javascript
复制
app = Flask(__name__)
babel = Babel(app)

@babel.localeselector
def get_locale():
    # if a user is logged in, use the locale from the user settings
    user = User.get_by_id(session['user_id'])
    if user is not None: return user.lang
    return 'en'

并且,当用户登录时,调用此函数,

代码语言:javascript
复制
from flask_babel import refresh

def login(user_id):
    # Gets called when user successfully logs in
    refresh()

我已确认正在呼叫refresh()。但是语言没有改变。

更新:我也试过了,

代码语言:javascript
复制
from flask import current_app
from common.models import User
from flask_babel import refresh

def login(user_id):
    # Gets called when user successfully logs in
    user = User.get_by_id(user_id)
    current_app.config['BABEL_DEFAULT_LOCALE'] = user.lang
    refresh()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-13 08:32:27

找到了问题所在。我用的是,

代码语言:javascript
复制
import gettext
_ = gettext.gettext

而不是,

代码语言:javascript
复制
from flask_babel import gettext as _
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54164003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档