格式以语言识别的方式浮动在Django模板中

时间:2012-10-09 21:57:43

标签: django internationalization django-templates

我正在使用Django的humanize来使我的应用中的大浮点数更具可读性。此外,我的应用程序有不同的语言,不同的语言使用,和。反过来标志着数字。

对于整数值,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

1 个答案:

答案 0 :(得分:0)

尝试使用Django Format Localization feature。它为您提供了三种选择。正如Django文档所说,

  

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

     

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

     

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

因此,第一个选项会为所有模板启用与区域设置相关的数字格式。

第二个选项是使用localize template tag仅为模板的一部分启用与区域设置相关的数字格式。例如,

{% load l10n %}

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

第三种选择是使用localize template filter强制单个值的与语言环境相关的数字格式。例如,

{% load l10n %}

{{ value|localize }}