Blockly 코어에 새 현지화 토큰 추가

새 사용자 표시 문자열이 필요한 기능을 Blockly 코어에 추가하는 경우 Blockly.Msg에 해당 문자열을 추가하여 Translatewiki에서 번역할 수 있도록 해야 합니다. (자체 애플리케이션의 현지화 토큰 추가에 관한 자세한 내용은 현지화를 참고하세요.)

  1. 적절한 이름과 설명이 있는 새 문자열을 msg/messages.js 파일에 추가합니다.
  2. npm run messages를 실행하여 msg/json/qqq.jsonmsg/json/en.js 파일에 번역을 자동으로 추가합니다. 이 단계에서 경우에 따라 msg/json/constants.js 또는 msg/json/synonyms.js가 변경될 수도 있습니다.
  3. 자동으로 생성된 파일이 올바른지 검사합니다. 스크립트가 qqq.json 시작 부분에서 @metadata 섹션을 삭제할 수 있습니다. 이 경우 새 문자열이 추가되지만 @metadata는 삭제되지 않도록 변경사항을 신중하게 되돌려야 합니다.
  4. 기능 코드에서 Blockly.Msg['MY_NEW_MESSAGE']를 사용하여 새 문자열을 참조합니다.
  5. 기능 코드와 함께 msg 파일의 모든 변경사항을 커밋합니다.

예를 들어 msg/messages.js에 다음 코드를 추가하는 경우

/** @type {string} */
/// This is a hint to translators about the context for the message.
Blockly.Msg.MY_NEW_MESSAGE = 'This is a string that users will see!';

그런 다음 npm run messages를 실행하면 msg/en.json에 다음과 같은 변경사항이 표시됩니다.

// ...
    "MY_NEW_MESSAGE": "This is a message that users will see!",
// ...

msg/qqq.json에서는 다음과 같습니다.

// ...
    "MY_NEW_MESSAGE": "This is a hint to translators about the context for the message.",
// ...

그런 다음 Blockly.Msg['MY_NEW_MESSAGE']를 사용하여 코드에서 이 문자열을 참조할 수 있습니다.

번역 힌트

msg/messages.js의 삼중 슬래시 주석은 번역 시 TranslateWiki 사용자에게 보충 정보로 표시됩니다. 메시지가 사용자에게 표시되는 위치에 대한 컨텍스트를 제공합니다. 메시지에 매개변수가 포함된 경우 (예: %1)을 사용하여 매개변수의 의미를 설명합니다.

다음은 매개변수를 설명하고 자세한 정보에 대한 링크를 제공하는 적절한 번역 힌트의 예입니다.

/** @type {string} */
/// block text - Repeatedly counts a variable (%1)
/// starting with a (usually lower) number in a range (%2),
/// ending with a (usually higher) number in a range (%3), and counting the
/// iterations by a number of steps (%4).  As in
/// [https://github.com/google/blockly/wiki/Loops#count-with
/// https://github.com/google/blockly/wiki/Loops#count-with].
Blockly.Msg.CONTROLS_FOR_TITLE = 'count with %1 from %2 to %3 by %4';

컨텍스트 유형

많은 힌트에서 접두사를 사용하여 메시지의 컨텍스트를 설명합니다. 일반적인 접두사는 다음과 같습니다.

  • 텍스트 차단
  • 버튼 텍스트
  • 컨텍스트 메뉴
  • 드롭다운
  • 수학
  • 토스트 알림
  • 도움말

메시지가 이러한 컨텍스트 중 하나에 표시되면 적절한 접두사를 사용하세요.

동의어

메시지 키는 변경해야 하지만 번역은 변경하지 않아도 되는 경우가 있습니다. 이 경우 다음과 같이 이전 메시지를 새 메시지의 동의어로 설정할 수 있습니다.

/** @type {string} */
Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;

선택적 메시지

일부 메시지 문자열은 고유명사나 기호와 같은 특정 상황을 제외하고는 번역이 필요하지 않을 수 있습니다. Blockly에서 도움말 URL은 선택사항으로 표시되는 경우가 많습니다.

언어는 25% 이상 완료된 경우에만 Blockly 저장소에 커밋됩니다. 따라서 번역이 필요하지 않을 가능성이 큰 메시지를 선택사항으로 표시하면 선택사항 번역을 완료하지 않아도 해당 언어가 기준점을 충족하는 데 도움이 됩니다.


/** @type {string} */
/// {{Optional}} math - The symbol for the binary operation addition.
Blockly.Msg.MATH_ADDITION_SYMBOL = '+';

Notranslate 항목

기본 블록 카테고리에 사용되는 색상은 {{notranslate}}로 표시됩니다. 이러한 색상은 현지화되지 않지만 개발자가 기본 카테고리의 블록 색상을 쉽게 변경할 수 있도록 현지화 시스템에 있습니다. 새 차단 카테고리를 추가하는 경우 {{notranslate}} 지시어를 사용하세요. 번역해서는 안 된다고 생각하는 다른 유형의 메시지를 추가하는 경우 현지화 시스템이 문자열에 적합한지 고려하세요.


/** @type {string} */
/// {{Notranslate}} Hue value for all logic blocks.
Blockly.Msg.LOGIC_HUE = '210';