Использование blocktrans с ключевыми словами «with» и «count» - PullRequest
1 голос
/ 24 марта 2011

Можно ли использовать {% blocktrans %} с " с " и " count " одновременно?

В документации описано только отдельное использование:

{% blocktrans with foo|filter as bar and baz|filter as boo %}
{% blocktrans count var|length as count %}

Мне нужно напечатать значение одной переменной, а перевод зависит от другой переменной.Я попытался следующий код:

{% blocktrans count cnt as count with cnt|make_text_from_count as text_count %}
    and other {{ text_count }} city
{% plural %}
    and other {{ text_count }} cities
{% endblocktrans %}

Он отображает значение переменной text_count, но не переводит текст.-templates.

Ответы [ 2 ]

2 голосов
/ 18 июня 2014

Да, это возможно. Вам просто нужно быть осторожным с порядком аргументов blocktrans: with требует привязки локальной переменной сразу после нее, а после нее count и соответствующая привязка переменной.

Документация (по крайней мере для версии 1.5) содержит несколько примеров множественного числа. Во втором примере (представленном как «Более сложный пример») показан порядок использования with и count:

{% blocktrans with amount=article.price count years=i.length %}
That will cost $ {{ amount }} per year.
{% plural %}
That will cost $ {{ amount }} per {{ years }} years.
{% endblocktrans %}

Если вам не нужны никакие другие переменные, кроме той, что для счетчика, не используйте ключевое слово with вообще. Это показано в документированном первом примере выше, более сложном:

{% blocktrans count counter=list|length %}
There is only one {{ name }} object.
{% plural %}
There are {{ counter }} {{ name }} objects.
{% endblocktrans %}
1 голос
/ 24 марта 2011

http://docs.djangoproject.com/en/dev/topics/i18n/internationalization/#blocktrans-template-tag

{% blocktrans with text_count=cnt|make_text_from_count count cnt=cnt %}
    and another city
{% plural %}
    and other {{ text_count }} cities
{% endblocktrans %}
...