अगर आपको Blockly कोर में कोई ऐसी सुविधा जोड़नी है जिसके लिए उपयोगकर्ता को दिखने वाली नई स्ट्रिंग की ज़रूरत है, तो आपको उन स्ट्रिंग को Blockly.Msg
में जोड़ना होगा. इससे Translatewiki उनका अनुवाद कर पाएगा. (अपने ऐप्लिकेशन के लिए स्थानीय भाषा के टोकन जोड़ने के बारे में जानकारी के लिए, स्थानीय भाषा के हिसाब से कॉन्टेंट तैयार करना लेख पढ़ें.)
- अपनी नई स्ट्रिंग को सही नाम और जानकारी के साथ
msg/messages.js
फ़ाइल में जोड़ें. msg/json/qqq.json
औरmsg/json/en.js
फ़ाइलों में अपने-आप अनुवाद जोड़ने के लिए,npm run messages
चलाएं. कुछ मामलों में, यह चरणmsg/json/constants.js
याmsg/json/synonyms.js
भी हो सकता है.- अपने-आप जनरेट हुई फ़ाइलों की जांच करके पक्का करें कि वे सही हैं. ध्यान दें कि स्क्रिप्ट,
qqq.json
की शुरुआत में मौजूद@metadata
सेक्शन को हटा सकती है. अगर ऐसा होता है, तो आपको उस बदलाव को ध्यान से पहले जैसा करना चाहिए, ताकि आपकी नई स्ट्रिंग जुड़ जाए, लेकिन@metadata
न हटे. - अपने फ़ीचर कोड में, नई स्ट्रिंग को
Blockly.Msg['MY_NEW_MESSAGE']
से रेफ़रंस करें. - अपनी सुविधा के कोड के साथ-साथ,
msg
फ़ाइलों में किए गए सभी बदलावों को कमिट करें.
उदाहरण के लिए, अगर आपने यह कोड msg/messages.js
में जोड़ा है, तो:
/** @type {string} */
/// This is a hint to translators about the context for the message.
Blockly.Msg.MY_NEW_MESSAGE = 'This is a string that users will see!';
इसके बाद, npm run messages
चलाएं. आपको msg/en.json
में ये बदलाव दिखेंगे:
// ...
"MY_NEW_MESSAGE": "This is a message that users will see!",
// ...
और msg/qqq.json
में:
// ...
"MY_NEW_MESSAGE": "This is a hint to translators about the context for the message.",
// ...
इसके बाद, कोड में इस स्ट्रिंग को Blockly.Msg['MY_NEW_MESSAGE']
के साथ रेफ़र किया जा सकता है.
अनुवाद के लिए जानकारी
msg/messages.js
में मौजूद ट्रिपल-स्लैश वाली टिप्पणी, TranslateWiki के उपयोगकर्ताओं को अनुवाद करते समय
अतिरिक्त जानकारी के तौर पर दिखती है. इस बारे में जानकारी दें कि उपयोगकर्ताओं को मैसेज कहां दिखेगा. अगर मैसेज में पैरामीटर शामिल हैं (जैसे, %1
),
पैरामीटर का मतलब बताएं.
यहां अनुवाद के लिए दिए गए एक अच्छे सुझाव का उदाहरण दिया गया है. इसमें पैरामीटर के बारे में बताया गया है और ज़्यादा जानकारी के लिए एक लिंक दिया गया है.
/** @type {string} */
/// block text - Repeatedly counts a variable (%1)
/// starting with a (usually lower) number in a range (%2),
/// ending with a (usually higher) number in a range (%3), and counting the
/// iterations by a number of steps (%4). As in
/// [https://github.com/google/blockly/wiki/Loops#count-with
/// https://github.com/google/blockly/wiki/Loops#count-with].
Blockly.Msg.CONTROLS_FOR_TITLE = 'count with %1 from %2 to %3 by %4';
कॉन्टेक्स्ट टाइप
कई संकेतों में, मैसेज के कॉन्टेक्स्ट के बारे में बताने के लिए प्रीफ़िक्स का इस्तेमाल किया जाता है. सामान्य प्रीफ़िक्स में ये शामिल हैं:
- टेक्स्ट को ब्लॉक करना
- बटन का टेक्स्ट
- संदर्भ मेन्यू
- ड्रॉपडाउन
- गणित
- टोस्ट नोटिफ़िकेशन
- टूलटिप
अगर आपका मैसेज इनमें से किसी कॉन्टेक्स्ट में दिखता है, तो सही प्रीफ़िक्स का इस्तेमाल करें.
समानार्थी शब्द
कभी-कभी मैसेज की कुंजी को बदलने की ज़रूरत होती है, लेकिन अनुवादों को नहीं. ऐसे में, पुराने मैसेज को नए मैसेज का समानार्थी शब्द के तौर पर सेट किया जा सकता है. जैसे:
/** @type {string} */
Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;
मैसेज (ज़रूरी नहीं)
कुछ मैसेज स्ट्रिंग का अनुवाद करने की ज़रूरत नहीं होती. हालांकि, कुछ मामलों में अनुवाद करना ज़रूरी होता है. जैसे, किसी व्यक्ति, जगह या चीज़ के नाम या प्रतीक. Blockly में, मदद वाले यूआरएल को अक्सर 'ज़रूरी नहीं' के तौर पर मार्क किया जाता है.
किसी भाषा को Blockly रिपॉज़िटरी में सिर्फ़ तब जोड़ा जाता है, जब वह कम से कम 25% पूरी हो. इसलिए, जिन मैसेज का अनुवाद करना ज़रूरी नहीं है उन्हें 'ज़रूरी नहीं' के तौर पर मार्क करने से, उन भाषाओं को थ्रेशोल्ड पूरा करने में मदद मिलेगी. इसके लिए, उन्हें अनुवाद करने की ज़रूरत नहीं होगी.
/** @type {string} */
/// {{Optional}} math - The symbol for the binary operation addition.
Blockly.Msg.MATH_ADDITION_SYMBOL = '+';
Notranslate आइटम
डिफ़ॉल्ट ब्लॉक कैटगरी के लिए इस्तेमाल किए गए रंगों को {{notranslate}}
के तौर पर मार्क किया गया है. इन रंगों को स्थानीय भाषा में उपलब्ध कराने का मकसद नहीं है. हालांकि, इन्हें स्थानीय भाषा में उपलब्ध कराने वाले सिस्टम में शामिल किया गया है, ताकि डेवलपर डिफ़ॉल्ट कैटगरी में मौजूद ब्लॉक के रंग आसानी से बदल सकें. अगर आपको ब्लॉक करने के लिए नई कैटगरी जोड़नी हैं, तो {{notranslate}}
डायरेक्टिव का इस्तेमाल करें. अगर आपको कोई ऐसा मैसेज जोड़ना है जिसे कभी अनुवादित नहीं किया जाना चाहिए, तो सोचें कि क्या स्ट्रिंग के लिए स्थानीय भाषा में अनुवाद करने वाला सिस्टम सही जगह है.
/** @type {string} */
/// {{Notranslate}} Hue value for all logic blocks.
Blockly.Msg.LOGIC_HUE = '210';