我的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的docs,应该使用blocktrans
。尝试了以下几种嵌套方式:
{% blocktrans count %}
{% if forloop.last %}
<h4>
{{ forloop.counter }}
Valued Customer
{% plural %}
Valued Customers
</h4>
{% endif %}
{% endblocktrans %}
继续 TemplateSyntaxError:无效的块标记:'blocktrans',预期'空'或'endfor'
有没有办法与另一个循环结合?任何想法如何解决?谢谢!
答案 0 :(得分:5)
这是工作代码,感谢alko:
{% load i18n %}
<!-- ... -->
{% if forloop.last %}
<h4>
{{ forloop.counter }}
{% blocktrans count count=forloop.counter %}
Valued Customer
{% plural %}
Valued Customers
{% endblocktrans %}
</h4>
{% endif %}
答案 1 :(得分:3)
可能你忘了load translation tags。在模板顶部添加以下行:
{% load i18n %}
修正后,请注意blocktrans
后count
标记应该指定一个变量,其值将用于多个检测,因此您可能需要类似
{% blocktrans count count=forloop.counter %}
答案 2 :(得分:1)
要复数使用此:
Customer{{ forloop.counter|pluralize }}