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

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ừ.

khối list_repeat bằng tiếng Anh khối list_repeat bằng tiếng Tây Ban Nha chặn danh sách_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 đâ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%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.