कुछ विचार:
1. अनुवाद
अनुवाद कौन कर रही होगी? वे लोग जो साइट से जुड़े हुए हैं? एक अनुवाद एजेंसी? गेटटेक्स्ट का उपयोग करते समय आप 'पॉट' (.po) फ़ाइलों के साथ काम करेंगे। इन फ़ाइलों में संदेश आईडी और संदेश स्ट्रिंग (अनुवाद) शामिल है। उदाहरण:
msgid "A string to be translated would go here"
msgstr ""
अब, यह ठीक है और जो कोई भी इस का अनुवाद करने की जरूरत के लिए समझ में आता लग रहा है। लेकिन क्या होता है जब आप कीवर्ड का उपयोग करते हैं, जैसे माइक सुझाव देता है, पूर्ण वाक्यों के बजाय? अगर किसी को "address_home" नामक अनुवाद करने की आवश्यकता है, तो उसके पास कोई सुराग नहीं है यदि यह शीर्षलेख "होम एड्रेस" होना चाहिए या यह एक पूर्ण वाक्य है।
/// This is a comment that will be included in the pot file for the translators
gettext("ready_for_lost_episode");
जब पुलिस फाइलों बनाने इन टिप्पणियों जोड़ देगा xgettext --add-comments=///
का उपयोग करना: इस मामले में, फ़ाइल पर राइट इससे पहले कि आप gettext समारोह पर कॉल करने के लिए टिप्पणी जोड़ने की है, तो तरह सुनिश्चित करें। हालांकि, मुझे नहीं लगता कि गेटटेक्स्ट इस तरह इस्तेमाल किया जा रहा है। साथ ही, यदि आपको प्रत्येक टेक्स्ट के साथ टिप्पणियां जोड़ने की आवश्यकता है, तो आप जो प्रदर्शित करना चाहते हैं, वह आप करेंगे) शायद किसी बिंदु पर एक त्रुटि करें, बी) आप पूरी स्क्रिप्ट किसी भी तरह से ग्रंथों से भर जाएंगे, केवल टिप्पणी फ़ॉर्म में, सी) टिप्पणियों को सीधे गेटटेक्स्ट फ़ंक्शन के ऊपर रखा जाना चाहिए, जो आपके कोड में फ़ंक्शन की स्थिति के आधार पर हमेशा विश्वसनीय नहीं होता है।
2।रखरखाव
आपकी साइट बढ़ने के बाद (यहां तक कि आगे) और आपकी भाषा फाइलें इसके साथ-साथ सभी अलग-अलग अनुवादों को बनाए रखने में काफी मुश्किल हो सकती हैं। प्रत्येक बार जब आप कोई टेक्स्ट जोड़ते हैं, तो आपको नई फाइलें बनाने, अनुवादकों को फाइल भेजने, फ़ाइलों को वापस प्राप्त करने, सुनिश्चित करने के लिए कि संरचना अभी भी बरकरार है (उत्सुक अनुवादक हमेशा वाक्यविन्यास का अनुवाद करने में खुश रहते हैं, पूरी फ़ाइल बनाते हैं अनुपयोगी :)), और नए अनुवादों को आयात करने के साथ खत्म करें। यह करने योग्य, निश्चित है, लेकिन इस साइट पर बड़ी साइटों और कई अलग-अलग भाषाओं के साथ संभावित समस्याओं से अवगत रहें।
एक अन्य विकल्प:
व्यक्तिगत रूप से, मैं इसे और अधिक उपयोगी एक डेटाबेस और निर्यात में, एक (सरल) सीएमएस का उपयोग कर चर और अनुवाद रखने अनुवाद प्रबंधन करने के लिए लगता है: अपने 2 और 3 विकल्प गठबंधन खुद को भाषा फाइलों के लिए रिलीज ग्रंथ:
- डेटाबेस में चर जोड़ें (उदाहरण: आईडी, पेज, चर);
- इन चरों में अनुवाद जोड़ें (उदा .: आईडी, varId, भाषा, अनुवाद);
- प्रासंगिक चर और अनुवाद का चयन करें, उन्हें एक फ़ाइल में लिखें;
- आपकी साइट में प्रासंगिक भाषा फ़ाइल शामिल करें;
- एक चर पाठ प्रदर्शित करने के लिए अपने स्वयं के समारोह बनाने के लिए:
text('var');
या हो सकता है की तरह __('faq','register','lost_password_text');
प्वाइंट 3 कुछ डेटाबेस से सभी प्रासंगिक चर और अनुवाद के चयन, उन्हें अंदर डालने के रूप में सरल किया जा सकता है एक सरणी और एक फ़ाइल में serlialized सरणी लिखना।
लाभ:
रखरखाव। बड़ी परियोजनाओं के लिए ग्रंथों को बनाए रखना बहुत आसान हो सकता है। आप अपने डेटाबेस में एक कॉलम जोड़कर, पेज, अनुभाग या अपनी साइट के अन्य हिस्सों द्वारा वेरिएबल्स को समूहबद्ध कर सकते हैं जो इस चर के साइट के किस हिस्से से संबंधित है। इस तरह आप जल्दी से उपयोग किए गए सभी चरों की सूची खींच सकते हैं। एफएक्यू पेज।
अनुवाद। आप एक ही पृष्ठ पर सभी अलग-अलग भाषाओं के सभी अनुवादों के साथ चर प्रदर्शित कर सकते हैं। यह उन लोगों के लिए उपयोगी हो सकता है जो ग्रंथों को एक ही समय में कई भाषाओं में अनुवाद कर सकते हैं। और संदर्भ के लिए एक महसूस करने के लिए अन्य अनुवादों को देखना उपयोगी हो सकता है ताकि अनुवाद जितना संभव हो सके उतना अच्छा हो। आप यह जानने के लिए डेटाबेस से पूछ सकते हैं कि क्या अनुवाद किया गया है और क्या नहीं है। संभवतः पुराने पुराने अनुवादों का ट्रैक रखने के लिए टाइमस्टैम्प जोड़ें।
एक्सेस। यह इस बात पर निर्भर करता है कि कौन अनुवाद करेगा। यदि आवश्यकता हो तो अनुवाद एजेंसी से लोगों तक पहुंच प्रदान करने के लिए आप सीएमएस को एक साधारण लॉगिन के साथ लपेट सकते हैं, और केवल उन्हें कुछ भाषाओं या साइट के कुछ हिस्सों को बदलने की अनुमति भी दे सकते हैं। यदि यह कोई विकल्प नहीं है, तो भी आप डेटा को उस फ़ाइल में आउटपुट कर सकते हैं जिसे मैन्युअल रूप से अनुवादित किया जा सकता है और इसे बाद में आयात किया जा सकता है (हालांकि यह पहले बताई गई समस्याओं के साथ आ सकता है।)। आप अनुवादकों के संदर्भ के रूप में पहले से मौजूद (अंग्रेजी या दूसरी मुख्य भाषा) में से एक अनुवाद जोड़ सकते हैं।
सब कुछ मुझे लगता है कि आपको लगता है कि आप इस तरह के अनुवादों पर विशेष रूप से लंबे समय तक अधिक नियंत्रण प्राप्त करेंगे। मैं देशी गेटटेक्स्ट फ़ंक्शन की तुलना में इस दृष्टिकोण की गति या दक्षता के बारे में कुछ भी नहीं बता सकता। लेकिन, भाषा फ़ाइलों के आकार के आधार पर, मुझे नहीं लगता कि यह एक बड़ा अंतर होगा। यदि आप पृष्ठ या अनुभाग द्वारा चर समूहबद्ध करते हैं, तो आप हमेशा आवश्यक भागों को शामिल कर सकते हैं।
व्यापक प्रतिक्रिया के लिए धन्यवाद! हम खुद को कुछ अनुवाद करने जा रहे हैं, लेकिन बाकी एक अनुवाद एजेंसी द्वारा किया जाएगा। मुझे गेटटेक्स्ट में चाबियों का उपयोग करने में समस्या से अवगत था, लेकिन अगर मैंने उस दृष्टिकोण को चुना तो मैं संभवतः xgettext द्वारा बनाई गई पीओ-फाइलों से अनुवादकों द्वारा उपयोग की जाने वाली पीओ-फाइल बनाने के लिए अपना खुद का पार्सर बनाने की संभावना बनाउंगा, इसलिए यह गठबंधन होगा कुंजी के बजाय अनुवादित भाषा के साथ अंग्रेजी। मैं डीबी का उपयोग करने पर विचार कर रहा हूं, लेकिन डीबी को अनुरोध करने में अक्षम लगता है कि व्यावहारिक रूप से स्थिर सामग्री के रूप में क्या माना जा सकता है। – alexteg
मैं अनुवादकों के लिए अग्रभाग बनाने के लिए बैकएंड में डीबी के साथ एक समाधान के बारे में सोच रहा था, लेकिन फिर अनुरोधित भाषा के आधार पर भाषा फ़ाइलों में स्थिर पीओ-फाइल-> एमओ-फाइल या PHP-arrays उत्पन्न करना। जब प्रदर्शन की बात आती है तो यह अभी भी मेरे शोध से लगता है कि पीओ-फाइलें सबसे कुशल हैं, क्योंकि वे कैश किए गए हैं, मशीन अनुवादित (एमओ-फाइलें) और PHP में लिखे जाने वाले कार्यों की तुलना में निचले स्तर पर हैं। हालांकि, मैं अलग-अलग तकनीकों पर कुछ प्रदर्शन परीक्षण करूँगा और इसे जल्द ही यहां पोस्ट करूंगा। – alexteg