2012-05-29 10 views
12

açmıyorSistem tarih biçimlendirme, İşte benim ayarları Django içine L10N uygulanmasını anlamaya çalışırken django yerel

LANGUAGE_CODE = 'fr-FR' 
USE_L10N = True 

ben çalışırsanız

>>> datetime.datetime.strptime('2012-05-30 15:30', '%Y-%m-%d %H:%M') 
     .strftime('%c') 

O TR olduğunu bana 'Wed May 30 15:30:00 2012' verecek yerel ayar. Ancak doc söylüyor:

[...] aynı içeriğe erişmesini İki kullanıcı, ancak farklı bir dilde, mevcut yerel [için biçimine bağlı olarak farklı şekillerde, biçimlendirilmiş tarih ve sayı alanlarını göreceksiniz. ..]

İlgili tarayıcılar için ayarlanan yerel ayarlar hakkında mı konuşuyorlar?
Değilse, örneğin varsayılan olarak nasıl Fransızca'ya ayarlayabilirim?

cevap

21

Django'nın yerelleştirme Django şablonları ve formlar bağlamında çalışır ve Python'ın iç datetime temsillerine zinciri seyahat edemez: Eğer USE_L10N = True ve bölge ile bir kullanıcı varsa Yani

When using Django's formatting system, dates and numbers on templates 
will be displayed using the format specified for the current locale. 
...Django will also use localized formats when parsing data in forms. 

FR10,45 girer ingilizce ondalık sistemde 10.45 anlamına gelecek şekilde yorumlanacaktır. Benzer şekilde, {{ value|date:"SHORT_DATE_FORMAT" }} gibi bir şablon etiketinin çıktısı, kullanıcının bulunduğu yere göre değişecektir. Ancak, Python iç strftime('%c'), Django'nun ayarlarına erişmez ve bunun yerine, üzerinde kurulu olduğu makinede ayarlanan yerel ayarlara karşılık gelir. Sen almak ve birlikte için yerel ayarları Python noktalarını değiştirebilirsiniz:

>>> datetime.datetime.strptime('2012-05-30 15:30', '%Y-%m-%d %H:%M').strftime('%c') 
'Wed May 30 15:30:00 2012' 
>>> import locale 
>>> locale.getlocale() 
(None, None) 
>>> locale.getdefaultlocale() 
('en_US', 'UTF-8') 
>>> locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8") 
'fr_FR.UTF-8' 
>>> datetime.datetime.strptime('2012-05-30 15:30', '%Y-%m-%d %H:%M').strftime('%c') 
'Mer 30 mai 15:30:00 2012' 

Ya $LANG değişken ortam ayarlayarak

.

+0

Bu ayrıntılı yanıt için teşekkür ederiz. “Datetime” nin Django ile hiçbir ilgisi olmadığını fark ettim :) Şimdi, biçimlendirilmiş tarihlerin listesini JSON ile göndermem gerekirse, bu, kullanıcıların bulunduğu yere göre biçimlendirmenin en iyi yolu olacaktır. –

+0

Bu, kullanıcının yerel ayarının farkında olduktan sonra JSON'u gerçekten yüklemeyi gerektirir. Bunu dene? https://docs.djangoproject.com/en/1.3/howto/i18n/ – Karmel

+0

Yeni soru sordu [burada] (http://stackoverflow.com/questions/10802680/django-accessing-request-meta-data-from- üretim) –