การแปล

ข้อความเริ่มต้นใน Blockly (เช่น ข้อความในเมนูบริบท) ได้รับการแปลเป็นภาษาต่างๆ มากมาย ระบบจะโหลดภาษา en โดยค่าเริ่มต้น แต่คุณจะรวมภาษาอื่นๆ ที่ใช้ได้ไว้ด้วย

การกำหนดค่าภาษาด้วย npm

เมื่อนําเข้า Blockly ด้วย import * as Blockly from 'blockly'; คุณจะได้รับข้อบังคับเริ่มต้น ได้แก่ Blockly Core, บล็อกในตัวของ Blockly, เครื่องมือสร้าง JavaScript และไฟล์ภาษาอังกฤษ

หากต้องการใช้ภาษาอื่นๆ คุณจะต้องกำหนดการนำเข้าอย่างระมัดระวังมากขึ้น โดยทำดังนี้

นำเข้าโมดูลเริ่มต้นของ Blockly

import * as Blockly from 'blockly/core';
import 'blockly/blocks';
import 'blockly/javascript'; // Or the generator of your choice

นำเข้าภาษา Blockly

ตัวอย่างเช่น หากต้องการนำเข้าชุดข้อความภาษาฝรั่งเศส ให้ทำดังนี้

import * as Fr from 'blockly/msg/fr';

ดูรายการภาษาที่รองรับทั้งหมดของ Blockly ได้ที่ https://github.com/google/blockly/tree/master/msg/js

กำหนดค่าภาษา

หลังจากนําเข้าชุดข้อความที่ต้องการแล้ว คุณจะต้องตั้งค่าภาษาใน Blockly ปัจจุบันฟังก์ชันนี้รวมอยู่ในรุ่น npm ของ Blockly เท่านั้น

Blockly.setLocale(Fr);

คุณต้องเรียกใช้เมธอดนี้ก่อนที่จะโหลดพื้นที่ทํางาน

การกำหนดค่าภาษาที่ไม่มี npm

ใส่ src ของสคริปต์ที่เหมาะสมจากไดเรกทอรีข้อความ Blockly และคำแปลจะรวมโดยอัตโนมัติ

<script src="../../blockly_compressed.js"></script>
<script src="../../blocks_compressed.js"></script>
<script src="../../msg/js/ar.js"></script>

คำแปลที่กำหนดเอง

Blockly มีคำแปลสำหรับสตริงเริ่มต้นทั้งหมด แต่หากคุณมีบล็อกที่กำหนดเองซึ่งมีข้อความ คุณอาจต้องใส่คำแปลของคุณเองสำหรับสตริงเหล่านั้น ตัวอย่างเช่น โครงสร้างของ blockly/msg/es จะคล้ายกับตัวอย่างต่อไปนี้

Blockly.Msg["COLOUR_RGB_RED"] = "rojo";

คุณสามารถเพิ่มข้อความที่กําหนดเองเพิ่มเติมเป็นพร็อพเพอร์ตี้ใหม่ในBlockly.Msg ออบเจ็กต์ได้โดยเรียกใช้ setLocale ด้วยออบเจ็กต์ที่มีคำแปลที่กำหนดเอง คุณอาจต้องใส่คำนำหน้าที่กำหนดเองไว้ข้างหน้าคำแปลเพื่อหลีกเลี่ยงการทับซ้อนกับคำแปลเริ่มต้นที่อาจเพิ่มในอนาคต

// In custom_es.js
export const CustomEs = {
  HELLO: "Hola",
}

// In your setup code
import * as Es from blockly/msg/Es;
import { CustomEs } from ../custom_es;
Blockly.setLocale(Es);
Blockly.setLocale(CustomEs);

setLocale จะใส่คีย์แต่ละรายการจากออบเจ็กต์อินพุตลงใน Blockly.Msg คุณสามารถเรียกใช้หลายครั้งโดยใช้คีย์ที่แตกต่างกันได้ แต่การเรียกใช้ครั้งที่ 2 ด้วยคีย์ที่ซ้ำกันจะเป็นการเขียนทับคีย์แรก

หากต้องการอ้างอิงสตริงที่แปลแล้วในบล็อก ให้ใช้ Blockly.Msg['HELLO'] ซึ่งควรมีสตริงสำหรับภาษาที่คุณกำหนดค่าไว้