【问题标题】:Format floats in Django template in language aware manner格式以语言感知方式在 Django 模板中浮动
【发布时间】:2012-09-30 07:34:06
【问题描述】:

我正在使用 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

【问题讨论】:

    标签: django internationalization django-templates


    【解决方案1】:

    试试 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 }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-18
      • 2019-06-02
      • 2017-04-19
      • 2019-01-04
      • 2018-02-26
      • 1970-01-01
      • 2011-09-05
      • 2013-03-05
      相关资源
      最近更新 更多