如何在django上获取当前语言环境的“short_date_format”?

时间:2013-04-25 03:31:32

标签: django localization

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

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 个答案:

答案 0 :(得分:2)

我必须做以下事情:

from django.conf import settings
from django.utils import formats 

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

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