मैं एक ओपन सोर्स प्रोजेक्ट अंतर्राष्ट्रीयकरण के लिए विकल्पों को देख रहा है स्थापित करने के लिए बिना:उपयोग पीएचपी gettext स्थानों
gettext, हर कोई सिफारिश करने के लिए लगता है जो, जाहिरा तौर पर स्थानों की जरूरत होने के लिए "अपने सिस्टम पर स्थापित " इस्तेमाल किया जाएगा। PHP मैनुअल पर यह note देखें, जो मेरी स्थिति को बिल्कुल दर्शाता है। यह SO question भी एक ही समस्या के बारे में पूछता है। यह ओपन सोर्स प्रोजेक्ट के लिए उपयुक्त नहीं है क्योंकि मुझे विश्वास नहीं है कि अंतिम उपयोगकर्ताओं के पास उनके सिस्टम पर उचित लोकेशन स्थापित हैं। इसके अलावा, यह बहुत अजीब बात है कि आपको केवल तारों का उपयोग करने के लिए स्थानीय लोगों को स्थापित करना होगा (आईएमओ)।
कभी-कभी गेटटेक्स्ट के पक्ष में Zend_Translate की भी अनुशंसा की जाती है, लेकिन मैं ज़ेंड फ्रेमवर्क का उपयोग नहीं कर रहा हूं इसलिए मुझे नहीं लगता कि यह मेरे लिए एक विकल्प है। कुछ लोगों ने कहा है कि आप इसे ज़ेंड फ्रेमवर्क से विभाजित कर सकते हैं, लेकिन मुझे कोई सुराग नहीं होगा। अगर कोई मुझे बता सकता है कि मुझे कौन सी फाइलें चाहिए (मैंने ज़ेंड फ्रेमवर्क की टैरबॉल डाउनलोड की है) तो मैं ज़ेंड_Translate का उपयोग करने के लिए खुला होगा।
Arrays। यही वह है जो मैं अब कर रहा हूं, लेकिन यह आदर्श नहीं है क्योंकि:
- यह प्रत्येक अनुवाद को परिभाषित करने के लिए बहुत सारी मेमोरी का उपयोग करेगा, जब अधिकांश वर्तमान पृष्ठ द्वारा उपयोग नहीं किया जाएगा।
- मैं अपने आप को सरणी, जो पहले से ही है लंबे कोड की 1000 लाइनों हो जाते हैं और मैं मुश्किल से अभी तक कुछ भी जोड़ दिया है में कुंजी डुप्लिकेट खोजने के साथ समस्या हो रहा हूँ ...
- इसका मतलब है कि नान प्रोग्रामर्स वास्तव में अनुवाद नहीं कर सकता , जबकि POedit मानक है कि हर किसी का उपयोग करने की उम्मीद है।
मैं किसी भी तरह gettext या Zend_Translate बिना .mo
फ़ाइलों को पढ़ सकता है, या मैं gettext का उपयोग करना चाहिए? यदि हां, तो मैं उपरोक्त से जुड़े प्रश्न में सभी लोकेशंस कैसे काम कर सकता हूं?
संपादित करें: अब मैं Zend_Translate का उपयोग करने के लिए तैयार हूं। मुझे बस काम करने की ज़रूरत है कि मुझे कौन सी फाइलें चाहिए (यह बहुत अच्छा होगा अगर उन्हें एक फाइल में जोड़ा जा सके) - मैं अपनी परियोजना में संपूर्ण ज़ेंड फ्रेमवर्क नहीं चाहता हूं।
अद्यतन:
- Moodle arrays का उपयोग करता है: मैं यह देखने के लिए कितना बड़ा ओपन सोर्स प्रोजेक्ट i18n संभाल दिलचस्पी थी।
- ड्रूपल arrays, with a database fallback का उपयोग करने लगता है। वे एक सामान्य लोकेल प्राप्त करने और पूरे
setlocale
गड़बड़ को बाधित करने के लिएsetlocale('C')
चलाते हैं। - वर्डप्रेस i18n के लिए heaps of their own functions का उपयोग करता है, हालांकि नीचे गेटटेक्स्ट का उपयोग करता है।
तो उन तीनों यादृच्छिक परियोजनाओं में से कोई भी Zend_Translate का उपयोग नहीं करता है, न ही gettext सीधे, जहां तक मैं देख सकता हूं।
शायद C
लोकेल का उपयोग करना एक अच्छा विचार है, टेक्स्ट डोमेन नाम में भाषा का नाम संग्रहीत करें, और वहां से जाएं।
तो यहाँ
जहाँ तक मैं उस के साथ लिया है:
$lang = 'de'; //debug
setlocale(LC_ALL, 'C');
bindtextdomain('default', PATH . "/locale/$lang");
bind_textdomain_codeset('default', 'UTF-8');
textdomain('default');
var_dump(file_exists(PATH . "/locale/$lang/C/LC_MESSAGES/default.mo")); //bool(true)
लेकिन मैं अभी भी सिर्फ अंग्रेजी स्ट्रिंग मिलता है, भले ही मैं poedit का उपयोग किया है, msgfmt आदि उचित बनाने के लिए फ़ाइलें। मैंने अपाचे को पुनरारंभ करने का भी प्रयास किया है।
स्थानीय स्थापित करें? आपका क्या अर्थ है? आप केवल विशिष्ट '.mo' फ़ाइलों को शामिल करते हैं और उपयुक्त लोकेल सेट करते हैं। यह वास्तव में उतना डरावना नहीं है जितना आप इसे बनाते हैं। – vanneto
यह मामला अच्छा होगा अगर यह मामला था, लेकिन मुझे नहीं लगता कि यह है ... प्रश्न के शीर्ष पर लिंक देखें। [उपयोगकर्ता नोट्स] (http://www.php.net/manual/en/book.gettext.php#91187) PHP मैनुअल पर यह भी कहता है, और आपको यह देखने के लिए 'लोकेल-ए' चलाने की आवश्यकता है कि कौन से स्थान अतिरिक्त भाषा पैक स्थापित करने के लिए उपयोग करने के लिए उपलब्ध हैं (और 'सुडो एपीटी-स्थापित भाषा-पैक-लैंगकोड-बेस' स्थापित करें)। मेरे अपने परीक्षण भी इसे प्रतिबिंबित करते हैं। यह ओपन सोर्स प्रोजेक्ट के लिए उपयुक्त नहीं है क्योंकि मैं उपयोगकर्ताओं को ऐसा करने की उम्मीद नहीं कर सकता। – stackunderflow
सरल कुंजी => मूल्य सरणी पूरी अनुवाद प्रणाली के लिए शायद ही पर्याप्त हैं। क्या वे बहुवचन का समर्थन करते हैं? प्रसंग? श्रेणियाँ? डोमेन? टिप्पणियाँ? ये सभी सुविधाएं हैं जिन्हें आप * उपयोग कर रहे हैं, शायद आप इसे अभी तक नहीं जानते हैं। यदि आप गेटटेक्स्ट के विपरीत हैं, तो Zend_Translate को एक शॉट दें। इसके खिलाफ आपके कारण वास्तव में गैर कारण हैं। – deceze