Django的USE_L10N不起作用

时间:2010-05-01 08:05:13

标签: django internationalization locale localization

我已在settings.py中设置了USE_L10N = True

但在以下观点中:

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

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

所有区域设置的输出始终为“123,456”。

4 个答案:

答案 0 :(得分:2)

Intcomma仅尊重Django 1.4及更高版本中的本地化设置。

在此期间,请移除intcomma并启用USE_THOUSAND_SEPARATOR

请注意,这会在所有整数上启用千位分隔符。

答案 1 :(得分: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)

您可以修改此功能并将分隔符作为参数传递。

答案 2 :(得分:1)

如果要在模板中打印,可以在settings.py中设置:

USE_THOUSAND_SEPARATOR=True
THOUSAND_SEPARATOR='.'
NUMBER_GROUPING=3

进行3次更改,DECIMAL_SEPARATOR将自动变为','。但你也可以设置它:

DECIMAL_SEPARATOR=','

这种方式你不需要人性化,但我想这会影响这个settings.py文件下的所有应用程序。

答案 3 :(得分:-1)

import locale
locale.format("%d", 123456, True)