2013-04-25 12 views
6

Ho impostato correttamente L10N sul mio progetto e sono in grado di tradurre le date nel formato corretto. Ma ora ho bisogno dello SHORT_DATE_FORMAT per le impostazioni internazionali correnti sui miei modelli o in un context_processor.Come ottenere "short_date_format" delle impostazioni locali correnti su django?

Ottenendo da django.conf.settings sempre mi dà il valore predefinito, m/d/Y. L'impostazione internazionale era attualmente impostata su pt_BR, pertanto il formato deve essere 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' 

Eventuali indizi?

A proposito, quello che sto provando a fare è: ottenere il formato della locale corrente in modo da poterlo passare al plugin bootstrap-datepicker. Attualmente sta usando m/d/Y e django sta dando una data nel formato d/m/Y.

risposta

0

sono stato in grado di farlo usando 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

ho dovuto effettuare le seguenti operazioni:

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

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

Stai usando l'impostazione LANGUAGE_CODE dal modulo delle impostazioni che la rende non dinamica (è il codice lingua predefinito usato quando Django non può determinarlo in un altro modo). In una vista puoi utilizzare request.LANGUAGE_CODE. Altrimenti django.utils.translation.get_language() – bambata

Problemi correlati