Blockly hỗ trợ các định nghĩa dạng khối có thể được bản địa hoá sang ngôn ngữ của người dùng. Bằng cách sử dụng bảng chuỗi, chuỗi thông báo trong định nghĩa khối JSON có thể điều chỉnh dữ liệu đầu vào, trường và nhãn cho phù hợp với vốn từ vựng của ngôn ngữ đó, thứ tự từ và hướng của từ.
Tất cả các trường hợp này đều có cùng định nghĩa khối 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}"
}
Bảng chuỗi
Ví dụ lists_repeat
bao gồm một số chuỗi "%{BKY_...}"
. Mỗi
đây là tham chiếu đến một chuỗi trong bảng chuỗi Blockly.Msg
. Khi
được tạo thực thể, Blockly cố gắng thay thế chuỗi bằng giá trị.
Ví dụ: %{BKY_LISTS_REPEAT_TITLE}
được thay thế bằng giá trị của
Blockly.Msg['LISTS_REPEAT_TITLE']
, nếu có. Nếu giá trị không tồn tại,
ký hiệu %{BKY_...}
được giữ nguyên và Blockly đưa ra cảnh báo
cho bản dịch bị thiếu.
Như trong ví dụ, ký hiệu này có tác dụng ở một số vị trí. Tin nhắn
và chú thích cho phép thay thế các chuỗi hiển thị với người dùng. Tương tự, trình đơn thả xuống
cũng có thể sử dụng ký hiệu cho văn bản của mục. URL trợ giúp có thể được bản địa thành
đảm bảo người dùng được chuyển hướng đến một trang đã bản địa hoá tương tự. Cuối cùng,
Giá trị colour
có thể sử dụng ký hiệu này để giúp tập trung bảng màu của các khối.
Nếu bạn đang sử dụng triển khai JavaScript và không muốn thay đổi
ngôn ngữ người dùng trong thời gian chạy, thì bạn có thể thấy việc sử dụng tham chiếu trực tiếp trở nên dễ dàng hơn. Cho
Blockly.Msg['LISTS_REPEAT_TITLE']
hoặc
Blockly.Msg.LISTS_REPEAT_TITLE'
.
Các bảng chuỗi được tải thông qua bất kỳ tệp .js
nào theo ngôn ngữ cụ thể
msg/js
. Tải
tệp phù hợp vào trang web của bạn để tải đúng bản dịch của khối.
Nội suy thông báo JSON
Thuộc tính message0
(và message1
, message2
, v.v.) quy định dữ liệu đầu vào,
và văn bản nhãn xung quanh. Cho LISTS_REPEAT_TITLE
trong
Khối lists_repeat
, giá trị tiếng Anh là:
Blockly.Msg.LISTS_REPEAT_TITLE = 'create list with item %1 repeated %2 times';
Hai điểm đánh dấu nội suy %1
và %2
giúp đánh dấu vị trí của hai giá trị đầu vào.
Bạn có thể xem thêm thông tin chi tiết trong mảng args0
. args1
sẽ tương ứng với
chuỗi message1
. Xem
Tạo thành phần tuỳ chỉnh
để biết thêm thông tin chi tiết về việc chỉ định các trường và đầu vào khối.
Văn bản giữa các điểm đánh dấu nội suy được chuyển đổi thành không có tên trường nhãn. Điều này tạo ra từ thứ tự của khối và cách khối đó đọc:
// 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번 넣어, 리스트 생성";
Khi dịch sang ngôn ngữ từ phải sang trái, chuỗi thông báo được viết bằng thứ tự hình ảnh và không được bao gồm các lệnh chỉ hướng Unicode:
// In Arabic. Note how %2 is left of %1, since it read right to left.
Blockly.Msg.LISTS_REPEAT_TITLE = "إنشئ قائمة مع العنصر %1 %2 مرات";
Tạo lại bảng chuỗi
Việc tạo tệp .js
của bảng chuỗi là một phần của tập lệnh build:langfiles
. Chiến lược phát hành đĩa đơn
đoạn mã sẽ lấy các khoá nhận dạng và bản dịch tiếng Anh từ
msg/messages.js
để tạo một en.json
mới.
Sau đó, kết hợp với và bất kỳ bản dịch nào có trong
các tệp JSON khác,
nó sẽ được cập nhật lại
Bảng chuỗi JavaScript
cho tất cả các ngôn ngữ, bao gồm cả
en.js
.
Các tệp JSON không phải tiếng Anh do các đối tác tại TranslateWiki. Xem ghi chú đang bật dịch để biết chi tiết về cách bạn có thể trợ giúp.