在 Flask AppBuilder 中获取当前语言
get current language in flask appbuilder
我有一个用 Flask Appbuilder 编写的简单应用程序,view.py
如下。它是 http://flask-appbuilder.readthedocs.io/en/latest/views.html 中 exmaple 的一部分,在 method1
中稍作改动,我将 return 'Hello'
替换为我希望找到的函数。
我们可以更改应用程序中的语言(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')
你的问题有歧义。您是指当前的 server-side 语言还是 client-side 语言。
前者:
import locale
locale.getlocale()
后者:
from flask import request
request.headers.get('your-header-name')
您感兴趣的header是Accept-Language
。但是在以这种方式推断客户端语言时有一些警告。参见 https://www.w3.org/International/questions/qa-accept-lang-locales
appbuilder
实例有一个 bm
属性,它是 BabelManager
class.
的一个实例
此 class 有一个 get_locale
方法,returns 您的应用程序当前使用的语言。
class MyView(BaseView):
default_view = 'method1'
@expose('/method1/')
@has_access
def method1(self):
return appbuilder.bm.get_locale()
您可以在 project repository.
上查看 BabelManager
class 的代码
我有一个用 Flask Appbuilder 编写的简单应用程序,view.py
如下。它是 http://flask-appbuilder.readthedocs.io/en/latest/views.html 中 exmaple 的一部分,在 method1
中稍作改动,我将 return 'Hello'
替换为我希望找到的函数。
我们可以更改应用程序中的语言(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')
你的问题有歧义。您是指当前的 server-side 语言还是 client-side 语言。
前者:
import locale
locale.getlocale()
后者:
from flask import request
request.headers.get('your-header-name')
您感兴趣的header是Accept-Language
。但是在以这种方式推断客户端语言时有一些警告。参见 https://www.w3.org/International/questions/qa-accept-lang-locales
appbuilder
实例有一个 bm
属性,它是 BabelManager
class.
此 class 有一个 get_locale
方法,returns 您的应用程序当前使用的语言。
class MyView(BaseView):
default_view = 'method1'
@expose('/method1/')
@has_access
def method1(self):
return appbuilder.bm.get_locale()
您可以在 project repository.
上查看BabelManager
class 的代码