Blockly از تعاریف بلوکی که می تواند به زبان کاربر بومی سازی شود، پشتیبانی می کند. از طریق استفاده از جداول رشتهای، رشتههای پیام در تعریف بلوک JSON میتوانند ورودیها، فیلدها و برچسبها را برای انعکاس واژگان، ترتیب کلمات و جهت زبان تطبیق دهند.
همه این موارد دارای همان تعریف بلوک 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_...}
در جای خود باقی میماند و Blockly یک هشدار برای ترجمه از دست رفته منتشر میکند.
همانطور که در مثال نشان داده شده است، نماد در چندین مکان کار می کند. پیامها و راهنماییهای ابزار اجازه میدهند رشتههای قابل مشاهده کاربر جایگزین شوند. به طور مشابه، فیلدهای کشویی نیز می توانند از نماد برای متن مورد استفاده کنند. URL راهنما را می توان بومی سازی کرد تا اطمینان حاصل شود که کاربر به یک صفحه بومی سازی شده مشابه هدایت می شود. و در نهایت، مقدار colour
می تواند از نماد برای کمک به متمرکز کردن پالت بلوک ها استفاده کند.
اگر از پیادهسازی جاوا اسکریپت استفاده میکنید و انتظار ندارید زبان کاربر را در زمان اجرا تغییر دهید، ممکن است استفاده از یک مرجع مستقیم آسانتر باشد. برای مثال، 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 یافت می شود، جداول رشته جاوا اسکریپت به روز شده را برای همه زبان ها، از جمله en.js
جدید، دوباره ایجاد می کند.
فایلهای JSON غیرانگلیسی از شرکای TranslateWiki میآیند. برای جزئیات بیشتر در مورد اینکه چگونه می توانید کمک کنید، یادداشت های مربوط به ترجمه را ببینید.