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._().
См.также
Внешние ссылки