बस आज इसी मुद्दे में भाग गया और इस पर थोड़ा और शोध किया। ऊपर क्रिस की एक अच्छी टिप्पणी है, लेकिन यह अंततः गलत है। काम करने के लिए आपको Drupal.behaviors का उपयोग करने की आवश्यकता नहीं है।
जैसा कि जॉनएमसीएल ने अपनी अंतिम टिप्पणी में खुद ही नोट किया है, locale.inc में _locale_parse_js_file पर फ़ंक्शन Drupal.t ("somestring") के पार्सिंग के लिए जिम्मेदार है, जो पंक्ति 993 से शुरू होता है (Drupal 7.22 में)
preg_match_all('~
[^\w]Drupal\s*\.\s*t\s* # match "Drupal.t" with whitespace
\(\s* # match "(" argument list start
(' . LOCALE_JS_STRING . ')\s* # capture string argument
(?:,\s*' . LOCALE_JS_OBJECT . '\s* # optionally capture str args
(?:,\s*' . LOCALE_JS_OBJECT_CONTEXT . '\s*) # optionally capture context
?)? # close optional args
[,\)] # match ")" or "," to finish
~sx', $file, $t_matches);
यह सिर्फ एक "गूंगा" पार्सिंग फ़ंक्शन है जो शब्दार्थों की परवाह नहीं करता है और इसे प्राप्त होने वाली किसी भी फ़ाइल में Drupal.t ("कुछ") के सभी उदाहरणों को ढूंढता है।
एक सामान्य गोचर क्या हो सकता है कि आपको Drupal.t ("ट्रांसल्मे") फॉर्म में अपने स्रोत कोड में पूरे स्ट्रिंग को रखने की आवश्यकता है, क्योंकि (जाहिर है) कोई जावास्क्रिप्ट तब निष्पादित नहीं होती है जब फ़ाइल को php में file_get -contents के माध्यम से खोला जाता है। इसका मतलब है कि आप Drupal.t (somevariable) कभी नहीं कर सकते हैं और आशा है कि Drupal उन सभी स्ट्रिंग-युक्त जावास्क्रिप्ट चर को पकड़ लेगा जिन्हें आप Drupal.t पर फेंकते हैं।
यदि आप चार्ट के लिए "महिलाओं" का अनुवाद करना चाहते हैं और स्ट्रिंग को एक संदर्भ देना चाहते हैं, तो वाक्यविन्यास होगा:
Drupal.t("women", {}, {context: "charts"}
इसके अलावा, यदि आपने ड्रॉ स्थापित किया है, तो अपनी js फ़ाइल को सत्यापित करें कि कमांड के साथ पार्स किया गया है;
drush vget javascript_parsed
फिर आप अपने कैश से साफ कर सकते हैं
drush cc all
... और पहले से ही पार्स फ़ाइलों की सूची को सत्यापित करने के लिए ऊपर दिए गए vget कमांड को खाली है। इस तरह से आपकी फ़ाइल अगले भाग में पुन: प्राप्त हो जाएगी (यह भी सत्यापित करें)।