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