सबसे पहले, जाने gettext
का एक अच्छा तरीका है, इसलिए इसे खारिज न करें यदि यह पहली बार में आसान नहीं है; हालांकि अन्य विकल्प भी हैं जो जानना उपयोगी है। यह समझाने से पहले कि आइए पहले अपने सुझावों पर एक नज़र डालें:
array
ऐसा करने के अपने रास्ते में, आप एक बहुत सीधा समाधान है। अच्छी बात यह है कि आप अपने अनुवादों को डेटा स्टोरेज में स्टोर कर सकते हैं, फिर इसे अपने PHP स्क्रिप्ट में एरे के रूप में लोड कर सकते हैं, और यही है। हालाँकि यदि आप अपने सरणी को PHP फ़ाइल में वैधानिक रूप से संग्रहीत करना चाहते हैं, तो इसे संपादित करने की आवश्यकता है) PHP प्रोग्रामर या एक exprienced उपयोगकर्ता, जो PHP वाक्यविन्यास से परिचित है, बस फ़ाइल को संपादित करने के लिए) यहां तक कि चार या पांच अलग-अलग भाषा फ़ाइलों के बीच सिंक्रनाइज़ करना काफी कष्टप्रद हो सकता है और त्रुटियों की संभावना हो सकती है।
आपको यहां पर विचार करने की आवश्यकता है: बाद में भाषा फ़ाइल में नए तत्व कैसे जोड़े जा सकते हैं? क्या मैं इसे एक अनुवादक के पास छोड़ सकता हूं या PHP प्रोग्रामर होना चाहिए?
variable
यह करने का आपका मार्ग व्यावहारिक नहीं है। क्यों? मुझे लगता है कि आपके पास कम से कम आपके आवेदन में कुछ फ़ंक्शन होंगे? तब आपको इन सभी चर को पास करने की आवश्यकता होती है जब आप फ़ंक्शन को कॉल करते हैं, या आपको global
उनकी आवश्यकता होती है। अगर आपको लगता है कि आपके पास इस तरह के दस से अधिक चर होंगे, तो मैं आपको ऐसा करने के लिए दृढ़ता से हतोत्साहित करता हूं। नाम-संघर्ष भी हो सकता है - आप संभावित रूप से एक ही नाम के साथ किसी अन्य चर के मूल्य को ओवरराइड कर सकते हैं, हालांकि यह एक अंडरस्कोर के रूप में भी सरल उपसर्ग जोड़कर हल किया जा सकता है, इसलिए आपके पास $_welcome
उदाहरण के लिए होगा। वैसे भी, अगर मैं तुम होते तो मैं इसके बारे में भी नहीं सोचता; यह मत करो।
इसे करने का एक अच्छा तरीका है कि कॉन्स्टेंट को एक उपसर्ग के साथ परिभाषित करना । इसलिए उदाहरण के लिए आपके en.lang.php
पास कुछ ऐसा होगा define( 'LABEL_WELCOME', 'Welcome' );
और आपके no.lang.php
पास आपके पास होगा define ( 'LABEL_WELCOME', 'Velkommen' );
। चर के बजाय निरंतर उपयोग करने के बारे में अच्छी बात यह है कि वे हमेशा आपकी स्क्रिप्ट में उपलब्ध हैं। इसलिए आपको उन्हें इंजेक्ट करने या वैश्विक करने की आवश्यकता नहीं है। दोनों सरणियों और चर की तुलना में, वे तेज़ हैं जिस तरह से PHP उन्हें संभालती है - वे मेमोरी में कम जगह लेते हैं। दोष यह है कि आप उन्हें अनुवादक के पास नहीं भेज सकते हैं, इसलिए फिर से आपको PHP डेवलपर की आवश्यकता है। इसके अलावा फ़ाइलों के बीच सिंक करना फिर से थोड़ा दर्द हो सकता है।
दूसरे विकल्प में अनुवाद को पुनः प्राप्त करने के लिए एक फंक्शन या क्लास / मेथड है। यह कम कुशल होगा - हालाँकि मुझे नहीं लगता कि आपको माइक्रो-ऑप्टिमाइज़ेशन के उस प्रकार की आवश्यकता है, लेकिन अतिरिक्त लाभ यह है कि आप अनुवाद को प्राप्त करते समय एक कस्टम तर्क को लागू कर सकते हैं। उदाहरण के लिए, किसी दिन आपके प्रिय परियोजना प्रबंधक आपसे यह पूछने के लिए आते हैं कि क्या आप उन सभी पाठों को बड़े स्तर पर कवर कर सकते हैं। आप इसे करने से मना नहीं कर सकते हैं, इसलिए जब आप अपने सभी अनुवादों के लिए एक पैटर्न लागू करना / बदलना चाहते हैं, तो बीच में एक समारोह होने से आपको बहुत मदद मिल सकती है।
इसे लपेटने के लिए:
कैसे अनुवादकों के लिए इसका इस्तेमाल और उनके लिए एक काम KISS समाधान के साथ आ सकते हैं के बारे में सोचो।
इस बारे में सोचें कि आप विभिन्न भाषाओं के बीच कैसे सिंक कर सकते हैं।
इस बारे में सोचें कि क्या उसी अनुवाद की आवश्यकता हो सकती है, मोबाइल ऐप के लिए कहें। एक क्रॉस प्लेटफॉर्म समाधान आपके समय को बचा सकता है। JSON और साधारण डेटाबेस को खारिज न करें।
अनुवादों को पुनर्प्राप्त करते समय आप तर्क को कैसे लागू / बदल सकते हैं, इसके बारे में सोचें।
प्रदर्शन के बारे में भूल गए। 99.9% बार आपको यह नहीं मिलेगा कि लगातार कॉन्स्टेंट बनाम वेरिएबल्स बनाम फंक्शन कॉल्स जैसे माइक्रो-ऑप्टिमाइज़ेशन करें । मैं आपका समय एक डेवलपर / कर्मचारी के रूप में मानता हूं, जो प्रोसेसर समय के बजाय अधिक महंगा है।
अपडेट # 1
मेरी अच्छाई, मैं एक साल पुराने प्रश्न का उत्तर देता हूं। यहाँ कोई कुछ क्यों नहीं कह रहा है? हमें इन मामलों के लिए अलर्ट चाहिए।
अद्यतन # 2
दाईं ओर यह कहता है कि यह एक वर्ष पुराना प्रश्न है; हालाँकि यह दो साल पहले पूछा गया था! यहाँ सब कुछ भ्रामक है!