Django {% blocktrans %}: как обработать множественное число внутри цикла for?

У меня есть следующий цикл в моем шаблоне Django:

{% for item in state.list %}

    <div> HTML (CUSTOMERS BY STATE) </div>

    <!-- print sum of customers at bottom of list -->
    {% if forloop.last %}
        <h4>{{ forloop.counter }} Valued Customers</h4>
    {% endif %}

{% endfor %}

Очевидно, что если у меня останется только один клиент, я хотел бы напечатать единственное число "Ценный клиент"

Согласно документам Джанго, следует использовать blocktrans, Пробовал следующее, несколько вкусов гнездования:

    {% blocktrans count %}
        {% if forloop.last %}
            <h4>
                {{ forloop.counter }}
                &nbsp;Valued Customer
                {% plural %}
                &nbsp;Valued Customers
            </h4>
        {% endif %}
    {% endblocktrans %} 

Продолжайте получать TemplateSyntaxError: Неверный тег блока: 'blocktrans', ожидаемый 'empty' или 'endfor'

Нет ли способа объединить с другим циклом? Есть идеи как решить? Спасибо!

3 ответа

Решение

Возможно, вы забыли загрузить теги перевода. Добавьте следующую строку вверху вашего шаблона:

{% load i18n %}

После того, как вы исправите это, обратите внимание, что для blocktrans тег после count переменная, значение которой будет служить для определения множественного числа, должна быть указана, поэтому вам, вероятно, нужно что-то вроде

{% blocktrans count count=forloop.counter %}

Вот рабочий код, благодаря Alko:

{% load i18n %}

<!-- ... -->

{% if forloop.last %}
    <h4>
        {{ forloop.counter }}
        {% blocktrans count count=forloop.counter %}
             Valued Customer
        {% plural %}
             Valued Customers
        {% endblocktrans %} 
    </h4>
{% endif %}

Для множественного числа используйте это:

Customer{{ forloop.counter|pluralize }}
Другие вопросы по тегам