새 사용자 표시 문자열이 필요한 기능을 Blockly 코어에 추가하는 경우 Blockly.Msg
에 해당 문자열을 추가하여 Translatewiki에서 번역할 수 있도록 해야 합니다. (자체 애플리케이션의 현지화 토큰 추가에 관한 자세한 내용은 현지화를 참고하세요.)
- 적절한 이름과 설명이 있는 새 문자열을
msg/messages.js
파일에 추가합니다. npm run messages
를 실행하여msg/json/qqq.json
및msg/json/en.js
파일에 번역을 자동으로 추가합니다. 이 단계에서 경우에 따라msg/json/constants.js
또는msg/json/synonyms.js
가 변경될 수도 있습니다.- 자동으로 생성된 파일이 올바른지 검사합니다. 스크립트가
qqq.json
시작 부분에서@metadata
섹션을 삭제할 수 있습니다. 이 경우 새 문자열이 추가되지만@metadata
는 삭제되지 않도록 변경사항을 신중하게 되돌려야 합니다. - 기능 코드에서
Blockly.Msg['MY_NEW_MESSAGE']
를 사용하여 새 문자열을 참조합니다. - 기능 코드와 함께
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';