블록 현지화

Blockly는 사용자 언어로 현지화할 수 있는 블록 정의를 지원합니다. JSON 블록 정의의 메시지 문자열은 문자열 테이블을 사용하여 언어의 어휘, 단어 순서, 방향을 반영하도록 입력, 필드, 라벨을 조정할 수 있습니다.

영어 list_repeat 블록 스페인어로 된 list_repeat 블록 한국어로 list_repeat 블록 오른쪽에서 왼쪽으로 쓰는 아랍어로 된 list_repeat 블록

이러한 경우는 모두 동일한 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}"
}

문자열 테이블

lists_repeat 예에는 여러 "%{BKY_...}" 문자열이 포함되어 있습니다. 각각은 Blockly.Msg 문자열 테이블의 문자열 참조입니다. 블록이 인스턴스화되면 Blockly는 문자열을 해당 값으로 바꾸려고 시도합니다.

예를 들어 %{BKY_LISTS_REPEAT_TITLE}Blockly.Msg['LISTS_REPEAT_TITLE'] 값(있는 경우)으로 대체됩니다. 값이 존재하지 않으면 %{BKY_...} 표기법은 그대로 유지되며, Blockly는 누락된 번역에 대한 경고를 표시합니다.

예와 같이 표기법은 여러 위치에서 작동합니다. 메시지와 도움말을 사용하여 사용자에게 표시되는 문자열을 바꿀 수 있습니다. 마찬가지로 드롭다운 필드는 항목 텍스트 표기법을 사용할 수도 있습니다. 사용자가 비슷하게 현지화된 페이지로 연결되도록 도움말 URL을 현지화할 수 있습니다. 마지막으로 colour 값은 표기법을 사용하여 블록 팔레트를 집중시킬 수 있습니다.

JavaScript 구현을 사용하고 있고 런타임에 사용자 언어를 변경하지 않으려는 경우 직접 참조를 사용하는 것이 더 쉬울 수 있습니다. 예를 들면 Blockly.Msg['LISTS_REPEAT_TITLE'] 또는 Blockly.Msg.LISTS_REPEAT_TITLE'가 있습니다.

문자열 테이블은 msg/js의 언어별 .js 파일 중 하나를 통해 로드됩니다. 적절한 파일을 웹페이지에 로드하여 올바른 블록 번역을 로드합니다.

JSON 메시지 보간 유형

message0 속성 (및 message1, message2 등)은 입력, 필드, 주변 라벨 텍스트를 지정합니다. lists_repeat 블록의 LISTS_REPEAT_TITLE의 경우 영어 값은 다음과 같습니다.

Blockly.Msg.LISTS_REPEAT_TITLE = 'create list with item %1 repeated %2 times';

두 개의 보간 유형 마커 %1, %2는 두 입력의 위치를 표시합니다. 자세한 내용은 args0 배열에서 확인할 수 있습니다. args1message1 문자열에 해당합니다. 블록 입력 및 필드 지정에 관한 자세한 내용은 맞춤 블록 만들기 가이드를 참고하세요.

보간 마커 사이의 텍스트는 이름이 지정되지 않은 라벨 필드로 변환됩니다. 이렇게 하면 블록의 단어 순서와 읽기 방식이 생성됩니다.

// 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번 넣어, 리스트 생성";

오른쪽에서 왼쪽으로 쓰는 언어로 번역할 때 메시지 문자열은 시각적인 순서로 작성되며 유니코드 방향 명령어를 포함해서는 안 됩니다.

// In Arabic. Note how %2 is left of %1, since it read right to left.
Blockly.Msg.LISTS_REPEAT_TITLE = "إنشئ قائمة مع العنصر  %1 %2 مرات";

문자열 테이블 다시 빌드

문자열 테이블 .js 파일을 빌드하는 것은 build:langfiles 스크립트의 일부입니다. 이 스크립트는 msg/messages.js에서 식별자 키와 영어 번역을 가져와 새 en.json를 만듭니다. 그런 다음 다른 JSON 파일에 있는 번역과 결합하여 새 en.js를 포함하여 모든 언어에 맞게 업데이트된 JavaScript 문자열 테이블을 다시 만듭니다.

영어 이외의 JSON 파일은 TranslateWiki의 파트너가 제공합니다. 지원 방법에 대한 자세한 내용은 번역에 대한 참고 사항을 참조하세요.