2013-04-25 14 views
6

Mam L10N z powodzeniem skonfigurowany w moim projekcie i jestem w stanie przetłumaczyć daty na prawidłowy format. Ale teraz potrzebuję SHORT_DATE_FORMAT dla bieżącego ustawienia narodowego w szablonach lub w procesorze kontekstowym.Jak uzyskać aktualny "short_date_format" lokalizacji na django?

Zawsze otrzymuję od domyślnej wartości m/d/Y. Ustawienia regionalne były obecnie ustawione na pt_BR, więc format powinien być w formacie 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' 

Jakieś wskazówki?

Nawiasem mówiąc, naprawdę próbuję to zrobić: pobrać bieżący format ustawień regionalnych, aby móc przekazać go do wtyczki bootstrap-datepicker. Obecnie korzysta z m/d/Y, a django podaje datę w formacie d/m/Y.

Odpowiedz

0

udało mi się to zrobić przy użyciu 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

musiałem wykonać następujące czynności:

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

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

Używasz ustawienia LANGUAGE_CODE z modułu ustawień, co sprawia, że ​​nie jest on dynamiczny (jest to domyślny kod języka używany, gdy Django nie może go określić w inny sposób). W widoku możesz użyć request.LANGUAGE_CODE. W przeciwnym razie django.utils.translation.get_language() – bambata

Powiązane problemy