Функция ngettext
Функция ngettext применяется для перевода строк, зависящих от числа.
Первым параметром передаётся строка в единственном числе, вторым - во множественном,
третьим - само число n. Функция выбирает подходящую форму
согласно правилам множественного числа текущей локали.
В отличие от gettext, которая всегда возвращает одну и ту же строку,
ngettext умеет различать, например, «1 article» и «5 articles».
В некоторых языках форм множественного числа больше двух, и функция
автоматически подбирает правильную.
Синтаксис
ngettext(singular, plural, n)
Пример
Давайте настроим приложение Flask и переведём строку с учётом числа:
from flask import Flask
from flask_babel import Babel, ngettext
app = Flask(__name__)
app.config['BABEL_DEFAULT_LOCALE'] = 'en'
babel = Babel(app)
@app.route('/')
def index():
res = ngettext('%(num)d article', '%(num)d articles', 1)
return res
Результат выполнения кода:
1 article
Пример
Давайте передадим во функцию число, большее единицы:
from flask import Flask
from flask_babel import Babel, ngettext
app = Flask(__name__)
app.config['BABEL_DEFAULT_LOCALE'] = 'en'
babel = Babel(app)
@app.route('/')
def index():
res = ngettext('%(num)d article', '%(num)d articles', 5)
return res
Результат выполнения кода:
5 articles
Пример
Давайте используем переменную для подстановки числа в строку:
from flask import Flask
from flask_babel import Babel, ngettext
app = Flask(__name__)
app.config['BABEL_DEFAULT_LOCALE'] = 'en'
babel = Babel(app)
@app.route('/')
def index():
count = 3
res = ngettext('%(num)d article', '%(num)d articles', count)
return res
Результат выполнения кода:
3 articles
Смотрите также
-
функцию
gettext,
которая переводит строку без учёта числа -
функцию
lazy_ngettext,
которая откладывает перевод до момента использования -
функцию
npgettext,
которая учитывает число и контекст перевода -
функцию
get_locale,
которая возвращает текущую локаль