翻訳

Blockly のデフォルト メッセージ(コンテキスト メニューのテキストなど)は、さまざまな言語に翻訳されています。en ロケールはデフォルトで読み込まれますが、他の利用可能なロケールも含めることができます。

npm でロケールを構成する

import * as Blockly from 'blockly'; を使用して Blockly をインポートすると、デフォルトのモジュール(Blockly core、Blockly 組み込みブロック、JavaScript ジェネレーター、英語の lang ファイル)を取得できます。

他の言語 / 地域を使用する場合は、インポートをより慎重に定義する必要があります。

Blockly のデフォルト モジュールをインポートする

import * as Blockly from 'blockly/core';
import 'blockly/blocks';
import 'blockly/javascript'; // Or the generator of your choice

Blockly 言語をインポートする

たとえば、フランス語のメッセージ セットをインポートするには、次のようにします。

import * as Fr from 'blockly/msg/fr';

サポートされている Blockly ロケールの一覧については、https://github.com/google/blockly/tree/master/msg/js をご覧ください。

言語 / 地域の設定

目的のメッセージセットをインポートしたら、Blockly でロケールを設定します。現在、この機能は Blockly の npm リリースにのみ含まれています。

Blockly.setLocale(Fr);

ワークスペースを読み込む前に呼び出す必要があります。

npm を使用せずにロケールを構成する

Blockly msg ディレクトリから適切なスクリプト src を含めると、翻訳は自動的に含められます。

<script src="../../blockly_compressed.js"></script>
<script src="../../blocks_compressed.js"></script>
<script src="../../msg/js/ar.js"></script>

カスタム翻訳

Blockly にはすべてのデフォルト文字列の翻訳が含まれますが、テキストを含むカスタム ブロックがある場合は、それらの文字列に独自の翻訳を含めることもできます。たとえば、blockly/msg/es の構造は次のようになります。

Blockly.Msg["COLOUR_RGB_RED"] = "rojo";

カスタム翻訳を含むオブジェクトで setLocale を呼び出すと、Blockly.Msg オブジェクトに新しいプロパティとしてカスタム メッセージを追加できます。今後追加されるデフォルトの翻訳との競合を避けるため、翻訳の先頭にカスタム プレフィックスを付けることもできます。

// In custom_es.js
export const CustomEs = {
  HELLO: "Hola",
}

// In your setup code
import * as Es from blockly/msg/Es;
import { CustomEs } from ../custom_es;
Blockly.setLocale(Es);
Blockly.setLocale(CustomEs);

setLocale は、入力オブジェクトの各キーを Blockly.Msg に入れます。個別のキーを使用して複数回呼び出すこともできますが、重複するキーで 2 回目に呼び出すと、最初のキーが上書きされます。

翻訳された文字列をブロック内で参照するには、Blockly.Msg['HELLO'] を使用します。これには、構成したロケールの文字列を含める必要があります。