3

我正在使用 Django 的人性化来使我的应用程序中的大浮点数更具可读性。此外,我的应用程序有不同的语言版本,不同的语言使用 , 和 . 反过来用数字签名。

对于整数值,humanize 标签intcomma效果很好:

{{ intvalue|intcomma }}

会给不同的语言环境:

English:  1,000,000
Dutch:    1.000.000

但是,使用浮点数并不能很好地工作。例如,在我的模板中,您会发现:

{{ floatvalue|floatformat:2|intcomma }}

会给不同的语言环境:

English:  1,000,000.00
Dutch:    1,000,000,00

请注意,荷兰语不是 1.000.000,00,而是显示 1,000,000,00。切换 floatformat:2 和 intcomma 标记也不起作用,因为该值什么也没有。

关于如何轻松解决此问题的任何想法?

(如果可能的话,我宁愿不使用外部库,例如Babel

4

1 回答 1

0

试试 Django格式本地化功能。它为您提供了三个选项。正如 Django 文档所说,

Django 的格式化系统能够使用为当前语言环境指定的格式在模板中显示日期、时间和数字。它还处理表单中的本地化输入。

启用后,访问相同内容的两个用户可能会看到格式不同的日期、时间和数字,具体取决于他们当前区域设置的格式。

默认情况下禁用格式化系统。要启用它,必须USE_L10N = True在您的设置文件中进行设置。

因此,第一个选项为所有模板打开依赖于区域设置的数字格式。

第二个选项是使用localize模板标签为模板的一部分打开依赖于区域设置的数字格式。例如,

{% load l10n %}

{% localize on %}
    {{ value }}
{% endlocalize %}

第三种选择是使用localize模板过滤器来强制为单个值设置依赖于区域设置的数字格式。例如,

{% load l10n %}

{{ value|localize }}
于 2012-12-04T06:01:03.507 回答