2011-03-25 6 views
6

मेरा आवेदन बहुभाषी बनाने के लिए मुझे आश्चर्य है कि क्या जीएनयू के गेटटेक्स्ट के बड़े फायदे हैं या यदि आपकी खुद की 'लाइब्रेरी' बनाने के बड़े नुकसान हैं।PHP के मूल गेटटेक्स्ट का उपयोग स्वयं निर्माण के विरुद्ध करने या उपयोग करने के कारण क्या हैं?

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

+0

आप उन्हें कैशिंग कहते हैं, जहां .. फ्लैट फ़ाइल शायद। – RobertPitt

+0

हाहा, टच। लेकिन मेरा मतलब फ्लैट फाइलों में मेरा कैटलॉग था। –

उत्तर

5

गेटटेक्स्ट एक्सटेंशन में कुछ क्विर्क हैं।

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

आपको लगभग हस्तशिल्प समाधान के साथ लगभग हमेशा कम परेशानी होगी। लेकिन कहा जा रहा है कि गेटटेक्स्ट एपीआई एकजुटता में नामुमकिन है। _("orig text") पाठ का अनुवाद करने के लिए इष्टतम इंटरफ़ेस कम या कम है।

यदि आप स्वयं को कुछ कोड करना चाहते हैं, तो मैं आपको उस पर ध्यान केंद्रित करने की सलाह देता हूं।

  • एक साधारण फ़ंक्शन नाम का उपयोग करें। _() के बदले कुछ php ऐप्स डबल अंडरस्कोर __() का उपयोग करते हैं। किसी पुस्तकालय को अपनाना न करें जो वास्तव में अनुवादित तारों का उपयोग करने के लिए बोझिल बनाता है। (उदा। यदि ज़ेंड फ्रेमवर्क का उपयोग करते हैं, तो हमेशा एक रैपर फ़ंक्शन लिखें।)
  • इनपुट के रूप में कच्चे अंग्रेज़ी टेक्स्ट को स्वीकार करें। निमोनिक अनुवाद कुंजी से बचें (उदा। BTN_SUBMT)
  • किसी भी परिस्थिति में अनुवाद कैटलॉग के लिए डेटाबेस का उपयोग न करें। वे ग्रंथ रनटाइम डेटा हैं, एप्लिकेशन डेटा नहीं। (एक बुरा उदाहरण के लिए osCommerce देखें।)

आप अक्सर पीएचपी सरणी लिपियों lang/nl.php लेकिन $text["orig english"] = "dutch here"; कुछ भी नहीं युक्त है, जो जो कुछ भी एक्सेस विधि का उपयोग से उपयोग करने के लिए आसान कर रहे हैं के साथ भाग प्राप्त कर सकते हैं।

भी उस प्रणाली में सबकुछ दबाकर बचें। कभी-कभी लंबे ग्रंथों के लिए दूसरी तंत्र को अपनाने के लिए अपरिहार्य है। उदाहरण के लिए मैंने बड़े ब्लॉब्स के लिए template/mail.EN.txt का उपयोग किया।

+0

मैं सहमत हूं। दूसरी तरफ, गेटटेक्स्ट लगभग उन उपकरणों के बारे में मानक है जो इससे लाभान्वित होते हैं: पीओ संपादकों, xgettext और msgmer वास्तव में, वास्तव में आसान उपकरण हैं जब अनुवादों का प्रबंधन करने की बात आती है। – Artefact2

+0

आपके विस्तृत उत्तर के लिए धन्यवाद, हालांकि एक सवाल। "बीटीएन_SUBMIT" जैसे इंडेक्स क्यों गलत हैं? –

+0

@ गेर्बेन जैकब्स: वे प्रति गलत नहीं हैं। लेकिन वापस देखकर, मेरी इच्छा है कि मैंने इस योजना से परहेज किया था। यह परिभाषित करने के लिए एक काफी सामान्य PHP दृष्टिकोण है ("TEXT_BTN_NAME", "बटन नाम") '। लेकिन यह बाद में अन्य प्रणालियों में संक्रमण के लिए बहुत कठिन बनाता है, और सबसे महत्वपूर्ण स्रोत कोड को थोड़ा कम पठनीय बनाता है। संक्षेपों का प्रयोग अक्सर झूठी धारणा पर आधारित होता है कि आप हर समय टेक्स्ट सामग्री बदलना चाहते हैं। अभ्यास में यह मामला नहीं है। अपना ऐप लिखें, और अंत में इसका अनुवाद करें। यह सब करना एक बार में और धीरे-धीरे नहीं करना आसान है। लेकिन अन्यथा ABBRV के साथ कोई वास्तविक तकनीकी समस्या नहीं है। – mario

1

गेटटेक्स्ट not thread-safe है।

अपना खुद का कार्यान्वयन करने का निर्णय लेने से पहले मेरा सुझाव है कि आप Zend_Translate पर एक नज़र डालें। इसके पास गेटटेक्स्ट एडेप्टर के साथ-साथ टीएमएक्स, सीएसवी, आईएनआई, ऐरे और अधिक प्रारूपों के लिए मूल समर्थन है। यदि आपका पसंदीदा प्रारूप समर्थित नहीं है, जैसे डाटाबेस स्टोरेज, तो अपने एडाप्टर को लिखना भी आसान होना चाहिए।

+0

एफवाईआई: 'सेटलोकेल' और इसलिए 'गेटटेक्स्ट' थ्रेड-सुरक्षित नहीं है क्योंकि पर्यावरण चर थ्रेड-सुरक्षित नहीं हैं। यद्यपि एक नया प्रॉक्सी-पर्यावरण एपीआई जोड़ने के लिए एक अच्छा विचार की तरह लगता है। –

+2

गेटटेक्स्ट थ्रेड सुरक्षित नहीं है लेकिन इससे कई मामलों में कोई फर्क नहीं पड़ता: http://stackoverflow.com/questions/1646249/php-gettext-problems-like-non-thread-safe/6726570#6726570। ज़ेंड-अनुवाद अच्छा है, लेकिन PHP के अंतर्निर्मित मॉड्यूल की तुलना में वसा और निश्चित रूप से धीमा तरीका है। – Stann

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