Как объединить тег «blocktanslate» с тегом «humanize» в шаблонах?

#python #django #templates #localization

Вопрос:

blocktranslate позволяет мне отображать локализованное множественное число, в то humanize время как позволяет отображать число, сгруппированное по сотням.

Каждый из них работает при использовании независимо, но я хотел бы иметь оба в одно и то же время.

Я пытался:

( words_number является ли целое число, отправленное представлением)

 {% load humanize %}
{% blocktranslate count counter=words_number %}
1 word
{% plural %}
{{ counter|intcomma }} words
{% endblocktranslate %}
 

Но он отображает: words (пустое место, где должно быть число)

РЕДАКТИРОВАТЬ: Прежде чем решение будет найдено, я использую Javascript для группировки по сотням:

 {% blocktranslate count counter=words_number %}
1 word
{% plural %}
<span id="counter">{{ counter }}</span> words
{% endblocktranslate %}

<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function(event) {
    let counter = document.getElementById('counter');   
    let counter_loc = parseInt(counter.innerHTML).toLocaleString();
    counter.innerHTML = counter_loc;
});
</script>
 

Комментарии:

1. Можете ли вы поделиться соответствующим переводом?

2. Я не уверен, что понимаю… На данный момент нет другой локализации, кроме английской.

Ответ №1:

Как описано в документации для blocktranslate тега шаблона , чтобы использовать фильтры или выражения для переменных, вам необходимо привязать их к какой-либо локальной переменной с помощью with , чтобы вы могли сделать что-то вроде следующего:

 {% load humanize %}
{% blocktranslate with count_humanized=words_number|intcomma count counter=words_number %}
1 word
{% plural %}
{{ count_humanized }} words
{% endblocktranslate %}