แปลบล็อก

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 สามารถใช้เครื่องหมายนี้เพื่อช่วยรวมพาเล็ตบล็อกส่วนกลาง

หากคุณกำลังใช้ 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';

ตัวทำเครื่องหมายการประมาณค่า 2 ตัว ได้แก่ %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번 넣어, 리스트 생성";

เมื่อแปลเป็นภาษาจากขวาไปซ้าย สตริงข้อความจะเขียนตามลำดับที่มองเห็น และไม่ควรมีคำสั่งทิศทางแบบ Unicode ดังนี้

// 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 ดูหมายเหตุเกี่ยวกับการแปลเพื่อดูรายละเอียดวิธีที่คุณจะช่วยได้