2013-04-25 39 views
6

Tôi đã thiết lập L10N thành công cho dự án của mình và tôi có thể dịch các ngày sang định dạng chính xác. Nhưng bây giờ tôi cần SHORT_DATE_FORMAT cho miền địa phương hiện tại trên các mẫu của tôi, hoặc trong một context_processor.Làm cách nào để có được "short_date_format" của ngôn ngữ hiện tại trên django?

Lấy từ django.conf.settings luôn mang lại cho tôi giá trị mặc định, m/d/Y. Miền địa phương hiện được đặt thành pt_BR, do đó định dạng phải là 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' 

Bất kỳ manh mối nào?

Nhân tiện, những gì tôi thực sự cố gắng làm là: lấy định dạng của ngôn ngữ hiện tại để tôi có thể chuyển nó tới plugin bootstrap-datepicker. Nó hiện đang sử dụng m/d/Y và django đang đưa ra một ngày ở định dạng d/m/Y.

Trả lời

0

tôi đã có thể làm điều này bằng 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

tôi phải làm như sau:

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

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

Bạn đang sử dụng cài đặt LANGUAGE_CODE từ mô-đun cài đặt làm cho nó không động (nó là mã ngôn ngữ mặc định được sử dụng khi Django không thể xác định nó theo cách khác). Trong chế độ xem, bạn có thể sử dụng request.LANGUAGE_CODE. Nếu không thì django.utils.translation.get_language() – bambata

Các vấn đề liên quan