2010-08-09 11 views
9

मैं Django का उपयोग कर वेब-आधारित ऐप पर कुछ i18n कर रहा हूं, जो गेटटेक्स्ट का उपयोग i18n नींव के रूप में करता है। यह एक स्पष्ट विचार की तरह लगता है कि अनुवाद डेटाबेस में संग्रहीत किया जाना चाहिए, और मुश्किल नहीं करना चाहिए, लेकिन फाइल सिस्टम पर पीओ फाइलों का अभी भी उपयोग किया जा रहा है। ऐसा क्यों है?गेटटेक्स्ट में डीबी स्टोरेज विकल्प क्यों नहीं है?

मेरा वर्तमान संदेह यह है कि एक डीबी समर्थित विकसित करने के लाभ आसानी से एक स्थापित पैकेज के रूप में गेटटेक्स्ट की विश्वसनीयता/परिचितता से अधिक हैं। क्या फाइल सिस्टम पर अनुवादों को संग्रहित करने के लिए अन्य महत्वपूर्ण कारण हैं?

उत्तर

8

प्रदर्शन मुख्य कारण है। Gettext डेटाबेस का उपयोग नहीं कर रहा है क्योंकि डेटाबेस हमेशा फ़ाइल से काफी धीमा होगा। शब्दकोश का लोड समय बहुत महत्वपूर्ण है और इस कारण से लगभग हर कोई इसके लिए फाइलों का उपयोग कर रहा है। (जैसे नहीं संकलित .po फ़ाइलें)

इसके अलावा, संकलित gettext फ़ाइलें (.mo) स्मृति में और इस कारण वे सादा पाठ फ़ाइलों की तुलना में अधिक उपयुक्त हैं के लिए लोड करने के लिए अनुकूलित कर रहे हैं।

आप अनुवाद अनुवाद करने और पाठ फ़ाइलों को परिणामों को निर्यात करने के लिए हमेशा डेटाबेस प्लेटफ़ॉर्म का उपयोग कर सकते हैं, जो डेटाबेस बैकएंड का उपयोग कर सकते हैं।उदाहरण: Pootle, Narro, Launchpad Rosetta, Transifex (hosted only)

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

वैसे, gettext का उपयोग संभवतः स्थानीयकरण के बारे में सबसे अच्छा तकनीकी निर्णय लेने में सक्षम हो सकता है। मैंने कभी भी वाणिज्यिक समाधान या इन-हाउस विकसित नहीं किया है ताकि सुविधाओं, उपकरणों और यहां तक ​​कि समर्थन पर प्रतिस्पर्धा करने में सक्षम हो सके। संस्करण नियंत्रण के लिए

+3

"एक डेटाबेस हमेशा फ़ाइल से काफी धीमा होगा" [उद्धरण-आवश्यक] - esp। इन-मेमोरी टेबल और आईओ-व्यस्त डिस्क के लिए, यह झूठी होती है। – Piskvor

+5

आप यह मानना ​​भूल जाते हैं कि यह फ़ाइल भी स्मृति में लोड की जा सकती है। और '.mo' फ़ाइल विशेष रूप से बेहतर है क्योंकि इसमें पहले से ही हैश टेबल है, इसलिए जब आप इसे लोड करते हैं तो स्ट्रिंग को भी हैश करने की आवश्यकता नहीं होती है। – sorin

2

यह आपके लिए के लिए एक स्पष्ट विचार जैसा लगता है, मुझे नहीं लगता कि सभी सहमत होंगे। AFAIK Django निम्नलिखित कारणों के लिए फ़ाइलों को पुलिस का उपयोग करता है:

  • संस्करण नियंत्रण - आप "पुलिस डेटाबेस के लिए" उपकरण अतिरिक्त बनाने के लिए क्योंकि आप अभी भी अलग अनुवाद पर काम कर रहे लोगों बनाए रखने की जरूरत है, और आप नहीं कर सकते उस प्रयोजन के लिए .po फाइलों से दूर हो जाओ
  • गेटटेक्स्ट .nix दुनिया में अनुवाद करने का एक आसान तरीका है, इसके साथ काम करने के लिए कई टूल हैं और इसे संपादित करना आसान है, diff, आदि
  • कोई आवश्यकता नहीं है यदि आपको कुछ भी अनुवाद करने की आवश्यकता है तो डेटाबेस हिट करें। कुछ विचार किसी भी डीबी अनुरोध के बिना काम कर सकते हैं, इसलिए अनुवाद प्राप्त करने के लिए उन्हें डेटाबेस में जोड़ने की आवश्यकता नहीं है। (मैं गलत हो सकता हूं, लेकिन mod_wsgi के मामले में - अनुवाद एक बार लोड हो जाएंगे और प्रत्येक थ्रेड के लिए स्मृति में संग्रहीत किए जाएंगे)।

Btw, अगर आप क्षेत्रों के लिए अलग अलग अनुवाद की आवश्यकता है, यह थोड़ा अलग सवाल है और आप http://www.muhuk.com/2010/01/dynamic-translation-apps-for-django/ की जाँच करें और एप्लिकेशन है कि सबसे अच्छा अपनी आवश्यकताओं फिट का चयन करना चाहिए।

+0

+1। – JivanAmara

3

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

आप डेटाबेस में अनुवाद क्यों पसंद करेंगे? मुझे लगता है कि आप इसे पसंद कर सकते हैं क्योंकि आप डेटाबेस में अनुवाद इंटरफ़ेस बना सकते हैं। यदि इस मामले में Pootle पर एक नज़र डालें तो यह एक शक्तिशाली वेब-आधारित अनुवाद इंटरफ़ेस है जो सीधे पीओ फाइलों के साथ काम करता है और यहां तक ​​कि सामान्य संस्करण नियंत्रण प्रणाली के साथ एकीकृत भी हो सकता है। कुछ पोस्ट-प्रतिबद्ध हुक जोड़ें और आपके पास कम काम के साथ और अनुवाद डेटाबेस के ऊपरी हिस्से के बिना ऐसी प्रणाली हो सकती है।

उम्मीद है कि मदद करता है।

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