2013-04-25 95 views
6

我的L10N已成功设置在我的项目中,并且我可以将日期翻译为正确的格式。但是现在我需要SHORT_DATE_FORMAT作为我的模板或context_processor中的当前语言环境。如何在django上获取当前语言环境的“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' 

任何线索?

顺便说一下,我真正想要做的是:获取当前语言环境的格式,以便我可以将它传递给引导日期选择器插件。它目前使用m/d/Y,而django以d/m/Y格式给出日期。

回答

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 
2

我必须做到以下几点:

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

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

您正在使用设置模块中的LANGUAGE_CODE设置,该设置使其不是动态的(这是Django无法以其他方式确定时使用的默认语言代码)。在视图中,您可以使用request.LANGUAGE_CODE。否则,django.utils.translation.get_language() – bambata 2013-12-10 05:53:40

相关问题