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

Функция ngettext

Функция ngettext применяется для перевода сообщений, которые зависят от числа. Она принимает три обязательных аргумента: строку для единственного числа, строку для множественного числа и число, определяющее выбор формы. Функция возвращает переведенную строку на активном языке. Для ленивого перевода используется функция ngettext_lazy.

Синтаксис

ngettext(singular, plural, number)

Пример

Давайте выведем количество найденных статей с правильным склонением:

from django.utils.translation import ngettext from myapp.models import Article count = Article.objects.filter(status='published').count() message = ngettext( "Found one published article", "Found %(count)d published articles", count ) % {'count': count} print(message)

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

"Found one published article" # при count = 1 "Found 3 published articles" # при count = 3

Пример

Использование ngettext в шаблоне через тег blocktranslate с переменной:

{% load i18n %} {% blocktranslate count counter=articles.count %} Found one article. {% plural %} Found {{ counter }} articles. {% endblocktranslate %}

Если в переменной counter будет число 1, выведется первая форма, иначе - вторая с подстановкой числа.

Пример

Работа с разными языками и правилами множественного числа:

from django.utils.translation import ngettext, activate from django.utils.translation import get_language activate('ru') count = 5 msg = ngettext( "one message", "%(count)s messages", count ) % {'count': count} print(msg)

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

"5 сообщений"

Обратите внимание, что для русского языка используются свои правила склонения, которые Django учитывает автоматически при наличии корректных переводов в файлах .po.

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

  • функция gettext,
    которая переводит строку без учета числа
  • функция ngettext_lazy,
    которая откладывает перевод до момента использования
  • функция pgettext,
    которая переводит строку с учетом контекста
  • тег blocktranslate,
    который позволяет переводить блоки с множественным числом в шаблонах
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить