ブロックをローカライズする

Blockly は、ユーザーの言語にローカライズできるブロック定義をサポートしています。 文字列テーブルを使用することで、JSON ブロック定義内のメッセージ文字列を その言語の語彙を反映するように入力、フィールド、ラベルを適応させることができる 単語の順序、方向などがあります

英語の「list_Repeat」ブロック スペイン語の list_re ブロック 韓国語の list_re ブロック 右から左のアラビア語の list_re ブロック

次のケースはすべて、同じ 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 文字列テーブルの文字列への参照です。Google ブロックがインスタンス化されると、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'

文字列テーブルは、言語固有の .js ファイルのいずれかを介して読み込まれます。 msg/js。読み込む 適切なファイルをウェブページにアップロードして、正しいブロック翻訳を読み込みます。

JSON メッセージ補間

message0 属性(および message1message2 など)は入力を指示します。 周囲のラベルテキストを調整できますLISTS_REPEAT_TITLE について: lists_repeat ブロックの場合、英語の値は次のようになります。

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

%1%2 の 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 ファイル 新しいコンテナ イメージが JavaScript 文字列テーブル すべての言語に対応しており、 en.js

英語以外の JSON ファイルは、 TranslateWiki:詳しくは、 メモ 翻訳 をご覧ください。