2012-05-29 16 views
12

उठा नहीं Django में L10N कार्यान्वयन को समझने के लिए, यहाँ मेरा सेटिंग कर रहे हैं की कोशिश कर रहासिस्टम दिनांक प्रारूपण Django स्थान

LANGUAGE_CODE = 'fr-FR' 
USE_L10N = True 

अगर मैं कोशिश

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

यह मेरे 'Wed May 30 15:30:00 2012' दे देंगे कि एन लोकेल। हालांकि doc कह रहा है:

[...] एक ही सामग्री तक पहुँचने दो उपयोगकर्ताओं, लेकिन अलग भाषा में, तारीख और संख्या क्षेत्रों अलग अलग तरीकों से, के लिए अपने वर्तमान स्थान [प्रारूप के आधार पर स्वरूपित देखेंगे। ..]

क्या वे अपने संबंधित ब्राउज़र के लिए लोकेल सेट के बारे में बात कर रहे हैं?
यदि नहीं, तो मैं इसे डिफ़ॉल्ट रूप से फ्रेंच में कैसे सेट कर सकता हूं उदाहरण के लिए?

उत्तर

21

Django के स्थानीयकरण Django टेम्पलेट्स और रूपों के संदर्भ में काम करता है, और अजगर के आंतरिक datetime अभ्यावेदन के लिए श्रृंखला को यात्रा नहीं कर सकते:

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. 

तो अगर आप USE_L10N = True और इस क्षेत्र के साथ एक उपयोगकर्ता है FR में प्रवेश करती है 10,45 एक रूप में, जिसका अर्थ अंग्रेजी दशमलव प्रणाली में 10.45 से किया जाएगा। इसी प्रकार, {{ value|date:"SHORT_DATE_FORMAT" }} जैसे टेम्पलेट टैग का आउटपुट उपयोगकर्ता के लोकेल के आधार पर अलग-अलग होगा।

हालांकि, पायथन आंतरिक strftime('%c') Django की सेटिंग्स तक नहीं पहुंचता है, और इसके बजाय उस मशीन पर लोकेल सेट को संदर्भित करता है जिस पर यह स्थापित है। आप निकालते हैं और साथ करने के लिए स्थान सेटिंग्स अजगर अंक बदल सकते हैं:

>>> 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' 

या वातावरण चर $LANG की स्थापना करके।

+0

इस विस्तृत उत्तर के लिए धन्यवाद। मैं यह नोटिस करना भूल गया था कि 'डेटटाइम' स्पष्ट रूप से Django के साथ कुछ भी करने के लिए नहीं है :) अब अगर मुझे JSON द्वारा स्वरूपित तिथियों की एक सूची भेजने की आवश्यकता है, जो उपयोगकर्ताओं के लोकेल के आधार पर इसे प्रारूपित करने का सबसे अच्छा तरीका होगा? –

+0

मुझे लगता है कि उपयोगकर्ता के लोकेल से अवगत होने के बाद वास्तव में जेएसओएन को इकट्ठा करने की आवश्यकता होगी। इसे इस्तेमाल करे? https://docs.djangoproject.com/en/1.3/howto/i18n/ – Karmel

+0

नए प्रश्न पूछा [यहां] (http://stackoverflow.com/questions/10802680/django-accessing-request-meta-data-from- उत्पादन) –

संबंधित मुद्दे