2010-05-01 2 views
2

I уже установлен USE_L10N = True в settings.pyДжанго не работает

Но в следующем виде:

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

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

Выход всегда "123456" для всех языков.

ответ

2

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

А пока удалите intcomma и включите USE_THOUSAND_SEPARATOR.

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

1

Я думаю 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) 

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

1

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

USE_THOUSAND_SEPARATOR=True 
THOUSAND_SEPARATOR='.' 
NUMBER_GROUPING=3 

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

DECIMAL_SEPARATOR=',' 

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

Смежные вопросы