Merge 59055516deaf2bc64cff04677ebfc9e6d383a71f into dbc7284b9746d88e5781c11b292dcba089242ba6

This commit is contained in:
xuyu0v0 2023-09-05 06:22:46 -04:00 committed by GitHub
commit 648a8d2f28
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
37 changed files with 527 additions and 173 deletions

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="inject">
<script type="text/html" data-help-name="inject">
<p>手动或定期得将消息注入流中。消息的有效荷载可以为多种类型包括字符串JavaScript对象或当前时间。</p>
<h3>输出</h3>
<dl class="message-properties">

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="debug">
<script type="text/html" data-help-name="debug">
<p>在“调试”侧边栏选项卡和运行时日志中显示选定的消息属性。 默认情况下,它会显示<code>msg.payload</code>的值但您也可以将其设置成显示任意属性完整消息或JSONata表达式的结果。</p>
<h3>详细</h3>
<p>调试侧边栏会提供已发消息的结构化视图,方便您查询消息的结构。</p>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="complete">
<script type="text/html" data-help-name="complete">
<p>当另一个节点完成对消息的处理时触发流。</p>
<h3>详细</h3>
<p>如果一个节点通知运行时它已完成消息的处理,该节点可用于触发第二个流。</p>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="catch">
<script type="text/html" data-help-name="catch">
<p>捕获由同一标签页上的节点引发的错误。</p>
<h3>输出</h3>
<dl class="message-properties">

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="status">
<script type="text/html" data-help-name="status">
<p>获取在同一标签页上的其他节点的状态消息。</p>
<h3>输出</h3>
<dl class="message-properties">

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="link in">
<script type="text/html" data-help-name="link in">
<p>在流之间创建虚拟连线。</p>
<h3>详细</h3>
<p>该节点可以连接到任何标签页上存在的任何<code>link out</code>节点。连接后,它们的行为就像连接在一起。</p>
@ -22,10 +22,31 @@
<p><b>注意:</b>无法创建进入或离开子流的链接。</p>
</script>
<script type="text/x-red" data-help-name="link out">
<script type="text/html" data-help-name="link out">
<p>在流之间创建虚拟连线。</p>
<h3>详细</h3>
<p>该节点可以连接到任何标签页上存在的任何<code>link in</code>节点。连接后,它们的行为就像连接在一起。</p>
<p>仅当选择链接节点时,才会显示链接节点之间的链接。如果有指向另一个选项卡的链接,则显示一个虚拟节点。单击该虚拟节点将带您到相应的选项卡。</p>
<p><b>注意:</b>无法创建进入或离开子流的链接。</p>
</script>
<script type="text/html" data-help-name="link call">
<p>调用以 <code>link in</code> 节点开始的流程并传递响应。</p>
<h3>输入</h3>
<dl class="message-properties">
<dt class="optional">target<span class="property-type">字符串</span></dt>
<dd>当选项<b>链接类型</b>设置为“动态目标”时,将<code>msg.target</code>设置为您的<code>链接</code>节点的名称调用。</dd>
</dl>
<h3>详细</h3>
<p>此节点可以连接到任何选项卡上存在的<code>link in</code>节点。 连接到该节点的流必须以配置为“返回”模式的<code>link out</code>节点结束。</p>
<p>当该节点收到消息时,会将其传递到所连接的 <code>link in</code> 节点。 然后它等待响应,然后发送响应。</p>
<p>如果在配置的超时(默认 30 秒)内未收到响应,节点将记录一个错误,可以使用 <code>catch</code> 节点捕获该错误。</p>
<p>当选项<b>链接类型</b>设置为“动态目标”时,<code>msg.target</code>可用于按名称或名称调用<code>链接</code> ID。
<ul>
<li>如果</code>节点中存在具有相同id的<code>链接,则会调用</li>
<li>如果有两个或多个 <code>link in</code> 节点具有相同的名称,则会引发错误</li>
<li><code>链接调用</code>无法调用子流内的<code>link in</code>节点</li>
</ul>
</p>
连接到该节点的流必须以配置为“返回”模式的<code>link out</code>节点结束。</p>
</script>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="comment">
<script type="text/html" data-help-name="comment">
<p>可用于向流添加注释的节点。</p>
<h3>详细</h3>
<p>编辑面板接受Markdown语法。输入的文本将在信息侧面板中显示。</p>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="unknown">
<script type="text/html" data-help-name="unknown">
<p>您安装的Node-RED无法识别该节点的类型。</p>
<h3>详细</h3>
<p><i>如果在此状态下部署节点,其配置会被保存。但是在安装缺少的类型之前,流不会开始。</i></p>

View File

@ -14,11 +14,13 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="function">
<script type="text/html" data-help-name="function">
<p>定义对接收到的消息进行处理的JavaScript代码函数的主体</p>
<p>输入消息在名为<code>msg</code>的JavaScript对象中传递。</p>
<p>通常,<code>msg</code>对象将消息正文保留在<code>msg.payload</code>属性中。</p>
<p>该函数一般会返回一个消息对象(或多个消息对象),但也可以为了停止流而什么都不返回。</p>
<p><b>On Start</b> 选项卡包含每当节点启动时都会运行的代码。 <b>On Stop</b> 选项卡包含节点停止时将运行的代码。</p>
<p>如果 On Start 代码返回 Promise 对象,则在解决 Promise 之前节点不会开始处理消息。</p>
<h3>详细</h3>
<p>请参见<a target="_blank" href="http://nodered.org/docs/writing-functions.html">在线文档</a>来获得更多有关编写函数的信息。</p>
<h4>传送消息</h4>
@ -28,6 +30,7 @@
<li>单个消息对象 - 传递给连接到第一个输出的节点</li>
<li>消息对象数组,传递给连接到相应输出的节点</li>
</ul>
<p>注意:设置代码在节点初始化期间执行。 因此如果在setup选项卡中调用<code>node.send</code>,后续节点可能无法接收到该消息。</p>
<p>如果数组元素是数组,则将多个消息发送到相应的输出。</p>
<p>无论return方法是单个值还是数组元素如果返回值为null则不会发送任何消息。</p>
<h4>日志输出和错误处理</h4>
@ -45,7 +48,8 @@
<ul>
<li><code>node.id</code> - 节点的ID</li>
<li><code>node.name</code> - 节点的名称</li>
</ul>
<li><code>node.outputCount</code> - 节点输出数量</li>
</ul>
<h4>使用环境变量</h4>
<p>环境变量可以通过<code>env.get("MY_ENV_VAR")</code>来进行访问。</p>
</script>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="switch">
<script type="text/html" data-help-name="switch">
<p>按属性值来分配消息的传送路线。</p>
<h3>详细</h3>
<p>根据接收到的消息评估指定的规则,然后将消息发送到与匹配的规则相对应的输出端口。</p>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="change">
<script type="text/html" data-help-name="change">
<p>设置,更改,删除或移动消息,流上下文或全局上下文的属性。</p>
<p>如果指定了多个规则,则将按定义的顺序来应用它们。</p>
<h3>详细</h3>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="range">
<script type="text/html" data-help-name="range">
<p>将数值映射为另一个区间的数值</p>
<h3>输入</h3>
<dl class="message-properties">

View File

