国際化

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

モジュールの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>placeholder:

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

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

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

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