翻訳

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

npm によるロケールの構成

import * as Blockly from 'blockly'; を使用して Blockly をインポートすると、Blockly コア、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'] を使用します。これには、構成したロケールの文字列が含まれている必要があります。