получить текущий язык в флешке appbuilder - PullRequest
0 голосов
/ 06 мая 2018

У меня есть простое приложение, написанное с помощью Flask Appbuilder, view.py выглядит следующим образом. Это часть exmaple в http://flask -appbuilder.readthedocs.io / en / latest / views.html с небольшим изменением в 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')

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Экземпляр appbuilder имеет атрибут bm, который является экземпляром класса BabelManager.

В этом классе есть метод get_locale, который возвращает текущий язык, используемый вашим приложением.

class MyView(BaseView):    
    default_view = 'method1'    
    @expose('/method1/')
    @has_access
    def method1(self):
        return appbuilder.bm.get_locale()

Вы можете проверить код для класса BabelManager в репозитории проекта .

0 голосов
/ 06 мая 2018

В вашем вопросе есть двусмысленность. Вы имеете в виду текущий язык на стороне сервера или язык на стороне клиента.

Бывший:

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

...