Bản địa hóa Chặn

Chặn hỗ trợ các định nghĩa khối có thể bản địa hoá sang ngôn ngữ của người dùng. Thông qua việc 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 để phản ánh từ vựng, thứ tự từ và hướng của ngôn ngữ.

khối list_Repeat (danh_sách_lặp_lại) bằng tiếng Anh khối List_lặp lại bằng tiếng Tây Ban Nha khối List_lặp lại bằng tiếng Hàn khối list_Repeat bằng tiếng Ả Rập từ phải sang trái

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 giá trị này là một tham chiếu đến một chuỗi trong bảng chuỗi Blockly.Msg. Khi tạo thực thể cho khối, Blockly sẽ cố gắng thay thế chuỗi bằng giá trị.

Ví dụ: %{BKY_LISTS_REPEAT_TITLE} được thay thế bằng giá trị Blockly.Msg['LISTS_REPEAT_TITLE'] nếu có. Nếu giá trị không tồn tại, ký hiệu %{BKY_...} sẽ được giữ nguyên và Blockly sẽ phát ra cảnh báo về bản dịch bị thiếu.

Như minh hoạ trong ví dụ, ký hiệu này hoạt động ở một số vị trí. Các thông báo và chú giải công cụ cho phép thay thế các chuỗi hiển thị cho người dùng. Tương tự, các trường 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 hoá để đảm bảo người dùng được chuyển hướng đến một trang đã được 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 vào bảng màu gồm các khối.

Nếu đang sử dụng phương thức 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ể sẽ thấy việc sử dụng tệp tham chiếu trực tiếp sẽ dễ dàng hơn. Ví dụ: Blockly.Msg['LISTS_REPEAT_TITLE'] hoặc Blockly.Msg.LISTS_REPEAT_TITLE'.

Các bảng chuỗi được tải thông qua một trong các tệp .js dành riêng cho ngôn ngữ trong msg/js. Tải tệp thích hợp vào trang web của bạn để tải đúng bản dịch khối.

Loại nội suy thông báo JSON

Thuộc tính message0 (và message1, message2, v.v.) cho biết dữ liệu đầu vào, trường và văn bản nhãn xung quanh. Đối với 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%2, đánh dấu vị trí của hai đầ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 hướng dẫn Tạo khối tuỳ chỉnh để biết thêm thông tin chi tiết về cách chỉ định các trường và đầu vào của khối.

Văn bản giữa các điểm đánh dấu nội suy được chuyển đổi thành các trường nhãn không có tên. Thao tác này sẽ tạo ra thứ tự từ của khối và cách khối này đọ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 các ngôn ngữ từ phải sang trái, chuỗi thông báo được viết theo thứ tự hình ảnh và không được bao gồm các lệnh 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 các tệp .js trong bảng chuỗi là một phần của tập lệnh build:langfiles. Tập lệnh này lấy 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 mọi bản dịch tìm thấy trong các tệp JSON khác, công cụ này sẽ tạo lại bảng chuỗi JavaScript mới cập nhật cho mọi ngôn ngữ, bao gồm cả en.js mới.

Các tệp JSON không phải bằng tiếng Anh là do các đối tác tại TranslateWiki cung cấp. Hãy xem các ghi chú về cách dịch để biết thông tin chi tiết về những cách bạn có thể trợ giúp.