क्या मुझे एक हुक_मेनू विवरण में t () का उपयोग करना चाहिए?


11

मैंने हमेशा t () हुक_मेनस शीर्षक और इस तरह के विवरण के लिए उपयोग किया है :

$items['some-path'] = array(
    'title' => t('My Page Title'),
    'description' => t('This is a description about what my page is for'),
    'page callback' => 'profile_user_page',
);

यह मेरे लिए समझ में आता है इसलिए उपयोगकर्ता आवश्यकता होने पर शीर्षक और विवरण का विभिन्न भाषाओं में अनुवाद कर सकते हैं।

हालाँकि डीओ पर एक मॉड्यूल समीक्षा पर यह टिप्पणी कहती है:

नहीं, यह गलत है, ऐसा मत करो - हुक_मेनू () में विवरण कभी भी टी () का उपयोग नहीं करना चाहिए।

इसके लिए तर्क क्या है और क्या यह वास्तव में सबसे अच्छा अभ्यास है?

अगर यह सच है तो क्या हमें शीर्षक के लिए भी टी () का उपयोग नहीं करना चाहिए?


स्पष्ट रूप से इसका उपयोग नहीं किया जाना चाहिए, लेकिन यदि आप "विवरण '=> t (" के लिए हुक_मेनू सहायता पृष्ठ खोजते हैं, तो 6 घटनाएँ स्पष्ट रूप से होती हैं, यह एक सामान्य गलती है!
फेलिक्स ईव

1
सामान्य या नहीं, यह कोई बहाना नहीं है;) और ये घटनाएँ टिप्पणियों में हैं - लोगों को वहाँ गलती करने के लिए स्वतंत्र हैं।
मोलॉट

1
@ Mołot वे वहाँ गलत होने के लिए स्वतंत्र हैं, हालाँकि बहुत सारे नए उपयोगकर्ता उस कोड को कॉपी और पेस्ट करेंगे ताकि यह एक सामान्य गलती बनी रहे। मुझे लगता है कि DO पर व्यवस्थापक विशेषाधिकारों वाले किसी व्यक्ति को t () हटाने के लिए उन टिप्पणियों को संपादित करना चाहिए।
फेलिक्स ईव

आप चाहें तो एक मुद्दा दर्ज कर सकते हैं ।
मोलॉट

1
अच्छा सुझाव। हो गया
फेलिक्स ईव

जवाबों:


17

प्रसिद्ध स्थानों पर स्ट्रिंग्स देखें : अंतर्निहित मेनू, अनुमतियां, लॉग संदेश और .info फ़ाइलें समुदाय प्रलेखन:

Drupal 6 और 7 मेनू सिस्टम मेनू आइटम शीर्षक और अंग्रेजी में विवरण संग्रहीत करता है। इससे सिस्टम डेटा को कैश कर सकता है, लेकिन डिमांड पर विभिन्न भाषाओं का उपयोग करने वाले उपयोगकर्ताओं को प्रदर्शित करता है। इस काम के लिए, आपको अपने हुक_मेनू () कार्यान्वयन में मेनू आइटम के शीर्षक या विवरण पर टी () का उपयोग नहीं करना चाहिए । इसके अतिरिक्त, आपको इन दो कुंजियों के लिए एक शाब्दिक स्ट्रिंग (एक गतिशील स्ट्रिंग के बजाय) का उपयोग करने का प्रयास करना चाहिए, इसलिए अनुवाद टेम्पलेट चिमटा आपके द्वारा उपयोग किए गए स्ट्रिंग को पा सकता है।

जोर मेरा।


मैं जोड़ूंगा: केवल अगर title callbackसेट नहीं है क्योंकि डिफ़ॉल्ट रूप title callbackसे t()कार्य किया जाता है
दूधोवस्की

1
@milkovsky यदि शीर्षक कॉलबैक सेट किया गया है, तो इसके बारे में ध्यान रखना चाहिए t()और आपको अभी भी इसका उपयोग नहीं करना चाहिए hook menu()- आप जानते हैं, कैशिंग।
मोलॉट

11

यदि आप हुक_मेनू तर्कों का प्रलेखन देखते हैं ..

  • "शीर्षक": आवश्यक है। मेनू आइटम का अनियंत्रित शीर्षक।
  • "शीर्षक कॉलबैक": शीर्षक उत्पन्न करने का कार्य; डिफॉल्ट टू टी ()। यदि आपको आउटपुट के लिए केवल कच्ची स्ट्रिंग की आवश्यकता है, तो इसे FALSE पर सेट करें।
  • "शीर्षक तर्क": ऊपर वर्णित के रूप में पथ घटक प्रतिस्थापन के साथ टी () या अपने कस्टम कॉलबैक को भेजने के लिए तर्क।
  • "विवरण": मेनू आइटम का अनियंत्रित वर्णन।

डिफ़ॉल्ट शीर्षक से कॉलबैक t फ़ंक्शन है .. इसलिए इसका हमेशा अनुवाद किया जाता है ..


7

चूंकि द्रुपाल 6 की अब कोई जरूरत नहीं है।

कृपया https://drupal.org/node/140311 पढ़ें । उद्धरण:

6.x के रूप में, Drupal आंतरिक रूप से उपयोगकर्ता की स्थानीय भाषा में मेनू शीर्षक और विवरण के अनुवाद को संभालता है। विवरण, यदि प्रदान किया गया हो, हमेशा t () के साथ अनुवादित किया जाता है; प्लेसहोल्डर प्रतिस्थापन के लिए अतिरिक्त डेटा में पास करने का कोई तरीका नहीं है (डी 5 और पूर्व में, प्रतिस्थापन में गुजरना एक हतोत्साहित अभ्यास था - इस परिवर्तन के साथ, मेनू सिस्टम उस नियम को सीधे लागू करता है)। टाइटल को डिफ़ॉल्ट रूप से t () के साथ अनुवादित किया जाता है, लेकिन t () - शैली स्ट्रिंग प्रतिस्थापन नए 'शीर्षक तर्कों' के उपयोग के माध्यम से संभव है। आप अपने स्वयं के कस्टम कॉलबैक के साथ टी () को बदलने का विकल्प भी चुन सकते हैं।


6

आपको कार्यान्वयन t()में उपयोग नहीं करना चाहिए hook_menu()क्योंकि t()स्वचालित रूप से बाद में कहा जाता है और ऐसा करने से दोहरा अनुवाद होगा।


* ध्यान दें कि यदि आप title callbackहुक_मेनू में जोड़ते हैं, और यदि यह नहीं है t, तो शीर्षक कॉलबैक स्ट्रिंग का अनुवाद करने के लिए जिम्मेदार है।
आयशा

0

यह हुक_मेनू () के लिए प्रलेखन पृष्ठ पर स्पष्ट रूप से कहता है

https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_menu/7.x

"शीर्षक": आवश्यक है। मेनू आइटम का अनियंत्रित शीर्षक।

"विवरण": मेनू आइटम का अनियंत्रित वर्णन।

तो उपरोक्त दोनों के लिए t () फ़ंक्शन का उपयोग करने की कोई आवश्यकता नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.