Функция 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,
которая возвращает текущую локаль