django国家的要求

Wim*_*mDH 5 python django

我正在构建一个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)切换为荷兰语或法语,则不会更改日期格式...

有人有想法解决这个问题吗?

Tar*_*req 1

听起来您需要创建一些自定义格式文件,因为 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)