django国家的要求

时间:2014-11-20 21:11:52

标签: 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'

我在他们的演示页面上检查过Django-datetime-widget,但如果我将浏览器(chrome)切换为荷兰语或法语,则不会更改日期格式......

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

1 个答案:

答案 0 :(得分: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

您还应该在settings.py

中将fr-be,de-be和nl-be添加到您的LANGUAGES
LANGUAGES = (
    ('nl-be', ugettext_lazy('Dutch (Belgium)')),
    ('nl-fr', ugettext_lazy('French (Belgium)')),
    ('nl-de', ugettext_lazy('German (Belgium)')),
)