@ babel.localselector не вызывается - PullRequest
0 голосов
/ 13 ноября 2018

У меня проблема с использованием Flask Babel и python3.6.

Мой код выглядит следующим образом:

@babel.localeselector 
def get_locale():
    lang_supported = app.config.get('LANGUAGES', [])

    lang = request.accept_languages.best_match(lang_supported.keys())
    print('de', lang_supported)
    return lang

У меня ничего не печатается на консоли.Я не знаю, что я сделал не так.

Мое приложение запускается следующим образом в том же файле:

app = Flask(__name__)
app.config.from_object("config")
babel = Babel(app)

В моем конфигурационном файле все, что касается Бабеля, выглядит следующим образом:

LANGUAGES = {
    'en': 'English',
    'de': 'Deutsch' 
}

# BABEL_TRANSLATION_DIRECTORIES = '/path/to/flask/translations'
# BABEL_DEFAULT_LOCALE = 'de'
# BABEL_DEFAULT_TIMEZONE = 'Europe/Berlin'

При поиске некоторых решений я также попробовал закомментированные строки.

Я смог использовать pybabel и создать свои .pot, .po, .mo, файлы.И я создал свой перевод для 'de'

. Я не нахожу ничего о том, почему мой оператор print не выполняется.Когда я вручную создаю context_processor и вызываю свой get_locale(), оператор печати выглядит как положено.

Пожалуйста, дайте мне знать, если вам нужно что-то еще для отладки.

Обновление: пример кода, вызывающего gettext

Внутри представления, которое я назвал, например, так:

from flask_babel import gettext as _
print(_('Hello'))

или

from flask_babel import gettext
print(gettext('Hello'))

и в Jinja2:

{{ _( 'Hello' ) }}
...