2008-12-14 9 views
9

अरे, मैं वर्तमान में अपने अध्ययन के लिए django ऐप पर काम कर रहा हूं, और l18n के बिंदु पर आया हूं। साइट को स्थानीयकरण करना बहुत आसान था, लेकिन अब मुझे उपयोगकर्ताओं को एप्लिकेशन की गतिशील सामग्री का अनुवाद करने की अनुमति देना है। उपयोगकर्ता डेटाबेस में "उत्पादों" को सहेज सकते हैं और उन्हें नाम और विवरण दे सकते हैं, लेकिन चूंकि पूरी साइट को स्थानीयकृत किया जाना चाहिए, इसलिए मुझे उपयोगकर्ताओं को नामों और विवरणों का अनुवाद करने का एक तरीका प्रदान करना होगा।Django एप्लिकेशन की सामग्री को स्थानीयकरण कैसे करें

क्या डजंगो में ऐसा करने का कोई प्राकृतिक तरीका है? या जानोस्च

उत्तर

10

मैं django-multilingual की जांच करने का सुझाव दूंगा। यह एक तृतीय पक्ष ऐप है जो आपको अपने मॉडल पर अनुवाद फ़ील्ड को परिभाषित करने देता है।

बेशक, आपको अभी भी वास्तविक अनुवादों में टाइप करना होगा, लेकिन वे डेटाबेस में पारदर्शी रूप से संग्रहीत हैं (स्थिर पीओ फाइलों के विपरीत), जो मुझे विश्वास है कि आप इसके बारे में पूछ रहे हैं।

0

यह जो अनुवाद प्रदान करेगा पर निर्भर करता है, मैं इसे (डेटामॉडल में अनुवाद के लिए कार्य करके) आवेदन के हिस्से के रूप में महसूस करने के लिए

धन्यवाद है। यदि आप अनुवाद के लिए एक वेब इंटरफेस प्रदान करना चाहते हैं, तो आपको इसे स्वयं विकसित करना होगा, और डेटाबेस में अनुवादों का भी प्रतिनिधित्व करना होगा।

यदि साइट का अनुवाद करने वाले वही अनुवादक डेटा का भी अनुवाद करेंगे, तो आप उन्हें उसी मॉडल के साथ प्रदान कर सकते हैं जो वे साइट (संभवतः गेटटेक्स्ट) के लिए उपयोग करते हैं, और फिर आप इस सामग्री के लिए गेटटेक्स्ट का उपयोग भी कर सकते हैं।

1

"मुझे उपयोगकर्ताओं को नामों और विवरणों का अनुवाद करने का एक तरीका प्रदान करना होगा।"

"क्या डजंगो में ऐसा करने का कोई प्राकृतिक तरीका है?"

क्या आप पूछ रहे हैं कि Django भाषा से भाषा में अनुवाद कर सकता है या नहीं? क्या आप http://translate.google.com/ जैसे कुछ के बारे में पूछ रहे हैं?

मुझे नहीं लगता कि Django उपयोगकर्ता इनपुट को दूसरी भाषा में अनुवाद कर सकता है।

यदि आप अपने उपयोगकर्ताओं के लिए अनुवाद करने जा रहे हैं, तो यह आपके डेटा मॉडल का हिस्सा होना चाहिए।

Django के i18n फ़िल्टर आपको अनुवाद तारों की एक तालिका रखने की अनुमति देता है। documentation यह कहता है।

  1. अपने पायथन कोड और टेम्पलेट्स में अनुवाद स्ट्रिंग एम्बेड करें।
  2. उन तारों के लिए अनुवाद प्राप्त करें, जिन्हें आप समर्थन करना चाहते हैं। यह कुछ ऐसा है जो आप अनुवादकों को भर्ती करके या बहुत सी भाषाओं को जानकर मैन्युअल रूप से करते हैं।
  3. अपने Django सेटिंग्स में लोकेल मिडलवेयर सक्रिय करें।
5

मैं (उदाहरण के MyPage/en/के लिए) यूआरएल के आधार पर भाषा को चुनने के लिए स्थानीयकरण सामग्री के लिए django-multilingual और django-localeurl का उपयोग करें।

