یک نشانه محلی سازی جدید به هسته Blockly اضافه کنید

اگر ویژگی‌ای را به هسته Blockly اضافه کنید که به رشته‌های قابل مشاهده توسط کاربر جدید نیاز دارد، باید آن رشته‌ها را به Blockly.Msg اضافه کنید تا توسط Translatewiki ترجمه شوند. (برای اطلاعات در مورد افزودن نشانه های محلی سازی برای برنامه خود، به محلی سازی مراجعه کنید.)

  1. رشته جدید خود را با نام و توضیحات مناسب به فایل msg/messages.js اضافه کنید.
  2. npm run messages اجرا کنید تا ترجمه‌تان به‌طور خودکار به فایل‌های msg/json/qqq.json و msg/json/en.js اضافه شود. این مرحله همچنین ممکن است در برخی موارد msg/json/constants.js یا msg/json/synonyms.js نیز تغییر دهد.
  3. فایل های تولید شده به صورت خودکار را از نظر صحت بررسی کنید. توجه داشته باشید که اسکریپت ممکن است بخش @metadata را در ابتدای qqq.json حذف کند. اگر این اتفاق افتاد، باید با دقت آن تغییر را برگردانید تا رشته جدید شما اضافه شود اما @metadata حذف نشود.
  4. در کد ویژگی خود، به رشته جدید با Blockly.Msg['MY_NEW_MESSAGE'] ارجاع دهید.
  5. تمام تغییرات فایل های 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، URL های راهنما اغلب اختیاری هستند.

زبان‌ها فقط در صورتی به مخزن Blockly متعهد می‌شوند که حداقل ۲۵٪ کامل باشند. بنابراین، علامت‌گذاری پیام‌هایی که بعید است نیاز به ترجمه داشته باشند به‌عنوان اختیاری به آن زبان‌ها کمک می‌کند تا آستانه را بدون نیاز به تکمیل ترجمه‌های اختیاری برآورده کنند.


/** @type {string} */
/// {{Optional}} math - The symbol for the binary operation addition.
Blockly.Msg.MATH_ADDITION_SYMBOL = '+';

موارد بدون ترجمه

رنگ‌های مورد استفاده برای دسته‌های بلوک پیش‌فرض {% کلمه به کلمه %} علامت‌گذاری شده‌اند. {% endverbatim %}. این رنگ ها برای بومی سازی در نظر گرفته نشده اند، بلکه در سیستم محلی سازی قرار دارند تا توسعه دهندگان بتوانند به راحتی رنگ بلوک ها را در دسته بندی های پیش فرض تغییر دهند . اگر دسته‌های بلوک جدیدی اضافه می‌کنید، از {% کلمه به کلمه %} استفاده کنید دستورالعمل {% endverbatim %}. اگر نوع دیگری از پیام را اضافه می کنید که فکر می کنید هرگز نباید ترجمه شود، در نظر بگیرید که آیا سیستم محلی سازی مکان مناسبی برای رشته است یا خیر.


/** @type {string} */
/// {{Notranslate}} Hue value for all logic blocks.
Blockly.Msg.LOGIC_HUE = '210';