2009-07-16 13 views
11

मैं Django ऐप का स्थानीयकरण कर रहा हूं।Django व्यवस्थापक को अनुवादित फ़ील्ड नामों का उपयोग करें

फ्रंट-एंड वेबसाइट ठीक काम करती है और Django व्यवस्थापक साइट चयनित भाषा भी चुनती है।

लेकिन यह केवल कुछ स्थानों में भाषा सेटिंग्स को लागू करता है और फ़ील्ड और कॉलम नामों के डिफ़ॉल्ट अंग्रेज़ी संस्करणों का उपयोग करता है, भले ही इनका अनुवाद किया गया हो। क्यूं कर? मैं व्यवस्थापक इंटरफ़ेस में कॉलम और फ़ील्ड नामों के लिए अनुवादित नामों का उपयोग कैसे कर सकता हूं?

उदाहरण:

class Order(models.Model): 
    OPTIONS = ((0, _("Bank transfer")), (1, _("Cash on delivery")),) 

    user = models.ForeignKey(User, name=_("User")) 
    payment = models.IntegerField(choices=self.OPTIONS, name=_("Payment")) 

जो मैं मिलता है:

  1. अनूदित इस तरह के "आपका स्वागत है" और "लॉगआउट" के रूप में मानक व्यवस्थापक ग्रंथों शीर्ष
  2. अनुवादित चयन भुगतान के लिए विकल्पों पर टाइप करें
  3. फ़ील्ड के लिए कॉलम नाम और फॉर्म लेबल का अनुवाद नहीं किया गया है ("उपयोगकर्ता", "भुगतान")

मैं Django 1.0.2 का उपयोग कर रहा हूं। जिन ग्रंथों का अनुवाद नहीं हो रहा है वे लोकेल फाइलों में काम करते हैं जो काम करते हैं।

उप-प्रश्न: क्या ऐप नामों को स्थानांतरित करना संभव है?

उत्तर

13

यह पता चला मैं नाम बजाय verbose_name के लिए अनुवादित संस्करण की स्थापना की गई थी।

यह काम करता है:

class Order(models.Model): 
    OPTIONS = ((0, _("Bank transfer")), (1, _("Cash on delivery")),) 

    user = models.ForeignKey(User, verbose_name=_("User")) 
    payment = models.IntegerField(choices=self.OPTIONS, verbose_name=_("Payment")) 
+0

कहाँ 'स्वयं में' self' नाम किया था। विकल्प 'से आते हैं? क्या यह नाम त्रुटि नहीं उठाता है? –

+0

@ChrisWesseling मैं पाइथन में बहुत अच्छा नहीं हूं लेकिन इस मामले में स्वयं मॉड्यूल को स्वयं नहीं संदर्भित करता है? विकल्प "कक्षा आदेश" के ठीक ऊपर परिभाषित किया गया है ... –

+0

बाध्य विधि का पहला पैरामीटर ऑब्जेक्ट ही है। सम्मेलन द्वारा इसे स्वयं नाम दिया गया है, लेकिन 'स्वयं' कोई जादू शब्द नहीं है जैसे 'यह' जावास्क्रिप्ट या PHP में है; इसे स्पष्ट रूप से बंधना होगा। लेकिन मुझसे गलती हो सकती है। –

0

क्या आप शायद इस मॉडल के लिए कस्टम मॉडलफॉर्म का उपयोग कर रहे हैं (admin.py में)? आपको ओवरराइड फ़ील्ड के लेबल के लिए गेटटेक्स्ट-एड मान जोड़ना होगा।

Django 1.0 के रूप में ऐप नामों को स्थानांतरित करना संभव नहीं है - 1.1 के बारे में सुनिश्चित नहीं है।

7

तोमा सही जवाब मिल गया।

लेकिन Django अब ForeignKey, ManyToManyField और OneToOneField क्षेत्र प्रकारों के लिए एक क्षेत्र, except की वर्बोज़ नाम के रूप में पहला तर्क लेता है। तो अगर आप आलसी हैं आप भी लिख सकते हैं:

payment = models.IntegerField(_("Payment"), choices=self.OPTIONS) 

तुम अब भी ForeignKey उदाहरण के लिए एक कीवर्ड तर्क का उपयोग करने के लिए है, हालांकि:

user = models.ForeignKey(User, verbose_name=_("User")) 
+0

अद्यतन के लिए धन्यवाद! –

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