2010-03-11 12 views
60

Kohana templates के बारे में पढ़ना और कुछ ऐसा देखा जो मैंने पहले कभी नहीं देखा है:PHP: __ ('कुछ पाठ') क्या करता है?

$this->template->title = __('Welcome To Acme Widgets'); 

__('Text') का क्या अर्थ है? यह क्या है? यह क्या करता है?

+1

अजीब ... मैंने कोहाना डाउनलोड किया और मुझे स्रोत कोड में ऐसे फ़ंक्शन का कोई संदर्भ नहीं मिला। –

+0

@ अलवरो शायद आपने संस्करण 2.x डाउनलोड किया है। कोशिश करें और संस्करण 3 खोजें। – alex

उत्तर

38

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

अन्य उत्तरों में धारणाओं के विपरीत, यह gettext का उपयोग नहीं करता है।

एक बहुत ही बुनियादी उदाहरण (इस विशेष स्ट्रिंग पहले से ही अंग्रेजी, स्पेनिश और Kohana में फ्रेंच में अनुवाद किया जाता है) किया जाएगा:

// 1. In your bootstrap.php somewhere below the Kohana::init line 
I18n::lang('fr'); 

// 2. In a view 
echo __("Hello, world!"); // Bonjour, monde! 
+1

3.2 के रूप में, यह कक्षा [Kohana_I18n] में स्थानांतरित हो गया (https://github.com/ कोहाना/कोर/ब्लोब/3.2/मास्टर/क्लासेस/कोहाना/i18n.php) – timborden

+4

इसका उपयोग केकपीएचपी में भी किया जाता है। – givanse

5

इसका मतलब है कि किसी को एक समारोह का नाम दिया __ (यही कारण है कि अगले एक-दूसरे से दो अंडरस्कोर है।)

मेरा अनुमान है यह Kohana दस्तावेज में कहीं परिभाषित किया गया है बनाया।

+6

उसने पूछा कि इसका क्या अर्थ है। इसका मतलब है कि वह नहीं जानता कि यह कार्य कॉल है। YMMV। – jmucchiello

+1

@ एड्रियनो मैं असहमत हूं, कम से कम ऐसा लगता है कि यह एक समारोह से कुछ * अन्य * है। JQuery में $ की तरह, यह एक अजीब फ़ंक्शन नाम है जिसे किसी और चीज के रूप में भ्रमित किया जा सकता है। –

+2

+1, पूरी तरह से बेकार नहीं है और मैं टिम लाइटल से सहमत हूं। मैं केवल परेशान होगा अगर यह अन्य * बेहतर * उत्तरों पर स्वीकार किया गया था। – alex

6

यह string gettext (string $message) है: http://php.net/manual/en/function.gettext.php

एक अनुवादित स्ट्रिंग रिटर्न अगर एक अनुवाद तालिका, या प्रस्तुत संदेश में पाया जाता है, तो नहीं मिला।

__() इसके लिए सिर्फ एक उपनाम है। तो __("some text") करने के लिए gettext("some text")

संपादित बराबर है: असल में अगर यह दो अंडरस्कोर है की तुलना में यह() gettext नहीं है। गेटटेक्स्ट() के लिए उपनाम एक अंडरस्कोर है।

दूसरा संपादन: ऐसा लगता है कि __() gettext() के लिए एक और उपनाम हो सकता है। _() ​​से थोड़ा अलग अर्थ के साथ। यहां देखें: http://groups.google.com/group/cake-php/browse_thread/thread/9f501e31a4d4130d?pli=1

तीसरा और अंतिम संपादन: यहां एक लेख है जो इसे और विस्तार से समझाता है। ऐसा लगता है कि यह एक अंतर्निहित फ़ंक्शन नहीं है, बल्कि कुछ ऐसा है जो आमतौर पर कई ढांचे में जोड़ा जाता है। यह अनिवार्य रूप से गेटटेक्स्ट का उपनाम है - यह वही कार्य करता है। हालांकि, यह प्रत्यक्ष उपनाम नहीं है (मुझे नहीं लगता)। इसे कार्यान्वित किया गया है और ढांचे के लिए विशिष्ट है। यह स्थानीयकरण या स्ट्रिंग का अनुवाद देता है जो इसे दिया जाता है। http://www.eatmybusiness.com/food/2007/04/13/what-on-earth-does-a-double-underscore-then-parenthesis-mean-in-php-__/7/

+1

क्या यह सिर्फ * एक * '_' नहीं है, दो नहीं? –

+0

मुझे यह नहीं पता था। लेकिन सवाल "दो अंडरस्कोर" समारोह के बारे में पूछता है। – jmucchiello

+0

@ टीजे। क्रॉउडर हाँ, मेरी पहली खोज ने उस लेख को बदल दिया और मैंने यह नहीं देखा कि यह केवल एक और दो नहीं था। हालांकि, दूसरी खोज पर ऐसा लगता है कि यह मूल रूप से वही काम करता है। ढांचे के लिए बस लागू किया गया। –

13

डबल '__' CakePHP में स्थानीयकरण के लिए प्रयोग किया जाता है (और संभव अन्य चौखटे)

http://book.cakephp.org/view/163/Localization-in-CakePHP

+1

आपकी टिप्पणी का सवाल यह है कि, "स्थानीयकरण" का क्या मतलब है? : डी – PinoyStackOverflower

+1

@ एलसन सोलानो, नहीं, जो बहुत अच्छी तरह से जाना जाना चाहिए और यदि ऐसा नहीं है, तो यहां अन्य प्रश्न हैं जो इसका जवाब दे रहे हैं :) – Svish

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