0

我有一个用 Flask Appbuilder 编写的简单应用程序,view.py如下所示。它是http://flask-appbuilder.readthedocs.io/en/latest/views.htmlmethod1中示例的一部分,在我替换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')
4

2 回答 2

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

于 2018-05-06T12:43:54.157 回答
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该类的代码。

于 2018-05-08T14:18:42.300 回答