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

Функция lazy_gettext

Функция lazy_gettext применяется для отложенного перевода текста. Первым параметром передаётся строка для перевода. В отличие от обычной функции gettext, которая переводит строку сразу в момент вызова, lazy_gettext возвращает специальный объект, перевод которого происходит позже - в момент, когда строка фактически понадобится, например при обращении к её строковому представлению. Это особенно важно для строк, определяемых на уровне модуля или в момент создания форм и моделей, когда текущая локаль ещё не установлена.

Синтаксис

lazy_gettext(string, **variables)

Пример

Давайте рассмотрим простой пример использования функции lazy_gettext в приложении Flask:

from flask import Flask from flask_babel import Babel, lazy_gettext app = Flask(__name__) babel = Babel(app) message = lazy_gettext('hello') @app.route('/') def index(): return str(message)

Здесь переменная message содержит отложенный перевод строки 'hello'. Перевод выполнится только в момент вызова str внутри обработчика, когда локаль уже будет определена.

Пример

Давайте используем lazy_gettext для перевода метки формы, определяемой на уровне класса:

from flask import Flask, render_template from flask_babel import Babel, lazy_gettext app = Flask(__name__) babel = Babel(app) class UserForm: label = lazy_gettext('user') @app.route('/') def index(): return render_template('index.html', label=UserForm.label)

Шаблон для вывода метки:

<p>{{ label }}</p>

Результат выполнения кода:

<p>user</p>

Пример

Давайте сравним поведение gettext и lazy_gettext при обращении к строке в разное время:

from flask import Flask from flask_babel import Babel, gettext, lazy_gettext app = Flask(__name__) babel = Babel(app) now = gettext('hello') later = lazy_gettext('hello') @app.route('/') def index(): return str(now) + ' ' + str(later)

Переменная now переводится сразу при определении, а later - только при обращении внутри обработчика.

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

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