Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

बहुभाषी PHP वेबसाइट के लिए सबसे कुशल तरीका

कुछ विचार:

<मजबूत>1. अनुवाद
अनुवाद कौन करेगा? वे लोग जो साइट से भी जुड़े हुए हैं? एक अनुवाद एजेंसी? गेटटेक्स्ट का उपयोग करते समय आप 'पॉट' (.po) फाइलों के साथ काम कर रहे होंगे। इन फ़ाइलों में संदेश आईडी और संदेश स्ट्रिंग (अनुवाद) शामिल हैं। उदाहरण:

msgid "A string to be translated would go here"  
msgstr ""

अब, यह किसी के लिए भी ठीक और समझ में आता है, जिसे इसका अनुवाद करने की आवश्यकता है। लेकिन क्या होता है जब आप पूर्ण वाक्यों के बजाय, माइक द्वारा सुझाए गए कीवर्ड का उपयोग करते हैं? अगर किसी को "address_home" नामक msgstr का अनुवाद करने की आवश्यकता है, तो उसे कोई सुराग नहीं है कि यह हेडर "होम एड्रेस" होना चाहिए या यह एक पूर्ण वाक्य है। इस मामले में, गेटटेक्स्ट फ़ंक्शन पर कॉल करने से ठीक पहले फ़ाइल में टिप्पणियां जोड़ना सुनिश्चित करें, जैसे:

/// This is a comment that will be included in the pot file for the translators
gettext("ready_for_lost_episode");

xgettext --add-comments=/// का उपयोग करना .po फ़ाइलें बनाते समय इन टिप्पणियों को जोड़ देगा। हालांकि, मुझे नहीं लगता कि गेटटेक्स्ट को इस तरह इस्तेमाल करने की सलाह दी जाती है। साथ ही, यदि आपको प्रत्येक . के साथ टिप्पणियां जोड़ने की आवश्यकता है वह पाठ जिसे आप प्रदर्शित करना चाहते हैं, आप क) शायद किसी बिंदु पर एक त्रुटि करेंगे, बी) आप पूरी स्क्रिप्ट वैसे भी ग्रंथों से भर जाएंगे, केवल टिप्पणी के रूप में, सी) टिप्पणियों को सीधे गेटटेक्स्ट के ऊपर रखा जाना चाहिए फ़ंक्शन, जो आपके कोड में फ़ंक्शन की स्थिति के आधार पर हमेशा अनुकूल नहीं होता है।

<मजबूत>2. रखरखाव
एक बार जब आपकी साइट (और भी आगे) बढ़ जाती है और आपकी भाषा फाइलें इसके साथ जुड़ जाती हैं, तो इस तरह से सभी अलग-अलग अनुवादों को बनाए रखना काफी कठिन हो सकता है। हर बार जब आप कोई टेक्स्ट जोड़ते हैं, तो आपको नई फाइलें बनाने, अनुवादकों को फाइल भेजने, फाइलों को वापस प्राप्त करने की जरूरत होती है, सुनिश्चित करें कि संरचना अभी भी बरकरार है (उत्सुक अनुवादक हमेशा सिंटैक्स का अनुवाद करने में प्रसन्न होते हैं, पूरी फाइल बनाते हैं अनुपयोगी :)), और नए अनुवादों को आयात करने के साथ समाप्त करें। यह संभव है, निश्चित है, लेकिन बड़ी साइटों और कई अलग-अलग भाषाओं के साथ इस ओर संभावित समस्याओं से अवगत रहें।

दूसरा विकल्प:अपना दूसरा और तीसरा विकल्प मिलाएं:

व्यक्तिगत रूप से, मुझे एक (सरल) सीएमएस का उपयोग करके अनुवाद को प्रबंधित करना अधिक उपयोगी लगता है, चर और अनुवादों को डेटाबेस में रखना और प्रासंगिक ग्रंथों को भाषा फ़ाइलों में स्वयं निर्यात करना:

  1. डेटाबेस में चर जोड़ें (जैसे:आईडी, पृष्ठ, चर);
  2. इन चरों में अनुवाद जोड़ें (उदा.:id, varId, भाषा, अनुवाद);
  3. प्रासंगिक चर और अनुवाद चुनें, उन्हें एक फ़ाइल में लिखें;
  4. अपनी साइट में प्रासंगिक भाषा फ़ाइल शामिल करें;
  5. वेरिएबल टेक्स्ट प्रदर्शित करने के लिए अपना स्वयं का फ़ंक्शन बनाएं:

text('var'); या शायद कुछ __('faq','register','lost_password_text');

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

लाभ:

  1. रखरखाव। बड़ी परियोजनाओं के लिए ग्रंथों को बनाए रखना बहुत आसान हो सकता है। आप अपनी साइट के भीतर पृष्ठ, अनुभागों या अन्य भागों के आधार पर चरों को समूहीकृत कर सकते हैं, बस अपने डेटाबेस में एक स्तंभ जोड़कर जो परिभाषित करता है कि यह चर साइट के किस भाग से संबंधित है। इस तरह आप उदा। अक्सर पूछे जाने वाले प्रश्न पृष्ठ।

  2. अनुवाद करना। आप एक ही पृष्ठ पर सभी विभिन्न भाषाओं के सभी अनुवादों के साथ चर प्रदर्शित कर सकते हैं। यह उन लोगों के लिए उपयोगी हो सकता है जो एक ही समय में कई भाषाओं में ग्रंथों का अनुवाद कर सकते हैं। और संदर्भ को समझने के लिए अन्य अनुवादों को देखना उपयोगी हो सकता है ताकि अनुवाद यथासंभव अच्छा हो। आप यह पता लगाने के लिए डेटाबेस से पूछताछ भी कर सकते हैं कि क्या अनुवाद किया गया है और क्या नहीं। संभावित पुराने अनुवादों पर नज़र रखने के लिए शायद टाइमस्टैम्प जोड़ें।

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

कुल मिलाकर मुझे लगता है कि आप पाएंगे कि इस तरह से अनुवादों पर आपका बहुत अधिक नियंत्रण होगा, विशेष रूप से लंबे समय में। मैं आपको मूल गेटटेक्स्ट फ़ंक्शन की तुलना में इस दृष्टिकोण की गति या दक्षता के बारे में कुछ नहीं बता सकता। लेकिन, भाषा फाइलों के आकार के आधार पर, मुझे नहीं लगता कि यह एक बड़ा अंतर होगा। यदि आप वेरिएबल को पेज या सेक्शन के आधार पर समूहित करते हैं, तो आप हमेशा केवल आवश्यक भागों को ही शामिल कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Google क्लाउड प्लेटफ़ॉर्म (GCP) पर MySQL फ़ेलओवर और फ़ेलबैक प्राप्त करना

  2. एक ही टेबल पर एक से अधिक बार शामिल होना

  3. मैसकल ड्राइवर की समस्या

  4. MySQL तैयार वक्तव्य - कैसे लूप करें

  5. SPARQL क्वेरी एक नोड के सभी जनक प्राप्त करने के लिए