Функция lazy_ngettext
Функция lazy_ngettext применяется для отложенного
перевода строк с учётом числа. Она возвращает объект,
который ведёт себя как строка, но фактически переводится
только тогда, когда к нему обращаются. Это полезно, когда
язык пользователя ещё неизвестен на момент создания строки,
например при определении глобальных констант или атрибутов
класса. Первым параметром передаётся строка в единственном
числе, вторым - строка во множественном числе, третьим -
число.
Синтаксис
lazy_ngettext(singular, plural, n)
Пример
Давайте создадим отложенный перевод для слова 'user'
и выведем его:
from flask import Flask
from flask_babel import Babel, lazy_ngettext
app = Flask(__name__)
babel = Babel(app)
@app.route('/')
def index():
msg = lazy_ngettext('user', 'users', 3)
return str(msg)
Результат выполнения кода:
users
Пример
Давайте используем отложенный перевод в атрибуте класса, чтобы строка переводилась при обращении:
from flask import Flask
from flask_babel import Babel, lazy_ngettext
app = Flask(__name__)
babel = Babel(app)
class Message:
text = lazy_ngettext('article', 'articles', 1)
@app.route('/')
def index():
return str(Message.text)
Результат выполнения кода:
article
Пример
Давайте передадим отложенную строку в шаблон:
from flask import Flask, render_template
from flask_babel import Babel, lazy_ngettext
app = Flask(__name__)
babel = Babel(app)
@app.route('/')
def index():
msg = lazy_ngettext('hello', 'hello', 5)
return render_template('index.html', msg=msg)
Шаблон для вывода:
<p>{{ msg }}</p>
Результат выполнения кода:
<p>hello</p>
Смотрите также
-
функцию
ngettext,
которая переводит строку сразу с учётом числа -
функцию
lazy_gettext,
которая создаёт отложенный перевод без числа -
функцию
gettext,
которая переводит строку немедленно -
класс
Babel,
который управляет интернационализацией приложения