3

我的 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 %}

显然,如果我最终只有一个客户,我想打印单数“尊贵客户”

根据 Django 的文档,应该使用blocktrans. 尝试了以下几种嵌套方式:

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

不断收到TemplateSyntaxError: Invalid block tag: 'blocktrans', expected 'empty' or 'endfor'

有没有办法与另一个循环结合?任何想法如何解决?谢谢!

4

3 回答 3

6

这是工作代码,感谢 alko:

{% load i18n %}

<!-- ... -->

{% if forloop.last %}
    <h4>
        {{ forloop.counter }}
        {% blocktrans count count=forloop.counter %}
             Valued Customer
        {% plural %}
             Valued Customers
        {% endblocktrans %} 
    </h4>
{% endif %}
于 2013-12-02T20:28:19.657 回答
4

可能,您忘记加载翻译标签。在模板顶部添加以下行:

{% load i18n %}

修复该问题后,请注意,应指定blocktrans变量后的标签count,其值将用于复数检测,因此您可能需要类似

{% blocktrans count count=forloop.counter %}
于 2013-12-02T20:03:22.013 回答
1

复数使用这个:

Customer{{ forloop.counter|pluralize }}
于 2013-12-02T20:19:09.907 回答