2015-02-20 2 views
0

Я пытаюсь получить Jinja2 (и Django, через django-jinja), чтобы локализовать число, например. 123456 будет 123,456 (или, конечно, 123.456 в зависимости от локали). Я прочитал каждую часть документации, которую я могу найти по этому вопросу, и не могу найти ничего, что действительно работает. Использование стандартных DTL, можно было бы просто сделать:L10N локализация чисел в шаблонах с использованием Jinja2 и Django

{% localize on %}{{ some_number }}{% endlocalize %} 

Это прекрасно работает в моем проекте, используя регулярные шаблоны Django, но, конечно, не работает в Jinja2. Я упоминаю, что это работает отлично, потому что ничего из settings.py, такого как USE_L10N, являющееся False, можно исключить.

Я попытался следующие, все они основаны на документации, которую я нашел:

  • {{ gettext("%(num)d", num=some_number) }} - выводит число без запятых или локализации.
  • {% trans num=some_number %}{{ num }} {% endtrans %} - как предложено django-jinja documentation - выводит номера без запятых или локализации.
  • {{ _(some_number|string) }} - выводит номера без запятых или локализации.
  • {{ some_number|localize }} - localize недействительный фильтр.

Итак, как я могу легко и правильно локализовать число с помощью Jinja2?

ответ

0

Выяснил это. Jinja2, похоже, не обрабатывает локализацию самостоятельно, но django-jinja включает встроенный вклад, который обертывает django.contrib.humanize.templatetags. Согласно the documentation for that, локализация формата соблюдается с использованием фильтра |intcomma, если включен L10n.

Чтобы использовать его, добавьте django_jinja.contrib._humanize к INSTALLED_APPS в settings.py:

INSTALLED_APPS += ('django_jinja.contrib._humanize',) 

, а затем в шаблонах, просто используйте |intcomma фильтр:

{{ some_number|intcomma }} 
Смежные вопросы