热门标签:
Q:

flask+flask-安全+巴贝尔不工作

我有Flask+Babel+Flask Security的设置。 创建了这样的所有翻译:

    • main.py
    • 翻译
        <莉>茹
        • LC_MESSAGES
          • messages.mo
          • 消息。po

在main.py 安装语言有一部分可以执行:

@babel.localeselector
def get_locale():
    user = getattr(g, 'user', None)
    if user is not None:
        print("User locale {}".format(user.locale))
        return user.locale
    # I put here constant to test
    return 'ru'

http://localhost/login保持未翻译。 你能请建议在哪里挖? 即使使用Debug=True

,日志中也没有错误
原网址
A:

我发现Flask-Security不适用于Babel开箱即用! 这个拉取请求从WTF处理的角度部分修复了它。 为了能够翻译Jinja2模板以及以下需要在中进行修改core.py

def render_template(self, *args, **kwargs):
    # Provide i18n support even if flask-babel is not installed
    # or enabled.
    kwargs['gettext'] = gettext
    kwargs['ngettext'] = ngettext
    kwargs['_'] = _
    return render_template(*args, **kwargs)

所有回答

共 2 条

author avatar

FWIW,我只是把我的进口改为

from flask_babelex import Babel, gettext, lazy_gettext

使它与flask安全工作正常。

author avatar

你应该告诉你的应用程序你使用一个特定的区域设置。 我这样做如下:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_security import Security, SQLAlchemyUserDatastore
from .models import User, Role, 
from flask_babel import Babel

app = Flask(__name__)
db = SQLAlchemy(app)

user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security = Security(app, user_datastore)

babel = Babel(app, 'ru')

相似问题