#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 %}