Node-RED:Создание нод/Локализация

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

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


Локализация[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._().

См.также

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