การแปล

ข้อความเริ่มต้นใน 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 msg และระบบจะรวมคำแปลให้โดยอัตโนมัติ

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

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

บล็อกรวมคำแปลสำหรับสตริงเริ่มต้นทั้งหมด แต่หากคุณมีบล็อกที่กำหนดเองพร้อมข้อความ คุณอาจต้องการใส่คำแปลของคุณเองสำหรับสตริงเหล่านั้น ตัวอย่างเช่น โครงสร้างของ 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'] ซึ่งควรมีสตริงสําหรับภาษาที่กำหนดค่าไว้