USE_L10N Джанго не работает - PullRequest
2 голосов
/ 01 мая 2010

Я уже установил USE_L10N = True в settings.py

Но в следующем представлении:

from django.contrib.humanize.templatetags.humanize import intcomma

dev view_name(request):
     output = intcomma(123456)

Для всех локалей всегда выводится «123 456».

Ответы [ 4 ]

2 голосов
/ 14 июня 2011

Intcomma учитывает только настройки локализации в Django 1.4 и выше.

Тем временем удалите intcomma и включите USE_THOUSAND_SEPARATOR.

Обратите внимание, что это включает тысячи разделителей на всех целых числах.

1 голос
/ 09 марта 2012

Если вы печатаете это в шаблоне, вы можете установить его в settings.py:

USE_THOUSAND_SEPARATOR=True
THOUSAND_SEPARATOR='.'
NUMBER_GROUPING=3

делая 3 изменения выше, DECIMAL_SEPARATOR автоматически станет ','. Но вы также можете установить его:

DECIMAL_SEPARATOR=','

таким образом вам не нужно гуманизировать, но я думаю, что это повлияет на все ваши приложения в этом файле settings.py.

1 голос
/ 01 мая 2010

Я думаю, intcomma () делает то же самое для всех локалей:

def intcomma(value):
    """
    Converts an integer to a string containing commas every three digits.
    For example, 3000 becomes '3,000' and 45000 becomes '45,000'.
    """
    orig = force_unicode(value)
    new = re.sub("^(-?\d+)(\d{3})", '\g<1>,\g<2>', orig)
    if orig == new:
        return new
    else:
        return intcomma(new)

intcomma.is_safe = True
register.filter(intcomma)

Вы можете изменить эту функцию и передать разделитель в качестве аргумента.

0 голосов
/ 01 мая 2010
import locale
locale.format("%d", 123456, True)
...