Node-RED:Создание нод/Локализация: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Строка 14: Строка 14:
Например, для такой ноды...
Например, для такой ноды...


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
"name": "my-node-module",
"name": "my-node-module",
"node-red": {
"node-red": {
Строка 23: Строка 23:
...можно задать вот такие каталоги сообщений:
...можно задать вот такие каталоги сообщений:


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash">
myNode/locales/__language__/my-node.json
myNode/locales/__language__/my-node.json
myNode/locales/__language__/my-node.html
myNode/locales/__language__/my-node.html
Строка 38: Строка 38:
Например:
Например:


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
{
{
     "myNode" : {
     "myNode" : {
Строка 63: Строка 63:
Часть ноды, связанная со средой выполнения, может получить доступ к каталогу сообщений при помощи функции '''RED._()'''. Например:
Часть ноды, связанная со средой выполнения, может получить доступ к каталогу сообщений при помощи функции '''RED._()'''. Например:


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
console.log(RED._("myNode.message1"));
console.log(RED._("myNode.message1"));
</syntaxhighlight>
</syntaxhighlight>
Строка 71: Строка 71:
Если нода отправляет в редактор [[Node-RED]] [https://nodered.org/docs/creating-nodes/status статусные сообщения], то в ключе '''«text»''' в этом случае нужно задать идентификатор сообщения:
Если нода отправляет в редактор [[Node-RED]] [https://nodered.org/docs/creating-nodes/status статусные сообщения], то в ключе '''«text»''' в этом случае нужно задать идентификатор сообщения:


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
this.status({fill:"green",shape:"dot",text:"myNode.status.ready"});
this.status({fill:"green",shape:"dot",text:"myNode.status.ready"});
</syntaxhighlight>
</syntaxhighlight>
Строка 77: Строка 77:
В базовом каталоге [[Node-RED]] есть несколько распространенных статусных сообщений, которые можно использовать в качестве пространства имен в идентификаторе сообщения:
В базовом каталоге [[Node-RED]] есть несколько распространенных статусных сообщений, которые можно использовать в качестве пространства имен в идентификаторе сообщения:


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
this.status({fill:"green",shape:"dot",text:"node-red:common.status.connected"});
this.status({fill:"green",shape:"dot",text:"node-red:common.status.connected"});
</syntaxhighlight>
</syntaxhighlight>
Строка 85: Строка 85:
В любой элемент, заданный в [[HTML-шаблон]]е ноды, можно добавить атрибут '''«data-i18n»''', чтобы задать идентификатор сообщения, которым нужно воспользоваться. Например:
В любой элемент, заданный в [[HTML-шаблон]]е ноды, можно добавить атрибут '''«data-i18n»''', чтобы задать идентификатор сообщения, которым нужно воспользоваться. Например:


<syntaxhighlight lang="html5" enclose="div">
<syntaxhighlight lang="html5">
<span data-i18n="myNode.label.foo"></span>
<span data-i18n="myNode.label.foo"></span>
</syntaxhighlight>
</syntaxhighlight>
Строка 91: Строка 91:
По умолчанию текстовое содержимое элемента заменяется сообщением, идентификатор которого был задан в атрибуте '''«data-i18n»'''. Вы также можете задать другие атрибуты элемента – например, атрибут '''«placeholder»''' элемента '''<input>''':
По умолчанию текстовое содержимое элемента заменяется сообщением, идентификатор которого был задан в атрибуте '''«data-i18n»'''. Вы также можете задать другие атрибуты элемента – например, атрибут '''«placeholder»''' элемента '''<input>''':


<syntaxhighlight lang="html5" enclose="div">
<syntaxhighlight lang="html5">
<input type="text" data-i18n="[placeholder]myNode.placeholder.foo">
<input type="text" data-i18n="[placeholder]myNode.placeholder.foo">
</syntaxhighlight>
</syntaxhighlight>
Строка 97: Строка 97:
Идентификаторы сообщений можно объединять, чтобы задать одновременно, к примеру, и атрибут '''«title»''', и показываемый текст:
Идентификаторы сообщений можно объединять, чтобы задать одновременно, к примеру, и атрибут '''«title»''', и показываемый текст:


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

Версия от 20:06, 23 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


Локализация[1]

Если нода упакована в модуль, в него можно также добавить каталог сообщений с материалами для локализации текстовых элементов в редакторе и среде выполнения.

Для каждой ноды, заданной в файле «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».

Текст-справка

Файл со справочной информацией содержит переведенные версии текста-справки, которая показывается на вкладке «Info» в боковой панели редактора Node-RED.

Использование i18n-сообщений

И в среде выполнения, и в редакторе у нод есть функции, позволяющие искать сообщения в каталогах. Область действия для них задана заранее (при помощи пространства имен ноды), поэтому в идентификаторе сообщения пространство имен ставить не обязательно.

Среда выполнения

Часть ноды, связанная со средой выполнения, может получить доступ к каталогу сообщений при помощи функции RED._(). Например:

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

Статусные сообщения

Если нода отправляет в редактор Node-RED статусные сообщения, то в ключе «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>

По умолчанию текстовое содержимое элемента заменяется сообщением, идентификатор которого был задан в атрибуте «data-i18n». Вы также можете задать другие атрибуты элемента – например, атрибут «placeholder» элемента <input>:

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

Идентификаторы сообщений можно объединять, чтобы задать одновременно, к примеру, и атрибут «title», и показываемый текст:

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

Как и в случае с атрибутом «data-i18n» для HTML-элементов, во всех функциях, задаваемых в свойствах HTML-файла ноды (например, в свойстве «oneditprepare») для извлечения сообщений можно использовать функцию this._().

См.также

Внешние ссылки