2013-04-25 123 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

相關問題