我正在构建一个Django(1.6)站点(带有twitter bootstrap),其中有一些用户必须填写某些日期的表单.我启用了l10n和i18n.datetime字段由JQuery小部件控制.小部件接受参数以定义日期和时间的输入格式.如何在模板标记中获取当前的django日期时间格式,以便我可以将其映射到它的Javascript等价物?我想要的是获得完整的语言环境(如nl_BE,en_US,...),因为我住在比利时,我们使用法语,荷兰语和德语,但我们都使用相同的日期格式.如果我只使用该语言(使用django.utils.translation中的get_language),我会看到来自法国和德国的日期格式.
>>> from django.utils import formats
>>> formats.get_format("SHORT_DATE_FORMAT", lang="nl")
Out[27]: u'j-n-Y'
>>> formats.get_format("SHORT_DATE_FORMAT", lang="fr")
Out[28]: u'j N Y'
>>> formats.get_format("SHORT_DATE_FORMAT", lang="de")
Out[29]: u'd.m.Y'
Run Code Online (Sandbox Code Playgroud)
我在他们的演示页面上检查过Django-datetime-widget,但如果我将浏览器(chrome)切换为荷兰语或法语,则不会更改日期格式...
有人有想法解决这个问题吗?
听起来您需要创建一些自定义格式文件,因为 django 不提供 fr_BE、de_BE 和 nl_BE 的语言环境格式。请参阅https://docs.djangoproject.com/en/1.6/topics/i18n/formatting/#creating-custom-format-files了解如何创建自定义区域设置格式。
它基本上涉及创建一个包含新格式的新应用程序,并使用FORMAT_MODULE_PATH设置指定该应用程序。
您的格式应用程序应该类似于:
formats/
__init__.py
fr_BE/
__init__.py
formats.py
nl_BE/
__init__.py
formats.py
de_BE/
__init__.py
formats.py
Run Code Online (Sandbox Code Playgroud)
您还应该将 fr-be、de-be 和 nl-be 添加到 settings.py 中的语言中
LANGUAGES = (
('nl-be', ugettext_lazy('Dutch (Belgium)')),
('nl-fr', ugettext_lazy('French (Belgium)')),
('nl-de', ugettext_lazy('German (Belgium)')),
)
Run Code Online (Sandbox Code Playgroud)