L10N使用Jinja2和Django对模板中的数字进行本地化
我正试图让Jinja2(和Django,通过L10N使用Jinja2和Django对模板中的数字进行本地化,django,jinja2,Django,Jinja2,我正试图让Jinja2(和Django,通过Django-jinja)对一个数字进行本地化,例如123456变成123456(当然,123.456取决于语言环境)。我已经阅读了我能找到的关于这个主题的所有文档,但找不到任何真正有效的东西。使用标准DTL,您只需执行以下操作: {% localize on %}{{ some_number }}{% endlocalize %} 这在我使用常规Django模板的项目中运行良好,但当然在Jinja2中不起作用。我提到这很好,因为可以排除任何涉及se
Django-jinja
)对一个数字进行本地化,例如123456
变成123456
(当然,123.456取决于语言环境)。我已经阅读了我能找到的关于这个主题的所有文档,但找不到任何真正有效的东西。使用标准DTL,您只需执行以下操作:
{% localize on %}{{ some_number }}{% endlocalize %}
这在我使用常规Django模板的项目中运行良好,但当然在Jinja2中不起作用。我提到这很好,因为可以排除任何涉及settings.py
的情况,例如USE\u L10N
beingFalse
我尝试了以下方法,都是基于我找到的文档:
-输出不带逗号或本地化的数字{{gettext(“%(num)d”,num=some_number)}
-如-outputs number所示,不带逗号或本地化{%trans num=some_number%}{{num}{%endtrans%}
-输出数字,不带逗号或本地化{{(一些数字|字符串)}
-{{some_number | localize}
不是有效的筛选器localize
那么,如何使用Jinja2轻松、正确地定位一个数字呢?找到了答案。Jinja2似乎无法单独处理本地化问题,但是
django jinja
包含一个内置的contrib,它包装了django.contrib.humanize.templatetags
。根据,如果启用了L10n,则使用|intcomma
过滤器尊重格式本地化
要使用它,请将django\u jinja.contrib.\u人性化
添加到settings.py中的已安装的应用程序
:
INSTALLED_APPS += ('django_jinja.contrib._humanize',)
然后在模板中,只需使用|intcomma
过滤器:
{{ some_number|intcomma }}
虽然这是一个老问题,但我遇到了同样的问题。我发现这个解决方案不需要太多编辑就可行。
是为jinja2模板实现L10n的库。您可以像这样将其与应用程序集成
TEMPLATES = [
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'extensions': [
'jdj_tags.extensions.DjangoStatic',
'jdj_tags.extensions.DjangoI18n',
'jdj_tags.extensions.DjangoL10n',
]
},
},
}