เพิ่มโทเค็นการแปลใหม่ลงใน Blockly Core

หากคุณเพิ่มฟีเจอร์ลงใน Blockly Core ซึ่งต้องใช้สตริงใหม่ที่ผู้ใช้มองเห็นได้ คุณต้องเพิ่มสตริงเหล่านั้นลงใน 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']

คำแนะนำการแปล

ความคิดเห็นที่มีเครื่องหมายทับ 3 อันใน 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 ก็ต่อเมื่อแปลเสร็จสมบูรณ์แล้วอย่างน้อย 25% ดังนั้น การทำเครื่องหมายข้อความที่ไม่น่าจะต้องแปลเป็น ไม่บังคับจะช่วยให้ภาษาเหล่านั้นเป็นไปตามเกณฑ์โดยไม่ต้อง แปลข้อความที่ไม่บังคับให้เสร็จสมบูรณ์


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

รายการที่ไม่มีการแปล

สีที่ใช้สำหรับหมวดหมู่บล็อกเริ่มต้นจะมีการทำเครื่องหมาย {{notranslate}} สีเหล่านี้ไม่ได้มีไว้สำหรับ การแปลภาษา แต่มีอยู่ในระบบการแปลภาษาเพื่อให้ผู้พัฒนาเปลี่ยนสีของบล็อกในหมวดหมู่เริ่มต้นได้อย่างง่ายดาย หากต้องการเพิ่มหมวดหมู่การบล็อกใหม่ ให้ใช้คำสั่ง {{notranslate}} หากคุณเพิ่มข้อความประเภทอื่นที่คิดว่าไม่ควรแปล ให้พิจารณาว่าระบบการแปลเป็นภาษาท้องถิ่นเป็นที่ที่เหมาะสมสำหรับสตริงหรือไม่


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