我有一个用Flask Appbuilder编写的简单app,view.py
如下。它是http://flask-appbuilder.readthedocs.io/en/latest/views.html中exmaple的一部分,method1
稍有变化,我用我希望找到的函数替换return 'Hello'
。
我们可以在app(en,fr,ru,...)中更改语言并进行翻译。是否有获取当前语言的功能? (CURRENT_LANGUAGE())。
from flask_appbuilder import AppBuilder, BaseView, expose, has_access, ModelView
from app import appbuilder, db
from flask import render_template, g
from flask_babel import Babel
from flask_babel import lazy_gettext as _
from flask_appbuilder.models.sqla.interface import SQLAInterface
class MyView(BaseView):
default_view = 'method1'
@expose('/method1/')
@has_access
def method1(self):
return Current_Language()
appbuilder.add_view(MyView, "Method1", category='My View')
答案 0 :(得分:1)
你的问题含糊不清。您是指当前的服务器端语言还是客户端语言。
前者:
import locale
locale.getlocale()
后者:
from flask import request
request.headers.get('your-header-name')
您感兴趣的标题是Accept-Language
。但是,当涉及以这种方式推断客户语言时,有一些警告。见https://www.w3.org/International/questions/qa-accept-lang-locales
答案 1 :(得分:1)
appbuilder
实例具有bm
属性,该属性是BabelManager
类的实例。
此类有get_locale
方法,可返回您的应用使用的当前语言。
class MyView(BaseView):
default_view = 'method1'
@expose('/method1/')
@has_access
def method1(self):
return appbuilder.bm.get_locale()
上查看BabelManager
课程的代码