@ -14,25 +14,25 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="template">
<script type="text/html" data-help-name="template">
<p>根据提供的模板设置属性。</p>
<h3>输入</h3>
<dl class="message-properties">
<dt>msg <span class="property-type">object</span></dt>
<dd>一个msg对象其中包含着用于填充模板的信息。</dd>
<dt class="optional">template <span class="property-type">string</span></dt>
<dt class="optional">template <span class="property-type">字符串</span></dt>
<dd><code>msg.payload</code>填充的模板。如果未在编辑面板中配置则可以将设为msg的属性。</dd>
</dl>
<h3>Outputs</h3>
<h3>输出</h3>
<dl class="message-properties">
<dt>msg <span class="property-type">object</span></dt>
<dd>由来自传入msg的属性来填充已配置的模板后输出的带有属性的msg。</dd>
</dl>
<h3>详细</h3>
<p>默认情况下使用<i><a href="http://mustache.github.io/mustache.5.html" target="_blank">mustache</a></i>格式。如有需要也可以切换其他格式。</p>
<p>例如:
<p>例如,当模板为:
<pre>Hello {{payload.name}}. Today is {{date}}</pre>
<p>receives a message containing:
<p>收到一条消息,其中包含:
<pre>{
date: "Monday",
payload: {
@ -42,5 +42,11 @@
<p>输出的消息将会是:
<pre>Hello Fred. Today is Monday</pre>
<p>也可以使用流上下文或全局上下文中的属性:<code>{{flow.name}}</code>或者<code>{{global.name}}</code>,或者为了持久储存<code>store</code>,可以使用<code>{{flow[store].name}}</code><code>{{global[store].name}}</code>
<p><b>注意:</b>默认情况下,<i>mustache</i>将在其替换的值中转义任何非字母数字或HTML实体。为了防止这种情况请使用<code>{{{triple}}}</code>大括号。
<p><b>注意:</b>默认情况下,<i>mustache</i>将在其替换的值中转义任何非字母数字或HTML实体。为了防止这种情况请使用<code>{{{triple}}}</code>大括号。</p>
<p>如果您需要在内容中使用<code>{{ }}</code>,您可以更改用于标记模板化部分的字符。
例如,要使用<code>[[ ]]</code>代替,请将以下行添加到模板顶部:</p>
<pre>{{=[[ ]]=}}</pre>
<h4>使用环境变量</h4>
<p>模板节点可以使用以下语法访问环境变量:</p>
<pre>My favourite colour is {{env.COLOUR}}.</pre>
</script>

View File

@ -14,19 +14,29 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="delay">
<script type="text/html" data-help-name="delay">
<p>对通过节点的消息进行延迟发送或限制。</p>
<h3>输入</h3>
<dl class="message-properties">
<dt class="optional">delay <span class="property-type">数值</span></dt>
<dd>设置要应用于消息的延迟(以毫秒为单位)。仅当节点配置为允许消息去覆盖配置的默认延迟间隔时,此选项才适用。</dd>
<dt class="optional">rate <span class="property-type">数值</span></dt>
<dd>设置消息之间的速率值(以毫秒为单位)。 当该节点收到包含 <code>msg.rate</code> 值(以毫秒为单位)的消息时,它会覆盖节点配置中定义的现有速率值。 仅当节点配置为允许消息覆盖配置的默认速率间隔时,此选项才适用。</dd>
<dt class="optional">reset</dt>
<dd>如果接收到的消息将此属性设置为任何值,则将清空该节点保留的所有的未发送消息。</dd>
<dt class="optional">flush</dt>
<dd>如果接收到的消息的此属性设置为任何值,则将立即发送该节点保留的所有未发送消息。</dd>
<dd>如果收到的消息将此属性设置为数值,则将立即释放该多条消息。 如果设置为任何其他类型(例如布尔值),则立即发送节点持有的所有未完成的消息。</dd>
<dt class="optional">toFront</dt>
<dd>在速率限制模式下,如果收到的消息将此属性设置为布尔值<code>true</code>,则该消息将被推送到队列的前面,然后将被释放。 这可以与 <code>msg.flush=1</code> 结合使用以立即重新发送。
</dd>
</dl>
<h3>详细</h3>
<p>当配置为延迟发送消息时,延迟间隔可以是一个固定值,一个范围内的随机值或为每个消息动态设置。</p>
<p>当配置为对消息进行限制时,它们的传递将分散在配置的时间段内。状态显示队列中当前的消息数。可以选择在中间消息到达时丢弃它们。</p>
<p>速率限制可以应用于所有消息,也可以根据<code>msg.topic</code>的值来进行分组。分组时,中间消息将会被自动删除。在每个时间间隔,节点可以释放所有主题的最新消息,或释放下一个主题的最新消息。</p>
<p>当配置为延迟消息时,延迟间隔可以是固定值、一定范围内的随机值或为每个消息动态设置。 每条消息都会根据其到达时间独立于任何其他消息进行延迟。 </p>
<p>当配置为限制消息速率时,它们的传递将分布在配置的时间段内。 状态显示当前队列中的消息数。 它可以选择在中间消息到达时丢弃它们。</p>
<p>如果设置为允许覆盖速率,则新速率将立即应用,并将一直有效,直到再次更改、重置节点或重新启动流程。</p>
<p>速率限制可以应用于所有消息,或根据其 <code>msg.topic</code> 值对它们进行分组。 分组时,中间消息会自动丢弃。 在每个时间间隔,节点可以发布所有主题的最新消息,或者发布下一个主题的最新消息。 </p>
<p><b>注意</b>:在速率限制模式下,可以通过 <i>settings.js</i> 文件中的属性设置最大队列深度。 例如<code>nodeMessageBufferMaxLength1000</code></p>
</script>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="trigger">
<script type="text/html" data-help-name="trigger">
<p>触发后,将会发送一条消息。如果被拓展或重置,则可以选择发送第二条消息。</p>
<h3>输入</h3>
@ -26,11 +26,12 @@
</dl>
<h3>详细</h3>
<p>该节点可用于在流中创建一个超时。 默认情况下,当它收到一条消息时,它将发送一条带有<code>1</code>有效荷载的消息。然后它将等待250毫秒再发送第二条消息其有效荷载<code>0</code>。这可以用于使连接到Raspberry Pi GPIO引脚的LED闪烁等例子上。</p>
<p>该节点可用于在流中创建一个超时。 默认情况下,当它收到一条消息时,它将发送一条带有<code>1</code><code>payload</code>的消息。然后它将等待250毫秒再发送第二条消息<code>payload</code><code>0</code>。这可以用于使连接到树莓派 GPIO引脚的LED闪烁等例子上。</p>
<p>可以将发送的每个消息的有效荷载配置为各种值,包括不发送任何内容的选项。例如,将初始消息设置为<i>nothing</i>,然后选择将计时器与每个收到的消息一起扩展的选项,则该节点将充当看门狗计时器;仅在设置的间隔内未收到任何消息时才发送消息。</p>
<p>如果设置为<i>字符串</i>类型,则该节点支持<i>mustache</i>模板语法。</p>
<p>如果节点中启用了该选项,则可以通过<code> msg.delay </code>覆盖发送消息之间的延迟。该值必须以毫秒为单位。</p>
<p>如果节点收到具有<code>reset</code>属性或与节点中配置的匹配的<code>有效荷载</code>的消息,则将清除当前正在进行的任何超时或重复,并且不会触发任何消息。</p>
<p>如果节点收到具有<code>reset</code>属性或与节点中配置的匹配的<code>payload</code>的消息,则将清除当前正在进行的任何超时或重复,并且不会触发任何消息。</p>
<p>可以将节点配置为以固定的时间间隔重新发送消息,直到被收到的消息重置为止。</p>
<p>(可选)可以将节点配置为将带有<code>msg.topic</code>的消息视为独立的流。</p>
<p>或者,可以将节点配置为将消息视为单独的流,并使用 msg 属性来标识每个流。默认 <code>msg.topic</code></p>
<p>状态指示节点当前处于活动状态。 如果使用多个流,则状态指示所持有的流的数量。</p>
</script>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="exec">
<script type="text/html" data-help-name="exec">
<p>运行系统命令并返回其输出。</p>
<p>可以将节点配置为等待命令完成,或者在命令生成时发送其输出。</p>
<p>运行的命令可以在节点中配置,也可以由收到的消息提供。</p>
@ -31,7 +31,7 @@
<h3>输出</h3>
<ol class="node-ports">
<li>标准输出(stdout)
<li>标准输出
<dl class="message-properties">
<dt>payload <span class="property-type">字符串</span></dt>
<dd>命令的标准输出。</dd>
@ -41,7 +41,7 @@
<dd>仅执行模式一个返回代码对象的副本在端口3上也可用</dd>
</dl>
</li>
<li>标准error输出(stderr)
<li>标准错误
<dl class="message-properties">
<dt>payload <span class="property-type">字符串</span></dt>
<dd>命令的标准错误输出。</dd>
@ -66,6 +66,7 @@
<p>带空格的命令或参数应该用引号引起来:<code>“这是一个参数”</code></p>
<p>返回的<code>有效荷载</code>通常是<i>字符串</i>类型除非检测到非UTF8字符在这种情况下它会是<i>buffer</i>类型。</p>
<p>节点处于活动状态时该节点的状态图标和PID将可见。对此更改可以通过<code>Status</code>节点读取。</p>
<p><code>隐藏控制台</code> 选项将隐藏通常在Windows系统上显示的进程控制台。</p>
<h4>杀死进程</h4>
<p>发送<code>msg.kill</code>将杀死一个活动进程。<code>msg.kill</code>应该是包含要发送的信号类型的字符串,例如<code>SIGINT</code><code>SIGQUIT</code><code>SIGHUP</code>。如果设置为空字符串,则默认为<code>SIGTERM</code></p>
<p>如果节点有多个进程在运行,则还必须设置<code>msg.pid</code>并设置要杀死的PID的值。</p>

View File

@ -0,0 +1,30 @@
<script type="text/html" data-help-name="rbe">
<p>异常报告 (RBE) 节点 - 仅在负载发生更改时才传递数据。
它还可以阻止除外,或者忽略值更改指定量(死区和窄带模式)。</p>
<h3>输入</h3>
<dl class="message-properties">
<dt>payload
<span class="property-type">数值|字符串| (object)</span>
</dt>
<dd>RBE 模式将接受数字、字符串和简单对象。 其他模式必须提供可解析的数字。</dd>
<dt class="optional">topic <span class="property-type">字符串</span>
</dt>
<dd>如果指定,该函数将在每个主题的基础上运行。 该属性可以通过配置来设置。</dd>
<dt class="optional">reset<span class="property-type">任意</span></dt>
<dd>如果设置,则清除指定 msg。topic 的存储值;如果未指定 msg。topic则清除所有主题。</dd>
</dl>
<h3>输出</h3>
<dl class="message-properties">
<dt>payload
<span class="property-type">与输入一致</span>
</dt>
<dd>如果触发,输出将与输入相同。</dd>
</dl>
<h3>详细</h3>
<p>在 RBE 模式下,此节点将阻塞,直到 <code>msg。payload</code>(或选定的属性)值与前一个值不同。 如果需要,它可以忽略初始值,以免在开始时发送任何内容。</p>
<p><a href="https://en.wikipedia.org/wiki/Deadband" target="_blank">死区</a>模式将阻止传入值<i>除非</i>其变化更大或 大于等于+ 与先前值的带隙。</p>
<p>如果输入值的变化大于或大于等于 +/-,窄带模式将阻止输入值。 与先前值的带隙距离。 例如,它对于忽略故障传感器中的异常值非常有用。</p>
<p>在死区和窄带模式下,传入值都必须包含可解析的数字,并且都支持 % - 仅当/除非输入与原始值的差异超过 x% 时才发送。</p>
<p>死区和窄带都允许与先前的有效输出值进行比较,从而忽略任何超出范围的值,或与先前的输入值进行比较,这会重置设定点,从而允许逐渐漂移(死区)或阶跃变化( 窄带)。</p>
<p><b>注意:</b>这在每个 <code>msg。topic</code> 的基础上工作,尽管如果需要的话可以更改为另一个属性。 这意味着单个过滤器节点可以同时处理多个不同的主题。</p>
</script>

View File

@ -32,6 +32,7 @@
},
"inject": {
"inject": "注入",
"injectNow": "立即注入",
"repeat": "重复 = __repeat__",
"crontab": "crontab = __crontab__",
"stopped": "停止",
@ -44,7 +45,7 @@
"str": "字符串",
"num": "数值",
"bool": "布尔值",
"json": "JSON对象",
"json": "对象",
"bin": "buffer",
"date": "时间戳",
"env": "环境变量",
@ -84,9 +85,12 @@
"errors": {
"failed": "注入失败, 请查看日志",
"toolong": "周期过长",
"invalid-expr": "无效的JSONata表达式 __error__"
},
"tip": "<b>注意:</b> \"指定时间段周期性执行\" 和 \"指定时间\" 会使用cron系统.<br/> 详情查看信息页."
"invalid-expr": "无效的JSONata表达式 __error__",
"invalid-jsonata": "__prop__: 无效的属性表达式: __error__",
"invalid-prop": "__prop__: 无效的属性表达式: __error__",
"invalid-json": "__prop__: 无效的 JSON 数据: __error__",
"invalid-repeat": "重复值无效"
}
},
"catch": {
"catch": "捕获:所有节点",
@ -115,16 +119,20 @@
}
},
"complete": {
"completeNodes": "完成: __number__ 个节点"
"completeNodes": "完成: __number__ 个节点",
"errors": {
"scopeUndefined": "范围未定义"
}
},
"debug": {
"output": "输出",
"status": "状态",
"none": "None",
"none": "",
"invalid-exp": "无效的JSONata表达式: __error__",
"msgprop": "信息属性",
"msgobj": "与调试输出相同",
"autostatus": "自动的",
"messageCount": "消息数",
"to": "目标",
"debtab": "调试窗口",
"tabcon": "调试窗口及控制台",
@ -132,6 +140,7 @@
"toConsole": "控制台",
"toStatus": "节点状态 (32位字符)",
"severity": "级别",
"node": "节点",
"notification": {
"activated": "成功激活: __label__",
"deactivated": "成功取消: __label__"
@ -144,11 +153,16 @@
"filterCurrent": "当前流程",
"debugNodes": "调试节点",
"clearLog": "清空日志",
"clearFilteredLog": "清除筛选的消息",
"filterLog": "过滤日志",
"openWindow": "在新窗口打开",
"copyPath": "复制路径",
"copyPayload": "复制值",
"pinPath": "固定展开"
"pinPath": "固定展开",
"selectAll": "全选",
"selectNone": "全不选",
"all": "所有",
"filtered": "筛选"
},
"messageMenu": {
"collapseAll": "折叠所有路径",
@ -159,7 +173,21 @@
},
"link": {
"linkIn": "输入",
"linkOut": "输出"
"linkOut": "输出",
"linkCall": "链接调用",
"linkOutReturn": "链接返回",
"outMode": "模式",
"sendToAll": "发送到所有连接的链接节点",
"returnToCaller": "返回调用链接节点",
"timeout": "超时",
"linkCallType": "链接类型",
"staticLinkCall": "固定目标",
"dynamicLinkCall": "动态目标 (msg.target)",
"dynamicLinkLabel": "动态",
"errors": {
"missingReturn": "缺少返回节点信息",
"linkUndefined": "链接未定义"
}
},
"tls": {
"tls": "TLS设置",
@ -171,22 +199,26 @@
"passphrase": "密码",
"ca": "CA证书",
"verify-server-cert": "验证服务器证书",
"servername": "服务器名"
"servername": "服务器名",
"alpnprotocol": "ALPN协议"
},
"placeholder": {
"cert": "证书路径 (PEM 格式)",
"key": "私钥路径 (PEM 格式)",
"ca": "CA证书路径 (PEM 格式)",
"passphrase": "私钥密码 (可选)",
"servername": "用于SNI"
"servername": "用于SNI",
"alpnprotocol": "与 ALPN 一起使用"
},
"error": {
"missing-file": "未提供证书/密钥文件"
"missing-file": "未提供证书/密钥文件",
"invalid-cert": "未指定证书",
"invalid-key": "未指定私钥"
}
},
"exec": {
"exec": "执行",
"spawn": "spawn",
"spawn": "生成",
"label": {
"command": "命令",
"append": "追加",
@ -196,32 +228,49 @@
"seconds": "秒",
"stdout": "标准输出",
"stderr": "标准错误输出",
"retcode": "返回码"
"retcode": "返回码",
"winHide": "隐藏控制台"
},
"placeholder": {
"extraparams": "额外的输入参数"
},
"opt": {
"exec": "当命令完成时 - exec模式",
"spawn": "当命令进行时 - spawn模式"
"exec": "当命令完成时 - 执行模式",
"spawn": "当命令进行时 - 生成模式"
},
"oldrc": "使用旧式输出 (兼容模式)"
},
"function": {
"function": "函数",
"label": {
"setup": "设置",
"function": "函数",
"initialize": "设置",
"finalize": "关闭",
"outputs": "输出"
"outputs": "输出",
"modules": "模块"
},
"text": {
"initialize": "// 部署节点后,此处添加的代码将运行一次。 \n",
"finalize": "// 节点正在停止或重新部署时,将运行此处添加的代码。 \n"
},
"require": {
"var": "变量",
"module": "模块",
"moduleName": "模块名",
"importAs": "导入为"
},
"error": {
"externalModuleNotAllowed": "功能节点不允许加载外部模块",
"moduleNotAllowed": "不允许使用模块 __module__",
"externalModuleLoadError": "功能节点加载外部模块失败s",
"moduleLoadError": "无法加载__module__模块 : __error__",
"moduleNameError": "无效的模块变量名称: __name__",
"moduleNameReserved": "保留变量名称: __name__",
"inputListener": "无法在函数中监听对'注入'事件",
"non-message-returned": "函数节点尝试返回类型为 __type__ 的信息"
"non-message-returned": "函数节点尝试返回类型为 __type__ 的信息",
"invalid-js": "JavaScript 代码错误",
"missing-module": "__module__模块丢失"
}
},
"template": {
@ -232,10 +281,10 @@
"format": "语法高亮",
"syntax": "格式",
"output": "输出为",
"mustache": "Mustache 模版",
"mustache": "Mustache模版",
"plain": "纯文本",
"json": "JSON",
"yaml": "YAML",
"json": "解析的JSON",
"yaml": "解析的YAML",
"none": "无"
},
"templatevalue": "这是有效载荷: {{payload}} !"
@ -262,16 +311,22 @@
"days": "天",
"day": "天",
"between": "介于",
"and": "",
"and": "",
"rate": "速度",
"msgper": "信息 每",
"queuemsg": "队列中间消息",
"dropmsg": "不传输中间信息",
"sendmsg": "在第二个输出上发送中间消息",
"allowrate": "允许 msg.rate以毫秒为单位覆盖速率",
"label": {
"delay": "延迟",
"variable": "变量",
"limit": "限制",
"limitTopic": "限制主题",
"random": "随机",
"rate": "速度",
"random-first": "第一个随机值",
"random-last": "最后一个随机值",
"units": {
"second": {
"plural": "秒",
@ -290,6 +345,14 @@
"singular": "天"
}
}
},
"errors": {
"too-many": "延迟节点中挂起的消息太多",
"invalid-timeout": "无效的延迟值",
"invalid-rate": "无效的速度值",
"invalid-rate-unit": "无效的速度单位值",
"invalid-random-first": "第一个随机值无效",
"invalid-random-last": "最后一个随机值无效"
}
},
"trigger": {
@ -326,7 +389,9 @@
"reset": "重置触发节点条件 如果:",
"resetMessage": "msg.reset已设置",
"resetPayload": "msg.payload等于",
"resetprompt": "可选填"
"resetprompt": "可选填",
"duration": "期间",
"topic": "主题"
}
},
"comment": {
@ -349,10 +414,45 @@
"port": "端口",
"keepalive": "Keepalive计时(秒)",
"cleansession": "使用新的会话",
"cleanstart": "使用干净启动",
"use-tls": "使用 TLS",
"tls-config": "TLS 设置",
"verify-server-cert": "验证服务器证书",
"compatmode": "使用旧式MQTT 3.1支持"
"compatmode": "使用旧式MQTT 3.1支持",
"userProperties": "用户属性",
"subscriptionIdentifier": "订阅 ID",
"flags": "标志",
"nl": "不接收该客户端发布的消息",
"rap": "保留原始发布的标志",
"rh": "保留消息处理",
"rh0": "发送保留消息",
"rh1": "仅发送新订阅",
"rh2": "不发送",
"responseTopic": "回复主题",
"contentType": "内容类型",
"correlationData": "相关数据",
"expiry": "过期(秒)",
"sessionExpiry": "会话过期(秒)",
"topicAlias": "别名",
"payloadFormatIndicator": "格式",
"payloadFormatIndicatorFalse": "未指定的字节(默认)",
"payloadFormatIndicatorTrue": "UTF-8 编码的有效负载",
"protocolVersion": "协议",
"protocolVersion3": "MQTT V3.1 (旧版)",
"protocolVersion4": "MQTT V3.1.1",
"protocolVersion5": "MQTT V5",
"topicAliasMaximum": "别名最大值",
"maximumPacketSize": "最大数据包大小",
"receiveMaximum": "接收最大值",
"session": "会话",
"delay": "延迟",
"action": "行动",
"staticTopic": "订阅单个主题",
"dynamicTopic": "动态订阅",
"auto-connect": "自动连接",
"auto-mode-depreciated": "此选项已弃用。请使用新的自动检测模式。",
"none": "无",
"other": "其他"
},
"sections-label": {
"birth-message": "连接时发送的消息(出生消息)",
@ -374,7 +474,8 @@
"state": {
"connected": "已连接到服务端: __broker__",
"disconnected": "已断开与服务端 __broker__ 的链接",
"connect-failed": "与服务端 __broker__ 的连接失败"
"connect-failed": "与服务端 __broker__ 的连接失败",
"broker-disconnected": "代理__broker__ 已断开客户端连接: __reasonCode__ __reasonString__"
},
"retain": "保留",
"output": {
@ -394,7 +495,11 @@
"invalid-topic": "主题无效",
"nonclean-missingclientid": "客户端ID未设定使用新会话",
"invalid-json-string": "无效的JSON字符串",
"invalid-json-parse": "无法解析JSON字符串"
"invalid-json-parse": "无法解析JSON字符串",
"invalid-action-action": "指定的操作无效",
"invalid-action-alreadyconnected": "连接前断开与代理的连接",
"invalid-action-badsubscription": "msg.topic 丢失或无效",
"invalid-client-id": "缺少客户端 ID"
}
},
"httpin": {
@ -407,7 +512,11 @@
"status": "状态码",
"headers": "头",
"other": "其他",
"paytoqs": "将msg.payload附加为查询字符串参数",
"paytoqs":{
"ignore": "忽略",
"query": "附加到查询字符串参数",
"body": "作为请求正文发送"
},
"utf8String": "UTF8格式的字符串",
"binaryBuffer": "二进制buffer",
"jsonObject": "解析的JSON对象",
@ -426,6 +535,7 @@
"proxy-config": "代理服务器设置",
"use-proxyauth": "使用代理身份验证",
"noproxy-hosts": "代理例外",
"senderr": "只向 Catch 节点发送非 2xx 响应",
"utf8": "UTF-8 字符串",
"binary": "二进制数据",
"json": "JSON对象",
@ -445,11 +555,13 @@
"invalid-transport": "非HTTP传输请求",
"timeout-isnan": "超时值不是有效数字,忽略",
"timeout-isnegative": "超时值为负,忽略",
"invalid-payload": "无效的有效载荷"
"invalid-payload": "无效的有效载荷",
"invalid-url": "无效的网址"
},
"status": {
"requesting": "请求中"
}
},
"insecureHTTPParser": "禁用严格的 HTTP 解析"
},
"websocket": {
"label": {
@ -463,6 +575,7 @@
"sendrec": "发送/接受",
"payload": "有效载荷",
"message": "完整信息",
"sendheartbeat": "发送心跳",
"tip": {
"path1": "默认情况下,<code>payload</code>将包含要发送或从Websocket接收的数据。侦听器可以配置为以JSON格式的字符串发送或接收整个消息对象.",
"path2": "这条路径将相对于 <code>__path__</code>.",
@ -477,11 +590,13 @@
"connect-error": "ws连接发生了错误: ",
"send-error": "发送时发生了错误: ",
"missing-conf": "未设置服务器",
"duplicate-path": "同一路径上不能有两个WebSocket侦听器: __path__"
"duplicate-path": "同一路径上不能有两个WebSocket侦听器: __path__",
"missing-server": "缺少服务器配置",
"missing-client": "缺少客户端配置"
}
},
"watch": {
"watch": "watch",
"watch": "监视",
"label": {
"files": "文件",
"recursive": "递归所有子文件夹"
@ -504,7 +619,10 @@
"server": "服务器",
"return": "返回",
"ms": "毫秒",
"chars": "字符"
"chars": "字符",
"close": "关闭",
"optional": "(可选)",
"reattach": "重新附加分隔符"
},
"type": {
"listen": "监听",
@ -543,7 +661,10 @@
"socket-error": "套接字连接错误来自 __host__:__port__",
"no-host": "主机地址或端口未设定",
"connect-timeout": "连接超时",
"connect-fail": "连接失败"
"connect-fail": "连接失败",
"bad-string": "转换为字符串失败",
"invalid-host": "无效主机",
"invalid-port": "无效端口"
}
},
"udp": {
@ -557,7 +678,8 @@
"send": "发送一个",
"toport": "到端口",
"address": "地址",
"decode-base64": "是否解码Base64编码的信息?"
"decode-base64": "是否解码Base64编码的信息?",
"port": "端口"
},
"placeholder": {
"interface": "可选eth0的IP地址",
@ -604,15 +726,18 @@
"port-notset": "udp: 端口未设定",
"port-invalid": "udp: 无效端口号码",
"alreadyused": "udp: 端口已被占用",
"ifnotfound": "udp: 接口 __iface__ 未发现"
"ifnotfound": "udp: 接口 __iface__ 未发现",
"invalid-group": "无效的多播组"
}
},
"switch": {
"switch": "switch",
"switch": "交换",
"label": {
"property": "属性",
"rule": "规则",
"repair": "重建信息队列"
"repair": "重建信息队列",
"value-rules": "价值规则",
"sequence-rules": "顺序规则"
},
"previous": "先前值",
"and": "与",
@ -651,13 +776,15 @@
"delete": "删除 __property__",
"move": "移动 __property__",
"changeCount": "修改: __count__ 条规矩",
"regex": "使用正则表达式"
"regex": "使用正则表达式",
"deepCopy": "深复制值"
},
"action": {
"set": "设定",
"change": "修改",
"delete": "删除",
"move": "转移",
"toValue": "到...值",
"to": "到",
"search": "搜索",
"replace": "替代为"
@ -666,18 +793,24 @@
"invalid-from": "无效的'from'属性: __error__",
"invalid-json": "无效的'to'JSON 属性",
"invalid-expr": "无效的JSONata表达式: __error__",
"no-override": "无法设置非对象类型的属性: __property__"
"no-override": "无法设置非对象类型的属性: __property__",
"invalid-prop": "无效的属性表达式: __property__",
"invalid-json-data": "无效的 JSON 数据: __error__"
}
},
"range": {
"range": "range",
"range": "范围",
"label": {
"action": "操作",
"inputrange": "映射输入数据",
"resultrange": "至目标范围",
"from": "从",
"to": "到",
"roundresult": "取最接近整数?"
"roundresult": "取最接近整数?",
"minin": "输入来自",
"maxin": "输入到",
"minout": "目标来自",
"maxout": "目标到"
},
"placeholder": {
"min": "比如: 0",
@ -747,7 +880,7 @@
"label": {
"select": "选取项",
"output": "输出",
"in": "in"
"in": ""
},
"output": {
"html": "选定元素的html内容",
@ -799,7 +932,10 @@
},
"file": {
"label": {
"write": "写入文件",
"read": "读取文件",
"filename": "文件名",
"path": "路径",
"action": "行为",
"addnewline": "向每个有效载荷添加换行符(\\n?",
"createdir": "创建目录(如果不存在)?",
@ -810,7 +946,10 @@
"encoding": "编码",
"deletelabel": "删除 __file__",
"utf8String": "UTF8字符串",
"binaryBuffer": "二进制buffer"
"utf8String_plural": "UTF8字符串",
"binaryBuffer": "二进制buffer",
"binaryBuffer_plural": "二进制buffers",
"allProps": "在每个消息中包含所有现有属性"
},
"action": {
"append": "追加至文件",
@ -830,8 +969,9 @@
},
"encoding": {
"none": "默认",
"native": "Native",
"unicode": "Unicode",
"setbymsg": "通过 msg.encoding 设置",
"native": "本国的",
"unicode": "Unicode编码",
"japanese": "日本",
"chinese": "中国",
"korean": "韩国",
@ -854,7 +994,7 @@
"tip": "提示: 文件名应该是绝对路径否则它将相对于Node-RED进程的工作目录。"
},
"split": {
"split": "split",
"split": "拆分",
"intro": "基于以下类型拆分<code>msg.payload</code>:",
"object": "<b>对象</b>",
"objectSend": "每个键值对作为单个消息发送",
@ -896,22 +1036,23 @@
"complete": "在收到存在<code>msg.complete</code>的消息后",
"tip": "此模式假定此节点与<i>split</i>相连, 或者接收到的消息有正确配置的<code>msg.parts</code>属性.",
"too-many": "join节点中有太多待定信息",
"merge": {
"message-prop": "消息属性",
"merge": {
"topics-label": "合并主题",
"topics": "主题",
"topic": "主题",
"on-change": "当收到一个新主题时发送已合并信息"
},
"reduce": {
"exp": "Reduce表达式",
"exp-value": "exp",
"exp": "缩减表达式",
"exp-value": "表达式",
"init": "初始值",
"right": "反向求值(从后往前)",
"fixup": "Fix-up exp"
"fixup": "改进表达式"
},
"errors": {
"invalid-expr": "无效的JSONata表达式: __error__",
"invalid-type": "Cannot join __error__ to buffer"
"invalid-type": "无法将 __error__ 连接到缓冲区"
}
},
"sort": {
@ -929,7 +1070,7 @@
"clear": "清空排序节点中的待定信息"
},
"batch": {
"batch": "batch",
"batch": "批量",
"mode": {
"label": "模式",
"num-msgs": "按指定数量分组",
@ -953,6 +1094,41 @@
},
"too-many": "batch节点中有太多待定信息",
"unexpected": "未知模式",
"no-parts": "信息中没有parts属性"
"no-parts": "信息中没有parts属性",
"error": {
"invalid-count": "无效计数",
"invalid-overlap": "无效重叠",
"invalid-interval": "无效间隔"
}
},
"rbe": {
"rbe": "筛选",
"label": {
"func": "模式",
"init": "发送初始值",
"start": "起始值",
"name": "名字",
"septopics": "为每个单独应用模式",
"gap": "值变化",
"property": "属性",
"topic": "主题"
},
"placeholder": {
"bandgap": "例如 10 或 5%",
"start": "留空以使用收到的第一个数据"
},
"opts": {
"rbe": "阻止除非值改变",
"rbei": "阻止除非值改变忽略初始值b",
"deadband": "阻止除非值变化大于",
"deadbandEq": "阻止除非值变化大于或等于",
"narrowband": "如果值变化大于则阻止",
"narrowbandEq": "如果值变化大于或等于则阻止",
"in": "与上次输入值相比",
"out": "与最后一个有效输出值相比"
},
"warn": {
"nonumber": "在有效负载中找不到号码"
}
}
}

View File

@ -14,6 +14,6 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="tls-config">
<script type="text/html" data-help-name="tls-config">
<p>TLS连接的配置选项。</p>
</script>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="http proxy">
<script type="text/html" data-help-name="http proxy">
<p>HTTP代理的配置选项。</p>
<h3>详细</h3>

View File

@ -11,7 +11,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="mqtt in">
<script type="text/html" data-help-name="mqtt in">
<p>连接到MQTT代理并订阅来自指定主题的消息。</p>
<h3>输出</h3>
<dl class="message-properties">
@ -23,14 +23,51 @@
<dd>QoS服务质量0, 最多一次; 1, 最少一次; 2, 只一次。</dd>
<dt>retain <span class="property-type">布尔值</span></dt>
<dd>值为true时表示消息已保留且可能是旧的。</dd>
<dt class="optional">responseTopic <span class="property-type">字符串</span></dt>
<dd><b>MQTTv5</b>: 消息的 MQTT 响应主题</dd>
<dt class="optional">correlationData <span class="property-type">Buffer</span></dt>
<dd><b>MQTTv5</b>: 消息的关联数据</dd>
<dt class="optional">contentType <span class="property-type">字符串</span></dt>
<dd><b>MQTTv5</b>: 有效负载的内容类型</dd>
<dt class="optional">userProperties <span class="property-type">object</span></dt>
<dd><b>MQTTv5</b>: 消息的任何用户属性</dd>
<dt class="optional">messageExpiryInterval <span class="property-type">数值</span></dt>
<dd><b>MQTTv5</b>: 消息的过期时间,以秒为单位</dd>
</dl>
<h3>详细</h3>
<p>订阅主题可以包括MQTT通配符+:一个级别,#:多个级别)。</p>
<p>使用该节点您首先需要建立与MQTT代理的连接。通过单击铅笔图标来进行配置。</p>
<p>如有需要几个MQTT节点输入或输出可以共享相同的代理连接。</p>
<p>如有需要几个MQTT节点输入或输出可以共享相同的代理连接。</p>
<h4>动态订阅</h4>
可以将节点配置为动态控制 MQTT 连接及其订阅。 启用后,节点将有一个输入,并且可以通过向其传递消息来控制。
<h3>输入</h3>
<p>这些仅在节点配置为动态订阅时适用。</p>
<dl class="message-properties">
<dt>action <span class="property-type">字符串</span></dt>
<dd>节点应执行的操作的名称。 可用的操作有: <code>"connect"</code>,
<code>"disconnect"</code>, <code>"subscribe"</code><code>"unsubscribe"</code>.</dd>
<dt class="optional">topic <span class="property-type">字符串|object|数组</span></dt>
<dd>对于<code>"subscribe"</code><code>"unsubscribe"</code> 操作,该属性提供了主题。 它可以设置为:<ul>
<li>包含主题过滤器的字符串</li>
<li>包含<code>topic</code><code>qos</code>属性的对象</li>
<li>用于处理多个主题的字符串或对象数组</li>
</ul>
</dd>
<dt class="optional">broker <span class="property-type">broker</span> </dt>
<dd>对于<code>"connect"</code> 操作,此属性可以覆盖任何单独的代理配置设置,包括: <ul>
<li><code>broker</code></li>
<li><code>port</code></li>
<li><code>url</code> - 覆盖代理/端口以提供完整的连接url</li>
<li><code>username</code></li>
<li><code>password</code></li>
</ul>
<p>如果设置了此属性并且代理已连接,则会记录错误,除非它设置了 <code>force</code> 属性 - 在这种情况下,它将与代理断开连接,应用新设置并重新连接。</p>
</dd>
</dl>
</script>
<script type="text/x-red" data-help-name="mqtt out">
<script type="text/html" data-help-name="mqtt out">
<p>连接到MQTT代理并发布消息。</p>
<h3>输入</h3>
<dl class="message-properties">
@ -42,9 +79,20 @@
<dt class="optional">qos <span class="property-type">number</span></dt>
<dd>QoS服务质量0, 最多一次; 1, 最少一次; 2, 只一次。默认值为0。</dd>
<dt class="optional">retain <span class="property-type">布尔值</span></dt>
<dd>设置为<code>true</code>来将消息保留在代理上。默认值为<code>false</code></dd>
<dd>设置为true来将消息保留在代理上。默认值为false。</dd>
<dt class="optional">responseTopic <span class="property-type">字符串</span></dt>
<dd><b>MQTTv5</b>: 消息的 MQTT 响应主题</dd>
<dt class="optional">correlationData <span class="property-type">Buffer</span></dt>
<dd><b>MQTTv5</b>: 消息的关联数据</dd>
<dt class="optional">contentType <span class="property-type">字符串</span></dt>
<dd><b>MQTTv5</b>: 有效负载的内容类型</dd>
<dt class="optional">userProperties <span class="property-type">object</span></dt>
<dd><b>MQTTv5</b>: 消息的任何用户属性</dd>
<dt class="optional">messageExpiryInterval <span class="property-type">数值</span></dt>
<dd><b>MQTTv5</b>: 消息的过期时间,以秒为单位</dd>
<dt class="optional">topicAlias <span class="property-type">数值</span></dt>
<dd><b>MQTTv5</b>: 要使用的 MQTT 主题别名</dd>
</dl>
<h3>详细</h3>
<p><code>msg.payload</code>用作已发布消息的有效载荷。如果包含Object则会在发送之前将其转换为JSON字符串。如果它包含二进制buffer则消息将按原样发布。</p>
@ -52,9 +100,28 @@
<p>同样可以在节点中配置QoS和保留值或者如果保留空白则分别由<code>msg.qos</code><code>msg.retain</code>设置。要清除先前存储在代理中的主题,请设置保留标志并向该主题发布空消息。</p>
<p>该节点需要与要配置的MQTT代理的连接。通过单击铅笔图标进行配置。</p>
<p>如果需要几个MQTT节点输入或输出可以共享相同的代理连接。</p>
<h4>动态控制</h4>
节点共享的连接可以动态控制。 如果节点收到以下控制消息之一,它也不会发布消息负载。
<h3>输入</h3>
<dl class="message-properties">
<dt>action <span class="property-type">字符串</span></dt>
<dd>节点应执行的操作的名称。 可用的操作有:<code>"connect"</code><code>"disconnect"</code>.</dd>
<dt class="optional">broker <span class="property-type">broker</span> </dt>
<dd>对于<code>"connect"</code>操作, 此属性可以覆盖任何单独的代理配置设置,包括: <ul>
<li><code>broker</code></li>
<li><code>port</code></li>
<li><code>url</code> - 覆盖代理/端口以提供完整的连接url</li>
<li><code>username</code></li>
<li><code>password</code></li>
</ul>
<p>如果设置了此属性并且代理已连接,则会记录错误,除非它设置了 <code>force</code> 属性 - 在这种情况下,它将与代理断开连接,应用新设置并重新连接。</p>
</dd>
</dl>
</script>
<script type="text/x-red" data-help-name="mqtt-broker">
<script type="text/html" data-help-name="mqtt-broker">
<p>与MQTT代理的连接设置。</p>
<p>创建与代理的连接设置。可以在<code>MQTT In</code><code>MQTT Out</code>节点中重复利用这些设置。</p>
<p>如果未为该节点设置客户端ID并且设置了会话初始化则将生成一个随机客户端ID。设置客户端ID时请确保它对于连接目标处的代理是唯一的。</p>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="http in">
<script type="text/html" data-help-name="http in">
<p>创建用于创建Web服务的HTTP端点。</p>
<h3>输出</h3>
<dl class="message-properties">
@ -41,7 +41,7 @@
<p><b>注意:</b>该节点不发送对请求的任何响应。该流必须包含HTTP响应节点才能完成请求。</p>
</script>
<script type="text/x-red" data-help-name="http response">
<script type="text/html" data-help-name="http response">
<p>将响应发送回从HTTP输入节点接收的请求。</p>
<h3>输入</h3>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="http request">
<script type="text/html" data-help-name="http request">
<p>发送HTTP请求并返回响应。</p>
<h3>输入</h3>

View File

@ -14,22 +14,22 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="websocket in">
<script type="text/html" data-help-name="websocket in">
<p>WebSocket输入节点。</p>
<p>默认情况下从WebSocket接收的数据将位于<code>msg.payload</code>中。可以将套接字配置为期望格式正确的JSON字符串在这种情况下它将解析JSON并将结果对象作为整个消息发送。</p>
</script>
<script type="text/x-red" data-help-name="websocket out">
<script type="text/html" data-help-name="websocket out">
<p>WebSocket输出节点。</p>
<p>默认情况下,<code>msg.payload</code>将通过WebSocket发送。可以将套接字配置为将整个<code>msg</code>对象编码为JSON字符串然后通过WebSocket发送。</p>
<p>如果到达此节点的消息是从WebSocket In节点开始的则该消息将发送回触发流程的客户端。否则消息将广播给所有连接的客户端。</p>
<p>如果要广播从“WebSocket输入”节点开始的消息则可以应该删除流中的<code>msg._session</code>属性。</p>
</script>
<script type="text/x-red" data-help-name="websocket-listener">
<script type="text/html" data-help-name="websocket-listener">
<p>此配置节点使用指定的路径创建WebSocket服务器端点。</p>
</script>
<script type="text/x-red" data-help-name="websocket-client">
<script type="text/html" data-help-name="websocket-client">
<p>此配置节点将WebSocket客户端连接到指定的URL。</p>
</script>

View File

@ -14,12 +14,12 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="tcp in">
<script type="text/html" data-help-name="tcp in">
<p>提供TCP输入选择。可以连接到远程TCP端口或接受传入连接。</p>
<p><b>注意:</b>在某些系统上您可能需要root或管理员权限来访问低于1024的端口。</p>
</script>
<script type="text/x-red" data-help-name="tcp out">
<script type="text/html" data-help-name="tcp out">
<p>提供TCP输出的选择。可以连接到远程TCP端口接受传入的连接或回复从TCP In节点收到的消息。</p>
<p>仅发送<code>msg.payload</code></p>
<p>如果<code>msg.payload</code>是包含二进制数据的Base64编码的字符串则Base64解码选项将导致它在发送之前先转换回二进制。</p>
@ -27,7 +27,7 @@
<p><b>注意:</b>在某些系统上您可能需要root或管理员权限来访问低于1024的端口。</p>
</script>
<script type="text/x-red" data-help-name="tcp request">
<script type="text/html" data-help-name="tcp request">
<p>一个简单的TCP请求节点。将<code>msg.payload</code>发送到服务器tcp端口并期望得到响应。</p>
<p>连接到服务器,发送“请求”并接收“响应”。 可以从固定数量的字符,与指定字符匹配的字符中选择操作,从第一个答复到达起等待指定的时间,等待数据到达,发送数据并立即取消连接而无需等待答复等操作中进行选择。</p>
<p>响应将在<code>msg.payload</code>中作为buffer输出因此您可能需要对它进行<code>.toString()</code>操作。</p>

View File

@ -14,13 +14,13 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="udp in">
<script type="text/html" data-help-name="udp in">
<p>UDP输入节点。在<code>msg.payload</code>中生成Buffer字符串或Base64编码的字符串。支持组播。</p>
<p><code>msg.ip</code><code>msg.port</code>中设置接收到的消息的IP地址和端口。</p>
<p><b>注意:</b>在某些系统上您可能需要root或管理员权限才能使用低于1024的端口或广播。</p>
</script>
<script type="text/x-red" data-help-name="udp out">
<script type="text/html" data-help-name="udp out">
<p>该节点将<code>msg.payload</code>发送到指定的UDP主机和端口。支持组播。</p>
<p>您也可以使用<code>msg.ip</code><code>msg.port</code>设置目标值,但是静态配置的值具有优先权。</p>
<p>如果选择广播则将地址设置为本地广播IP地址。或者也可以尝试使用全局广播地址255.255.255.255。</p>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="csv">
<script type="text/html" data-help-name="csv">
<p>在CSV格式的字符串及其JavaScript对象表示形式之间进行相互转换。</p>
<h3>输入</h3>
<dl class="message-properties">
@ -36,7 +36,12 @@
<h3>详细</h3>
<p>列模板可以包含列名称的有序列表。将CSV转换为对象时列名将用作属性名称。或者也可以从CSV的第一行中获取列名称。</p>
<p>转换为CSV时列模板用于标识从对象中提取的属性以及提取的顺序。</p>
<p>如果列模板为空,那么您可以使用<code>msg.columns</code>中提供的简单逗号分隔属性列表来确定提取内容以及提取顺序。
如果两者都不存在,则按顺序输出所有对象属性其中属性位于第一行。</p>
<p>如果输入是数组,则列模板仅用于有选择地生成一行列标题。</p>
<p>如果选中“解析数值”选项,则字符串数值将以数字形式返回,即: 中间值 '1,"1.5",2'。</p>
<p>如果选中“包含空字符串”选项,则结果中将返回空字符串,即: 中间值'"1","",3'。</p>
<p>如果选中“包含空值”选项,则结果中将返回空值,即。 中间值'"1",,3'。</p>
<p>只要正确设置<code>parts</code>属性,该节点就可以接受多部分输入。</p>
<p>如果输出多个消息,则将设置其<code>parts</code>属性并形成完整的消息序列。</p>
<p><b>注意:</b>列模板必须用逗号分隔,即使数据中已有了其他分隔符。</p>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="html">
<script type="text/html" data-help-name="html">
<p>使用CSS选择器从<code>msg.payload</code>中保存的html文档中提取元素。</p>
<h3>输入</h3>
<dl class="message-properties">

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="json">
<script type="text/html" data-help-name="json">
<p>在JSON字符串及其JavaScript对象表示形式之间相互转换。</p>
<h3>输入</h3>
<dl class="message-properties">

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="xml">
<script type="text/html" data-help-name="xml">
<p>在XML字符串及其JavaScript对象表示形式之间进行相互转换。</p>
<h3>输入</h3>
<dl class="message-properties">

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="yaml">
<script type="text/html" data-help-name="yaml">
<p>在YAML格式的字符串及其JavaScript对象表示形式之间相互转换。</p>
<h3>输入</h3>
<dl class="message-properties">

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="split">
<script type="text/html" data-help-name="split">
<p>将一条消息拆分为一系列消息。</p>
<h3>输入</h3>
@ -51,7 +51,7 @@
<p>在此模式下运行时,该节点将不会设置<code>msg.parts.count</code>属性,因为流中期望的消息数还是未知的。这意味着它不能在自动模式下与<b>join</b>节点一起使用。</p>
</script>
<script type="text/x-red" data-help-name="join">
<script type="text/html" data-help-name="join">
<p>将消息序列合并为一条消息.</p>
<p>共有三种模式:</p>
<dl>
@ -72,12 +72,17 @@
<li><code>count</code> - 如果已知组中的邮件总数。请参阅下面的“流媒体模式”</li>
<li><code>type</code> - 消息的类型-字符串/数组/对象/buffer</li>
<li><code>ch</code> - 对于字符串或buffer用于将消息拆分为字符串或字节数组的数据</li>
<li><code>key</code> - 对于对象,创建此消息的属性的键。可以将节点配置为也将此值复制到另一个消息属性,例如<code>msg.topic</code>/li>
<li><code>key</code> - 对于对象,创建此消息的属性的键。可以将节点配置为也将此值复制到另一个消息属性</li>
<li><code>len</code> - 使用固定长度值拆分消息时,每段子消息的长度</li>
</ul>
</dd>
<dt class="optional">complete</dt>
<dd>如果设置,则节点将以其当前状态发送其输出消息。</dd>
<dd>如果设置,节点将附加有效负载,然后以当前状态发送输出消息。
如果您不想附加有效负载,请将其从消息中删除。</dd>
<dt class="optional">reset</dt>
<dd>如果设置,节点将清除任何部分完成的消息并且不发送它。</dd>
<dt class="optional">restartTimeout</dt>
<dd>如果设置,并且节点配置了超时,则该超时将重新启动。</dd>
</dl>
<h3>详细</h3>
@ -120,6 +125,7 @@
</ul>
</dd>
<p>默认情况下,按顺序从序列的第一条消息到最后一条消息应用聚合表达式。也可以选择以相反的顺序应用聚合表达式。</p>
<p>$N 是到达的消息数 - 即使它们是相同的。</p>
</dl>
<p><b>例子:</b>给定一系列数字值,以下设置将计算平均值:
<ul>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="sort">
<script type="text/html" data-help-name="sort">
<p>对消息属性或消息序列进行排序的函数。</p>
<p>当配置为对消息属性进行排序时,节点将对指定消息属性所指向的数组数据进行排序。</p>
<p>当配置为对消息序列排序时,它将对消息重新排序。</p>

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="batch">
<script type="text/html" data-help-name="batch">
<p>根据各种规则创建消息序列。</p>
<h3>详细</h3>
<p>有三种创建消息序列的模式:</p>
@ -31,4 +31,5 @@
</dl>
<h4>储存讯息</h4>
<p>该节点将在内部缓冲消息,以便跨序列工作。运行时设置<code>nodeMessageBufferMaxLength</code>可用于限制节点将缓存多少消息。</p>
<p>如果接收到的消息设置了<code>msg.reset</code>属性,则缓冲的消息将被删除并且不会发送。</p>
</script>

View File

@ -15,11 +15,15 @@
-->
<script type="text/html" data-help-name="file">
<p><code>msg.payload</code>写入文件,添加到末尾或替换现有内容。或者,它也可以删除文件。</p>
<p><code>msg.payload</code>写入文件,添加到末尾或替换现有内容。 或者,它也可以删除文件。</p>
<h3>输入</h3>
<dl class="message-properties">
<dt class="optional">filename<span class="property-type">字符串</span></dt>
<dd>如果未在节点中配置,则此可选属性可以设置文件名。</dd>
<dd>要更新的文件名称可在节点配置中修改或作为一个信息属性修改。
默认情况下它将使用<code>msg.filename</code>但这可以在节点中自定义。
</dd>
<dt class="optional">encoding <span class="property-type">字符串</span></dt>
<dd>如果编码配置为由msg设置那么这个可选属性可以设置编码。</dt>
</dl>
<h3>输出</h3>
<p>写入完成后,输入消息将发送到输出端口。</p>
@ -36,7 +40,8 @@
<h3>输入</h3>
<dl class="message-properties">
<dt class="optional">filename<span class="property-type">字符串</span></dt>
<dd>如果未在节点配置中设置,该属性可以选择要读取的文件名。</dd>
<dd>要读取的文件的名称可以在节点配置中修改,也可以作为消息属性修改。
默认情况下它将使用<code>msg.filename</code>但这可以在节点中自定义。</dd>
</dl>
<h3>输出</h3>
<dl class="message-properties">

View File

@ -14,7 +14,7 @@
limitations under the License.
-->
<script type="text/x-red" data-help-name="watch">
<script type="text/html" data-help-name="watch">
<p>监视目录或文件中的更改。</p>
<p>您可以输入用逗号分隔的目录和/或文件的列表。您需要在所有带有空格的地方加上引号“...”。</p>
<p>在Windows上必须在任何目录名称中使用双反斜杠<code>\\</code></p>

View File

@ -1,65 +1,76 @@
{
"runtime": {
"welcome": "欢迎使用Node-RED",
"version": "__component__ 版本 __version__",
"version": "__component__ 版本: __version__",
"unsupported_version": "__component__的不受支持的版本。要求: __requires__ 找到: __version__",
"paths": {
"settings": "设置文件 : __path__",
"httpStatic": "HTTP Static : __path__"
}
},
"server": {
"loading": "加载控制板节点",
"palette-editor": {
"disabled": "控制板编辑器已禁用用户设置",
"npm-not-found": "控制板编辑器已禁用找不到npm命令",
"npm-too-old": "控制板编辑器已禁用 npm版本太旧。需要版本npm >= 3.x"
"disabled": "控制板编辑器已禁用: 用户设置",
"npm-not-found": "控制板编辑器已禁用: 找不到npm命令",
"npm-too-old": "控制板编辑器已禁用: npm版本太旧。需要版本npm >= 3.x"
},
"errors": "无法注册__count__节点类型",
"errors_plural": "无法注册__count__个节点类型",
"errors-help": "使用-v运行以获取详细信息",
"missing-modules": "缺少节点模块:",
"node-version-mismatch": "无法在此版本上加载节点模块。要求__ version__",
"missing-modules": "缺少节点模块: ",
"node-version-mismatch": "无法在此版本上加载节点模块。要求: __ version__",
"set-has-no-types": "集没有任何类型。名字: '__name__', 模块: '__module__', 文件: '__file__'",
"type-already-registered": "'__type__'已由模块__module__注册",
"removing-modules": "从配置中删除模块",
"added-types": "添加的节点类型",
"removed-types": "删除的节点类型",
"added-types": "添加的节点类型: ",
"removed-types": "删除的节点类型: ",
"install": {
"invalid": "无效的模块名称",
"installing": "安装模块__ name__版本__ version__",
"installed": "已安装的模块__ name__",
"installing": "安装模块: __ name__, 版本: __ version__",
"installed": "已安装的模块: __ name__",
"install-failed": "安装失败",
"install-failed-long": "模块__name__安装失败",
"install-failed-long": "模块__name__安装失败: ",
"install-failed-not-found": "$t(server.install.install-failed-long) 模块未发现",
"install-failed-name": "$t(server.install.install-failed-long) 模块名称无效: __name__",
"install-failed-url": "$t(server.install.install-failed-long) 无效的网址: __url__",
"post-install-error": "运行'postInstall'挂钩时出错:",
"upgrading": "更新模块: __name__ 至版本: __version__",
"upgraded": "更新模块: __name__。 重新启动Node-RED以使用新版本",
"upgrade-failed-not-found": "$t(server.install.install-failed-long) 未发现版本",
"uninstalling": "卸载模块: __name__",
"uninstall-failed": "卸载失败",
"uninstall-failed-long": "卸载模块__name__失败:",
"uninstalled": "卸载模块: __name__"
"uninstalled": "卸载模块: __name__",
"old-ext-mod-dir-warning": "\n\n---------------------------------------------------------------------\n检测到 Node-RED 1.3 外部模块目录:\n __oldDir__\n该目录不再使用。外部模块将\n重新安装在您的 Node-RED 用户目录中:\n __newDir__\n删除旧的外部模块目录以停止此消息。\n---------------------------------------------------------------------\n"
},
"deprecatedOption": "不推荐使用__old__, 请使用__new__代替",
"unable-to-listen": "无法在__listenpath__上收听",
"port-in-use": "错误: 端口正在使用中",
"uncaught-exception": "未捕获的异常",
"uncaught-exception": "未捕获的异常: ",
"admin-ui-disabled": "管理员界面已禁用",
"now-running": "服务器现在在__listenpath__上运行",
"failed-to-start": "无法启动服务器",
"failed-to-start": "无法启动服务器: ",
"headless-mode": "在headless模式下运行",
"httpadminauth-deprecated": "不建议使用httpAdminAuth。请改用adminAuth"
"httpadminauth-deprecated": "不建议使用httpAdminAuth。请改用adminAuth",
"https": {
"refresh-interval": "每__interval__小时刷新一次 https 设置",
"settings-refreshed": "服务器 https 设置已刷新",
"refresh-failed": "刷新 https 设置失败: __message__",
"nodejs-version": "httpsRefreshInterval 需要 Node.js 11 或更高版本",
"function-required": "httpsRefreshInterval 要求 https 属性是一个函数"
}
},
"api": {
"flows": {
"error-save": "保存流程错误: __message__",
"error-reload": "重载流程错误: __message__"
},
"library": {
"error-load-entry": "加载库条目'__path__'时出错__message__",
"error-save-entry": "保存库条目'__path__'时出错__ message__",
"error-load-flow": "加载流程'__path__'时出错__ message__",
"error-save-flow": "保存流'__path__'时出错__ message__"
"error-load-entry": "加载库条目'__path__'时出错: __message__",
"error-save-entry": "保存库条目'__path__'时出错: __ message__",
"error-load-flow": "加载流程'__path__'时出错: __ message__",
"error-save-flow": "保存流'__path__'时出错: __ message__"
},
"nodes": {
"enabled": "启用的节点类型:",
@ -67,30 +78,37 @@
"error-enable": "无法启用节点:"
}
},
"comms": {
"error": "通讯渠道错误__ message__",
"error-server": "通信服务器错误__ message__",
"error-send": "通讯发送错误__ message__"
"error": "通讯渠道错误: __ message__",
"error-server": "通信服务器错误: __ message__",
"error-send": "通讯发送错误: __ message__"
},
"settings": {
"user-not-available": "无法保存用户设置__ message__",
"user-not-available": "无法保存用户设置: __ message__",
"not-available": "设置不可用",
"property-read-only": "属性“ __prop__”是只读的"
"property-read-only": "属性“ __prop__”是只读的",
"readonly-mode": "运行时处于只读模式。 更改将不会被保存。"
},
"library": {
"unknownLibrary": "未知库: __library__",
"unknownType": "未知库类型: __type__",
"readOnly": "__library__库是只读的",
"failedToInit": "无法初始化__library__库: __error__",
"invalidProperty": "无效__prop__属性: '__value__'"
},
"nodes": {
"credentials": {
"error":"加载证书时出错__ message__",
"error-saving":"保存证书时出错__ message__",
"error":"加载证书时出错: __ message__",
"error-saving":"保存证书时出错: __ message__",
"not-registered": "证书类型'__type__'未注册",
"system-key-warning": "\n\n---------------------------------------------------------------------\n您的流程证书文件是使用系统生成的密钥加密的。\n\n如果系统生成的密钥由于任何原因丢失则您的证书文件将无法恢复您将必须删除它并重新输入您的证书。\n\n您应该使用您的设置文件中的'credentialSecret'选项设置自己的密钥。然后下次部署更改时Node-RED将使用选择的密钥重新加密您的证书文件。\n---------------------------------------------------------------------\n"
"system-key-warning": "\n\n---------------------------------------------------------------------\n您的流程证书文件是使用系统生成的密钥加密的。\n\n如果系统生成的密钥由于任何原因丢失, 则您的证书文件将无法恢复, 您将必须删除它并重新输入您的证书。\n\n您应该使用您的设置文件中的'credentialSecret'选项设置自己的密钥。然后, 下次部署更改时, Node-RED将使用选择的密钥重新加密您的证书文件。\n---------------------------------------------------------------------\n",
"unencrypted": "使用未加密的证书",
"encryptedNotFound": "未找到加密证书"
},
"flows": {
"safe-mode": "流程在安全模式下停止。部署开始。",
"registered-missing": "缺少注册的类型__ type__",
"error": "错误加载流程__ message__",
"registered-missing": "缺少注册的类型: __ type__",
"error": "错误加载流程: __ message__",
"starting-modified-nodes": "启动修改的节点",
"starting-modified-flows": "启动修改的流程",
"starting-flows": "启动流程",
@ -104,19 +122,21 @@
"stopped-modified-flows": "修改的流程已停止",
"stopped-flows": "流程已停止",
"stopped": "已停止",
"stopping-error": "错误停止节点__ message__",
"stopping-error": "错误停止节点: __ message__",
"updated-flows": "更新流程",
"added-flow": "流程已添加: __label__",
"updated-flow": "流程已更新: __label__",
"removed-flow": "流程已移除: __label__",
"missing-types": "等待缺少的类型被注册",
"missing-types": "等待缺少的类型被注册: ",
"missing-type-provided": " - __type__ (由npm模块__module__提供)",
"missing-type-install-1": "要安装所有缺少的模块,请运行:",
"missing-type-install-2": "在目录中"
"missing-type-install-1": "要安装所有缺少的模块, 请运行: ",
"missing-type-install-2": "在目录中: "
},
"flow": {
"unknown-type": "未知类型: __type__",
"missing-types": "缺少类型",
"error-loop": "邮件已超过最大捕获数"
"error-loop": "邮件已超过最大捕获数",
"non-message-returned": "节点尝试发送 __type__ 类型的消息"
},
"index": {
"unrecognised-id": "无法识别的ID: __id__",
@ -129,7 +149,6 @@
}
}
},
"storage": {
"index": {
"forbidden-flow-name": "禁止流程名称"
@ -140,35 +159,37 @@
"create": "创建新__type__文件",
"empty": "现有__type__文件为空",
"invalid": "现有__type__文件为无效json",
"restore": "恢复__type__文件备份__path__",
"restore-fail": "恢复__type__文件备份失败__ message__",
"fsync-fail": "将文件__path__刷新到磁盘失败__message__",
"restore": "恢复__type__文件备份: __path__",
"restore-fail": "恢复__type__文件备份失败: __ message__",
"fsync-fail": "将文件__path__刷新到磁盘失败: __message__",
"warn_name": "未设置流程文件名。 使用主机名生成名称。",
"projects": {
"changing-project": "设置活动项目__ project__",
"active-project": "活动项目__ project__",
"project-not-found": "找不到项目__ project__",
"no-active-project": "没有活动的项目:使用默认流文件",
"disabled": "项目已禁用editorTheme.projects.enabled = false",
"disabledNoFlag": "项目已禁用设置editorTheme.projects.enabled = true来启用",
"git-not-found": "项目已禁用找不到git命令",
"git-version-old": "项目已禁用不支持的git __version__。 需要的git版本为2.x",
"changing-project": "设置活动项目: __ project__",
"active-project": "活动项目: __ project__",
"projects-directory": "项目目录: __projectsDirectory__",
"project-not-found": "找不到项目: __ project__",
"no-active-project": "没有活动的项目: 使用默认流文件",
"disabled": "项目已禁用: editorTheme.projects.enabled = false",
"disabledNoFlag": "项目已禁用: 设置editorTheme.projects.enabled = true来启用",
"git-not-found": "项目已禁用: 找不到git命令",
"git-version-old": "项目已禁用: 不支持的git __version__。 需要的git版本为2.x",
"summary": "一个Node-RED项目",
"readme": "### 关于\n\n这是您项目的README.md文件。它可以帮助用户了解您的项目如何使用它以及他们可能需要知道的其他任何信息。"
"readme": "### 关于\n\n这是您项目的README.md文件。它可以帮助用户了解您的项目, 如何使用它以及他们可能需要知道的其他任何信息。"
}
}
},
"context": {
"log-store-init": "上下文储存: '__name__' [__info__]",
"error-loading-module": "加载上下文存储时出错 __message__",
"error-loading-module": "加载上下文存储时出错: __message__",
"error-loading-module2": "加载上下文存储时出错 '__module__': __message__",
"error-module-not-defined": "上下文存储库'__storage__'缺少“模块”选项",
"error-invalid-module-name": "无效的上下文存储名称'__ name__'",
"error-invalid-default-module": "无效的默认的上下文存储库 '__storage__'",
"error-invalid-module-name": "无效的上下文存储名称: '__ name__'",
"error-invalid-default-module": "无效的默认的上下文存储库: '__storage__'",
"unknown-store": "指定了未知的上下文存储库'__name__'。 使用默认存储库。",
"localfilesystem": {
"invalid-json": "上下文文件'__file__'中的 JSON 无效",
"error-circular": "上下文__scope__包含无法保留的循环引用",
"error-write": "编写上下文时出错__ message__"
"error-write": "编写上下文时出错: __ message__"
}
}
}