Использование blocktrans с ключевыми словами "with" и "count"
Можно ли использовать {% blocktrans %}
с "с" и "считать" одновременно?
Документация описывает только отдельное использование:
{% 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
переменная, но не переводит текст.
Python 2.6.6, Django 1.3, django-шаблоны.
2 ответа
Да, это возможно. Вам просто нужно быть осторожным с порядком 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 %}
http://docs.djangoproject.com/en/dev/topics/i18n/internationalization/
{% blocktrans with text_count=cnt|make_text_from_count count cnt=cnt %}
and another city
{% plural %}
and other {{ text_count }} cities
{% endblocktrans %}