РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
512 of 643 menu

Метод localeselector

Метод localeselector применяется к объекту Babel и принимает в качестве параметра функцию-селектор локали. Flask-Babel вызывает эту функцию при каждом запросе, чтобы определить, какую локаль использовать для перевода. Функция-селектор не принимает аргументов и должна возвращать строку с кодом локали, например 'en' или 'ru'.

Синтаксис

babel.localeselector(func)

Пример

Давайте зарегистрируем селектор, который всегда возвращает русскую локаль:

from flask import Flask from flask_babel import Babel app = Flask(__name__) babel = Babel(app) @babel.localeselector def get_locale(): return 'ru'

Теперь при каждом запросе Flask-Babel будет использовать локаль 'ru'.

Пример

Давайте выберем локаль на основе заголовка Accept-Language, который присылает браузер:

from flask import Flask, request from flask_babel import Babel app = Flask(__name__) babel = Babel(app) @babel.localeselector def get_locale(): return request.accept_languages.best_match(['en', 'ru'])

Если браузер пришлёт заголовок Accept-Language: ru, метод вернёт 'ru', а для Accept-Language: en - 'en'.

Пример

Давайте выберем локаль из параметра URL, а если его нет - из заголовка браузера:

from flask import Flask, request from flask_babel import Babel app = Flask(__name__) babel = Babel(app) @babel.localeselector def get_locale(): lang = request.args.get('lang') if lang in ['en', 'ru']: return lang return request.accept_languages.best_match(['en', 'ru'])

При запросе на адрес /?lang=ru функция вернёт 'ru', а при запросе на / - локаль из заголовка браузера.

Смотрите также

  • класс Babel,
    который управляет локализацией приложения
  • метод init_app,
    который инициализирует Babel для приложения
  • метод timezoneselector,
    который выбирает часовой пояс для запроса
  • функцию get_locale,
    которая возвращает текущую локаль
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить