ब्लॉक को स्थानीय भाषा में लिखें

ब्लॉक की ऐसी परिभाषाओं को ब्लॉक करें जिन्हें उपयोगकर्ता की भाषा में स्थानीय भाषा में बदला जा सकता है. स्ट्रिंग टेबल का इस्तेमाल करके, JSON ब्लॉक की परिभाषा में मैसेज स्ट्रिंग इनपुट, फ़ील्ड, और लेबल को भाषा के शब्द के हिसाब से बदल सके, शब्द क्रम, और दिशा.

अंग्रेज़ी में list_repeat Block स्पैनिश में list_repeat block कोरियाई में list_repeat ब्लॉक दाएं से बाएं अरबी में list_repeat ब्लॉक

इन सभी मामलों में, JSON ब्लॉक की एक जैसी परिभाषा दी गई है:

// Block for creating a list with one element repeated.
{
  "type": "lists_repeat",
  "message0": "%{BKY_LISTS_REPEAT_TITLE}",
  "args0": [
    {
      "type": "input_value",
      "name": "ITEM"
    },
    {
      "type": "input_value",
      "name": "NUM",
      "check": "Number"
    }
  ],
  "output": "Array",
  "colour": "%{BKY_LISTS_HUE}",
  "tooltip": "%{BKY_LISTS_REPEAT_TOOLTIP}",
  "helpUrl": "%{BKY_LISTS_REPEAT_HELPURL}"
}

स्ट्रिंग टेबल

lists_repeat के उदाहरण में कई "%{BKY_...}" स्ट्रिंग शामिल हैं. हर ये Blockly.Msg स्ट्रिंग टेबल में किसी स्ट्रिंग का रेफ़रंस है. जब ब्लॉक इंस्टैंशिएट किया जाता है, और Blockly, स्ट्रिंग को वैल्यू से बदलने की कोशिश करता है.

उदाहरण के लिए, %{BKY_LISTS_REPEAT_TITLE} को Blockly.Msg['LISTS_REPEAT_TITLE'], अगर यह मौजूद है. अगर वैल्यू मौजूद नहीं है, तो %{BKY_...} नोटेशन सही जगह पर रहता है. इसके बाद, ब्लॉकली से एक चेतावनी मिलती है किया जा सकता है.

जैसा कि उदाहरण में दिखाया गया है, नोटेशन कई जगहों पर काम करता है. मैसेज और टूलटिप के ज़रिए, उपयोगकर्ता को दिखने वाली स्ट्रिंग बदली जा सकती हैं. इसी तरह, ड्रॉपडाउन फ़ील्ड, आइटम टेक्स्ट के लिए नोटेशन का इस्तेमाल भी कर सकते हैं. सहायता यूआरएल का स्थानीय भाषा में अनुवाद किया जा सकता है पक्का करें कि उपयोगकर्ता को उसी तरह स्थानीय भाषा में लिखे गए पेज पर भेजा जाए. और आख़िर में, ब्लॉक के पैलेट को एक ही जगह पर लाने के लिए, colour वैल्यू नोटेशन का इस्तेमाल कर सकती है.

अगर आप JavaScript लागू करने के तरीके का इस्तेमाल कर रहे हैं और आपको उपयोगकर्ता भाषा के आधार पर सेट करते हैं, तो आपको प्रत्यक्ष संदर्भ का उपयोग करना ज़्यादा आसान लग सकता है. इसके लिए उदाहरण के लिए, Blockly.Msg['LISTS_REPEAT_TITLE'] या Blockly.Msg.LISTS_REPEAT_TITLE'.

स्ट्रिंग टेबल, भाषा के हिसाब से बनी .js फ़ाइलों में से किसी एक के ज़रिए लोड की जाती हैं msg/js. लोड करें सही फ़ाइल ब्लॉक करें, ताकि अनुवाद को ब्लॉक किया जा सके.

JSON मैसेज इंटरपोलेशन

message0 एट्रिब्यूट (और message1, message2 वगैरह) इनपुट के हिसाब से, फ़ील्ड, और आस-पास के लेबल टेक्स्ट. LISTS_REPEAT_TITLE के लिए, lists_repeat ब्लॉक, अंग्रेज़ी की वैल्यू यह है:

Blockly.Msg.LISTS_REPEAT_TITLE = 'create list with item %1 repeated %2 times';

दो इंटरपोलेशन मार्कर, %1 और %2, इन दोनों इनपुट की जगह को मार्क करते हैं. ज़्यादा जानकारी args0 कलेक्शन में दी गई है. args1 इससे जुड़ा होगा message1 स्ट्रिंग. ज़्यादा जानकारी के लिए, कस्टम ब्लॉक बनाना इस गाइड में, ब्लॉक इनपुट और फ़ील्ड की जानकारी देने के बारे में ज़्यादा जानकारी दी गई है.

इंटरपोलेशन मार्कर के बीच के टेक्स्ट को बिना नाम के टेक्स्ट में बदल दिया जाता है लेबल फ़ील्ड. इससे शब्द ब्लॉक का क्रम क्या है और वह कैसे दिखाई देता है:

// In Spanish
Blockly.Msg.LISTS_REPEAT_TITLE = "crear lista con el elemento %1 repetido %2 veces";
// In Korean
Blockly.Msg.LISTS_REPEAT_TITLE = "%1 %2 넣어, 리스트 생성";

दाईं से बाईं ओर अनुवाद की जाने वाली भाषा में, मैसेज स्ट्रिंग विज़ुअल ऑर्डर में शामिल होना चाहिए और इसमें यूनिकोड दिशा निर्देश शामिल नहीं होने चाहिए:

// In Arabic. Note how %2 is left of %1, since it read right to left.
Blockly.Msg.LISTS_REPEAT_TITLE = "إنشئ قائمة مع العنصر  %1 %2 مرات";

स्ट्रिंग टेबल फिर से बनाना

स्ट्रिंग टेबल .js फ़ाइलें बनाना, build:langfiles स्क्रिप्ट का हिस्सा है. कॉन्टेंट बनाने स्क्रिप्ट, आइडेंटिफ़ायर कुंजियों और अंग्रेज़ी अनुवाद को msg/messages.js नया en.json बनाने के लिए. इसके बाद, उन भाषाओं और सभी अनुवादों के साथ अन्य JSON फ़ाइलें, यह फिर से अपडेट हो जाएगा JavaScript स्ट्रिंग टेबल सभी भाषाओं के लिए, जिनमें नई भाषा भी शामिल है en.js.

अंग्रेज़ी के अलावा अन्य भाषाओं में जनरेट की गई JSON फ़ाइलें, पार्टनर से यहां मिलती हैं: TranslateWiki. ज़्यादा जानकारी के लिए, नोट चालू है अनुवाद किया जा रहा है देखें.