Django

2011-03-08 5 views
5

में रेल-मार्ग i18n समर्थन प्रदान करने का अच्छा तरीका है (नए) रेलों में ईर्ष्या में एक बात है: अंतर्राष्ट्रीयकरण समर्थन (Django में भी एक है, लेकिन मैं रेल के स्वाद पसंद करता हूं)।Django

रेल के बीच 'और Django के दृष्टिकोण मुख्य अंतर यह स्ट्रिंग की तरह, मुख्य मान अनुवाद मानचित्रण में कुंजी की तरह बर्ताव क्या यानी

Django संस्करण है (कुंजी -, "मुख्य" भाषा में उदाहरण के अंग्रेजी के लिए तार):

msgid "Save and quit" 
msgstr "Zapisz i wyjdź" 

रेल संस्करण समकक्ष (कुंजी - सार तार; स्टैंडअलोन व्यर्थ - कम से कम 1 "अनुवाद" प्रदान करने के लिए एक की जरूरत है) - वास्तव में, रेल YAML स्वरूप का उपयोग करता है, लेकिन निम्न उदाहरण विचार प्रस्तुत:

// english translation file 

msgid "SAVE_QUIT_MESSAGE" 
msgstr "Save and quit" 
(कुंजी अचल स्थिति के बारे में सोच

और

// polish translation file 

msgid "SAVE_QUIT_MESSAGE" 
msgstr "Zapisz i wyjdź" 

रेल 'i18n का समर्थन करने का तरीका IMHO बेहतर है - व्याकरण/वर्तनी सुधार के लिए प्रतिरोधी; भाषा अज्ञेयवाद आदि)।

Django में इस स्कीमा का उपयोग करने का एक तरीका अनुवाद के एकमात्र उद्देश्य के लिए कुछ अमूर्त भाषा का उपयोग करना होगा (उस भाषा में स्ट्रिंग्स अपरिवर्तनीय कुंजी बनाती हैं), लेकिन Django केवल भाषाओं के निश्चित सेट का समर्थन करता है। एक अन्य समाधान - इस भूमिका को चलाने के लिए समर्थित (अप्रयुक्त) भाषाओं में से एक को त्यागें - लेकिन यह सिर्फ खराब है: पी

इस मुद्दे को हल करने के लिए कोई विचार/तृतीय-पक्ष ऐप्स/तकनीकें?


Sidenote: विस्तार artibrary भाषाओं के लिए i18n समर्थन अजीब अवसरों देना होगा:

// slang translation file 

msgid "SAVE_QUIT_MESSAGE" 
msgstr "Save shit 'n' quit, bro" 
+0

... या आप केवल एक अंग्रेज़ी .po फ़ाइल उत्पन्न कर सकते हैं ... –

+0

@Ignacio Vazquez-Abrams: मुझे यकीन नहीं है कि मैं समझता हूं। क्या आप अधिक विस्तृत हो सकते हैं? जेपी फाइल उत्पन्न करना कौन सा मुद्दा हल करता है? शायद मेरे प्रश्न में कुछ अस्पष्ट है - यदि ऐसा है, तो मुझे मार्गदर्शन करें और मैं इसे संपादित कर दूंगा। – gorsky

+0

अंग्रेजी भाषा के लिए एक .po फ़ाइल, फ़्रेंच, जर्मन आदि के लिए –

उत्तर

3

चरण एक या दो मिनट के लिए वापस। आपका यहाँ तीन गुना काम है। सबसे पहले आपको UNIQUE_ID के साथ आना होगा और फिर आप लोगों को या तो कोड या किसी अन्य भाषा फ़ाइल से संदर्भ देखने के लिए मजबूर करेंगे ताकि यह पता चल सके कि AMBIGUOUS_ARGUMENT_PROVIDED के लिए उचित संदेश तब तक होगा जब तक कि आप वास्तविक अनुवाद प्रदान नहीं कर लेते। और जिन्होंने कभी कहा है कि आईडी बनाने के लिए जो अर्थपूर्ण रूप से संदर्भ व्यक्त कर सकते हैं और अच्छे संदेश संकेत प्रदान करना आसान था?

क्या आप करने की कोशिश कर रहे हैं कुछ preposterous बकवास ब्रो! चुटकुले अलग, कारण gettext सबसे प्रचलित और व्यापक रूप से उपयोग किया जाने वाला i18n और l10n API है क्योंकि प्रत्येक संदेश को इसकी सामग्री से असाइन किया गया एक अद्वितीय संदेश कैटलॉग आईडी मिलता है और क्योंकि यह साबित होता है कि अनुवादों की तुलना में संदेशों का अनुवाद करने का बेहतर तरीका आपके पास होगा आईडी के लिए, जब हर किसी ने अपनी कुंजी बनाने की कोशिश की-> मूल्य i18n ढांचे की वजह से यह डिजाइन करने के लिए सबसे सरल था।

आप अंत में निष्कर्ष निकालेंगे कि गेटटेक्स्ट का उपयोग करने का एक बुरा विचार था जिस तरह से इसका मतलब नहीं था और आप पूरे विचार को भूलकर अभी खुद को बचा सकते हैं।

+0

Django 1.3 (उम्मीद है) में अनुवाद संदर्भ के संबंध में कुछ टिप्पणियां पारित करने का तरीका होगा (http://docs.djangoproject.com/en/dev/विषयों/i18n/अंतर्राष्ट्रीयकरण/# टिप्पणियों के लिए अनुवादक), जो उन मुद्दों को हल करेंगे। मैं गेटटेक्स्ट से छुटकारा नहीं लेना चाहता (यह बहुत अच्छा है), लेकिन अनुवाद नौकरी करने के लिए अपरिवर्तनीय कुंजी का उपयोग करने के लिए (कई भाषाओं में योगदानकर्ताओं के अनुवाद के साथ पहले से जारी ऐप के बारे में सोचें, जिसे "मुख्य" भाषा = अनुवाद में परिवर्तन की आवश्यकता है)। Ignazio टिप्पणी/उत्तर देखें, ऐसा लगता है कि यह मेरे मामले को हल करता है। – gorsky

+0

गेटटेक्स्ट पहले से ही कैटलॉग में किसी भी बदलाव के अनुसार कृपापूर्वक संभाल सकता है। यहां आप भी डेवलपर्स की उपेक्षा करते हैं। वे वास्तव में अनुपलब्ध हैं कि 'SAVE_QUIT_MESSAGE' का अर्थ यह है कि जब वे कोड के उस ब्लॉक पर काम कर रहे हैं, तो यह .po फ़ाइलों में अनुवादों से अलग अनियंत्रित है। –

+0

अनुवाद टिप्पणियां कोड और अनुवाद फ़ाइलों दोनों में दिखाई देगी। लेकिन मुझे गेटटेक्स्ट परिवर्तनों की हैंडलिंग क्षमताओं के बारे में पता नहीं था (अनुमान है कि मुझे दस्तावेज़ों को और सावधान रहना चाहिए) और यह मेरी समस्या का सही जवाब प्रतीत होता है। – gorsky

2

यदि आप इसे इस तरह से करने का आग्रह करते हैं, तो यह एक .po फ़ाइल उत्पन्न करके किया जा सकता है जिसमें स्रोत स्ट्रिंग के अंग्रेज़ी अनुवाद होंगे।

+0

+1 जो मेरे मामले को हल करता है, लेकिन फिलिप (स्वीकार्य उत्तर) ने मुझे इस तकनीक का उपयोग न करने और उचित समाधान प्रदान करने के लिए आश्वस्त किया। – gorsky