У меня проблема с использованием 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' ) }}