国際化

ノードが適切なモジュールとしてパッケージ化されている場合は、エディタとランタイムに翻訳されたコンテンツを提供するためにメッセージカタログを含めることができます。

モジュールのpackage.jsonで指定されたノートについて、メッセージカタログとヘルプファイルの対応するセットをノードの.jsファイルのそばに含めることが出来ます。

ノードが次のように指定されているとします:

"name": "my-node-module",
"node-red": {
    "myNode": "myNode/my-node.js"
}

次のメッセージカタログが存在してもよい:

myNode/locales/__language__/my-node.json
myNode/locales/__language__/my-node.html

localesディレクトリはノード.jsファイルと同じディレクトリになければなりません。

パスの__language__部分は、対応するファイルが提供する言語を識別します。 デフォルトでは、Node-REDはen-USを使用します。

メッセージカタログ

メッセージカタログは、ノードがエディタに表示するテキストまたは実行時のログを含むJSONファイルです。

例:

{
    "myNode" : {
        "message1": "This is my first message",
        "message2": "This is my second message"
    }
}

カタログはノード固有の名前空間の下にロードされます。上記で定義されたノードについて、このカタログはmy-node-module/myNodeという名前空間で利用できます。

コアノードはnode-red名前空間を使用します。

ヘルプテキスト

ヘルプファイルは、エディタの情報再度バータブに表示されるノードのヘルプテキストの翻訳バージョンを提供します。

i18nメッセージの使用

ランタイムとエディタの両方で、ノードがカタログからメッセージを参照するための機能が提供されています。 これらはノード自身の名前空間に事前にスコープされているため、メッセージ識別子に名前空間を含める必要はありません。

ランタイム

ノードのランタイム部分はRED._()関数を使用してメッセージにアクセス出来ます。 例:

console.log(RED._("myNode.message1"));

ステータスメッセージ

ノードが状態メッセージをエディタに送信すると、ステータスのtextをメッセージ識別子として設定する必要があります。

this.status({fill:"green",shape:"dot",text:"myNode.status.ready"});

コアのnode-redカタログには、よく使用されるいくつかのステータスメッセージがあります。 これらは、識別されたメッセージに名前空間を含めることによって使用できます。

this.status({fill:"green",shape:"dot",text:"node-red:common.status.connected"});

エディタ

ノードテンプレートで提供されるHTML要素は、data-i18n属性を指定して、メッセージ識別情報を使用するように指定できます。 例:

<span data-i18n="myNode.label.foo"></span>

デフォルトでは、要素のテキスト内容は識別されたメッセージに置き換えられます。 要素の属性を設定することもできます。例えば<input>プレースホルダ:

<input type="text" data-i18n="[placeholder]myNode.placeholder.foo">

これらを組み合わせて複数の置換を指定することも可能です。 例えば、タイトル属性と表示されるテキストの両方を設定するには:

<a href="#" data-i18n="[title]myNode.label.linkTitle;myNode.label.linkText"></a>

html要素のdata-i18n属性と同様に、すべてののーど定義関数(例えばoneditprepare)this._()を使ってメッセージを取り出すことが出来ます。