Blockly は、ユーザーの言語にローカライズ可能なブロック定義をサポートしています。 文字列テーブルを使用することで、JSON ブロック定義のメッセージ文字列は、入力、フィールド、ラベルを適応させて、言語の語彙、単語の順序、方向を反映できます。
これらはすべて、同じ 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';
2 つの補間マーカー %1
と %2
が、2 つの入力の位置を示します。詳細は args0
配列にあります。args1
は message1
文字列に対応します。ブロックの入力とフィールドの指定の詳細については、カスタム ブロックを作成するガイドをご覧ください。
補間マーカー間のテキストは、名前のないラベル フィールドに変換されます。これにより、ブロックの語順と、その以下の内容が作成されます。
// 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번 넣어, 리스트 생성";
右から左に表記する言語に翻訳する場合、メッセージ文字列は視覚的な順序で記述します。Unicode 方向コマンドを含めることはできません。
// 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 のパートナーから提供されています。支援方法について詳しくは、翻訳に関する注意事項をご覧ください。