如何在 Django 中获取当前语言环境的“短日期格式”?

8

我的项目上已经成功设置了L10N,并且我能够将日期翻译为正确的格式。但是现在我需要模板或者一个context_processor中当前语言环境下的SHORT_DATE_FORMAT。

从django.conf.settings获取它总是给我默认值m/d/Y。 语言环境当前设置为pt_BR,因此格式应该是d/m/Y。

In [42]: settings.LANGUAGE_CODE
Out[42]: 'pt-br'

In [43]: settings.USE_L10N
Out[43]: True

In [44]: settings.SHORT_DATE_FORMAT
Out[44]: 'm/d/Y'

有什么线索吗?

顺便提一下,我真正想做的是:获取当前区域设置的格式,以便将其传递给bootstrap-datepicker插件。它目前使用m/d/Y,而django输出的日期格式是d/m/Y

2个回答

4
我需要完成以下操作:
from django.conf import settings
from django.utils import formats 

correct_format = formats.get_format("SHORT_DATE_FORMAT", lang=settings.LANGUAGE_CODE)

8
你正在使用设置模块中的LANGUAGE_CODE设置,这使它不具有动态性(当Django无法用其他方式确定默认语言代码时,它是使用的默认语言代码)。在视图中,你可以使用request.LANGUAGE_CODE。否则,可以使用django.utils.translation.get_language()函数。 - bambata

0

我能够使用babel来完成这个:

settings.py:

MIDDLEWARE_CLASSES = (
    ...
    'babeldjango.middleware.LocaleMiddleware',
    ...
)

context_processors.py:

def global_context(request):
    # Fixing the date format so bootstrap-datepicker understands.
    js_frm = request.locale.date_formats['medium'].pattern

    context = {
    ...

    return context

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接