Node-RED:Создание нод/Локализация: различия между версиями
Myagkij (обсуждение | вклад) |
Нет описания правки |
||
Строка 14: | Строка 14: | ||
Например, для такой ноды... | Например, для такой ноды... | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
"name": "my-node-module", | "name": "my-node-module", | ||
"node-red": { | "node-red": { | ||
Строка 23: | Строка 23: | ||
...можно задать вот такие каталоги сообщений: | ...можно задать вот такие каталоги сообщений: | ||
<syntaxhighlight lang="bash | <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 | <syntaxhighlight lang="javascript"> | ||
{ | { | ||
"myNode" : { | "myNode" : { | ||
Строка 63: | Строка 63: | ||
Часть ноды, связанная со средой выполнения, может получить доступ к каталогу сообщений при помощи функции '''RED._()'''. Например: | Часть ноды, связанная со средой выполнения, может получить доступ к каталогу сообщений при помощи функции '''RED._()'''. Например: | ||
<syntaxhighlight lang="javascript | <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 | <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 | <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 | <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 | <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 | <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._().
См.также
Внешние ссылки