2013-04-25 4 views
6

У меня L10N успешно создан в моем проекте, и я могу перевести даты в правильный формат. Но теперь мне нужен SHORT_DATE_FORMAT для текущей локали на моих шаблонах или в контексте_процессора.Как получить текущую локализацию «short_date_format» на django?

Получение от 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.

ответ

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

Смежные вопросы