आप देख सकते हैं कि multilingua और localeurl JewishKrakow.net पृष्ठ पर कैसे काम करते हैं।

0

सामग्री स्थानीयकरण प्लगइन की तलाश करना, या इसे कैसे लिखना है। सूची django-i18n-model

0

मुझे लगता है कि आप दो चरणों में संचालित करना चाहिए करने के लिए जोड़ा जा सकता:

  1. प्राप्त करें अनुवाद पहले चरण के लिए

  • दिखाएँ अनुवाद तार, आप Django बताना चाहिए कि उपयोगकर्ता द्वारा सम्मिलित तारों का अनुवाद किया जाना है। मुझे लगता है कि ऐसा करने का कोई मूल तरीका नहीं है। हो सकता है कि आप अपने डीबी से स्ट्रिंग को लोकेल-विशिष्ट फाइलों में डालकर निकालें, उन पर 'makemessages' चलाएं, django.po फ़ाइलों को प्राप्त करें और अनुवाद करें।

    दूसरा, अपने वेब एप्लिकेशन पर उन तारों को दिखाने के लिए ugettext का उपयोग करें।

    आशा है कि यह आपकी समस्या के साथ लोगों की सहायता कर सकता है।

  • 0

    या इस प्रयास करें:

    http://packages.python.org/django-easymode/i18n/index.html

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

    +0

    क्या आपने उत्पादन में समाधान का परीक्षण किया और यह django-multilingual-ng से तुलना कैसे करता है? मैं डेटाबेस फ़ील्ड को स्थानांतरित करने के लिए एक नया दृष्टिकोण चुन रहा हूं क्योंकि डीजेंगो-बहुभाषी Django 1.2+ पर काम नहीं करता है और django-multilingual-ng पूरी तरह से मृत दिखता है। – stricjux

    +1

    हां, इसका उपयोग कई वेबसाइटों पर उत्पादन में किया जाता है। बीटा की स्थिति का एकमात्र कारण यह है कि परीक्षण सूट में अभी तक 100% कवरेज नहीं है। – specialunderwear

    1

    मेरी साइट पर 2 भाषाएं हैं: अंग्रेजी और अरबी उपयोगकर्ता ध्वज पर क्लिक करने वाली भाषाओं के बीच स्विच कर सकते हैं।

    class CollectionEditForm_en(forms.Form): 
        name = forms.CharField(label=_('Name'), max_length=100, widget=forms.TextInput(attrs={'size':'50'})) 
        product = forms.ModelChoiceField(label=_('product'), queryset=Product.objects.filter(enabled=True), empty_label=None) 
    
    class CollectionEditForm_ar(forms.Form): 
        name = forms.CharField(label=_('Name'), max_length=100, widget=forms.TextInput(attrs={'size':'50'})) 
        product = forms.ModelChoiceField(label=_('product'), queryset=Product_ar.objects.filter(enabled=True), empty_label=None) 
    

    इस तरह से कोड की जांच भाषा में:

    if request.LANGUAGE_CODE=='ar': 
        CollectionEditForm=CollectionEditForm_ar 
    else: 
        CollectionEditForm=CollectionEditForm_en 
    

    तो टेम्पलेट्स में

    class Product(models.Model): 
        name=models.CharField(max_length=100) 
        name_ar=models.CharField(max_length=100, default='') 
    
        def __unicode__(self): 
         return self.name 
    
    class Product_ar(Product): 
        def __unicode__(self): 
         return self.name_ar 
        class Meta: 
         proxy=True 
    

    रूपों में मैं बजाय 2 रूपों एक का उपयोग करें: मॉडल में मैं एक प्रॉक्सी मॉडल का उपयोग मैं जांचता हूं:

    {% if LANGUAGE_CODE == "ar" %} 
        <a href="/product/{{product.alias}}/">{{product.name_ar}}</a> 
    {% else %} 
        <a href="/product/{{product.alias}}/">{{product.name}}</a> 
    {% endif %} 
    

    आशा है कि यह समाधान किसी की मदद करेगा

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