@huanban/rulego-editor-core 1.3.18 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +153 -2
- package/assets/images/discovery-dark.svg +1 -0
- package/assets/images/discovery.svg +1 -0
- package/assets/images/nacos-dark.svg +1 -0
- package/assets/images/nacos.svg +1 -0
- package/assets/theme-icons/ant-blue/discovery-dark.svg +1 -0
- package/assets/theme-icons/ant-blue/discovery.svg +1 -0
- package/assets/theme-icons/ant-blue/nacos-dark.svg +1 -0
- package/assets/theme-icons/ant-blue/nacos.svg +1 -0
- package/assets/theme-icons/apple/discovery-dark.svg +1 -0
- package/assets/theme-icons/apple/discovery.svg +1 -0
- package/assets/theme-icons/apple/nacos-dark.svg +1 -0
- package/assets/theme-icons/apple/nacos.svg +1 -0
- package/assets/theme-icons/colorful/discovery-dark.svg +1 -0
- package/assets/theme-icons/colorful/discovery.svg +1 -0
- package/assets/theme-icons/colorful/nacos-dark.svg +1 -0
- package/assets/theme-icons/colorful/nacos.svg +1 -0
- package/assets/theme-icons/dark/discovery-dark.svg +1 -0
- package/assets/theme-icons/dark/discovery.svg +1 -0
- package/assets/theme-icons/dark/nacos-dark.svg +1 -0
- package/assets/theme-icons/dark/nacos.svg +1 -0
- package/assets/theme-icons/default/discovery-dark.svg +1 -0
- package/assets/theme-icons/default/discovery.svg +1 -0
- package/assets/theme-icons/default/nacos-dark.svg +1 -0
- package/assets/theme-icons/default/nacos.svg +1 -0
- package/assets/theme-icons/elegant/discovery-dark.svg +1 -0
- package/assets/theme-icons/elegant/discovery.svg +1 -0
- package/assets/theme-icons/elegant/nacos-dark.svg +1 -0
- package/assets/theme-icons/elegant/nacos.svg +1 -0
- package/assets/theme-icons/github/discovery-dark.svg +1 -0
- package/assets/theme-icons/github/discovery.svg +1 -0
- package/assets/theme-icons/github/nacos-dark.svg +1 -0
- package/assets/theme-icons/github/nacos.svg +1 -0
- package/assets/theme-icons/icon-theme-manifest.json +30 -14
- package/assets/theme-icons/icon-theme-overview.svg +1599 -1287
- package/assets/theme-icons/material/discovery-dark.svg +1 -0
- package/assets/theme-icons/material/discovery.svg +1 -0
- package/assets/theme-icons/material/nacos-dark.svg +1 -0
- package/assets/theme-icons/material/nacos.svg +1 -0
- package/assets/theme-icons/modern/discovery-dark.svg +1 -0
- package/assets/theme-icons/modern/discovery.svg +1 -0
- package/assets/theme-icons/modern/nacos-dark.svg +1 -0
- package/assets/theme-icons/modern/nacos.svg +1 -0
- package/assets/theme-icons/nature/discovery-dark.svg +1 -0
- package/assets/theme-icons/nature/discovery.svg +1 -0
- package/assets/theme-icons/nature/nacos-dark.svg +1 -0
- package/assets/theme-icons/nature/nacos.svg +1 -0
- package/assets/theme-icons/tailwind/discovery-dark.svg +1 -0
- package/assets/theme-icons/tailwind/discovery.svg +1 -0
- package/assets/theme-icons/tailwind/nacos-dark.svg +1 -0
- package/assets/theme-icons/tailwind/nacos.svg +1 -0
- package/assets/theme-icons/tech/discovery-dark.svg +1 -0
- package/assets/theme-icons/tech/discovery.svg +1 -0
- package/assets/theme-icons/tech/nacos-dark.svg +1 -0
- package/assets/theme-icons/tech/nacos.svg +1 -0
- package/assets/theme-icons/vscode/discovery-dark.svg +1 -0
- package/assets/theme-icons/vscode/discovery.svg +1 -0
- package/assets/theme-icons/vscode/nacos-dark.svg +1 -0
- package/assets/theme-icons/vscode/nacos.svg +1 -0
- package/dist/ai/copilot-markdown.d.ts +40 -0
- package/dist/ai/copilot-transport.d.ts +39 -0
- package/dist/api/AIManager.d.ts +5 -4
- package/dist/api/ApiProvider.d.ts +17 -69
- package/dist/api/ComponentCatalogCache.d.ts +27 -0
- package/dist/api/DebugSocketClient.d.ts +18 -25
- package/dist/api/RuleChainAPI.d.ts +24 -145
- package/dist/api/StreamParser.d.ts +0 -10
- package/dist/api/index.d.ts +4 -14
- package/dist/api/response-utils.d.ts +4 -22
- package/dist/api/types.d.ts +44 -179
- package/dist/chunks/editor-core-code-editor-CRki2wA_.js +512 -0
- package/dist/chunks/editor-core-default-components-BjF65lar.js +9448 -0
- package/dist/chunks/editor-core-dialogs-CkFLaC8Q.js +17176 -0
- package/dist/chunks/editor-core-icons-BqeFofNA.js +668 -0
- package/dist/chunks/editor-core-json-diff-RHsPeX-w.js +199 -0
- package/dist/chunks/editor-core-locales-i6o28vm2.js +4159 -0
- package/dist/chunks/editor-core-node-patches-BJTT3TuX.js +8060 -0
- package/dist/chunks/editor-core-node-views-BOaPVdmN.js +1288 -0
- package/dist/chunks/editor-core-property-drawers-lLsBIoCa.js +8035 -0
- package/dist/chunks/editor-core-standalone-CHXk3ukc.js +11270 -0
- package/dist/chunks/editor-core-styles-C1TbLgCK.js +8841 -0
- package/dist/chunks/vendor-logicflow-core-runtime-Cp6IBEjB.js +217 -0
- package/dist/chunks/vendor-logicflow-shared-C7YynLDn.js +4 -0
- package/dist/chunks/xlsx-BopDBbWb.js +24176 -0
- package/dist/core/ActionRegistry.d.ts +47 -0
- package/dist/core/AutoLayout.d.ts +1 -48
- package/dist/core/ComponentDocService.d.ts +28 -0
- package/dist/core/ComponentRegistry.d.ts +1 -125
- package/dist/core/DataAdapter.d.ts +4 -89
- package/dist/core/DiagnosticService.d.ts +15 -0
- package/dist/core/EditorCore.d.ts +22 -212
- package/dist/core/EditorWorkspace.d.ts +111 -0
- package/dist/core/EventBus.d.ts +0 -86
- package/dist/core/ExplorerTreeStore.d.ts +43 -0
- package/dist/core/FieldCapabilityRegistry.d.ts +16 -0
- package/dist/core/FieldChangeRegistry.d.ts +48 -0
- package/dist/core/HistoryManager.d.ts +0 -123
- package/dist/core/I18nManager.d.ts +0 -120
- package/dist/core/Optimizations.d.ts +0 -14
- package/dist/core/OptionSourceRegistry.d.ts +38 -0
- package/dist/core/RuleChainChatManager.d.ts +0 -37
- package/dist/core/RuleChainValidator.d.ts +0 -79
- package/dist/core/StateStore.d.ts +4 -140
- package/dist/core/ThemeManager.d.ts +0 -141
- package/dist/core/ValidationEngine.d.ts +0 -103
- package/dist/core/component-palette.d.ts +20 -0
- package/dist/core/component-payload.d.ts +0 -9
- package/dist/core/connection-status.d.ts +77 -0
- package/dist/core/context-menu-position.d.ts +27 -0
- package/dist/core/cron-schedule.d.ts +85 -0
- package/dist/core/debug-panel.d.ts +6 -0
- package/dist/core/editor-capabilities.d.ts +95 -0
- package/dist/core/editor-dock.d.ts +100 -0
- package/dist/core/editor-panel.d.ts +68 -0
- package/dist/core/explorer-tree.d.ts +27 -0
- package/dist/core/field-protocol.d.ts +32 -0
- package/dist/core/foundation-tokens.d.ts +38 -0
- package/dist/core/graph-operations.d.ts +34 -0
- package/dist/core/hover-tools.d.ts +26 -0
- package/dist/core/index.d.ts +68 -16
- package/dist/core/infer-run-input.d.ts +11 -0
- package/dist/core/key-value-editor.d.ts +6 -0
- package/dist/core/overlay-layers.d.ts +28 -0
- package/dist/core/recent-components.d.ts +51 -0
- package/dist/core/run-guard.d.ts +7 -0
- package/dist/core/runtime-field-dictionary.d.ts +68 -0
- package/dist/core/runtime-limits.d.ts +0 -5
- package/dist/core/save-conflict.d.ts +4 -0
- package/dist/core/server-status.d.ts +34 -0
- package/dist/core/simple-array.d.ts +4 -0
- package/dist/core/table-protocol.d.ts +36 -0
- package/dist/core/table-spreadsheet.d.ts +3 -0
- package/dist/core/test-cases.d.ts +54 -0
- package/dist/core/toolbar-icons.d.ts +4 -0
- package/dist/core/topology-rules.d.ts +17 -0
- package/dist/core/virtual-window.d.ts +20 -0
- package/dist/core/workspace-tab-actions.d.ts +13 -0
- package/dist/defaults/components.d.ts +0 -9
- package/dist/defaults/index.d.ts +0 -15
- package/dist/defaults/locale-en-US.d.ts +0 -24
- package/dist/defaults/locale-zh-CN.d.ts +0 -39
- package/dist/defaults/official-component-fallbacks.d.ts +0 -8
- package/dist/extensions/ClipboardExtension.d.ts +0 -23
- package/dist/extensions/KeyboardExtension.d.ts +0 -17
- package/dist/extensions/MenuExtension.d.ts +0 -23
- package/dist/iconRegistry.d.ts +0 -22
- package/dist/index.cjs +11320 -0
- package/dist/index.d.ts +25 -47
- package/dist/index.esm.js +1123 -99614
- package/dist/index.umd.js +3380 -1471
- package/dist/models/BaseNodeModel.d.ts +0 -32
- package/dist/models/index.d.ts +0 -1
- package/dist/nodes/AgentOrchestrationNode.d.ts +0 -24
- package/dist/nodes/GroupNode.d.ts +0 -38
- package/dist/nodes/HeadlessHtmlNode.d.ts +0 -16
- package/dist/nodes/SwitchNode.d.ts +0 -22
- package/dist/nodes/UnknownNodeModel.d.ts +0 -19
- package/dist/standalone/HuanbanRulegoEditor.d.ts +202 -401
- package/dist/standalone/ai-model-policy.d.ts +0 -1
- package/dist/standalone/ai-providers.d.ts +0 -1
- package/dist/standalone/auth-fetch.d.ts +2 -46
- package/dist/standalone/browser-assets.d.ts +0 -8
- package/dist/standalone/canvas-view.d.ts +6 -0
- package/dist/standalone/code-editor-language-loaders.d.ts +2 -0
- package/dist/standalone/code-editor-language-loaders.legacy.d.ts +7 -0
- package/dist/standalone/code-editor.d.ts +3 -87
- package/dist/standalone/connection-status-binding.d.ts +8 -0
- package/dist/standalone/custom-nodes.d.ts +0 -26
- package/dist/standalone/drawer-unsaved-guard.d.ts +2 -9
- package/dist/standalone/edge-label-quick-editor.d.ts +2 -0
- package/dist/standalone/editor-actions.d.ts +4 -0
- package/dist/standalone/editor-chain-info.d.ts +5 -38
- package/dist/standalone/editor-context-menu.d.ts +0 -21
- package/dist/standalone/editor-debug-ws.d.ts +37 -145
- package/dist/standalone/editor-delete.d.ts +0 -1
- package/dist/standalone/editor-dialogs.d.ts +16 -66
- package/dist/standalone/editor-events.d.ts +0 -27
- package/dist/standalone/editor-overlays.d.ts +14 -0
- package/dist/standalone/editor-property-drawers.d.ts +13 -71
- package/dist/standalone/editor-route-settings.d.ts +7 -55
- package/dist/standalone/editor-sidebar.d.ts +0 -18
- package/dist/standalone/editor-styles.d.ts +0 -11
- package/dist/standalone/editor-toast.d.ts +1 -2
- package/dist/standalone/editor-toolbar.d.ts +5 -80
- package/dist/standalone/editor-tour.d.ts +7 -0
- package/dist/standalone/editor-trace-overlay.d.ts +0 -5
- package/dist/standalone/full-json-dialog.d.ts +5 -1
- package/dist/standalone/group-node.d.ts +1 -51
- package/dist/standalone/icon-utils.d.ts +0 -20
- package/dist/standalone/index.d.ts +10 -7
- package/dist/standalone/json-diff.d.ts +0 -1
- package/dist/standalone/keyboard-events.d.ts +0 -1
- package/dist/standalone/layout-scheduler.d.ts +0 -6
- package/dist/standalone/lifecycle.d.ts +0 -5
- package/dist/standalone/logger.d.ts +0 -32
- package/dist/standalone/models-dev-catalog.d.ts +0 -1
- package/dist/standalone/node-copy.d.ts +7 -4
- package/dist/standalone/node-definitions.d.ts +0 -63
- package/dist/standalone/node-identity.d.ts +0 -1
- package/dist/standalone/node-theme.d.ts +8 -0
- package/dist/standalone/node-views-data.d.ts +0 -20
- package/dist/standalone/official-node-view-patches.d.ts +1 -14
- package/dist/standalone/outline-style.d.ts +7 -0
- package/dist/standalone/run-history-format.d.ts +0 -1
- package/dist/standalone/security-utils.d.ts +1 -5
- package/dist/standalone/shared-node-manager.d.ts +31 -0
- package/dist/standalone/themes.d.ts +0 -48
- package/dist/tools/tool-editor.d.ts +0 -1
- package/dist/types/component.d.ts +105 -87
- package/dist/types/editor.d.ts +16 -169
- package/dist/types/events.d.ts +30 -107
- package/dist/types/index.d.ts +3 -10
- package/dist/types/rule-chain.d.ts +0 -90
- package/dist/utils/GraphUtils.d.ts +0 -10
- package/dist/utils/helpers.d.ts +0 -80
- package/dist/utils/index.d.ts +0 -5
- package/dist/utils/pinyin-search.d.ts +0 -57
- package/dist/utils/relation-utils.d.ts +0 -1
- package/dist/utils/textUtils.d.ts +0 -12
- package/dist/version.d.ts +2 -3
- package/dist/xlsx-qn1xoUuv.cjs +105 -0
- package/package.json +19 -5
- package/vite-chunks.d.ts +11 -0
- package/vite-chunks.mjs +120 -0
- package/dist/index.cjs.js +0 -9515
|
@@ -0,0 +1,4159 @@
|
|
|
1
|
+
const e = {
|
|
2
|
+
Input: "输入",
|
|
3
|
+
"Input node already exists": "输入节点只能存在一个",
|
|
4
|
+
"At least one input node is required": "画布至少需要保留一个输入端或默认输入节点",
|
|
5
|
+
/**
|
|
6
|
+
* 旧版纯 DOM UI 包仍使用根级短 key。保留这些 key 可避免
|
|
7
|
+
* @huanban/rulego-editor-ui 在非中文语言下退回中文硬编码 fallback。
|
|
8
|
+
*/
|
|
9
|
+
toolbar: {
|
|
10
|
+
save: "保存",
|
|
11
|
+
saveHostRequired: "请先配置宿主保存回调",
|
|
12
|
+
undo: "撤销",
|
|
13
|
+
redo: "重做",
|
|
14
|
+
delete: "删除选中",
|
|
15
|
+
zoomIn: "放大",
|
|
16
|
+
zoomOut: "缩小",
|
|
17
|
+
fitView: "适应画布",
|
|
18
|
+
fullscreen: "全屏",
|
|
19
|
+
autoLayout: "自动排版"
|
|
20
|
+
},
|
|
21
|
+
sidebar: {
|
|
22
|
+
recentComponents: "最近使用",
|
|
23
|
+
searchPlaceholder: "搜索组件...",
|
|
24
|
+
noResults: "无匹配组件"
|
|
25
|
+
},
|
|
26
|
+
panel: {
|
|
27
|
+
title: "属性编辑",
|
|
28
|
+
nodeName: "节点名称"
|
|
29
|
+
},
|
|
30
|
+
contextMenu: {
|
|
31
|
+
edit: "编辑",
|
|
32
|
+
editProperties: "编辑属性",
|
|
33
|
+
copy: "复制",
|
|
34
|
+
delete: "删除",
|
|
35
|
+
selectAll: "全选",
|
|
36
|
+
fitView: "适应画布",
|
|
37
|
+
paste: "粘贴",
|
|
38
|
+
disconnect: "断开连接",
|
|
39
|
+
resetZoom: "重置缩放",
|
|
40
|
+
runFromNode: "从此节点开始执行",
|
|
41
|
+
runSingleNode: "仅执行此节点"
|
|
42
|
+
},
|
|
43
|
+
/**
|
|
44
|
+
* 编辑器 UI 文本
|
|
45
|
+
*/
|
|
46
|
+
editor: {
|
|
47
|
+
/** 工具栏按钮文本 */
|
|
48
|
+
toolbar: {
|
|
49
|
+
save: "保存",
|
|
50
|
+
undo: "撤销",
|
|
51
|
+
redo: "重做",
|
|
52
|
+
previousStep: "上一步",
|
|
53
|
+
nextStep: "下一步",
|
|
54
|
+
delete: "删除",
|
|
55
|
+
zoomIn: "放大",
|
|
56
|
+
zoomOut: "缩小",
|
|
57
|
+
fitView: "适应画布",
|
|
58
|
+
minimap: "小地图",
|
|
59
|
+
newChain: "新建规则链",
|
|
60
|
+
export: "导出",
|
|
61
|
+
import: "导入",
|
|
62
|
+
canvasActions: "画布操作",
|
|
63
|
+
selectChain: "打开",
|
|
64
|
+
info: "信息",
|
|
65
|
+
run: "测试",
|
|
66
|
+
aiChat: "AI助理",
|
|
67
|
+
debugConsole: "调试面板",
|
|
68
|
+
clearDebugHighlight: "清除调试高亮",
|
|
69
|
+
selection: "框选",
|
|
70
|
+
closeSelection: "关闭框选",
|
|
71
|
+
selectionUnavailable: "框选插件不可用",
|
|
72
|
+
componentManage: "组件",
|
|
73
|
+
switchLang: "EN",
|
|
74
|
+
switchTheme: "主题",
|
|
75
|
+
searchNode: "搜索",
|
|
76
|
+
deploy: "部署",
|
|
77
|
+
undeploy: "下线",
|
|
78
|
+
stoppedDeployHint: "已停止,点击部署",
|
|
79
|
+
runningUndeployHint: "运行中,点击下线",
|
|
80
|
+
deleteChain: "删除",
|
|
81
|
+
restart: "重启",
|
|
82
|
+
reload: "重启",
|
|
83
|
+
runHistory: "运行记录",
|
|
84
|
+
autoLayout: "自动排版",
|
|
85
|
+
diagnostics: "规则链问题",
|
|
86
|
+
trace: "链追溯",
|
|
87
|
+
resetZoom: "重置缩放",
|
|
88
|
+
validate: "校验规则链",
|
|
89
|
+
debugOn: "开启调试",
|
|
90
|
+
debugOff: "关闭调试",
|
|
91
|
+
viewData: "查看数据",
|
|
92
|
+
settings: "设置",
|
|
93
|
+
fullscreen: "全屏",
|
|
94
|
+
exitFullscreen: "退出全屏",
|
|
95
|
+
zoomOptions: "缩放选项",
|
|
96
|
+
saving: "保存中...",
|
|
97
|
+
saved: "已保存",
|
|
98
|
+
failed: "失败",
|
|
99
|
+
timeout: "超时",
|
|
100
|
+
viewDiff: "查看变更",
|
|
101
|
+
noDiff: "暂无变更",
|
|
102
|
+
unsavedSaveHint: "有未保存修改,点击保存",
|
|
103
|
+
invalidJsonCannotSave: `规则链数据格式错误,无法保存:
|
|
104
|
+
|
|
105
|
+
{{error}}`,
|
|
106
|
+
validationFailedCannotSave: `规则链校验未通过,无法保存:
|
|
107
|
+
|
|
108
|
+
{{messages}}`,
|
|
109
|
+
saveStoppedByFailure: "保存失败,已停止部署",
|
|
110
|
+
missingSaveEndpoint: "缺少保存入口:请配置 apiBase 或提供 onSave",
|
|
111
|
+
saveConflictMessage: "服务端的规则链在你编辑期间已更新。继续保存会覆盖远端修改。是否仍然覆盖?",
|
|
112
|
+
saveConflictCancelled: "已取消保存,当前画布和未保存修改已保留",
|
|
113
|
+
saveConflictCheckFailed: "保存冲突检测失败,未执行保存: {{message}}",
|
|
114
|
+
pendingDrawerChanges: "请先保存或放弃当前面板中的修改,再执行全局保存或导出",
|
|
115
|
+
pendingDrawerInvalid: "当前面板存在未通过校验的修改,未执行全局保存或导出",
|
|
116
|
+
readOnlyCannotSave: "当前编辑器为只读模式,不能保存",
|
|
117
|
+
missingChainId: "缺少规则链 ID,无法保存"
|
|
118
|
+
},
|
|
119
|
+
actions: {
|
|
120
|
+
showCommands: "显示所有命令",
|
|
121
|
+
showShortcuts: "快捷键速查",
|
|
122
|
+
startTour: "新手引导",
|
|
123
|
+
undo: "撤销",
|
|
124
|
+
redo: "重做",
|
|
125
|
+
delete: "删除选中",
|
|
126
|
+
copy: "复制选中",
|
|
127
|
+
copied: "已复制选中节点",
|
|
128
|
+
paste: "粘贴",
|
|
129
|
+
cut: "剪切选中",
|
|
130
|
+
duplicate: "复制节点",
|
|
131
|
+
selectAll: "全选",
|
|
132
|
+
clearSelection: "取消选择",
|
|
133
|
+
editSelected: "编辑选中节点",
|
|
134
|
+
rename: "重命名节点",
|
|
135
|
+
selectUpstream: "选择上游节点",
|
|
136
|
+
selectDownstream: "选择下游节点",
|
|
137
|
+
selectConnected: "选择相连节点",
|
|
138
|
+
deleteReconnect: "删除并重连",
|
|
139
|
+
save: "保存",
|
|
140
|
+
search: "搜索节点",
|
|
141
|
+
fullscreen: "全屏",
|
|
142
|
+
addNode: "添加节点",
|
|
143
|
+
toggleSidebar: "折叠组件库",
|
|
144
|
+
componentDocs: "组件文档",
|
|
145
|
+
debugConsole: "调试控制台",
|
|
146
|
+
diagnostics: "链路诊断",
|
|
147
|
+
aiAssistant: "AI 助理",
|
|
148
|
+
autoLayout: "自动排版",
|
|
149
|
+
alignLeft: "左对齐",
|
|
150
|
+
alignRight: "右对齐",
|
|
151
|
+
alignTop: "顶部对齐",
|
|
152
|
+
alignBottom: "底部对齐",
|
|
153
|
+
alignMiddle: "垂直居中",
|
|
154
|
+
alignCenter: "水平居中",
|
|
155
|
+
distributeHorizontal: "水平分布",
|
|
156
|
+
distributeVertical: "垂直分布",
|
|
157
|
+
alignGrid: "对齐到网格"
|
|
158
|
+
},
|
|
159
|
+
actionGroups: {
|
|
160
|
+
default: "常用",
|
|
161
|
+
edit: "编辑",
|
|
162
|
+
view: "视图",
|
|
163
|
+
file: "文件",
|
|
164
|
+
arrange: "排列",
|
|
165
|
+
debug: "调试",
|
|
166
|
+
help: "帮助"
|
|
167
|
+
},
|
|
168
|
+
commandPalette: {
|
|
169
|
+
title: "命令面板",
|
|
170
|
+
placeholder: "搜索命令,如保存、对齐、诊断",
|
|
171
|
+
empty: "无匹配命令"
|
|
172
|
+
},
|
|
173
|
+
shortcutHelp: {
|
|
174
|
+
title: "快捷键速查",
|
|
175
|
+
commandHint: "按 Ctrl+Shift+P 搜索并执行全部命令"
|
|
176
|
+
},
|
|
177
|
+
tour: {
|
|
178
|
+
progress: "第 {{current}} 步,共 {{total}} 步",
|
|
179
|
+
addNodeTitle: "添加节点",
|
|
180
|
+
addNodeDescription: "从组件库把节点拖到画布,也可以在画布空白处打开节点选择器。",
|
|
181
|
+
connectTitle: "连接节点",
|
|
182
|
+
connectDescription: "从节点连接点拖到下一个节点。也可以在连线上插入新的处理节点。",
|
|
183
|
+
configureTitle: "配置节点",
|
|
184
|
+
configureDescription: "双击节点打开配置面板,修改字段后保存。关闭未保存的表单时会先确认。",
|
|
185
|
+
debugTitle: "测试与诊断",
|
|
186
|
+
debugDescription: "使用测试和调试面板验证消息流向,并在状态栏查看节点、连线和运行状态。",
|
|
187
|
+
previous: "上一步",
|
|
188
|
+
next: "下一步",
|
|
189
|
+
done: "完成",
|
|
190
|
+
close: "关闭引导"
|
|
191
|
+
},
|
|
192
|
+
nodePicker: {
|
|
193
|
+
title: "添加节点",
|
|
194
|
+
placeholder: "搜索节点名称、类型或描述",
|
|
195
|
+
empty: "无匹配节点",
|
|
196
|
+
collapseAll: "全部展开或折叠",
|
|
197
|
+
help: "查看文档",
|
|
198
|
+
edgeNotFound: "原连线已不存在,插入操作已取消",
|
|
199
|
+
edgeInsertFailed: "无法在该连线中插入组件,原图未修改"
|
|
200
|
+
},
|
|
201
|
+
componentDocs: {
|
|
202
|
+
title: "组件文档",
|
|
203
|
+
search: "搜索文档",
|
|
204
|
+
select: "选择一篇组件文档",
|
|
205
|
+
empty: "无匹配文档",
|
|
206
|
+
loadFailed: "文档加载失败"
|
|
207
|
+
},
|
|
208
|
+
/** 设置弹窗 */
|
|
209
|
+
settings: {
|
|
210
|
+
title: "设置",
|
|
211
|
+
account: "账号设置",
|
|
212
|
+
system: "系统设置",
|
|
213
|
+
currentUser: "当前用户",
|
|
214
|
+
notLoggedIn: "未登录",
|
|
215
|
+
login: "登录",
|
|
216
|
+
logout: "退出登录",
|
|
217
|
+
accountHint: "登录态由宿主管理;退出登录会清理 username、token、access_token。",
|
|
218
|
+
rulegoUrl: "RuleGo后台URL",
|
|
219
|
+
rulegoUrlHint: "如果需要对接后台 API,请填写 RuleGo Server 地址;保存后编辑器内部会规范化为 /api/v1。",
|
|
220
|
+
browserConsoleLog: "打印浏览器调试日志",
|
|
221
|
+
browserConsoleLogHint: "仅控制示例宿主写入浏览器 console 的调试输出,不影响页面内事件日志和错误提示。",
|
|
222
|
+
fullscreen: "全屏",
|
|
223
|
+
exitFullscreen: "退出全屏",
|
|
224
|
+
loginDelegated: "已交给宿主处理登录",
|
|
225
|
+
loginHint: "请由宿主提供 onLoginClick 接入登录。",
|
|
226
|
+
loggedIn: "已登录",
|
|
227
|
+
hostLogin: "使用宿主登录入口",
|
|
228
|
+
loginSharedHint: "内置登录和宿主登录共享 username、token、access_token;如果外层应用接管认证,可使用宿主入口。",
|
|
229
|
+
username: "用户名",
|
|
230
|
+
password: "密码",
|
|
231
|
+
loginExample: "示例账号:admin/admin user01/user01",
|
|
232
|
+
loginRequired: "请填写用户名和密码",
|
|
233
|
+
loggingIn: "登录中...",
|
|
234
|
+
loginSuccess: "登录成功",
|
|
235
|
+
loginFailed: "登录失败",
|
|
236
|
+
loginUnauthorized: "用户名或密码错误",
|
|
237
|
+
loginTokenMissing: "登录成功但后端未返回 token"
|
|
238
|
+
},
|
|
239
|
+
markdown: {
|
|
240
|
+
toolbar: "Markdown 工具栏",
|
|
241
|
+
source: "源码",
|
|
242
|
+
sourceTitle: "源码编辑",
|
|
243
|
+
split: "分屏",
|
|
244
|
+
splitTitle: "源码和预览分屏",
|
|
245
|
+
visual: "可视化",
|
|
246
|
+
visualTitle: "在渲染视图中编辑",
|
|
247
|
+
preview: "预览",
|
|
248
|
+
previewTitle: "只读预览",
|
|
249
|
+
heading: "标题",
|
|
250
|
+
bold: "粗体",
|
|
251
|
+
italic: "斜体",
|
|
252
|
+
quote: "引用",
|
|
253
|
+
code: "代码",
|
|
254
|
+
link: "链接",
|
|
255
|
+
unorderedList: "无序列表",
|
|
256
|
+
orderedList: "有序列表",
|
|
257
|
+
taskList: "任务列表",
|
|
258
|
+
table: "表格",
|
|
259
|
+
emptyPreview: "暂无 Markdown 内容"
|
|
260
|
+
},
|
|
261
|
+
diff: {
|
|
262
|
+
title: "变更 diff",
|
|
263
|
+
subtitle: "前端对比上次加载或保存后的规则链 JSON。",
|
|
264
|
+
total: "差异",
|
|
265
|
+
added: "新增",
|
|
266
|
+
removed: "删除",
|
|
267
|
+
changed: "修改",
|
|
268
|
+
kind: "类型",
|
|
269
|
+
path: "路径",
|
|
270
|
+
before: "修改前",
|
|
271
|
+
after: "修改后",
|
|
272
|
+
noChanges: "当前导出 JSON 与上次保存一致。",
|
|
273
|
+
truncated: "差异较多,仅展示前 800 条。",
|
|
274
|
+
lineTruncated: "JSON 行差异较多,已截断展示。",
|
|
275
|
+
invalidCurrentJson: "当前规则链 JSON 结构不完整,保存会被阻止。",
|
|
276
|
+
gitLike: "单文件 JSON diff",
|
|
277
|
+
gitLikeHint: "类似 git diff:- 为上次加载/保存,+ 为当前画布导出。",
|
|
278
|
+
delta: "jsondiffpatch delta",
|
|
279
|
+
pathSummary: "路径摘要",
|
|
280
|
+
pathSummaryHint: "按 JSON 路径列出新增、删除和修改项。"
|
|
281
|
+
},
|
|
282
|
+
/** 侧边栏文本 */
|
|
283
|
+
sidebar: {
|
|
284
|
+
title: "组件",
|
|
285
|
+
ariaLabel: "规则链组件库",
|
|
286
|
+
recentComponents: "最近使用",
|
|
287
|
+
search: "搜索组件名 / 类型 ...",
|
|
288
|
+
noResult: "没有匹配的组件",
|
|
289
|
+
toggle: "收起/展开组件库",
|
|
290
|
+
expandAll: "全部展开",
|
|
291
|
+
collapseAll: "全部折叠"
|
|
292
|
+
},
|
|
293
|
+
workspace: {
|
|
294
|
+
tabs: "规则链标签",
|
|
295
|
+
unsaved: "有未保存修改",
|
|
296
|
+
loading: "加载中",
|
|
297
|
+
close: "关闭",
|
|
298
|
+
closeOthers: "关闭其他",
|
|
299
|
+
closeRight: "关闭右侧",
|
|
300
|
+
add: "新建规则链",
|
|
301
|
+
all: "全部规则链",
|
|
302
|
+
empty: "打开规则链后显示标签",
|
|
303
|
+
rename: "重命名",
|
|
304
|
+
pin: "固定",
|
|
305
|
+
unpin: "取消固定",
|
|
306
|
+
editInfo: "编辑信息",
|
|
307
|
+
enable: "启用",
|
|
308
|
+
disable: "停用",
|
|
309
|
+
deploy: "部署",
|
|
310
|
+
stop: "下线",
|
|
311
|
+
running: "运行中",
|
|
312
|
+
stopped: "已停止",
|
|
313
|
+
runHistory: "运行记录",
|
|
314
|
+
debug: "调试"
|
|
315
|
+
},
|
|
316
|
+
/** 属性面板文本 */
|
|
317
|
+
panel: {
|
|
318
|
+
nodeTitle: "节点详情",
|
|
319
|
+
nodeInformation: "节点信息",
|
|
320
|
+
edgeTitle: "连接属性",
|
|
321
|
+
chainTitle: "规则链属性",
|
|
322
|
+
noSelection: "未选中任何元素",
|
|
323
|
+
close: "关闭",
|
|
324
|
+
save: "保存",
|
|
325
|
+
loaded: "已加载",
|
|
326
|
+
saving: "保存中...",
|
|
327
|
+
saveSuccess: "已保存",
|
|
328
|
+
deleting: "删除中...",
|
|
329
|
+
apply: "应用",
|
|
330
|
+
nodeId: "节点ID",
|
|
331
|
+
nodeIdLocked: "节点 ID 已绑定画布,编辑属性时不会改写",
|
|
332
|
+
name: "名称",
|
|
333
|
+
description: "描述",
|
|
334
|
+
debugMode: "调试模式",
|
|
335
|
+
confirm: "确认",
|
|
336
|
+
cancel: "取消",
|
|
337
|
+
detail: "详情",
|
|
338
|
+
debugLog: "调试日志",
|
|
339
|
+
help: "帮助",
|
|
340
|
+
componentType: "组件类型",
|
|
341
|
+
relationTypes: "关系类型",
|
|
342
|
+
nodeNamePlaceholder: "请输入节点名称",
|
|
343
|
+
descriptionPlaceholder: "请输入节点描述",
|
|
344
|
+
addPair: "+ 添加",
|
|
345
|
+
tableView: "表格",
|
|
346
|
+
terminalView: "终端",
|
|
347
|
+
refreshLog: "刷新日志",
|
|
348
|
+
eventTime: "事件时间",
|
|
349
|
+
type: "类型",
|
|
350
|
+
messageId: "消息ID",
|
|
351
|
+
messageType: "消息类型",
|
|
352
|
+
relationType: "关系类型",
|
|
353
|
+
data: "数据",
|
|
354
|
+
metadata: "元数据",
|
|
355
|
+
error: "错误",
|
|
356
|
+
view: "查看",
|
|
357
|
+
loading: "加载中...",
|
|
358
|
+
inputNode: "输入节点",
|
|
359
|
+
noData: "暂无数据",
|
|
360
|
+
noDebugLog: "暂无调试日志",
|
|
361
|
+
liveDebug: "实时",
|
|
362
|
+
liveDebugOn: "实时监听中",
|
|
363
|
+
liveDebugOff: "已断开",
|
|
364
|
+
liveDebugConnecting: "连接中...",
|
|
365
|
+
liveDebugReconnectLimit: "已达到重连上限,请手动重试",
|
|
366
|
+
readOnlyCannotOperate: "当前编辑器为只读模式,不能执行部署操作",
|
|
367
|
+
edit: "编辑",
|
|
368
|
+
copy: "复制",
|
|
369
|
+
delete: "删除",
|
|
370
|
+
runFromNode: "从此节点开始执行",
|
|
371
|
+
runSingleNode: "仅执行此节点",
|
|
372
|
+
confirmDelete: "确认删除规则链",
|
|
373
|
+
confirmDeleteMsg: '确定要删除规则链 "{name}" 吗?此操作不可撤销。',
|
|
374
|
+
confirmDeleteGraphElementsMsg: "确认删除 {nodeCount} 个节点和 {edgeCount} 条连线吗?此操作不可撤销。",
|
|
375
|
+
confirmDisconnectEdgesMsg: "确认断开该节点的 {edgeCount} 条连线吗?",
|
|
376
|
+
confirmDeleteNewEdgeMsg: "确认删除这条新建连线吗?",
|
|
377
|
+
confirmDeleteUnavailable: "当前环境无法弹出删除确认,已阻止删除。",
|
|
378
|
+
deleteRolledBack: ",已恢复原图数据。",
|
|
379
|
+
deleteRollbackFailed: ",自动恢复未完全成功,请重新加载规则链核对。",
|
|
380
|
+
deploying: "部署中...",
|
|
381
|
+
deployed: "已部署",
|
|
382
|
+
undeploying: "下线中...",
|
|
383
|
+
undeployed: "已下线",
|
|
384
|
+
restarting: "重启中...",
|
|
385
|
+
restarted: "已重启",
|
|
386
|
+
restartConfirm: "重启会重建节点实例,内存中的会话、计数器和定时器等状态将重置,端点连接可能短暂重连。是否继续?",
|
|
387
|
+
restartDirtyConfirm: "当前规则链有未保存修改。将先保存并确认落库,再重启规则链。节点内存状态会重置,端点连接可能短暂重连。是否继续?",
|
|
388
|
+
restartStoppedBySaveFailure: "保存未完成,已取消重启",
|
|
389
|
+
operate: "操作",
|
|
390
|
+
operateFailed: "操作失败",
|
|
391
|
+
codeEditor: "代码编辑器",
|
|
392
|
+
syntaxOk: "语法正确",
|
|
393
|
+
formatCode: "美化",
|
|
394
|
+
fullscreen: "全屏",
|
|
395
|
+
exitFullscreen: "退出全屏",
|
|
396
|
+
idRequired: "ID是必须的",
|
|
397
|
+
nameRequired: "名称是必须的",
|
|
398
|
+
debugPrerequisite: "需要配置 apiBase 并加载规则链",
|
|
399
|
+
requestTimeout: "请求超时",
|
|
400
|
+
loadFailed: "加载失败: {{message}}",
|
|
401
|
+
unsavedCloseTitle: "表单有未保存修改",
|
|
402
|
+
unsavedCloseDesc: "当前右侧面板中存在未保存的表单变更,可以保存后关闭、丢弃变更,或继续编辑。",
|
|
403
|
+
saveAndClose: "保存并关闭",
|
|
404
|
+
discardChanges: "不保存关闭",
|
|
405
|
+
keepEditing: "继续编辑",
|
|
406
|
+
unsavedSaveBeforeClose: "表单有未保存修改,是否保存后关闭?",
|
|
407
|
+
unsavedDiscardBeforeClose: "不保存并关闭?"
|
|
408
|
+
},
|
|
409
|
+
/** 右键菜单 */
|
|
410
|
+
contextMenu: {
|
|
411
|
+
editProperties: "编辑属性",
|
|
412
|
+
copy: "复制",
|
|
413
|
+
duplicate: "复制节点",
|
|
414
|
+
insertNode: "插入组件",
|
|
415
|
+
addNodeHere: "在此添加节点",
|
|
416
|
+
arrange: "排列",
|
|
417
|
+
help: "帮助文档",
|
|
418
|
+
viewConnections: "查看连接",
|
|
419
|
+
delete: "删除",
|
|
420
|
+
selectAll: "全选",
|
|
421
|
+
fitView: "适应画布",
|
|
422
|
+
paste: "粘贴",
|
|
423
|
+
disconnect: "断开连接",
|
|
424
|
+
resetZoom: "重置缩放",
|
|
425
|
+
gridStyle: "网格样式",
|
|
426
|
+
gridMesh: "交叉线",
|
|
427
|
+
gridDot: "点阵",
|
|
428
|
+
showEdgeLabels: "显示连线标签",
|
|
429
|
+
hideEdgeLabels: "隐藏连线标签",
|
|
430
|
+
panels: "面板",
|
|
431
|
+
leftPanel: "左侧面板",
|
|
432
|
+
rightPanel: "右侧面板",
|
|
433
|
+
bottomPanel: "底部面板",
|
|
434
|
+
runFromNode: "从此节点开始执行",
|
|
435
|
+
runSingleNode: "仅执行此节点"
|
|
436
|
+
},
|
|
437
|
+
/** 底部状态栏 */
|
|
438
|
+
status: {
|
|
439
|
+
ready: "就绪",
|
|
440
|
+
nodes: "节点",
|
|
441
|
+
edges: "边",
|
|
442
|
+
running: "运行中",
|
|
443
|
+
stopped: "停用中",
|
|
444
|
+
unknown: "未知",
|
|
445
|
+
updateTime: "更新时间"
|
|
446
|
+
},
|
|
447
|
+
statusBar: {
|
|
448
|
+
zoomIn: "放大",
|
|
449
|
+
zoomOut: "缩小",
|
|
450
|
+
resetZoom: "重置为 100%",
|
|
451
|
+
nodes: "节点",
|
|
452
|
+
edges: "边",
|
|
453
|
+
selected: "已选",
|
|
454
|
+
diagnostics: "诊断"
|
|
455
|
+
},
|
|
456
|
+
connection: {
|
|
457
|
+
online: "已连接",
|
|
458
|
+
checking: "检测中",
|
|
459
|
+
unauthorized: "需要登录",
|
|
460
|
+
forbidden: "权限不足",
|
|
461
|
+
offline: "无法连接",
|
|
462
|
+
error: "连接异常",
|
|
463
|
+
unknown: "未检测",
|
|
464
|
+
api: "API",
|
|
465
|
+
ws: "WS",
|
|
466
|
+
login: "登录",
|
|
467
|
+
retry: "重试"
|
|
468
|
+
},
|
|
469
|
+
nodeConnection: {
|
|
470
|
+
connected: "已连接",
|
|
471
|
+
reconnecting: "重连中",
|
|
472
|
+
disconnected: "已断开",
|
|
473
|
+
error: "连接异常",
|
|
474
|
+
unknown: "未知状态",
|
|
475
|
+
stale: "状态可能已过期"
|
|
476
|
+
},
|
|
477
|
+
hoverTools: {
|
|
478
|
+
nodeActions: "节点操作",
|
|
479
|
+
edgeActions: "连线操作",
|
|
480
|
+
edit: "编辑节点",
|
|
481
|
+
copy: "复制节点",
|
|
482
|
+
delete: "删除节点",
|
|
483
|
+
runFrom: "从此节点开始执行",
|
|
484
|
+
runOnly: "仅执行此节点",
|
|
485
|
+
insertNode: "在连线中插入组件",
|
|
486
|
+
deleteEdge: "删除连线"
|
|
487
|
+
},
|
|
488
|
+
/** 导出弹窗 */
|
|
489
|
+
exportDialog: {
|
|
490
|
+
title: "导出 DSL",
|
|
491
|
+
downloadJson: "下载 JSON",
|
|
492
|
+
downloadImage: "下载截图",
|
|
493
|
+
copyJson: "复制 JSON",
|
|
494
|
+
copied: "已复制",
|
|
495
|
+
snapshotFailed: "截图失败: 需要 Snapshot 插件",
|
|
496
|
+
snapshotPlugin: "截图功能需要 LogicFlow Snapshot 插件",
|
|
497
|
+
snapshotError: "截图失败",
|
|
498
|
+
exportedToConsole: "数据已导出到控制台 (F12 查看)",
|
|
499
|
+
editHint: "可直接编辑当前规则链 JSON,确认无误后应用到画布",
|
|
500
|
+
formatJson: "格式化 JSON",
|
|
501
|
+
formatSuccess: "JSON 已格式化",
|
|
502
|
+
applyJson: "应用到画布",
|
|
503
|
+
jsonValid: "JSON 可应用到当前画布"
|
|
504
|
+
},
|
|
505
|
+
/** 运行面板 */
|
|
506
|
+
runPanel: {
|
|
507
|
+
title: "调试规则链",
|
|
508
|
+
request: "请求",
|
|
509
|
+
msgType: "消息类型",
|
|
510
|
+
dataType: "数据类型",
|
|
511
|
+
fromNode: "起始节点",
|
|
512
|
+
fromNodeDefault: "默认从链首节点开始",
|
|
513
|
+
onlyThisNode: "仅执行此节点(不往下传)",
|
|
514
|
+
metadata: "元数据",
|
|
515
|
+
requestHeaders: "请求头",
|
|
516
|
+
requestBody: "请求体",
|
|
517
|
+
dynamicForm: "动态表单",
|
|
518
|
+
formMode: "表单",
|
|
519
|
+
waitResult: "等待结果",
|
|
520
|
+
send: "发送",
|
|
521
|
+
sendTest: "发送测试",
|
|
522
|
+
aiChat: "AI助理",
|
|
523
|
+
newChat: "新对话",
|
|
524
|
+
aiChatPlaceholder: "AI助理请使用右侧“集成说明”中的 OpenAI 兼容接口,或由宿主通过 onRunClick 接管。",
|
|
525
|
+
aiNoAgentNotice: "当前链未检测到 AI/Agent 节点,仍会按后台 OpenAI 兼容接口尝试调用。",
|
|
526
|
+
aiBackendAvailable: "AI助理将调用后台 OpenAI 兼容接口。",
|
|
527
|
+
aiBackendHint: "后台接口存在时可直接调用;若当前链不支持,后端会返回错误。",
|
|
528
|
+
aiUnavailable: "后台 AI 能力未启用,请联系管理员启用 AI 服务后重试。",
|
|
529
|
+
openaiCompatible: "OpenAI 兼容接口",
|
|
530
|
+
aiConfig: "AI助理配置",
|
|
531
|
+
aiEndpoint: "接口",
|
|
532
|
+
aiSettings: "AI助理设置",
|
|
533
|
+
aiHelp: "说明",
|
|
534
|
+
aiResizeHandle: "向左拖动调整 AI 助理宽度",
|
|
535
|
+
aiHelpHint: "AI 助理使用当前规则链上下文调用后台 _assistant 智能体,可在这里配置提示词、模型和全局技能。",
|
|
536
|
+
aiPrompt: "系统提示词",
|
|
537
|
+
aiPromptHint: "编辑内置 AI 助理 _assistant 的 AGENTS.md 内容。",
|
|
538
|
+
aiPromptPlaceholder: "请输入 AI 助理系统提示词",
|
|
539
|
+
aiModelConfig: "模型配置",
|
|
540
|
+
aiModelHint: "配置 AI 助理默认使用的模型与连接信息,保存后立即生效。",
|
|
541
|
+
aiModelManagedBySettings: "模型由 AI助理设置管理",
|
|
542
|
+
aiModelManagedCompact: "设置管理",
|
|
543
|
+
aiModelRequired: "请至少填写 API 地址和模型名称",
|
|
544
|
+
aiAdvancedConfig: "高级配置",
|
|
545
|
+
aiAdvancedConfigHint: "参数默认关闭;只有开启且填写有效数值的参数才会保存到后端并在运行时发送。",
|
|
546
|
+
aiProvider: "模型供应商",
|
|
547
|
+
aiProviderCustom: "自定义供应商",
|
|
548
|
+
aiProviderPreset: "预设供应商",
|
|
549
|
+
aiProviderPlaceholder: "选择模型供应商",
|
|
550
|
+
aiProviderSelect: "选择模型供应商",
|
|
551
|
+
aiCatalogBuiltin: "已加载内置模型供应商;models.dev 目录将在后台缓存。",
|
|
552
|
+
aiCatalogLoading: "正在加载 models.dev 模型目录...",
|
|
553
|
+
aiCatalogNetwork: "已从 models.dev 更新",
|
|
554
|
+
aiCatalogCache: "已使用 models.dev 缓存",
|
|
555
|
+
aiCatalogReady: "{source}:{providers} 个供应商 / {models} 个模型",
|
|
556
|
+
aiCatalogFailed: "models.dev 目录加载失败,继续使用内置预设:{error}",
|
|
557
|
+
aiCatalogModelCount: "{count} 个模型",
|
|
558
|
+
aiModelProfile: "模型能力",
|
|
559
|
+
aiModelProfileEmpty: "选择或输入模型后显示能力与参数策略。",
|
|
560
|
+
aiModelSourceModelsDev: "models.dev 目录",
|
|
561
|
+
aiModelSourceLive: "实时监测",
|
|
562
|
+
aiModelSourceHistory: "历史配置",
|
|
563
|
+
aiModelSourceHost: "宿主预设",
|
|
564
|
+
aiModelSourceManual: "手动输入",
|
|
565
|
+
aiModelCapabilityReasoning: "推理模型",
|
|
566
|
+
aiModelCapabilityStandard: "通用模型",
|
|
567
|
+
aiModelCapabilityTools: "工具调用",
|
|
568
|
+
aiModelCapabilityMultimodal: "多模态",
|
|
569
|
+
aiModelCapabilityContext: "{value} 上下文",
|
|
570
|
+
aiModelCapabilityOutput: "{value} 输出",
|
|
571
|
+
aiModelCapabilityCost: "${input}/${output}",
|
|
572
|
+
aiParamPolicyReasoning: "通用模型策略:只保存已开启且填写有效数值的参数。",
|
|
573
|
+
aiParamPolicyStandard: "通用模型策略:只保存已开启且填写有效数值的参数。",
|
|
574
|
+
aiParamPolicyCounts: "{enabled}/{total} 已启用",
|
|
575
|
+
aiParamPolicyReasoningWarning: "后端若仍在运行时注入不兼容默认值,前端只能避免继续写入这些字段;完整稳定需要后端同步修正默认参数策略。",
|
|
576
|
+
aiBackendDefaultParamsWarning: "后端回显了疑似自动补齐的默认参数({params})。前端已按“未启用”处理;如果 AI 助理运行仍失败,需要后端停止写入/透传未配置参数。",
|
|
577
|
+
aiBackendDefaultParamsAfterSave: "已保存,但后端回显了疑似自动补齐的默认参数({params})。前端已保持这些参数为未启用;AI 助理运行仍需要后端修正默认参数策略。",
|
|
578
|
+
aiParamEnableHint: "按需开启模型可选参数;关闭后该字段不会进入保存请求。",
|
|
579
|
+
aiParamClearOptional: "清空可选参数",
|
|
580
|
+
aiParamCleared: "已清空可选模型参数;前端保存请求将不再包含这些字段。",
|
|
581
|
+
aiParamEnabled: "已开启",
|
|
582
|
+
aiParamOmitted: "不发送",
|
|
583
|
+
aiParamEnabledValueRequired: "参数 {name} 已启用,请填写有效数值。",
|
|
584
|
+
aiParamEditable: "可编辑",
|
|
585
|
+
aiParamFixed: "固定",
|
|
586
|
+
aiParamUnsupported: "不保存",
|
|
587
|
+
aiParamFixedByReasoning: "该模型族固定此参数,保存时会自动省略。",
|
|
588
|
+
aiParamNotPersisted: "当前后端模型配置暂不持久化该字段,仅作为兼容提示。",
|
|
589
|
+
aiParamNotSupportedByCatalog: "当前模型目录未声明支持该参数,保存时会自动省略。",
|
|
590
|
+
aiCustomParams: "自定义参数",
|
|
591
|
+
aiCustomParamsHint: "用于后续模型或供应商私有参数;勾选才会提交,值优先按 JSON 解析。",
|
|
592
|
+
aiCustomParamAdd: "新增参数",
|
|
593
|
+
aiCustomParamEmpty: "暂无自定义参数",
|
|
594
|
+
aiCustomParamKeyPlaceholder: "参数名,如 reasoning_effort",
|
|
595
|
+
aiCustomParamValuePlaceholder: '参数值,支持 JSON,如 "medium"、true、{"type":"json_object"}',
|
|
596
|
+
aiCustomParamKeyRequired: "自定义参数名称不能为空。",
|
|
597
|
+
aiCustomParamValueRequired: "参数 {name} 已启用,请填写参数值。",
|
|
598
|
+
aiCustomParamDuplicate: "参数 {name} 重复。",
|
|
599
|
+
aiCustomParamBuiltinDuplicate: "参数 {name} 已在常用参数中,请直接勾选对应项。",
|
|
600
|
+
aiModelProbe: "模型监测",
|
|
601
|
+
aiModelProbeHint: "按当前 API 地址和密钥获取模型列表,并测试模型是否可用;不会自动保存配置。",
|
|
602
|
+
aiModelProbeIdle: "填写 API 地址后可获取 /models;填写模型后可发起一次最小对话测试。",
|
|
603
|
+
aiModelFetchList: "获取模型列表",
|
|
604
|
+
aiModelTest: "测试模型",
|
|
605
|
+
aiCompletionsTest: "测试补全",
|
|
606
|
+
aiImageTest: "测试图片",
|
|
607
|
+
aiImageModel: "图片模型",
|
|
608
|
+
aiImageModelPlaceholder: "例如 gpt-image-2",
|
|
609
|
+
aiImageModelRequired: "请先填写图片模型",
|
|
610
|
+
aiCompletionsTesting: "正在测试补全接口...",
|
|
611
|
+
aiImageTesting: "正在测试图片接口,可能需要 30-90 秒...",
|
|
612
|
+
aiCompletionsSuccess: "{model} 补全接口可用,耗时 {ms}ms,返回:{reply}",
|
|
613
|
+
aiImageSuccess: "{model} 图片接口可用,耗时 {ms}ms,{summary}",
|
|
614
|
+
aiImageProbeOk: "图片接口请求成功",
|
|
615
|
+
aiImageReturnedBase64: "图片接口返回 b64_json,已隐藏原始 base64,只展示摘要。",
|
|
616
|
+
aiImageUrlFallback: "供应商未按 url 返回图片,前端需要按 b64_json 预览或交给后端存储。",
|
|
617
|
+
aiCommonIssues: "常见问题",
|
|
618
|
+
aiCommonIssuesHint: "检测结果会显示端点、状态码、耗时和修复建议。",
|
|
619
|
+
aiProbeKindModels: "模型列表",
|
|
620
|
+
aiProbeKindChat: "聊天接口",
|
|
621
|
+
aiProbeKindCompletions: "补全接口",
|
|
622
|
+
aiProbeKindImages: "图片接口",
|
|
623
|
+
aiProbeEndpoint: "端点",
|
|
624
|
+
aiProbeStatusCode: "状态",
|
|
625
|
+
aiProbeDuration: "耗时",
|
|
626
|
+
aiProbeModel: "模型",
|
|
627
|
+
aiProbeResponseType: "响应",
|
|
628
|
+
aiProbeSize: "大小",
|
|
629
|
+
aiCommonIssueBaseUrl: "API 地址建议填写 OpenAI 兼容基础路径,例如 https://host/v1;如果填写完整接口,前端会自动归一化到其他检测端点。",
|
|
630
|
+
aiCommonIssueParams: "高级参数默认不发送;只有勾选并填写的参数才会保存,避免 temperature、top_p、n 等字段触发模型限制。",
|
|
631
|
+
aiCommonIssueImageLarge: "图片生成可能耗时 30-90 秒且返回大体积 b64_json,界面只展示摘要和预览信息,不直接展开原始 base64。",
|
|
632
|
+
aiCommonIssueAuth: "认证失败:检查 API 密钥是否为空、是否需要 Bearer 前缀、供应商账号是否有模型权限。",
|
|
633
|
+
aiCommonIssueNotFound: "接口不存在:检查 API 地址是否多拼了 /v1、/chat/completions 或模型供应商是否支持该端点。",
|
|
634
|
+
aiCommonIssueQuota: "限流或额度不足:降低并发、切换模型或检查供应商套餐额度。",
|
|
635
|
+
aiCommonIssueTimeout: "请求超时或被浏览器拦截:图片/补全接口可能较慢;浏览器直连跨域失败时建议通过后端代理。",
|
|
636
|
+
aiCommonIssueCors: "浏览器直连失败:检查 CORS;生产环境建议让后端保存配置并由后端调用供应商。",
|
|
637
|
+
aiCommonIssueModel: "模型不可用:先点击“获取模型列表”,再从列表选择供应商实际返回的模型 ID。",
|
|
638
|
+
aiCommonIssueUnsupportedParams: "模型参数不兼容:清空或取消勾选高级参数,让后端省略未配置字段。",
|
|
639
|
+
aiCommonIssueCompletionsSlow: "补全接口响应较慢是常见现象;优先使用 chat/completions,旧 completions 仅作为兼容检测。",
|
|
640
|
+
aiCommonIssueImageSummary: "图片接口检测只展示响应格式、大小和耗时;即使请求 url,部分供应商仍会返回 b64_json。",
|
|
641
|
+
aiCommonIssueHealthy: "本次检测未发现明确异常;如 AI 助理仍不可用,请继续检查后端 _assistant 配置和运行日志。",
|
|
642
|
+
aiModelProbeListEmpty: "尚未获取模型列表",
|
|
643
|
+
aiModelProbeUseModel: "使用 {model}",
|
|
644
|
+
aiModelProbeUrlRequired: "请先填写 API 地址",
|
|
645
|
+
aiModelProbeModelRequired: "请先填写或选择模型",
|
|
646
|
+
aiModelProbeLoading: "正在获取模型列表...",
|
|
647
|
+
aiModelProbeTesting: "正在测试模型...",
|
|
648
|
+
aiModelProbeModelsLoaded: "已获取 {count} 个模型,耗时 {ms}ms",
|
|
649
|
+
aiModelProbeNoModels: "请求成功,但响应中没有可识别的模型列表",
|
|
650
|
+
aiModelProbeSuccess: "{model} 可用,耗时 {ms}ms,返回:{reply}",
|
|
651
|
+
aiModelProbeFailed: "模型监测失败:{error}",
|
|
652
|
+
aiModelHistory: "配置历史",
|
|
653
|
+
aiModelHistoryHint: "仅保存在当前浏览器;自定义供应商可从历史回填 API 地址、密钥和模型。",
|
|
654
|
+
aiModelHistorySelect: "选择历史配置",
|
|
655
|
+
aiModelHistoryApply: "应用",
|
|
656
|
+
aiModelHistoryDelete: "删除",
|
|
657
|
+
aiModelHistoryEmpty: "暂无历史配置,保存或测试成功后会自动记录。",
|
|
658
|
+
aiModelHistoryCustomOnly: "切换到自定义供应商后可从历史选择。",
|
|
659
|
+
aiModelHistoryTotal: "共 {count} 条历史配置",
|
|
660
|
+
aiModelHistorySummary: "API: {url} · Key: {key} · Model: {model}",
|
|
661
|
+
aiModelHistoryApplied: "已应用历史配置,保存后才会更新全局配置。",
|
|
662
|
+
aiModelHistoryDeleted: "已删除历史配置",
|
|
663
|
+
aiModelHistoryDeleteConfirm: "确认删除历史配置 {model} ?",
|
|
664
|
+
aiModelGlobalValue: "全局: {value}",
|
|
665
|
+
aiModelGlobalEmpty: "全局: 未配置",
|
|
666
|
+
aiModelGlobalKeyConfigured: "全局: 已配置",
|
|
667
|
+
aiModelGlobalKeyEmpty: "全局: 未配置",
|
|
668
|
+
aiApiUrl: "API 地址",
|
|
669
|
+
aiApiKey: "API 密钥",
|
|
670
|
+
aiApiKeyPlaceholder: "请输入 API Key",
|
|
671
|
+
aiModelPlaceholder: "请输入模型名称",
|
|
672
|
+
aiMaxStep: "最大步数",
|
|
673
|
+
aiMaxToolOutput: "最大工具输出长度",
|
|
674
|
+
aiMaxToolOutputLength: "最大工具输出长度",
|
|
675
|
+
aiTemperature: "温度 (Temperature)",
|
|
676
|
+
aiTopP: "Top P",
|
|
677
|
+
aiPresencePenalty: "存在惩罚",
|
|
678
|
+
aiFrequencyPenalty: "频率惩罚",
|
|
679
|
+
aiMaxTokens: "最大输出长度 (Max Tokens)",
|
|
680
|
+
aiMaxCompletionTokens: "最大完成长度 (Max Completion Tokens)",
|
|
681
|
+
aiN: "候选数量 (n)",
|
|
682
|
+
aiGlobalSkills: "全局技能",
|
|
683
|
+
aiSkillsHint: "管理 AI 助理可直接使用的全局技能。",
|
|
684
|
+
aiSkillNew: "新建技能",
|
|
685
|
+
aiSkillSearch: "搜索技能名称或描述",
|
|
686
|
+
aiSkillTotal: "共 {{total}} 个技能,当前 {{filtered}} 个",
|
|
687
|
+
aiSkillSelected: "当前:{{name}}",
|
|
688
|
+
aiSkillEmpty: "暂无技能,点击「新建技能」开始创建",
|
|
689
|
+
aiSkillNoSearchResult: "没有匹配的技能",
|
|
690
|
+
aiSkillName: "技能名称",
|
|
691
|
+
aiSkillNameRequired: "请填写技能名称",
|
|
692
|
+
aiSkillDescription: "技能描述",
|
|
693
|
+
aiSkillContent: "技能内容 (SKILL.md)",
|
|
694
|
+
aiSkillUpload: "上传压缩包",
|
|
695
|
+
aiSkillUploadTitle: "上传技能压缩包",
|
|
696
|
+
aiSkillUploadTip: "压缩包中每个技能目录需包含 SKILL.md,支持多层目录。",
|
|
697
|
+
aiSkillFormatGuide: "SKILL.md 格式说明",
|
|
698
|
+
aiSkillUploadDrop: "拖拽压缩包到此处,或点击选择文件",
|
|
699
|
+
aiSkillUploadHint: "支持 .zip、.tar.gz、.tgz 格式,建议小于 50MB",
|
|
700
|
+
aiSkillUploadRemove: "移除",
|
|
701
|
+
aiSkillUploadSubmit: "上传",
|
|
702
|
+
aiSkillUploadInvalidType: "只支持 .zip、.tar.gz、.tgz 格式",
|
|
703
|
+
aiSkillUploadTooLarge: "压缩包不能超过 50MB",
|
|
704
|
+
aiSkillUploading: "上传中...",
|
|
705
|
+
aiSkillUploadSuccess: "成功导入 {{count}} 个技能",
|
|
706
|
+
aiQuickPromptMqttHttp: "创建一个 MQTT 到 HTTP 的数据转发规则链",
|
|
707
|
+
aiQuickPromptFilterLog: "生成带条件过滤和日志记录的消息处理链",
|
|
708
|
+
aiQuickPromptParallel: "创建并行处理多个数据源的规则链",
|
|
709
|
+
aiRuleChainPreview: "规则链已预览",
|
|
710
|
+
aiRuleChainSaved: "新规则链已创建并保存",
|
|
711
|
+
aiRuleChainApplied: "已应用",
|
|
712
|
+
aiRuleChainApply: "应用到画布",
|
|
713
|
+
aiRuleChainReapply: "重新应用",
|
|
714
|
+
aiRuleChainOpen: "在画布中打开",
|
|
715
|
+
aiRuleChainOpenNew: "在新窗口打开",
|
|
716
|
+
aiOpenOtherChainConfirm: "打开新规则链将替换当前画布内容,未保存的修改将丢失。是否继续?",
|
|
717
|
+
aiRuleChainSourcePreview: "来源: preview_rule_chain",
|
|
718
|
+
aiRuleChainSourceSave: "来源: save_rule_chain",
|
|
719
|
+
aiRuleChainNodes: "节点",
|
|
720
|
+
aiRuleChainEdges: "连线",
|
|
721
|
+
chatCompletions: "Chat Completions",
|
|
722
|
+
chatWelcome: "你好!我是规则链助手,描述你想创建的规则链,我来帮你生成。也可以基于当前画布上的规则链进行修改。",
|
|
723
|
+
chatInputPlaceholder: "描述你想要的规则链... (Enter 发送,Shift+Enter 换行)",
|
|
724
|
+
chatModel: "模型",
|
|
725
|
+
chatModelCustom: "自定义",
|
|
726
|
+
chatMe: "我",
|
|
727
|
+
chatAssistant: "AI助理",
|
|
728
|
+
chatSending: "思考中...",
|
|
729
|
+
chatWaitingBackend: "后端正在处理,尚未返回流式内容({seconds}s)",
|
|
730
|
+
chatWaitingBackendSlow: "后端处理较慢,尚未返回流式内容({seconds}s)。可能正在等待模型或工具执行。",
|
|
731
|
+
chatToolIdleCompleted: "工具执行已完成,后端未返回最终文本,已自动收尾。",
|
|
732
|
+
chatToolIdleFinalizing: "工具已完成,正在收尾...",
|
|
733
|
+
chatCancelled: "已中断",
|
|
734
|
+
chatRequestFailed: "请求未完成",
|
|
735
|
+
chatTurnFailed: "未完成",
|
|
736
|
+
chatErrorDismiss: "关闭错误提示",
|
|
737
|
+
aiMaxStepsExceeded: "AI 助理已达到最大执行步数。可以在 AI 助理设置中调大“最大步数”,或把任务拆小后重试。",
|
|
738
|
+
chatReasoning: "推理过程",
|
|
739
|
+
chatItems: "项",
|
|
740
|
+
chatThinking: "思考过程",
|
|
741
|
+
chatToolRunning: "执行中",
|
|
742
|
+
chatToolDone: "完成",
|
|
743
|
+
chatToolFailed: "失败",
|
|
744
|
+
chatToolCancelled: "已中断",
|
|
745
|
+
chatToolArgs: "参数:",
|
|
746
|
+
chatToolResult: "结果:",
|
|
747
|
+
chatToolEmptyResult: "(空结果)",
|
|
748
|
+
chatToolError: "错误:",
|
|
749
|
+
chatRegenerate: "重新生成",
|
|
750
|
+
chatEdit: "编辑",
|
|
751
|
+
chatCopy: "复制",
|
|
752
|
+
chatCopied: "已复制到剪贴板",
|
|
753
|
+
chatCopyFailed: "复制失败",
|
|
754
|
+
chatCode: "代码",
|
|
755
|
+
chatPreview: "预览",
|
|
756
|
+
chatFullscreen: "全屏",
|
|
757
|
+
chatClose: "关闭",
|
|
758
|
+
chatDelete: "删除",
|
|
759
|
+
chatDeleteConfirm: "确定删除这条消息?",
|
|
760
|
+
chatDeleteCancel: "取消",
|
|
761
|
+
chatEditPrompt: "编辑消息",
|
|
762
|
+
chatNoUserForRegenerate: "找不到对应的用户消息",
|
|
763
|
+
chatScrollBottom: "回到底部",
|
|
764
|
+
stop: "停止",
|
|
765
|
+
execute: "同步执行",
|
|
766
|
+
notify: "异步通知",
|
|
767
|
+
output: "输出",
|
|
768
|
+
log: "日志",
|
|
769
|
+
responseBody: "响应体",
|
|
770
|
+
responseHeaders: "响应头",
|
|
771
|
+
responseHeadersLabel: "响应头",
|
|
772
|
+
responseBodyLabel: "响应体",
|
|
773
|
+
debugLog: "调试日志",
|
|
774
|
+
history: "执行历史",
|
|
775
|
+
integration: "集成说明",
|
|
776
|
+
noHistory: "暂无执行历史",
|
|
777
|
+
historyStart: "开始时间",
|
|
778
|
+
historyEnd: "结束时间",
|
|
779
|
+
historyClearFilter: "清除",
|
|
780
|
+
historyRefresh: "刷新",
|
|
781
|
+
historyLoading: "加载执行历史...",
|
|
782
|
+
historyLoadFailed: "加载执行历史失败",
|
|
783
|
+
historyResponseTooLarge: "运行记录请求超时或响应过大。列表应由后端分页返回摘要,完整日志请在单条详情中加载;也可以调小每页条数后重试。",
|
|
784
|
+
historyRemote: "后端执行历史",
|
|
785
|
+
historyLocal: "本次会话",
|
|
786
|
+
historyEmptyHint: "暂无执行记录,请确认后端已开启 saveRunLog=true",
|
|
787
|
+
historyPageSizeCustom: "自定义",
|
|
788
|
+
historyPageSizeHint: "每页条数可选择或自定义;列表按后端分页返回摘要,点击单条记录后再加载完整详情。",
|
|
789
|
+
historyBack: "返回列表",
|
|
790
|
+
historyReplay: "重放",
|
|
791
|
+
testCase: "测试用例",
|
|
792
|
+
testCaseEmpty: "暂无命名用例",
|
|
793
|
+
testCasePlaceholder: "选择测试用例",
|
|
794
|
+
testCaseNamePlaceholder: "用例名称",
|
|
795
|
+
testCaseLoad: "载入",
|
|
796
|
+
testCaseSave: "保存用例",
|
|
797
|
+
testCaseDelete: "删除用例",
|
|
798
|
+
testCaseNamePrompt: "请输入测试用例名称",
|
|
799
|
+
testCaseDeleteConfirm: "确认删除测试用例 {name}?",
|
|
800
|
+
testCaseLoaded: "已载入测试用例:{name}",
|
|
801
|
+
testCaseSaved: "测试用例已保存:{name}",
|
|
802
|
+
testCaseStorageFailed: "用例已保存在当前会话,但宿主持久化失败",
|
|
803
|
+
testCaseSessionOnly: "用例仅保存在当前会话;未配置或无法写入宿主持久化",
|
|
804
|
+
historyReplayHint: "回填历史输入,不会自动发送;确认后点击“发送”重新执行",
|
|
805
|
+
historyReplayPrepared: "已从执行历史回填输入(消息类型: {msgType},节点: {nodeId}{scope})。点击“发送”才会按当前设置重新执行。",
|
|
806
|
+
historyReplayFromNode: ",从此节点开始执行",
|
|
807
|
+
historyReplayOnlyNode: ",仅执行此节点",
|
|
808
|
+
historyDelete: "删除",
|
|
809
|
+
historyDeleteAll: "删除全部",
|
|
810
|
+
historyDeleteConfirm: "确认删除此执行记录?",
|
|
811
|
+
historyDeleteAllConfirm: "确认删除所有执行记录?此操作不可恢复。",
|
|
812
|
+
historyDeleteSuccess: "删除成功",
|
|
813
|
+
historyDeleteAllSuccess: "已清空",
|
|
814
|
+
historyDeleteFailed: "删除失败",
|
|
815
|
+
historyDuration: "耗时",
|
|
816
|
+
historyStatus: "状态",
|
|
817
|
+
historySuccess: "成功",
|
|
818
|
+
historyFailed: "失败",
|
|
819
|
+
historyNoInput: "该记录无输入消息,无法重放",
|
|
820
|
+
historyPrev: "上一页",
|
|
821
|
+
historyNext: "下一页",
|
|
822
|
+
historyTotal: "共",
|
|
823
|
+
historyPage: "第 {page}/{pages} 页",
|
|
824
|
+
historyMessage: "消息",
|
|
825
|
+
historyFullData: "完整数据",
|
|
826
|
+
historyRawRecord: "原始记录",
|
|
827
|
+
historyLargeDataHint: "数据较大,请点击“完整数据”查看。",
|
|
828
|
+
historyMsgTypeInDetail: "详情中查看",
|
|
829
|
+
historyCollapse: "收起",
|
|
830
|
+
historyInput: "输入:",
|
|
831
|
+
historyOutput: "输出:",
|
|
832
|
+
historyError: "错误:",
|
|
833
|
+
historyNoNodeLogs: "无节点执行日志",
|
|
834
|
+
apiUsage: "API 调用方式",
|
|
835
|
+
waitingExecution: "等待执行...",
|
|
836
|
+
executing: "正在同步执行...",
|
|
837
|
+
notifying: "正在异步通知...",
|
|
838
|
+
requesting: "请求中...",
|
|
839
|
+
needApiBase: "需要配置 apiBase",
|
|
840
|
+
runCancelled: "已取消运行",
|
|
841
|
+
runFailed: "运行失败",
|
|
842
|
+
noHeaders: "(无)",
|
|
843
|
+
timeout: "请求超时 (10s)",
|
|
844
|
+
deleteTimeout: "超时",
|
|
845
|
+
loadChainFirst: "请先加载规则链",
|
|
846
|
+
unsavedWarning: "画布有未保存修改,运行前请先保存。",
|
|
847
|
+
confirmDeployBeforeRun: "规则链尚未部署,是否保存并部署?",
|
|
848
|
+
confirmSaveBeforeRun: "画布有未保存的修改,运行前需要先保存。是否保存?",
|
|
849
|
+
confirmStartBeforeRun: "规则链已停止,是否启动?",
|
|
850
|
+
saveBeforeRunFailed: "运行前保存失败",
|
|
851
|
+
startBeforeRunFailed: "规则链启动失败",
|
|
852
|
+
deployRequired: "当前规则链未上线,请先部署后再调试",
|
|
853
|
+
confirmDeployRetry: "当前规则链未上线,请先部署后再调试。是否立即部署并重试?",
|
|
854
|
+
deploySucceeded: "规则链已部署,正在重新执行",
|
|
855
|
+
deployFailed: "部署失败",
|
|
856
|
+
runHistoryNoApi: "未配置 apiBase,无法获取运行记录",
|
|
857
|
+
runHistoryHttpEmpty: "接口返回 HTTP {{status}},暂无运行记录",
|
|
858
|
+
runHistoryTime: "时间",
|
|
859
|
+
runHistoryRecordCount: "共 {{count}} 条记录"
|
|
860
|
+
},
|
|
861
|
+
/** 组件管理 */
|
|
862
|
+
componentManage: {
|
|
863
|
+
title: "组件管理",
|
|
864
|
+
installed: "已安装",
|
|
865
|
+
market: "组件市场",
|
|
866
|
+
dslInstall: "从 DSL 安装",
|
|
867
|
+
searchPlaceholder: "搜索组件...",
|
|
868
|
+
browsePlaceholder: "搜索或浏览组件市场",
|
|
869
|
+
noInstalled: "暂无已安装组件",
|
|
870
|
+
noAvailable: "暂无可用组件",
|
|
871
|
+
needApiBase: "需要配置 apiBase",
|
|
872
|
+
loadFailed: "加载失败",
|
|
873
|
+
dslLabel: "粘贴组件 DSL (JSON)",
|
|
874
|
+
dslPlaceholder: "粘贴组件的 JSON 定义...",
|
|
875
|
+
installBtn: "安装组件",
|
|
876
|
+
install: "安装",
|
|
877
|
+
installSuccess: "成功安装 {{count}} 个组件",
|
|
878
|
+
dslEmpty: "请粘贴组件 DSL",
|
|
879
|
+
jsonParseFailed: "JSON 解析失败",
|
|
880
|
+
enable: "启用",
|
|
881
|
+
disable: "禁用",
|
|
882
|
+
uninstall: "卸载",
|
|
883
|
+
downloadDsl: "下载 DSL",
|
|
884
|
+
upgrade: "升级",
|
|
885
|
+
confirmUninstall: '确定要卸载组件 "{{name}}" 吗?此操作不可撤销。',
|
|
886
|
+
enableSuccess: "组件已启用",
|
|
887
|
+
disableSuccess: "组件已禁用",
|
|
888
|
+
uninstallSuccess: "组件已卸载",
|
|
889
|
+
operateFailed: "操作失败",
|
|
890
|
+
refreshFailed: "组件已安装,但组件目录刷新失败",
|
|
891
|
+
expandAll: "全部展开",
|
|
892
|
+
collapseAll: "全部折叠",
|
|
893
|
+
builtinComponent: "内置组件",
|
|
894
|
+
customComponent: "自定义组件",
|
|
895
|
+
totalComponents: "共 {{count}} 个组件",
|
|
896
|
+
sharedNodes: {
|
|
897
|
+
tab: "共享节点",
|
|
898
|
+
search: "搜索",
|
|
899
|
+
searchPlaceholder: "搜索共享节点...",
|
|
900
|
+
create: "新建共享节点",
|
|
901
|
+
empty: "暂无共享节点",
|
|
902
|
+
loading: "正在加载共享节点...",
|
|
903
|
+
loadFailed: "共享节点加载失败",
|
|
904
|
+
detailLoading: "正在加载共享节点详情...",
|
|
905
|
+
detailFailed: "共享节点详情加载失败",
|
|
906
|
+
detailInvalid: "共享节点详情不是有效对象",
|
|
907
|
+
unsupported: "当前服务不支持共享节点管理",
|
|
908
|
+
unauthorized: "当前账号无权管理共享节点",
|
|
909
|
+
id: "ID",
|
|
910
|
+
name: "名称",
|
|
911
|
+
componentType: "组件类型",
|
|
912
|
+
connectionStatus: "连接状态",
|
|
913
|
+
actions: "操作",
|
|
914
|
+
edit: "编辑",
|
|
915
|
+
delete: "删除",
|
|
916
|
+
createTitle: "新建共享节点",
|
|
917
|
+
editTitle: "编辑共享节点",
|
|
918
|
+
formHint: "基础字段采用结构化编辑,configuration 始终按完整 JSON 对象保存。",
|
|
919
|
+
selectComponent: "请选择组件",
|
|
920
|
+
noEligibleComponents: "已安装组件中没有支持共享引用的组件",
|
|
921
|
+
configuration: "配置 (JSON)",
|
|
922
|
+
configurationObjectRequired: "configuration 必须是 JSON 对象",
|
|
923
|
+
invalidJson: "configuration 不是有效 JSON",
|
|
924
|
+
formatJson: "格式化 JSON",
|
|
925
|
+
required: "ID、名称和组件类型均不能为空",
|
|
926
|
+
identityMissing: "共享节点 ID 和组件类型不能为空",
|
|
927
|
+
save: "保存",
|
|
928
|
+
cancel: "取消",
|
|
929
|
+
back: "返回列表",
|
|
930
|
+
saveFailed: "共享节点保存失败",
|
|
931
|
+
saveSuccess: "共享节点已保存",
|
|
932
|
+
refreshFailed: "共享节点已保存,但组件目录刷新失败",
|
|
933
|
+
deleteFailed: "共享节点删除失败",
|
|
934
|
+
deleteSuccess: "共享节点已删除",
|
|
935
|
+
deleteRefreshFailed: "共享节点已删除,但组件目录刷新失败",
|
|
936
|
+
deleting: "正在删除共享节点...",
|
|
937
|
+
confirmDelete: "确定删除共享节点“{{name}}”吗?此操作不可撤销。",
|
|
938
|
+
confirmTypeChange: "切换组件类型会替换当前 configuration,是否继续?",
|
|
939
|
+
pageSize: "每页条数",
|
|
940
|
+
pageSummary: "第 {{page}}/{{pages}} 页,共 {{total}} 条",
|
|
941
|
+
previous: "上一页",
|
|
942
|
+
next: "下一页",
|
|
943
|
+
statusLoading: "正在加载连接状态...",
|
|
944
|
+
statusUnsupported: "当前服务不支持连接状态查询",
|
|
945
|
+
statusUnauthorized: "登录后可查看连接状态",
|
|
946
|
+
statusStale: "连接状态可能已过期",
|
|
947
|
+
statusError: "连接状态加载失败",
|
|
948
|
+
statusLoadingShort: "加载中",
|
|
949
|
+
statusUnsupportedShort: "不支持",
|
|
950
|
+
statusUnauthorizedShort: "未授权",
|
|
951
|
+
statusErrorShort: "不可用",
|
|
952
|
+
statusStaleShort: "已过期",
|
|
953
|
+
statusUnknown: "未知"
|
|
954
|
+
}
|
|
955
|
+
},
|
|
956
|
+
/** 规则链信息面板 */
|
|
957
|
+
chainInfo: {
|
|
958
|
+
title: "规则链信息",
|
|
959
|
+
noData: "暂无数据",
|
|
960
|
+
basicInfo: "基础信息",
|
|
961
|
+
name: "名称",
|
|
962
|
+
rootChain: "根规则链",
|
|
963
|
+
enabled: "开启",
|
|
964
|
+
disabled: "关闭",
|
|
965
|
+
createRootChain: "创建根规则链",
|
|
966
|
+
createSubChain: "创建子规则链",
|
|
967
|
+
debugMode: "调试模式",
|
|
968
|
+
debugModeDesc: "开启后每条消息都会记录调试日志,并覆盖节点调试配置;会影响运行性能,生产环境建议关闭。编辑器手动调试不受影响。",
|
|
969
|
+
category: "分类",
|
|
970
|
+
categoryPlaceholder: "请输入分类(如:agent, iot, data-flow)",
|
|
971
|
+
description: "描述",
|
|
972
|
+
noDescription: "暂无描述",
|
|
973
|
+
inputDefinition: "输入定义",
|
|
974
|
+
inputSchemaDesc: "定义规则链对外入参,应用集成和 AI 调用可复用该结构。",
|
|
975
|
+
inputSchemaEmpty: "暂无输入定义",
|
|
976
|
+
visualMode: "可视化",
|
|
977
|
+
jsonMode: "JSON代码",
|
|
978
|
+
addProperty: "添加属性",
|
|
979
|
+
propertyName: "字段名",
|
|
980
|
+
propertyTitle: "标题",
|
|
981
|
+
propertyDescription: "说明",
|
|
982
|
+
propertyType: "类型",
|
|
983
|
+
required: "必填",
|
|
984
|
+
order: "排序",
|
|
985
|
+
inputSchemaJsonHint: "复杂嵌套 object/array 可切换到 JSON 代码模式编辑,已有嵌套结构会被保留。",
|
|
986
|
+
formatJson: "格式化 JSON",
|
|
987
|
+
jsonInvalid: "JSON 格式错误",
|
|
988
|
+
saveInputSchema: "保存输入定义",
|
|
989
|
+
varsAndSecrets: "变量和秘钥",
|
|
990
|
+
vars: "变量",
|
|
991
|
+
secrets: "秘钥",
|
|
992
|
+
varName: "名称",
|
|
993
|
+
varValue: "值",
|
|
994
|
+
platformIntegration: "平台集成",
|
|
995
|
+
syncAPI: "同步调用接口",
|
|
996
|
+
syncAPIDesc: "关注处理结果",
|
|
997
|
+
asyncAPI: "异步调用接口",
|
|
998
|
+
asyncAPIDesc: "不关注处理结果",
|
|
999
|
+
openaiCompatibleAPI: "OpenAI 兼容接口",
|
|
1000
|
+
openaiCompatibleDesc: "兼容 OpenAI Chat Completions 格式,支持流式响应",
|
|
1001
|
+
openaiConfigExample: "OpenAI 配置示例",
|
|
1002
|
+
mcpIntegration: "MCP 集成",
|
|
1003
|
+
tenantAPI: "租户接口",
|
|
1004
|
+
tenantAPIDesc: "把租户所有规则链作为 MCP 工具",
|
|
1005
|
+
chainAPI: "规则链接口",
|
|
1006
|
+
chainAPIDesc: "需要配置 MCP Server Endpoint",
|
|
1007
|
+
mcpStreamableHttp: "MCP 接口 (StreamableHTTP)",
|
|
1008
|
+
mcpStreamableHttpDesc: "把所有规则链作为 MCP 工具暴露",
|
|
1009
|
+
mcpGroupAPI: "MCP 分组接口",
|
|
1010
|
+
mcpGroupAPIDesc: "按分组过滤工具子集",
|
|
1011
|
+
mcpConfigExample: "MCP 配置示例",
|
|
1012
|
+
clickCopy: "点击复制",
|
|
1013
|
+
copied: "已复制!",
|
|
1014
|
+
appIntegration: "应用集成",
|
|
1015
|
+
addVar: "新增变量",
|
|
1016
|
+
addSecret: "新增密钥",
|
|
1017
|
+
addTitle: "添加{{type}}",
|
|
1018
|
+
namePlaceholder: "请输入名称",
|
|
1019
|
+
valuePlaceholder: "请输入值",
|
|
1020
|
+
saving: "保存中...",
|
|
1021
|
+
saved: "已保存",
|
|
1022
|
+
appliedLocally: "已应用,待全局保存",
|
|
1023
|
+
saveFailed: "保存失败",
|
|
1024
|
+
saveBaseOperation: "保存基础信息",
|
|
1025
|
+
saveInputSchemaOperation: "保存输入定义",
|
|
1026
|
+
saveVarsOperation: "保存变量",
|
|
1027
|
+
saveSecretsOperation: "保存密钥",
|
|
1028
|
+
requestTimeout: "请求超时,请检查服务状态后重试",
|
|
1029
|
+
unknownSaveError: "未知保存错误",
|
|
1030
|
+
saveVars: "保存变量",
|
|
1031
|
+
saveSecrets: "保存密钥",
|
|
1032
|
+
selectAll: "全选",
|
|
1033
|
+
select: "选择",
|
|
1034
|
+
selectedCount: "已选择 {{count}} 项",
|
|
1035
|
+
selectRow: "选择第 {{index}} 项",
|
|
1036
|
+
batchDelete: "批量删除",
|
|
1037
|
+
batchDeleteConfirm: "确定删除选中的 {{count}} 项吗?",
|
|
1038
|
+
deleteEntryConfirm: "确定删除“{{key}}”吗?"
|
|
1039
|
+
},
|
|
1040
|
+
/** 规则链选择器 */
|
|
1041
|
+
chainSelector: {
|
|
1042
|
+
title: "选择规则链",
|
|
1043
|
+
subtitle: "选择主链或子链加载到画布",
|
|
1044
|
+
searchPlaceholder: "搜索规则链...",
|
|
1045
|
+
noChains: "暂无规则链",
|
|
1046
|
+
allChains: "全部",
|
|
1047
|
+
mainChains: "主链",
|
|
1048
|
+
subChains: "子链",
|
|
1049
|
+
refresh: "刷新",
|
|
1050
|
+
rootBadge: "主链",
|
|
1051
|
+
subBadge: "子链",
|
|
1052
|
+
debugBadge: "调试",
|
|
1053
|
+
pageInfo: "第 {{current}} / {{total}} 页 (共 {{count}} 条)",
|
|
1054
|
+
prevPage: "上一页",
|
|
1055
|
+
nextPage: "下一页",
|
|
1056
|
+
totalItems: "共 {{count}} 条"
|
|
1057
|
+
},
|
|
1058
|
+
/** 对话框通用文本 */
|
|
1059
|
+
dialog: {
|
|
1060
|
+
confirm: "确定",
|
|
1061
|
+
cancel: "取消",
|
|
1062
|
+
deleteTitle: "确认删除",
|
|
1063
|
+
deleteMessage: "确定要删除选中的元素吗?此操作不可撤销。",
|
|
1064
|
+
saveTitle: "保存确认",
|
|
1065
|
+
saveMessage: "是否保存当前规则链?",
|
|
1066
|
+
delete: "删除"
|
|
1067
|
+
},
|
|
1068
|
+
/** 表单通用标签 */
|
|
1069
|
+
form: {
|
|
1070
|
+
name: "名称",
|
|
1071
|
+
type: "类型",
|
|
1072
|
+
debugMode: "调试模式",
|
|
1073
|
+
configuration: "配置",
|
|
1074
|
+
description: "描述",
|
|
1075
|
+
relationType: "关系类型",
|
|
1076
|
+
inputPlaceholder: "请输入参数",
|
|
1077
|
+
schemaMentionHint: "输入 . 选择规则链入参字段",
|
|
1078
|
+
runtimeObserved: "运行实测",
|
|
1079
|
+
selectOptionRequired: "请选择列表中的有效值",
|
|
1080
|
+
jsScriptPlaceholder: "请输入 JS 脚本...",
|
|
1081
|
+
keyPlaceholder: "请输入键",
|
|
1082
|
+
valuePlaceholder: "请输入值",
|
|
1083
|
+
selectRuleChain: "请选择规则链",
|
|
1084
|
+
useInputValue: "使用",
|
|
1085
|
+
connectionMode: "连接方式",
|
|
1086
|
+
customConnection: "自定义连接",
|
|
1087
|
+
sharedConnection: "共享连接",
|
|
1088
|
+
sharedConnectionPlaceholder: "选择或输入 ref:// 共享连接",
|
|
1089
|
+
sharedConnectionDesc: "共享连接会写入 ref:// 引用,自定义连接会直接写入服务地址。",
|
|
1090
|
+
aiProvider: "AI服务商",
|
|
1091
|
+
customProvider: "自定义供应商",
|
|
1092
|
+
presetProvider: "预设供应商",
|
|
1093
|
+
providerPlaceholder: "选择AI供应商",
|
|
1094
|
+
providerDesc: "预设供应商会自动填充 API 地址和模型,自定义供应商保留手工填写。"
|
|
1095
|
+
},
|
|
1096
|
+
/** 边(连接)属性 */
|
|
1097
|
+
edge: {
|
|
1098
|
+
title: "规则节点链接详情",
|
|
1099
|
+
id: "连线 ID",
|
|
1100
|
+
source: "来源",
|
|
1101
|
+
target: "目标",
|
|
1102
|
+
label: "链接标签",
|
|
1103
|
+
labelPlaceholder: "如: True / False / Success",
|
|
1104
|
+
required: "链接标签是必须的",
|
|
1105
|
+
custom: "自定义",
|
|
1106
|
+
customPlaceholder: "请输入自定义关系类型",
|
|
1107
|
+
quickEditTitle: "快速编辑链接标签",
|
|
1108
|
+
quickEditFailed: "链接标签更新失败"
|
|
1109
|
+
},
|
|
1110
|
+
/** 路由设置弹窗 */
|
|
1111
|
+
routeSettings: {
|
|
1112
|
+
title: "路由设置",
|
|
1113
|
+
endpointType: "端点类型",
|
|
1114
|
+
routerList: "路由规则",
|
|
1115
|
+
addRouter: "添加路由",
|
|
1116
|
+
fromPath: "请求路径 (From)",
|
|
1117
|
+
fromPathPlaceholder: "如: /api/v1/data 或 :id",
|
|
1118
|
+
toPath: "目标路径 (To)",
|
|
1119
|
+
toPathPlaceholder: "如: chain:rule_chain_id",
|
|
1120
|
+
preProcessor: "前置处理器",
|
|
1121
|
+
postProcessor: "后置处理器",
|
|
1122
|
+
noProcessor: "无",
|
|
1123
|
+
noProcessorMatch: "没有匹配的处理器",
|
|
1124
|
+
processorPickerSummary: "显示 {{visible}} / 匹配 {{matched}} / 共 {{total}},已选 {{selected}}",
|
|
1125
|
+
waitResult: "等待处理结果",
|
|
1126
|
+
globalProcessors: "全局处理器",
|
|
1127
|
+
routeSettingsBtn: "路由设置",
|
|
1128
|
+
waitExecuteResult: "等待执行结果",
|
|
1129
|
+
toolDesc: "工具描述",
|
|
1130
|
+
operate: "操作",
|
|
1131
|
+
edit: "编辑",
|
|
1132
|
+
delete: "删除",
|
|
1133
|
+
confirmDeleteRoute: "确认删除路由「{{path}}」吗?此操作不可撤销。",
|
|
1134
|
+
unnamedRoute: "未命名路由",
|
|
1135
|
+
empty: "没数据",
|
|
1136
|
+
yes: "是",
|
|
1137
|
+
no: "否",
|
|
1138
|
+
totalItems: "共 {{count}} 条",
|
|
1139
|
+
itemsPerPage: "{{size}} 条/页",
|
|
1140
|
+
prevPage: "上一页",
|
|
1141
|
+
nextPage: "下一页",
|
|
1142
|
+
jumpTo: "跳至",
|
|
1143
|
+
jump: "跳转",
|
|
1144
|
+
jumpPage: "跳转页码",
|
|
1145
|
+
noRouteNeeded: "该端点类型不需要路由配置",
|
|
1146
|
+
messageBody: "消息内容",
|
|
1147
|
+
fieldPlaceholder: "请输入{{label}}",
|
|
1148
|
+
messageBodyPlaceholder: "请输入消息内容,例如:{'id':1}",
|
|
1149
|
+
scheduleBodyDesc: "定时触发发送给规则链的消息内容和类型",
|
|
1150
|
+
cronPreset: "调度预设",
|
|
1151
|
+
cronEverySeconds: "每隔数秒",
|
|
1152
|
+
cronEveryMinutes: "每隔数分钟",
|
|
1153
|
+
cronEveryHour: "每小时",
|
|
1154
|
+
cronDaily: "每天",
|
|
1155
|
+
cronWeekdays: "工作日",
|
|
1156
|
+
cronWeekly: "每周",
|
|
1157
|
+
cronMonthly: "每月",
|
|
1158
|
+
cronYearly: "每年",
|
|
1159
|
+
cronCustom: "自定义",
|
|
1160
|
+
cronAtMinute: "第",
|
|
1161
|
+
cronSixFieldHint: "六字段:秒 分 时 日 月 周",
|
|
1162
|
+
cronPreviewTimezone: "预览时区:{{timeZone}}",
|
|
1163
|
+
cronNoFutureRuns: "当前表达式没有可预览的后续执行时间",
|
|
1164
|
+
seconds: "秒",
|
|
1165
|
+
minutes: "分钟",
|
|
1166
|
+
monthUnit: "月",
|
|
1167
|
+
dayUnit: "日",
|
|
1168
|
+
sundayShort: "日",
|
|
1169
|
+
mondayShort: "一",
|
|
1170
|
+
tuesdayShort: "二",
|
|
1171
|
+
wednesdayShort: "三",
|
|
1172
|
+
thursdayShort: "四",
|
|
1173
|
+
fridayShort: "五",
|
|
1174
|
+
saturdayShort: "六",
|
|
1175
|
+
waitWsDesc: "如果开启则会把规则链执行结果写回同一条 WebSocket 连接",
|
|
1176
|
+
waitHttpDesc: "如果开启则会把规则链执行结果响应到客户端",
|
|
1177
|
+
toolInputSchema: "工具入参JsonSchema",
|
|
1178
|
+
format: "整理",
|
|
1179
|
+
fullscreen: "全屏",
|
|
1180
|
+
exitFullscreen: "退出全屏",
|
|
1181
|
+
contentPlaceholder: "请输入内容...",
|
|
1182
|
+
editRoute: "编辑路由",
|
|
1183
|
+
addRoute: "新增路由",
|
|
1184
|
+
save: "保存",
|
|
1185
|
+
cancel: "取消",
|
|
1186
|
+
jsonInvalid: "JSON格式不正确",
|
|
1187
|
+
reservedWsPath: "endpoint/ws 不能复用 /api/v1/logs/ws 或 /api/v1/huanban/logs/ws;该路径保留给 Debug WS 和 HBC Runtime WS",
|
|
1188
|
+
pathExists: "{{path}} 已经存在"
|
|
1189
|
+
},
|
|
1190
|
+
/** 独立版属性抽屉增强字段 */
|
|
1191
|
+
property: {
|
|
1192
|
+
configurationJson: "完整配置 JSON",
|
|
1193
|
+
loadingOptions: "正在加载选项...",
|
|
1194
|
+
fieldChangeLoading: "正在更新关联字段...",
|
|
1195
|
+
fieldChangeWait: "请等待关联字段更新完成",
|
|
1196
|
+
fieldChangeFailed: "字段联动失败",
|
|
1197
|
+
fieldChangeFailedMessage: "关联字段更新失败: {{message}}",
|
|
1198
|
+
fieldChangeUnavailable: "字段联动处理器不可用: {{name}}",
|
|
1199
|
+
configureAttached: "配置附加参数",
|
|
1200
|
+
attachedSettings: "附加参数",
|
|
1201
|
+
relationSummaryTitle: "关系 / 匹配协议",
|
|
1202
|
+
casesTitle: "cases / then 匹配关系",
|
|
1203
|
+
outgoingRelationsTitle: "出边关系类型",
|
|
1204
|
+
availableValues: "可选值",
|
|
1205
|
+
groupFilterTitle: "groupFilter 匹配协议",
|
|
1206
|
+
groupActionTitle: "groupAction 匹配协议",
|
|
1207
|
+
forTitle: "for 循环协议",
|
|
1208
|
+
whileTitle: "while 循环协议",
|
|
1209
|
+
iteratorTitle: "iterator 兼容协议",
|
|
1210
|
+
iteratorDeprecated: "iterator 已弱化,建议使用 for 协议",
|
|
1211
|
+
msgTypeSwitchTitle: "msgTypeSwitch 路由协议",
|
|
1212
|
+
endpointRouteTitle: "endpoint 出边路由",
|
|
1213
|
+
matchMode: "匹配模式",
|
|
1214
|
+
allMatches: "全部匹配 (AND)",
|
|
1215
|
+
anyMatch: "任一匹配 (OR)",
|
|
1216
|
+
allNodesSatisfied: "0 (全部节点满足)",
|
|
1217
|
+
notConfigured: "未配置",
|
|
1218
|
+
noTools: "暂无工具",
|
|
1219
|
+
noSubagents: "暂无子智能体",
|
|
1220
|
+
addTool: "添加工具",
|
|
1221
|
+
addSubagent: "添加子智能体",
|
|
1222
|
+
builtinTool: "内置工具",
|
|
1223
|
+
ruleChain: "规则链",
|
|
1224
|
+
custom: "自定义",
|
|
1225
|
+
subagent: "子智能体",
|
|
1226
|
+
customAgent: "自定义智能体",
|
|
1227
|
+
toolType: "工具类型",
|
|
1228
|
+
agentType: "智能体类型",
|
|
1229
|
+
searchTools: "搜索工具...",
|
|
1230
|
+
selectRuleChain: "选择规则链",
|
|
1231
|
+
selectTool: "选择工具",
|
|
1232
|
+
selectSubagent: "选择子智能体",
|
|
1233
|
+
editTool: "编辑工具",
|
|
1234
|
+
editSubagent: "编辑子智能体",
|
|
1235
|
+
configTool: "配置工具",
|
|
1236
|
+
configSubagent: "配置子智能体",
|
|
1237
|
+
mainSubChain: "主链 / 子链",
|
|
1238
|
+
createCustomAgent: "创建自定义智能体",
|
|
1239
|
+
createCustomTool: "创建自定义工具",
|
|
1240
|
+
parameterSchema: "参数 Schema",
|
|
1241
|
+
agentName: "智能体名称",
|
|
1242
|
+
toolName: "工具名称",
|
|
1243
|
+
agentNamePlaceholder: "子智能体名称",
|
|
1244
|
+
toolNamePlaceholder: "工具名称",
|
|
1245
|
+
selectOrInputRuleChainId: "选择或输入规则链ID",
|
|
1246
|
+
select: "选择",
|
|
1247
|
+
search: "搜索",
|
|
1248
|
+
ruleChainToolDesc: "规则链工具会写入 targetId,并从规则链 inputSchema 填充参数定义。",
|
|
1249
|
+
description: "描述",
|
|
1250
|
+
subagentDesc: "子智能体描述",
|
|
1251
|
+
toolDesc: "工具描述",
|
|
1252
|
+
customToolDesc: "自定义工具描述",
|
|
1253
|
+
autoLoadSkillDir: "自动加载全局技能目录({{dir}})",
|
|
1254
|
+
manageSkills: "管理技能",
|
|
1255
|
+
schemaParameters: "参数定义",
|
|
1256
|
+
parameters: "参数定义",
|
|
1257
|
+
visualMode: "可视化模式",
|
|
1258
|
+
codeMode: "代码模式",
|
|
1259
|
+
visual: "可视化",
|
|
1260
|
+
jsonCode: "JSON代码",
|
|
1261
|
+
propertyName: "属性名",
|
|
1262
|
+
title: "标题",
|
|
1263
|
+
type: "类型",
|
|
1264
|
+
order: "顺序",
|
|
1265
|
+
required: "必填",
|
|
1266
|
+
operate: "操作",
|
|
1267
|
+
edit: "编辑",
|
|
1268
|
+
delete: "删除",
|
|
1269
|
+
name: "名称",
|
|
1270
|
+
id: "ID",
|
|
1271
|
+
addProperty: "添加属性",
|
|
1272
|
+
initConfig: "初始化配置",
|
|
1273
|
+
backToSelect: "返回选择",
|
|
1274
|
+
back: "返回选择",
|
|
1275
|
+
cancel: "取消",
|
|
1276
|
+
confirm: "确定",
|
|
1277
|
+
confirmAndContinue: "确定并继续",
|
|
1278
|
+
finishToolSelection: "完成",
|
|
1279
|
+
noSchemaProperties: "暂无属性,点击下方按钮添加",
|
|
1280
|
+
arrayItems: "数组项目",
|
|
1281
|
+
childProperties: "子属性",
|
|
1282
|
+
itemType: "项目类型",
|
|
1283
|
+
arrayNonObject: "当前数组项目不是 object,无需配置项目属性。",
|
|
1284
|
+
addItemProperty: "添加项目属性",
|
|
1285
|
+
addChildProperty: "添加子属性",
|
|
1286
|
+
dragSort: "拖拽排序",
|
|
1287
|
+
moveUp: "上移",
|
|
1288
|
+
moveDown: "下移",
|
|
1289
|
+
noMatchingTools: "未找到相关工具",
|
|
1290
|
+
noDescription: "暂无描述",
|
|
1291
|
+
added: "已添加",
|
|
1292
|
+
pageInfo: "第 {{page}}/{{pages}} 页,共 {{total}} 条",
|
|
1293
|
+
prevPage: "上一页",
|
|
1294
|
+
nextPage: "下一页",
|
|
1295
|
+
loading: "加载中...",
|
|
1296
|
+
noData: "暂无数据",
|
|
1297
|
+
selected: "已选择",
|
|
1298
|
+
subChain: "子链",
|
|
1299
|
+
rootChain: "主链",
|
|
1300
|
+
subRuleChains: "子规则链",
|
|
1301
|
+
rootRuleChains: "主规则链",
|
|
1302
|
+
searchRuleChains: "搜索规则链...",
|
|
1303
|
+
datePlaceholder: "选择日期",
|
|
1304
|
+
timePlaceholder: "选择时间",
|
|
1305
|
+
dateTimeFormatInfo: "输出格式: {{format}},支持 ${} 变量替换",
|
|
1306
|
+
toggleToPicker: "切换到日期/时间选择器",
|
|
1307
|
+
toggleToManual: "切换到手动输入(支持变量)",
|
|
1308
|
+
picker: "选择器",
|
|
1309
|
+
variable: "变量",
|
|
1310
|
+
nestedArrayPlaceholder: "请输入参数",
|
|
1311
|
+
simpleArrayPlaceholder: "输入后回车添加,支持粘贴批量内容",
|
|
1312
|
+
clearValues: "清空",
|
|
1313
|
+
key: "键",
|
|
1314
|
+
value: "值",
|
|
1315
|
+
actions: "操作",
|
|
1316
|
+
editRowDetails: "编辑行详情",
|
|
1317
|
+
confirmDeleteRows: "确认删除 {{count}} 行?",
|
|
1318
|
+
confirmReplacePointTable: "导入 {{incoming}} 条将替换当前 {{existing}} 条点位,是否继续?",
|
|
1319
|
+
deleteSelected: "删除所选",
|
|
1320
|
+
exportCsv: "导出 CSV",
|
|
1321
|
+
csvExportFailed: "CSV 导出失败: {{message}}",
|
|
1322
|
+
generatePoints: "批量生成点位",
|
|
1323
|
+
importCsv: "导入 CSV",
|
|
1324
|
+
csvImportFailed: "CSV 导入失败: {{message}}",
|
|
1325
|
+
emptyExcelTable: "Excel 中没有有效数据",
|
|
1326
|
+
excelExportFailed: "Excel 导出失败: {{message}}",
|
|
1327
|
+
excelImportFailed: "Excel 导入失败: {{message}}",
|
|
1328
|
+
exportExcel: "导出 Excel",
|
|
1329
|
+
importExcel: "导入 Excel",
|
|
1330
|
+
noRows: "暂无数据",
|
|
1331
|
+
pointCount: "数量",
|
|
1332
|
+
pointNamePrefix: "名称前缀",
|
|
1333
|
+
pointPrefix: "地址前缀",
|
|
1334
|
+
pointStart: "起始编号",
|
|
1335
|
+
pointStep: "步长",
|
|
1336
|
+
pointType: "数据类型",
|
|
1337
|
+
searchTable: "搜索表格",
|
|
1338
|
+
tableCount: "共 {{count}} 条",
|
|
1339
|
+
add: "添加",
|
|
1340
|
+
expressionPlaceholder: "输入表达式,如:msg.temperature > 50",
|
|
1341
|
+
conditionPlaceholder: "输入判断条件,如:msg.temperature > 50",
|
|
1342
|
+
expressionFieldPlaceholder: "属性,如 msg.temperature",
|
|
1343
|
+
expressionValuePlaceholder: "值,如 50",
|
|
1344
|
+
deleteCondition: "删除条件",
|
|
1345
|
+
addAndCondition: "添加 AND 条件",
|
|
1346
|
+
remove: "移除",
|
|
1347
|
+
addOrCondition: "添加 OR 条件",
|
|
1348
|
+
switchCondition: "条件",
|
|
1349
|
+
switchRoute: "路由",
|
|
1350
|
+
switchRoutePlaceholder: "输入路由:如 Case1",
|
|
1351
|
+
deleteBranch: "删除分支",
|
|
1352
|
+
addBranch: "添加分支",
|
|
1353
|
+
builtinToolAlreadyAdded: "该内置工具已添加",
|
|
1354
|
+
ruleChainAlreadyAdded: "该规则链已添加",
|
|
1355
|
+
ruleChainRequired: "规则链是必须的",
|
|
1356
|
+
nameRequired: "{{name}}是必须的",
|
|
1357
|
+
parametersJsonInvalid: "参数定义 JSON 格式错误: {{message}}",
|
|
1358
|
+
configJsonInvalid: "初始化配置 JSON 格式错误: {{message}}",
|
|
1359
|
+
relationUsedSuffix: " (已占用)",
|
|
1360
|
+
validationFailedTitle: "校验未通过,请修正以下问题:",
|
|
1361
|
+
chooseOption: "选择",
|
|
1362
|
+
searchOptions: "搜索选项...",
|
|
1363
|
+
noMatchingOptions: "没有匹配的选项",
|
|
1364
|
+
selectedCount: "已选 {{count}} 项",
|
|
1365
|
+
selectResultCount: "显示 {{shown}} / {{total}} 项",
|
|
1366
|
+
moreOptionsHint: "结果较多,请继续输入关键词缩小范围",
|
|
1367
|
+
noConfigItems: "暂无配置项"
|
|
1368
|
+
},
|
|
1369
|
+
/** 链路追溯弹窗 */
|
|
1370
|
+
trace: {
|
|
1371
|
+
needApiBase: "追溯功能需要配置 apiBase,请在编辑器选项中设置后端 API 地址。",
|
|
1372
|
+
loadChainFirst: "请先加载一条规则链再使用追溯功能。",
|
|
1373
|
+
title: "链路追溯",
|
|
1374
|
+
mode: "追溯模式",
|
|
1375
|
+
message: "消息: {{msgId}}",
|
|
1376
|
+
executedNodes: "{{count}} 个节点已执行",
|
|
1377
|
+
totalDuration: "总耗时 {{duration}}",
|
|
1378
|
+
exit: "退出追溯",
|
|
1379
|
+
empty: "(空)",
|
|
1380
|
+
truncated: "... (已截断)",
|
|
1381
|
+
fullData: "完整",
|
|
1382
|
+
msgId: "消息 ID",
|
|
1383
|
+
msgIdPlaceholder: "输入消息 ID 或从下方列表选择",
|
|
1384
|
+
recentMessages: "最近消息",
|
|
1385
|
+
loadingRecent: "正在加载最近消息...",
|
|
1386
|
+
cancel: "取消",
|
|
1387
|
+
start: "开始追溯",
|
|
1388
|
+
querying: "查询中...",
|
|
1389
|
+
queryingLogs: "正在查询调试日志...",
|
|
1390
|
+
retry: "重试",
|
|
1391
|
+
queryFailed: "查询失败: {{message}}",
|
|
1392
|
+
noLogsForMsg: `未找到消息 ID "{{msgId}}" 的调试日志。
|
|
1393
|
+
|
|
1394
|
+
请确认:
|
|
1395
|
+
1. 该消息已被规则链处理
|
|
1396
|
+
2. 规则链已开启调试模式
|
|
1397
|
+
3. 日志尚未过期`,
|
|
1398
|
+
noDebugLogs: "暂无调试日志记录",
|
|
1399
|
+
enableDebugHint: "请先发送消息到规则链并开启调试模式",
|
|
1400
|
+
loadFailedManual: "加载失败,请手动输入消息 ID",
|
|
1401
|
+
noNodes: "当前规则链无节点",
|
|
1402
|
+
queryingChainLogs: "正在查询规则链日志...",
|
|
1403
|
+
queryingNodes: "查询节点 {{start}}~{{end}} / {{total}}..."
|
|
1404
|
+
},
|
|
1405
|
+
/** 纯 DOM 调试控制台 */
|
|
1406
|
+
debugConsole: {
|
|
1407
|
+
title: "调试控制台",
|
|
1408
|
+
clear: "清除"
|
|
1409
|
+
},
|
|
1410
|
+
/** 内置 AI 供应商显示名称 */
|
|
1411
|
+
aiProvider: {
|
|
1412
|
+
gitee_ai: "Gitee AI",
|
|
1413
|
+
deepseek: "DeepSeek",
|
|
1414
|
+
qwen: "通义千问",
|
|
1415
|
+
zhipu: "智谱 AI",
|
|
1416
|
+
openai: "OpenAI",
|
|
1417
|
+
ollama: "Ollama (本地)"
|
|
1418
|
+
},
|
|
1419
|
+
/** LogicFlow 自定义节点图元 */
|
|
1420
|
+
customNode: {
|
|
1421
|
+
onlyRightAnchorOut: "只允许从右边的锚点连出",
|
|
1422
|
+
inputSingleOutput: "Input节点只能允许引出一条边",
|
|
1423
|
+
externalCannotConnectGroupChild: "外部节点不允许连接组内节点",
|
|
1424
|
+
onlyLeftAnchorIn: "只允许从左边锚点连入",
|
|
1425
|
+
agentOnlyRightOrBottomOut: "只允许从右边和底部的锚点连出",
|
|
1426
|
+
agentOrchestrationLabel: "智能体编排",
|
|
1427
|
+
agentOrchestrationOnlyRightOrBottomOut: "智能体编排节点只能从右侧或底部锚点连出",
|
|
1428
|
+
agentOrchestrationOnlyLeftIn: "智能体编排节点只能从左侧锚点连入",
|
|
1429
|
+
anchorLlm: "大模型",
|
|
1430
|
+
anchorTool: "工具",
|
|
1431
|
+
anchorMemory: "记忆",
|
|
1432
|
+
anchorKnowledge: "知识库"
|
|
1433
|
+
},
|
|
1434
|
+
/** 组节点连线校验 */
|
|
1435
|
+
groupNode: {
|
|
1436
|
+
onlyRightAnchorOut: "只允许从右边的锚点连出",
|
|
1437
|
+
notToInput: "禁止连到输入类节点",
|
|
1438
|
+
onlyLeftAnchorIn: "只允许从左边锚点连入"
|
|
1439
|
+
},
|
|
1440
|
+
/** React/Vue 独立导入导出组件 */
|
|
1441
|
+
importExport: {
|
|
1442
|
+
exportTitle: "导出规则链",
|
|
1443
|
+
importTitle: "导入规则链",
|
|
1444
|
+
exportTab: "导出",
|
|
1445
|
+
importTab: "导入",
|
|
1446
|
+
nodes: "节点",
|
|
1447
|
+
edges: "连线",
|
|
1448
|
+
size: "大小",
|
|
1449
|
+
name: "名称",
|
|
1450
|
+
fileLoaded: "文件已加载,点击重新选择",
|
|
1451
|
+
dropHint: "拖拽 JSON 文件到此处,或点击选择文件",
|
|
1452
|
+
jsonPlaceholder: "粘贴规则链 JSON",
|
|
1453
|
+
invalidRuleChainJson: "JSON 格式不符合 RuleGo 规则链规范(缺少 ruleChain 或 metadata 字段)",
|
|
1454
|
+
jsonParseFailed: "JSON 解析失败: {{message}}",
|
|
1455
|
+
selectJsonFile: "请选择 .json 文件",
|
|
1456
|
+
copied: "已复制到剪贴板",
|
|
1457
|
+
downloaded: "已下载: {{fileName}}",
|
|
1458
|
+
noImportData: "没有可导入的数据",
|
|
1459
|
+
importSuccess: "规则链导入成功",
|
|
1460
|
+
downloadFile: "下载文件",
|
|
1461
|
+
confirmImport: "确认导入"
|
|
1462
|
+
},
|
|
1463
|
+
/** React/Vue 独立规则链列表组件 */
|
|
1464
|
+
workflowList: {
|
|
1465
|
+
title: "工作流列表",
|
|
1466
|
+
searchPlaceholder: "搜索工作流...",
|
|
1467
|
+
create: "新建",
|
|
1468
|
+
createTitle: "新建工作流",
|
|
1469
|
+
createAndOpen: "创建并打开",
|
|
1470
|
+
defaultName: "新工作流",
|
|
1471
|
+
id: "ID",
|
|
1472
|
+
idPlaceholder: "规则链 ID,不可包含 /、\\ 或 .",
|
|
1473
|
+
idInvalid: "ID 不能为空,且不能包含 /、\\ 或 .",
|
|
1474
|
+
namePlaceholder: "输入工作流名称",
|
|
1475
|
+
descriptionPlaceholder: "可选描述",
|
|
1476
|
+
chainType: "规则链类型",
|
|
1477
|
+
rootChain: "主链",
|
|
1478
|
+
subChain: "子链",
|
|
1479
|
+
debugMode: "调试模式",
|
|
1480
|
+
debugModeHint: "开启后每条消息都会记录调试日志,并覆盖节点调试配置;会影响运行性能,生产环境建议关闭。编辑器手动调试不受影响。",
|
|
1481
|
+
category: "分类",
|
|
1482
|
+
categoryPlaceholder: "可选分类,如 IoT / AI / 数据同步",
|
|
1483
|
+
initialStatus: "初始状态",
|
|
1484
|
+
initialStopped: "停用",
|
|
1485
|
+
initialRunning: "运行",
|
|
1486
|
+
openAfterCreate: "创建后进入编辑器",
|
|
1487
|
+
updateTime: "更新时间",
|
|
1488
|
+
more: "更多操作",
|
|
1489
|
+
rowHint: "单击查看信息,双击进入设计",
|
|
1490
|
+
loginRequired: "请先登录后查看工作流。",
|
|
1491
|
+
empty: "暂无工作流",
|
|
1492
|
+
createFirst: "创建第一个工作流",
|
|
1493
|
+
design: "设计",
|
|
1494
|
+
info: "信息",
|
|
1495
|
+
logs: "日志",
|
|
1496
|
+
online: "运行",
|
|
1497
|
+
offline: "停用",
|
|
1498
|
+
onlineAction: "部署",
|
|
1499
|
+
offlineAction: "下线",
|
|
1500
|
+
confirmDelete: "确定删除工作流「{{name}}」吗?此操作不可恢复。",
|
|
1501
|
+
operateFailed: "操作失败",
|
|
1502
|
+
copyFailed: "复制失败",
|
|
1503
|
+
deleteFailed: "删除失败",
|
|
1504
|
+
createFailed: "创建失败"
|
|
1505
|
+
},
|
|
1506
|
+
/** React/Vue 独立数据查看弹窗 */
|
|
1507
|
+
dataView: {
|
|
1508
|
+
title: "规则链数据",
|
|
1509
|
+
copyJson: "复制",
|
|
1510
|
+
downloadJson: "下载",
|
|
1511
|
+
fullJson: "完整 JSON",
|
|
1512
|
+
lineCount: "{{count}} 行",
|
|
1513
|
+
byteSize: "{{size}}",
|
|
1514
|
+
fullJsonHint: "当前视图不截断数据;大数据可直接复制或下载后查看。",
|
|
1515
|
+
copied: "JSON 已复制到剪贴板",
|
|
1516
|
+
copyFailed: "复制失败",
|
|
1517
|
+
downloaded: "已下载 {{fileName}}",
|
|
1518
|
+
downloadFailed: "下载失败"
|
|
1519
|
+
},
|
|
1520
|
+
/** React/Vue 独立校验结果面板 */
|
|
1521
|
+
validation: {
|
|
1522
|
+
title: "规则链校验",
|
|
1523
|
+
revalidate: "重新校验",
|
|
1524
|
+
noProblems: "未发现拓扑问题",
|
|
1525
|
+
validate: "校验",
|
|
1526
|
+
clearResults: "清除结果",
|
|
1527
|
+
close: "关闭",
|
|
1528
|
+
all: "全部",
|
|
1529
|
+
validating: "正在校验...",
|
|
1530
|
+
empty: "无校验结果,请点击校验按钮开始",
|
|
1531
|
+
noFilteredResults: "当前筛选无结果"
|
|
1532
|
+
},
|
|
1533
|
+
/** React/Vue 独立链路诊断面板 */
|
|
1534
|
+
problems: {
|
|
1535
|
+
title: "链路诊断",
|
|
1536
|
+
validate: "重新校验",
|
|
1537
|
+
clear: "清除问题",
|
|
1538
|
+
close: "关闭",
|
|
1539
|
+
filter: "筛选问题",
|
|
1540
|
+
all: "全部",
|
|
1541
|
+
error: "错误",
|
|
1542
|
+
warning: "警告",
|
|
1543
|
+
info: "提示",
|
|
1544
|
+
chain: "规则链",
|
|
1545
|
+
node: "节点",
|
|
1546
|
+
edge: "连线",
|
|
1547
|
+
loading: "正在校验...",
|
|
1548
|
+
empty: "未发现链路问题",
|
|
1549
|
+
noFiltered: "当前筛选无问题"
|
|
1550
|
+
},
|
|
1551
|
+
/** React/Vue 独立规则链设置弹窗 */
|
|
1552
|
+
ruleChainSettings: {
|
|
1553
|
+
title: "规则链设置",
|
|
1554
|
+
nameRequired: "规则链名称不能为空",
|
|
1555
|
+
namePlaceholder: "请输入规则链名称",
|
|
1556
|
+
descriptionPlaceholder: "请输入规则链描述",
|
|
1557
|
+
root: "根链",
|
|
1558
|
+
additionalInfo: "额外配置 (JSON)"
|
|
1559
|
+
},
|
|
1560
|
+
/** React/Vue 独立调试面板 */
|
|
1561
|
+
debugPanel: {
|
|
1562
|
+
sendMessage: "发送消息",
|
|
1563
|
+
debugLogs: "调试日志",
|
|
1564
|
+
runLogs: "运行日志",
|
|
1565
|
+
chainId: "规则链 ID",
|
|
1566
|
+
msgType: "消息类型",
|
|
1567
|
+
msgTypePlaceholder: "如 TEST_MSG",
|
|
1568
|
+
msgBodyJson: "消息体 (JSON)",
|
|
1569
|
+
sending: "发送中...",
|
|
1570
|
+
sendTestMessage: "发送测试消息",
|
|
1571
|
+
responseData: "响应数据",
|
|
1572
|
+
nodeLabel: "节点",
|
|
1573
|
+
loading: "加载中...",
|
|
1574
|
+
refresh: "刷新",
|
|
1575
|
+
noDebugLogs: "暂无调试日志",
|
|
1576
|
+
debugModeHint: '需要在节点上开启"调试模式"并发送消息',
|
|
1577
|
+
time: "时间",
|
|
1578
|
+
type: "类型",
|
|
1579
|
+
relation: "关系",
|
|
1580
|
+
operate: "操作",
|
|
1581
|
+
data: "数据",
|
|
1582
|
+
metadata: "元数据",
|
|
1583
|
+
error: "错误",
|
|
1584
|
+
noRunLogs: "暂无运行日志",
|
|
1585
|
+
runLogDetail: "日志详情",
|
|
1586
|
+
selectChainFirst: "请先选择规则链",
|
|
1587
|
+
noSendCallback: "未配置发送消息回调",
|
|
1588
|
+
invalidJson: "消息体 JSON 格式错误",
|
|
1589
|
+
sendSuccess: "消息发送成功",
|
|
1590
|
+
sendFailed: "发送失败: {{message}}",
|
|
1591
|
+
unknownError: "未知错误",
|
|
1592
|
+
sendException: "发送异常: {{message}}",
|
|
1593
|
+
deployRequired: "当前规则链未上线,请先部署后再调试",
|
|
1594
|
+
deployAndRetry: "部署并重试",
|
|
1595
|
+
deploying: "部署中...",
|
|
1596
|
+
deploySucceeded: "规则链已部署,正在重新发送",
|
|
1597
|
+
deployFailed: "部署失败",
|
|
1598
|
+
deployFailedWithMessage: "部署失败: {{message}}",
|
|
1599
|
+
loadDebugLogsFailed: "加载调试日志失败",
|
|
1600
|
+
loadRunLogsFailed: "加载运行日志失败",
|
|
1601
|
+
copied: "已复制",
|
|
1602
|
+
copyFailed: "复制失败"
|
|
1603
|
+
},
|
|
1604
|
+
/** React/Vue 独立搜索面板 */
|
|
1605
|
+
searchPanel: {
|
|
1606
|
+
placeholder: "搜索节点名称、类型或 ID...",
|
|
1607
|
+
resultCount: "{{count}} 个结果",
|
|
1608
|
+
matchCount: "{{count}} 个匹配",
|
|
1609
|
+
noMatch: "无匹配",
|
|
1610
|
+
empty: "没有找到匹配的节点"
|
|
1611
|
+
},
|
|
1612
|
+
/** React/Vue 独立规则链信息面板 */
|
|
1613
|
+
workflowInfo: {
|
|
1614
|
+
noData: "请选择一个工作流查看详情",
|
|
1615
|
+
baseInfo: "基础信息",
|
|
1616
|
+
inputDefinition: "输入定义",
|
|
1617
|
+
varsSecrets: "变量与秘钥",
|
|
1618
|
+
integration: "应用集成",
|
|
1619
|
+
maintenance: "维护验证",
|
|
1620
|
+
rootChain: "根规则链",
|
|
1621
|
+
rootChainHint: "开启:主链;关闭:子链",
|
|
1622
|
+
debugMode: "调试模式",
|
|
1623
|
+
debugModeHint: "开启后每条消息都会记录调试日志,并覆盖节点调试配置;会影响运行性能,生产环境建议关闭。编辑器手动调试不受影响。",
|
|
1624
|
+
category: "分类",
|
|
1625
|
+
categoryPlaceholder: "如 agent, iot, data-flow",
|
|
1626
|
+
online: "运行",
|
|
1627
|
+
offline: "停用",
|
|
1628
|
+
saveBaseInfo: "保存基础信息",
|
|
1629
|
+
saveInputDefinition: "保存输入定义",
|
|
1630
|
+
saveVars: "保存变量",
|
|
1631
|
+
saveSecrets: "保存秘钥",
|
|
1632
|
+
saving: "保存中...",
|
|
1633
|
+
inputSchemaJson: "输入定义 JSON",
|
|
1634
|
+
inputSchemaInvalid: "输入定义 JSON 格式错误",
|
|
1635
|
+
visualMode: "可视化",
|
|
1636
|
+
codeMode: "JSON代码",
|
|
1637
|
+
addProperty: "添加属性",
|
|
1638
|
+
inputSchemaJsonHint: "复杂嵌套 object/array 可切换到 JSON 代码模式编辑,已有嵌套结构会被保留。",
|
|
1639
|
+
formatJson: "格式化 JSON",
|
|
1640
|
+
vars: "变量",
|
|
1641
|
+
secrets: "秘钥",
|
|
1642
|
+
varName: "变量名",
|
|
1643
|
+
varValue: "变量值",
|
|
1644
|
+
secretName: "秘钥名",
|
|
1645
|
+
secretValue: "秘钥值",
|
|
1646
|
+
apiIntegration: "API 集成",
|
|
1647
|
+
executeAPI: "执行 API:",
|
|
1648
|
+
notifyAPI: "通知 API:",
|
|
1649
|
+
openaiCompatibleAPI: "OpenAI:",
|
|
1650
|
+
webSocket: "WebSocket",
|
|
1651
|
+
debugWS: "Debug WS:",
|
|
1652
|
+
runtimeWS: "Runtime WS:",
|
|
1653
|
+
endpointWS: "Endpoint WS:",
|
|
1654
|
+
mcpIntegration: "MCP 集成",
|
|
1655
|
+
mcpSSE: "MCP SSE:",
|
|
1656
|
+
mcpStreamableHTTP: "MCP HTTP:",
|
|
1657
|
+
mcpGroupAPI: "MCP 分组:",
|
|
1658
|
+
action: "操作",
|
|
1659
|
+
add: "添加",
|
|
1660
|
+
delete: "删除",
|
|
1661
|
+
deleteEntryConfirm: "确定删除“{{key}}”吗?",
|
|
1662
|
+
batchDelete: "批量删除",
|
|
1663
|
+
batchDeleteConfirm: "确定删除选中的 {{count}} 项吗?",
|
|
1664
|
+
select: "选择",
|
|
1665
|
+
selectedCount: "已选择 {{count}} 项",
|
|
1666
|
+
selectRow: "选择第 {{index}} 项",
|
|
1667
|
+
saveFailed: "保存失败"
|
|
1668
|
+
},
|
|
1669
|
+
/** 规则链维护验证面板 */
|
|
1670
|
+
maintenance: {
|
|
1671
|
+
title: "维护验证",
|
|
1672
|
+
noApi: "当前请求适配器未提供维护接口",
|
|
1673
|
+
noIssues: "未返回问题",
|
|
1674
|
+
validating: "校验中...",
|
|
1675
|
+
runValidate: "运行校验",
|
|
1676
|
+
schemaDiff: "结构差异",
|
|
1677
|
+
repairPlan: "修复建议",
|
|
1678
|
+
patchPreview: "补丁预览",
|
|
1679
|
+
validateResult: "校验结果",
|
|
1680
|
+
valid: "通过",
|
|
1681
|
+
invalid: "未通过",
|
|
1682
|
+
finished: "已完成",
|
|
1683
|
+
failed: "失败"
|
|
1684
|
+
},
|
|
1685
|
+
/** 日志面板 */
|
|
1686
|
+
logViewer: {
|
|
1687
|
+
title: "调试控制台 (Debug Console)",
|
|
1688
|
+
empty: "暂无调试日志"
|
|
1689
|
+
},
|
|
1690
|
+
/** Copilot Chat 独立组件 */
|
|
1691
|
+
copilot: {
|
|
1692
|
+
title: "AI 助理",
|
|
1693
|
+
placeholder: "问点什么...",
|
|
1694
|
+
send: "发送",
|
|
1695
|
+
stop: "停止",
|
|
1696
|
+
clear: "清空",
|
|
1697
|
+
empty: "请输入问题开始对话",
|
|
1698
|
+
sending: "处理中",
|
|
1699
|
+
cancelled: "请求已取消",
|
|
1700
|
+
failed: "未完成",
|
|
1701
|
+
dismissError: "关闭错误提示",
|
|
1702
|
+
reasoning: "思考过程",
|
|
1703
|
+
userRole: "用户",
|
|
1704
|
+
assistantRole: "助手",
|
|
1705
|
+
toolCalls: "工具调用",
|
|
1706
|
+
toolRunning: "处理中",
|
|
1707
|
+
toolReceived: "已收到",
|
|
1708
|
+
toolCompleted: "已完成",
|
|
1709
|
+
toolFailed: "失败",
|
|
1710
|
+
copy: "复制",
|
|
1711
|
+
copied: "已复制",
|
|
1712
|
+
copyFailed: "复制失败",
|
|
1713
|
+
regenerate: "重新生成",
|
|
1714
|
+
code: "代码",
|
|
1715
|
+
preview: "预览",
|
|
1716
|
+
fullscreen: "全屏",
|
|
1717
|
+
close: "关闭"
|
|
1718
|
+
},
|
|
1719
|
+
/** AI 属性组件 */
|
|
1720
|
+
aiProperties: {
|
|
1721
|
+
modelSelector: "大模型算子选择",
|
|
1722
|
+
loading: "大模型引擎加载中...",
|
|
1723
|
+
fallback: "AI 服务暂时不可用,您的规则链将以普通降级模式运行。",
|
|
1724
|
+
selectPlaceholder: "-- 请选择大模型 --",
|
|
1725
|
+
empty: "后台暂未返回可用模型,请检查 AI 接口配置。"
|
|
1726
|
+
}
|
|
1727
|
+
},
|
|
1728
|
+
/**
|
|
1729
|
+
* 组件类型的中文名称
|
|
1730
|
+
*
|
|
1731
|
+
* key 对应 ComponentDefinition.type
|
|
1732
|
+
* value 为显示在 UI 上的中文标签
|
|
1733
|
+
*/
|
|
1734
|
+
components: {
|
|
1735
|
+
"start-node": "输入",
|
|
1736
|
+
// === action ===
|
|
1737
|
+
delay: "延迟",
|
|
1738
|
+
exec: "命令行",
|
|
1739
|
+
fetchNodeOutput: "取回节点输出",
|
|
1740
|
+
functions: "函数",
|
|
1741
|
+
log: "日志",
|
|
1742
|
+
"x/python": "Python脚本",
|
|
1743
|
+
// === common ===
|
|
1744
|
+
break: "中断",
|
|
1745
|
+
comment: "注释",
|
|
1746
|
+
end: "结束",
|
|
1747
|
+
for: "循环",
|
|
1748
|
+
fork: "并行分支",
|
|
1749
|
+
groupAction: "节点组",
|
|
1750
|
+
inclusive: "包容分支",
|
|
1751
|
+
join: "合并",
|
|
1752
|
+
ref: "节点引用",
|
|
1753
|
+
switch: "条件分支",
|
|
1754
|
+
while: "While循环",
|
|
1755
|
+
iterator: "迭代器",
|
|
1756
|
+
// === filter ===
|
|
1757
|
+
exprFilter: "表达式过滤",
|
|
1758
|
+
fieldFilter: "字段过滤",
|
|
1759
|
+
groupFilter: "过滤器组",
|
|
1760
|
+
jsFilter: "js过滤",
|
|
1761
|
+
jsSwitch: "js路由",
|
|
1762
|
+
msgTypeSwitch: "消息路由",
|
|
1763
|
+
"x/luaFilter": "Lua脚本过滤",
|
|
1764
|
+
// === transform ===
|
|
1765
|
+
exprTransform: "表达式转换",
|
|
1766
|
+
jsTransform: "js转换",
|
|
1767
|
+
metadataTransform: "元数据转换",
|
|
1768
|
+
"text/template": "模板转换",
|
|
1769
|
+
"x/luaTransform": "Lua脚本转换",
|
|
1770
|
+
// === external ===
|
|
1771
|
+
cacheDelete: "缓存删除",
|
|
1772
|
+
cacheGet: "缓存获取",
|
|
1773
|
+
cacheSet: "缓存设置",
|
|
1774
|
+
dbClient: "数据库",
|
|
1775
|
+
mqttClient: "MQTT发布者",
|
|
1776
|
+
net: "TCP/UDP",
|
|
1777
|
+
sendEmail: "发邮件",
|
|
1778
|
+
ssh: "SSH",
|
|
1779
|
+
restApiCall: "HTTP客户端",
|
|
1780
|
+
"x/receiveEmail": "收邮件",
|
|
1781
|
+
"x/fileDelete": "文件删除",
|
|
1782
|
+
"x/fileList": "文件列表",
|
|
1783
|
+
"x/fileRead": "文件读取",
|
|
1784
|
+
"x/fileWrite": "文件写入",
|
|
1785
|
+
"x/grpcClient": "gRPC 客户端",
|
|
1786
|
+
"x/kafkaProducer": "Kafka发布者",
|
|
1787
|
+
"x/mongodbClient": "MongoDB",
|
|
1788
|
+
"x/natsClient": "NATS",
|
|
1789
|
+
"x/nsqClient": "NSQ发布者",
|
|
1790
|
+
"x/opengeminiQuery": "opengemini读",
|
|
1791
|
+
"x/opengeminiWrite": "opengemini写",
|
|
1792
|
+
"x/otel": "OpenTelemetry",
|
|
1793
|
+
"x/pulsarClient": "Pulsar发布者",
|
|
1794
|
+
"x/rabbitmqClient": "RabbitMQ",
|
|
1795
|
+
"x/redisClient": "Redis",
|
|
1796
|
+
"x/redisPub": "Redis发布者",
|
|
1797
|
+
"x/wukongimSender": "WuKongIM发",
|
|
1798
|
+
"x/beanstalkdWorker": "Beanstalkd Worker",
|
|
1799
|
+
"x/beanstalkdTube": "Beanstalkd Tube",
|
|
1800
|
+
"x/jsonQuery": "JSON查询",
|
|
1801
|
+
"x/odooCrudCreate": "Odoo创建",
|
|
1802
|
+
"x/odooCrudUpdate": "Odoo更新",
|
|
1803
|
+
"x/soapParse": "SOAP解析",
|
|
1804
|
+
"x/soapRequest": "SOAP请求",
|
|
1805
|
+
// === flow ===
|
|
1806
|
+
flow: "子规则链",
|
|
1807
|
+
// === custom ===
|
|
1808
|
+
simple_admission: "极简录取规则链",
|
|
1809
|
+
temperature_conversion: "温度转换",
|
|
1810
|
+
// === AI ===
|
|
1811
|
+
"ai/llm": "AI文本生成",
|
|
1812
|
+
"ai/createImage": "图像生成",
|
|
1813
|
+
"ai/agent": "智能体",
|
|
1814
|
+
"ai/intent": "意图识别",
|
|
1815
|
+
"ai/localIntent": "本地意图识别",
|
|
1816
|
+
"ai/mcpClient": "MCP 客户端",
|
|
1817
|
+
"ai/transform/documentLoader": "文档加载器",
|
|
1818
|
+
"ai/transform/textChunker": "文本分块",
|
|
1819
|
+
"ai/embedding/openai": "OpenAI Embedding",
|
|
1820
|
+
"ai/indexer/milvus": "Milvus索引",
|
|
1821
|
+
"ai/indexer/redis": "Redis索引",
|
|
1822
|
+
"ai/retriever/milvus": "Milvus检索",
|
|
1823
|
+
"ai/retriever/redis": "Redis检索",
|
|
1824
|
+
// === CI/CD ===
|
|
1825
|
+
"ci/exec": "命令行",
|
|
1826
|
+
"ci/gitClone": "Git拉取",
|
|
1827
|
+
"ci/gitCommit": "Git提交",
|
|
1828
|
+
"ci/gitCreateTag": "Git创建标签",
|
|
1829
|
+
"ci/gitLog": "获取Git日志",
|
|
1830
|
+
"ci/gitPush": "Git推送",
|
|
1831
|
+
"ci/ps": "服务器指标",
|
|
1832
|
+
// === IoT ===
|
|
1833
|
+
"x/modbus": "Modbus",
|
|
1834
|
+
"x/opcua": "OPC_UA订阅",
|
|
1835
|
+
"x/opcuaRead": "OPC UA读取",
|
|
1836
|
+
"x/opcuaWrite": "OPC UA写入",
|
|
1837
|
+
"x/serialControl": "串口控制",
|
|
1838
|
+
"x/serialIn": "串口输入",
|
|
1839
|
+
"x/serialOut": "串口输出",
|
|
1840
|
+
"x/serialRequest": "串口请求",
|
|
1841
|
+
"x/bacnetRead": "BACnet读",
|
|
1842
|
+
"x/bacnetWrite": "BACnet写",
|
|
1843
|
+
"x/finsRead": "FINS读",
|
|
1844
|
+
"x/finsWrite": "FINS写",
|
|
1845
|
+
"x/control/timer": "控制定时器",
|
|
1846
|
+
"x/control/watchdog": "控制看门狗",
|
|
1847
|
+
"x/dlt645Read": "DLT645读",
|
|
1848
|
+
"x/dlt645Write": "DLT645写",
|
|
1849
|
+
"x/eipRead": "EtherNet/IP读",
|
|
1850
|
+
"x/eipWrite": "EtherNet/IP写",
|
|
1851
|
+
"x/iec104Read": "IEC104读",
|
|
1852
|
+
"x/iec104Write": "IEC104写",
|
|
1853
|
+
"x/influxdbQuery": "InfluxDB查",
|
|
1854
|
+
"x/influxdbWrite": "InfluxDB写",
|
|
1855
|
+
"x/iotRead": "通用协议读",
|
|
1856
|
+
"x/iotWrite": "通用协议写",
|
|
1857
|
+
"x/mcRead": "MC协议读",
|
|
1858
|
+
"x/mcWrite": "MC协议写",
|
|
1859
|
+
"x/modbusRead": "Modbus点位读",
|
|
1860
|
+
"x/modbusWrite": "Modbus点位写",
|
|
1861
|
+
"x/nacosConfigGet": "Nacos配置获取",
|
|
1862
|
+
"x/nacosConfigSet": "Nacos配置写入",
|
|
1863
|
+
"x/nacosServiceCall": "Nacos服务调用",
|
|
1864
|
+
"x/promremoteWrite": "Prometheus远程写入",
|
|
1865
|
+
"x/s7Read": "S7读",
|
|
1866
|
+
"x/s7Write": "S7写",
|
|
1867
|
+
"x/snmpRead": "SNMP读",
|
|
1868
|
+
"x/snmpWrite": "SNMP写",
|
|
1869
|
+
"x/tdengineQuery": "TDengine查",
|
|
1870
|
+
"x/tdengineWrite": "TDengine写",
|
|
1871
|
+
"x/timescaledbQuery": "TimescaleDB查",
|
|
1872
|
+
"x/timescaledbWrite": "TimescaleDB写",
|
|
1873
|
+
"x/tsdbQuery": "通用时序查",
|
|
1874
|
+
"x/tsdbWrite": "通用时序写",
|
|
1875
|
+
ws: "WebSocket发送",
|
|
1876
|
+
// === 流式统计 ===
|
|
1877
|
+
"x/streamAggregator": "流聚合器",
|
|
1878
|
+
"x/streamTransform": "流转换器",
|
|
1879
|
+
// === Endpoint ===
|
|
1880
|
+
"endpoint/http": "HTTP",
|
|
1881
|
+
"endpoint/ws": "Websocket",
|
|
1882
|
+
"endpoint/ws_client": "Websocket客户端",
|
|
1883
|
+
"endpoint/mqtt": "MQTT",
|
|
1884
|
+
"endpoint/kafka": "Kafka",
|
|
1885
|
+
"endpoint/nats": "Nats",
|
|
1886
|
+
"endpoint/nsq": "NSQ",
|
|
1887
|
+
"endpoint/pulsar": "Pulsar",
|
|
1888
|
+
"endpoint/rabbitmq": "RabbitMQ",
|
|
1889
|
+
"endpoint/redis": "Redis",
|
|
1890
|
+
"endpoint/redis/stream": "Redis流",
|
|
1891
|
+
"endpoint/net": "TCP/UDP",
|
|
1892
|
+
"endpoint/net_client": "TCP/UDP客户端",
|
|
1893
|
+
"endpoint/schedule": "定时调度",
|
|
1894
|
+
"endpoint/grpc/stream": "gRPC流客户端",
|
|
1895
|
+
"endpoint/wukongim": "WuKongIM收",
|
|
1896
|
+
"endpoint/mcpServer": "MCP服务器",
|
|
1897
|
+
"endpoint/beanstalkdTubeset": "Beanstalkd",
|
|
1898
|
+
"endpoint/mysql_cdc": "MYSQL CDC",
|
|
1899
|
+
"endpoint/opcua": "OPC_UA订阅",
|
|
1900
|
+
"endpoint/hj212": "HJ212接收",
|
|
1901
|
+
"endpoint/modbusServer": "Modbus从站",
|
|
1902
|
+
"endpoint/nacos": "Nacos配置监听",
|
|
1903
|
+
"endpoint/snmp": "SNMP Trap"
|
|
1904
|
+
},
|
|
1905
|
+
/**
|
|
1906
|
+
* 组件字段的中文标签
|
|
1907
|
+
*/
|
|
1908
|
+
fields: {
|
|
1909
|
+
jsScript: "JS脚本",
|
|
1910
|
+
script: "脚本",
|
|
1911
|
+
expr: "表达式",
|
|
1912
|
+
template: "模板",
|
|
1913
|
+
server: "服务器地址",
|
|
1914
|
+
username: "用户名",
|
|
1915
|
+
password: "密码",
|
|
1916
|
+
topic: "主题",
|
|
1917
|
+
key: "键",
|
|
1918
|
+
headers: "请求头",
|
|
1919
|
+
host: "主机地址",
|
|
1920
|
+
port: "端口",
|
|
1921
|
+
cmd: "命令",
|
|
1922
|
+
timeout: "超时时间(秒)",
|
|
1923
|
+
targetId: "目标ID",
|
|
1924
|
+
periodInSeconds: "延迟时间(秒)",
|
|
1925
|
+
maxPendingMsgs: "最大待处理消息数",
|
|
1926
|
+
periodInSecondsPattern: "延迟时间表达式(秒)",
|
|
1927
|
+
functionName: "函数名称",
|
|
1928
|
+
args: "参数列表",
|
|
1929
|
+
targetNodeId: "目标节点ID",
|
|
1930
|
+
range: "遍历范围",
|
|
1931
|
+
do: "执行动作",
|
|
1932
|
+
allMatches: "全部匹配",
|
|
1933
|
+
nodeIds: "节点ID列表",
|
|
1934
|
+
checkAllKeys: "检查所有键",
|
|
1935
|
+
dataNames: "数据字段名",
|
|
1936
|
+
metadataNames: "元数据字段名",
|
|
1937
|
+
mapping: "字段映射",
|
|
1938
|
+
isNew: "替换全部元数据",
|
|
1939
|
+
restEndpointUrlPattern: "HTTP URL地址",
|
|
1940
|
+
requestMethod: "请求方法",
|
|
1941
|
+
readTimeoutMs: "超时(毫秒)",
|
|
1942
|
+
maxParallelRequestsCount: "最大并发数",
|
|
1943
|
+
enableProxy: "开启代理",
|
|
1944
|
+
proxyScheme: "代理协议",
|
|
1945
|
+
proxyHost: "代理主机",
|
|
1946
|
+
proxyPort: "代理端口",
|
|
1947
|
+
driverName: "数据库驱动",
|
|
1948
|
+
dsn: "数据源名称(DSN)",
|
|
1949
|
+
sql: "SQL语句",
|
|
1950
|
+
params: "参数列表",
|
|
1951
|
+
getOne: "返回一条记录",
|
|
1952
|
+
poolSize: "连接池大小",
|
|
1953
|
+
protocol: "协议",
|
|
1954
|
+
connectTimeout: "连接超时(秒)",
|
|
1955
|
+
heartbeatInterval: "心跳间隔(秒)",
|
|
1956
|
+
maxReconnectInterval: "重连间隔(秒)",
|
|
1957
|
+
qOS: "QOS",
|
|
1958
|
+
smtpHost: "SMTP主机",
|
|
1959
|
+
smtpPort: "SMTP端口",
|
|
1960
|
+
fromEmail: "发送邮箱",
|
|
1961
|
+
toEmail: "收件邮箱",
|
|
1962
|
+
ccEmail: "抄送邮箱",
|
|
1963
|
+
bccEmail: "密送邮箱",
|
|
1964
|
+
path: "文件路径",
|
|
1965
|
+
content: "内容",
|
|
1966
|
+
append: "追加写入",
|
|
1967
|
+
recursive: "递归查找",
|
|
1968
|
+
dataType: "数据类型",
|
|
1969
|
+
exchange: "交换机",
|
|
1970
|
+
exchangeType: "交换机类型",
|
|
1971
|
+
durable: "持久化",
|
|
1972
|
+
autoDelete: "自动删除",
|
|
1973
|
+
channel: "频道",
|
|
1974
|
+
partition: "分区编号",
|
|
1975
|
+
database: "数据库名",
|
|
1976
|
+
collection: "集合名",
|
|
1977
|
+
opType: "操作类型",
|
|
1978
|
+
filter: "查询条件",
|
|
1979
|
+
doc: "文档内容",
|
|
1980
|
+
one: "仅返回一条",
|
|
1981
|
+
db: "数据库编号",
|
|
1982
|
+
service: "服务名",
|
|
1983
|
+
method: "方法名",
|
|
1984
|
+
request: "请求体",
|
|
1985
|
+
url: "API地址",
|
|
1986
|
+
model: "模型名称",
|
|
1987
|
+
systemPrompt: "系统提示词",
|
|
1988
|
+
messages: "消息列表",
|
|
1989
|
+
images: "图片列表",
|
|
1990
|
+
prompt: "提示词",
|
|
1991
|
+
n: "生成数量",
|
|
1992
|
+
size: "尺寸",
|
|
1993
|
+
quality: "质量",
|
|
1994
|
+
style: "风格",
|
|
1995
|
+
response_format: "返回格式",
|
|
1996
|
+
repository: "仓库地址",
|
|
1997
|
+
directory: "目录",
|
|
1998
|
+
reference: "分支/标签",
|
|
1999
|
+
authType: "认证方式",
|
|
2000
|
+
authUser: "认证用户名",
|
|
2001
|
+
authPassword: "认证密码/Token",
|
|
2002
|
+
pattern: "匹配模式",
|
|
2003
|
+
message: "消息",
|
|
2004
|
+
tag: "标签名",
|
|
2005
|
+
limit: "数量限制",
|
|
2006
|
+
startTime: "开始时间",
|
|
2007
|
+
endTime: "结束时间",
|
|
2008
|
+
refSpecs: "引用规范",
|
|
2009
|
+
options: "选项",
|
|
2010
|
+
unitId: "单元ID",
|
|
2011
|
+
address: "寄存器地址",
|
|
2012
|
+
quantity: "寄存器数量",
|
|
2013
|
+
value: "值",
|
|
2014
|
+
regType: "寄存器类型",
|
|
2015
|
+
policy: "安全策略",
|
|
2016
|
+
mode: "安全模式",
|
|
2017
|
+
auth: "认证方式",
|
|
2018
|
+
baudRate: "波特率",
|
|
2019
|
+
dataBits: "数据位",
|
|
2020
|
+
stopBits: "停止位",
|
|
2021
|
+
parity: "校验位",
|
|
2022
|
+
dtr: "DTR",
|
|
2023
|
+
rts: "RTS",
|
|
2024
|
+
action: "控制动作",
|
|
2025
|
+
splitType: "分割方式",
|
|
2026
|
+
splitKey: "分割标记",
|
|
2027
|
+
data: "数据",
|
|
2028
|
+
addChar: "附加字符",
|
|
2029
|
+
requestTimeout: "请求超时(毫秒)",
|
|
2030
|
+
metricExpr: "指标表达式",
|
|
2031
|
+
metrics: "指标列表",
|
|
2032
|
+
extend: "继承父链上下文",
|
|
2033
|
+
uID: "用户ID",
|
|
2034
|
+
token: "认证Token",
|
|
2035
|
+
channelType: "频道类型",
|
|
2036
|
+
channelID: "频道ID"
|
|
2037
|
+
},
|
|
2038
|
+
/**
|
|
2039
|
+
* 分类名称
|
|
2040
|
+
*/
|
|
2041
|
+
category: {
|
|
2042
|
+
filter: "过滤器",
|
|
2043
|
+
transform: "转换器",
|
|
2044
|
+
action: "动作",
|
|
2045
|
+
external: "外部集成",
|
|
2046
|
+
flow: "子规则链",
|
|
2047
|
+
common: "公共",
|
|
2048
|
+
custom: "自定义",
|
|
2049
|
+
ai: "AI",
|
|
2050
|
+
ci: "CI/CD",
|
|
2051
|
+
iot: "IoT",
|
|
2052
|
+
discovery: "服务发现",
|
|
2053
|
+
stats: "流式计算",
|
|
2054
|
+
endpoint: "输入端",
|
|
2055
|
+
endpoints: "输入端",
|
|
2056
|
+
storage: "存储",
|
|
2057
|
+
knowledge: "知识库",
|
|
2058
|
+
image: "图像",
|
|
2059
|
+
audio: "音频",
|
|
2060
|
+
file: "文件",
|
|
2061
|
+
other: "其他"
|
|
2062
|
+
},
|
|
2063
|
+
/**
|
|
2064
|
+
* 连线关系类型名称
|
|
2065
|
+
*/
|
|
2066
|
+
relationTypes: {
|
|
2067
|
+
Success: "成功",
|
|
2068
|
+
Failure: "失败",
|
|
2069
|
+
True: "真",
|
|
2070
|
+
False: "假",
|
|
2071
|
+
Default: "Default",
|
|
2072
|
+
Stream: "流式",
|
|
2073
|
+
NotFound: "未找到"
|
|
2074
|
+
},
|
|
2075
|
+
/**
|
|
2076
|
+
* 验证提示消息
|
|
2077
|
+
*/
|
|
2078
|
+
validation: {
|
|
2079
|
+
orphanNode: '节点 "{{name}}" 是孤立的, 没有任何连接',
|
|
2080
|
+
startNoConnection: "起始节点 (Input) 没有连接到任何节点",
|
|
2081
|
+
missingRelationType: "连接缺少关系类型",
|
|
2082
|
+
missingNodeType: '节点 "{{name}}" 缺少类型定义',
|
|
2083
|
+
cyclicConnection: "检测到循环连接",
|
|
2084
|
+
duplicateNodeId: "存在重复的节点ID"
|
|
2085
|
+
},
|
|
2086
|
+
/**
|
|
2087
|
+
* 操作提示消息
|
|
2088
|
+
*/
|
|
2089
|
+
action: {
|
|
2090
|
+
saveSuccess: "规则链保存成功",
|
|
2091
|
+
saveFailed: "保存失败: {{error}}",
|
|
2092
|
+
deleteSuccess: "删除成功",
|
|
2093
|
+
loadFailed: "加载失败: {{error}}",
|
|
2094
|
+
exportSuccess: "导出成功",
|
|
2095
|
+
importSuccess: "导入成功",
|
|
2096
|
+
importFailed: "导入失败: 数据格式错误",
|
|
2097
|
+
undoSuccess: "已撤销: {{description}}",
|
|
2098
|
+
redoSuccess: "已重做: {{description}}",
|
|
2099
|
+
noUndoAvailable: "没有可撤销的操作",
|
|
2100
|
+
noRedoAvailable: "没有可重做的操作"
|
|
2101
|
+
}
|
|
2102
|
+
}, t = {
|
|
2103
|
+
Input: "Input",
|
|
2104
|
+
"Input node already exists": "Only one input node can exist",
|
|
2105
|
+
"At least one input node is required": "At least one input endpoint or default input node is required",
|
|
2106
|
+
/**
|
|
2107
|
+
* Legacy root-level keys used by the pure DOM UI package. Keep these aliases
|
|
2108
|
+
* so @huanban/rulego-editor-ui does not fall back to Chinese hardcoded text.
|
|
2109
|
+
*/
|
|
2110
|
+
toolbar: {
|
|
2111
|
+
save: "Save",
|
|
2112
|
+
saveHostRequired: "Configure a host save callback first",
|
|
2113
|
+
undo: "Undo",
|
|
2114
|
+
redo: "Redo",
|
|
2115
|
+
delete: "Delete Selected",
|
|
2116
|
+
zoomIn: "Zoom In",
|
|
2117
|
+
zoomOut: "Zoom Out",
|
|
2118
|
+
fitView: "Fit View",
|
|
2119
|
+
fullscreen: "Fullscreen",
|
|
2120
|
+
autoLayout: "Auto Layout"
|
|
2121
|
+
},
|
|
2122
|
+
sidebar: {
|
|
2123
|
+
recentComponents: "Recently Used",
|
|
2124
|
+
searchPlaceholder: "Search components...",
|
|
2125
|
+
noResults: "No matching components"
|
|
2126
|
+
},
|
|
2127
|
+
panel: {
|
|
2128
|
+
title: "Edit Properties",
|
|
2129
|
+
nodeName: "Node Name"
|
|
2130
|
+
},
|
|
2131
|
+
contextMenu: {
|
|
2132
|
+
edit: "Edit",
|
|
2133
|
+
editProperties: "Edit Properties",
|
|
2134
|
+
copy: "Copy",
|
|
2135
|
+
delete: "Delete",
|
|
2136
|
+
selectAll: "Select All",
|
|
2137
|
+
fitView: "Fit View",
|
|
2138
|
+
paste: "Paste",
|
|
2139
|
+
disconnect: "Disconnect",
|
|
2140
|
+
resetZoom: "Reset Zoom",
|
|
2141
|
+
runFromNode: "Run From This Node",
|
|
2142
|
+
runSingleNode: "Run This Node Only"
|
|
2143
|
+
},
|
|
2144
|
+
/** Editor UI texts */
|
|
2145
|
+
editor: {
|
|
2146
|
+
toolbar: {
|
|
2147
|
+
save: "Save",
|
|
2148
|
+
undo: "Undo",
|
|
2149
|
+
redo: "Redo",
|
|
2150
|
+
previousStep: "Previous Step",
|
|
2151
|
+
nextStep: "Next Step",
|
|
2152
|
+
delete: "Delete",
|
|
2153
|
+
zoomIn: "Zoom In",
|
|
2154
|
+
zoomOut: "Zoom Out",
|
|
2155
|
+
fitView: "Fit View",
|
|
2156
|
+
minimap: "Minimap",
|
|
2157
|
+
newChain: "New Rule Chain",
|
|
2158
|
+
export: "Export",
|
|
2159
|
+
import: "Import",
|
|
2160
|
+
canvasActions: "Canvas Actions",
|
|
2161
|
+
selectChain: "Select Rule Chain",
|
|
2162
|
+
info: "Info",
|
|
2163
|
+
run: "Run",
|
|
2164
|
+
aiChat: "AI Assistant",
|
|
2165
|
+
debugConsole: "Debug Panel",
|
|
2166
|
+
clearDebugHighlight: "Clear Debug Highlight",
|
|
2167
|
+
selection: "Box Select",
|
|
2168
|
+
closeSelection: "Close Box Select",
|
|
2169
|
+
selectionUnavailable: "Box select plugin is unavailable",
|
|
2170
|
+
componentManage: "Component Manage",
|
|
2171
|
+
switchLang: "中文",
|
|
2172
|
+
switchTheme: "Theme",
|
|
2173
|
+
searchNode: "Search",
|
|
2174
|
+
deploy: "Deploy",
|
|
2175
|
+
undeploy: "Stop",
|
|
2176
|
+
stoppedDeployHint: "Stopped. Click to deploy.",
|
|
2177
|
+
runningUndeployHint: "Running. Click to stop.",
|
|
2178
|
+
deleteChain: "Delete",
|
|
2179
|
+
restart: "Restart",
|
|
2180
|
+
reload: "Restart",
|
|
2181
|
+
runHistory: "Run History",
|
|
2182
|
+
autoLayout: "Auto Layout",
|
|
2183
|
+
diagnostics: "Rule Chain Issues",
|
|
2184
|
+
trace: "Trace",
|
|
2185
|
+
resetZoom: "Reset Zoom",
|
|
2186
|
+
validate: "Validate Rule Chain",
|
|
2187
|
+
debugOn: "Enable Debug",
|
|
2188
|
+
debugOff: "Disable Debug",
|
|
2189
|
+
viewData: "View Data",
|
|
2190
|
+
settings: "Settings",
|
|
2191
|
+
fullscreen: "Fullscreen",
|
|
2192
|
+
exitFullscreen: "Exit Fullscreen",
|
|
2193
|
+
zoomOptions: "Zoom Options",
|
|
2194
|
+
saving: "Saving...",
|
|
2195
|
+
saved: "Saved",
|
|
2196
|
+
failed: "Failed",
|
|
2197
|
+
timeout: "Timed out",
|
|
2198
|
+
viewDiff: "View Changes",
|
|
2199
|
+
noDiff: "No Changes",
|
|
2200
|
+
unsavedSaveHint: "Unsaved changes. Click to save.",
|
|
2201
|
+
invalidJsonCannotSave: `Rule-chain data is invalid and cannot be saved:
|
|
2202
|
+
|
|
2203
|
+
{{error}}`,
|
|
2204
|
+
validationFailedCannotSave: `Rule-chain validation failed and cannot be saved:
|
|
2205
|
+
|
|
2206
|
+
{{messages}}`,
|
|
2207
|
+
saveStoppedByFailure: "Save failed, deployment stopped",
|
|
2208
|
+
missingSaveEndpoint: "Missing save endpoint: configure apiBase or provide onSave",
|
|
2209
|
+
saveConflictMessage: "The rule chain changed on the server while you were editing. Saving now will overwrite the remote changes. Continue?",
|
|
2210
|
+
saveConflictCancelled: "Save cancelled. The canvas and unsaved edits were kept.",
|
|
2211
|
+
saveConflictCheckFailed: "Save conflict check failed; the save was not sent: {{message}}",
|
|
2212
|
+
pendingDrawerChanges: "Save or discard the changes in the current panel before using global save or export.",
|
|
2213
|
+
pendingDrawerInvalid: "The current panel has changes that did not pass validation. Global save or export was not performed.",
|
|
2214
|
+
readOnlyCannotSave: "The editor is read-only and cannot be saved",
|
|
2215
|
+
missingChainId: "Missing rule-chain ID. Cannot save."
|
|
2216
|
+
},
|
|
2217
|
+
actions: {
|
|
2218
|
+
showCommands: "Show All Commands",
|
|
2219
|
+
showShortcuts: "Keyboard Shortcuts",
|
|
2220
|
+
startTour: "Getting Started Tour",
|
|
2221
|
+
undo: "Undo",
|
|
2222
|
+
redo: "Redo",
|
|
2223
|
+
delete: "Delete Selected",
|
|
2224
|
+
copy: "Copy Selected",
|
|
2225
|
+
copied: "Selected nodes copied",
|
|
2226
|
+
paste: "Paste",
|
|
2227
|
+
cut: "Cut Selected",
|
|
2228
|
+
duplicate: "Duplicate Node",
|
|
2229
|
+
selectAll: "Select All",
|
|
2230
|
+
clearSelection: "Clear Selection",
|
|
2231
|
+
editSelected: "Edit Selected Node",
|
|
2232
|
+
rename: "Rename Node",
|
|
2233
|
+
selectUpstream: "Select Upstream Nodes",
|
|
2234
|
+
selectDownstream: "Select Downstream Nodes",
|
|
2235
|
+
selectConnected: "Select Connected Nodes",
|
|
2236
|
+
deleteReconnect: "Delete and Reconnect",
|
|
2237
|
+
save: "Save",
|
|
2238
|
+
search: "Search Nodes",
|
|
2239
|
+
fullscreen: "Fullscreen",
|
|
2240
|
+
addNode: "Add Node",
|
|
2241
|
+
toggleSidebar: "Collapse Component Library",
|
|
2242
|
+
componentDocs: "Component Documentation",
|
|
2243
|
+
debugConsole: "Debug Console",
|
|
2244
|
+
diagnostics: "Topology Diagnostics",
|
|
2245
|
+
aiAssistant: "AI Assistant",
|
|
2246
|
+
autoLayout: "Auto Layout",
|
|
2247
|
+
alignLeft: "Align Left",
|
|
2248
|
+
alignRight: "Align Right",
|
|
2249
|
+
alignTop: "Align Top",
|
|
2250
|
+
alignBottom: "Align Bottom",
|
|
2251
|
+
alignMiddle: "Align Vertical Centers",
|
|
2252
|
+
alignCenter: "Align Horizontal Centers",
|
|
2253
|
+
distributeHorizontal: "Distribute Horizontally",
|
|
2254
|
+
distributeVertical: "Distribute Vertically",
|
|
2255
|
+
alignGrid: "Snap to Grid"
|
|
2256
|
+
},
|
|
2257
|
+
actionGroups: {
|
|
2258
|
+
default: "Common",
|
|
2259
|
+
edit: "Edit",
|
|
2260
|
+
view: "View",
|
|
2261
|
+
file: "File",
|
|
2262
|
+
arrange: "Arrange",
|
|
2263
|
+
debug: "Debug",
|
|
2264
|
+
help: "Help"
|
|
2265
|
+
},
|
|
2266
|
+
commandPalette: {
|
|
2267
|
+
title: "Command Palette",
|
|
2268
|
+
placeholder: "Search commands such as save, align, or diagnostics",
|
|
2269
|
+
empty: "No matching commands"
|
|
2270
|
+
},
|
|
2271
|
+
shortcutHelp: {
|
|
2272
|
+
title: "Keyboard Shortcuts",
|
|
2273
|
+
commandHint: "Press Ctrl+Shift+P to search and run all commands"
|
|
2274
|
+
},
|
|
2275
|
+
tour: {
|
|
2276
|
+
progress: "Step {{current}} of {{total}}",
|
|
2277
|
+
addNodeTitle: "Add a node",
|
|
2278
|
+
addNodeDescription: "Drag a node from the component library onto the canvas, or open the node picker from an empty canvas area.",
|
|
2279
|
+
connectTitle: "Connect nodes",
|
|
2280
|
+
connectDescription: "Drag from a node connection point to the next node. You can also insert a processing node on an existing connection.",
|
|
2281
|
+
configureTitle: "Configure a node",
|
|
2282
|
+
configureDescription: "Double-click a node to open its configuration panel. Unsaved form changes are confirmed before closing.",
|
|
2283
|
+
debugTitle: "Test and diagnose",
|
|
2284
|
+
debugDescription: "Use the test and debug panels to inspect message flow, then check node, edge, and run status in the status bar.",
|
|
2285
|
+
previous: "Previous",
|
|
2286
|
+
next: "Next",
|
|
2287
|
+
done: "Done",
|
|
2288
|
+
close: "Close tour"
|
|
2289
|
+
},
|
|
2290
|
+
nodePicker: {
|
|
2291
|
+
title: "Add Node",
|
|
2292
|
+
placeholder: "Search node name, type, or description",
|
|
2293
|
+
empty: "No matching nodes",
|
|
2294
|
+
collapseAll: "Expand or collapse all",
|
|
2295
|
+
help: "Open documentation",
|
|
2296
|
+
edgeNotFound: "The original edge no longer exists; insertion was cancelled",
|
|
2297
|
+
edgeInsertFailed: "Unable to insert a component into this edge; the original graph was not changed"
|
|
2298
|
+
},
|
|
2299
|
+
componentDocs: {
|
|
2300
|
+
title: "Component Documentation",
|
|
2301
|
+
search: "Search documentation",
|
|
2302
|
+
select: "Select a component document",
|
|
2303
|
+
empty: "No matching documents",
|
|
2304
|
+
loadFailed: "Documentation failed to load"
|
|
2305
|
+
},
|
|
2306
|
+
settings: {
|
|
2307
|
+
title: "Settings",
|
|
2308
|
+
account: "Account",
|
|
2309
|
+
system: "System",
|
|
2310
|
+
currentUser: "Current User",
|
|
2311
|
+
notLoggedIn: "Not logged in",
|
|
2312
|
+
login: "Log In",
|
|
2313
|
+
logout: "Log Out",
|
|
2314
|
+
accountHint: "Login state is managed by the host. Logging out clears username, token, and access_token.",
|
|
2315
|
+
rulegoUrl: "RuleGo Backend URL",
|
|
2316
|
+
rulegoUrlHint: "Set the RuleGo Server address when backend APIs are required. The editor normalizes it to /api/v1 after saving.",
|
|
2317
|
+
browserConsoleLog: "Print browser debug logs",
|
|
2318
|
+
browserConsoleLogHint: "Only controls example host debug output written to browser console. In-page event logs and error prompts are not affected.",
|
|
2319
|
+
fullscreen: "Fullscreen",
|
|
2320
|
+
exitFullscreen: "Exit Fullscreen",
|
|
2321
|
+
loginDelegated: "Login was delegated to the host",
|
|
2322
|
+
loginHint: "Provide onLoginClick from the host to connect login.",
|
|
2323
|
+
loggedIn: "Signed in",
|
|
2324
|
+
hostLogin: "Use host login",
|
|
2325
|
+
loginSharedHint: "Built-in login and host login share username, token, and access_token. Use the host entry when the outer app owns authentication.",
|
|
2326
|
+
username: "Username",
|
|
2327
|
+
password: "Password",
|
|
2328
|
+
loginExample: "Example accounts: admin/admin user01/user01",
|
|
2329
|
+
loginRequired: "Username and password are required",
|
|
2330
|
+
loggingIn: "Logging in...",
|
|
2331
|
+
loginSuccess: "Logged in",
|
|
2332
|
+
loginFailed: "Login failed",
|
|
2333
|
+
loginUnauthorized: "Invalid username or password",
|
|
2334
|
+
loginTokenMissing: "Login succeeded but the backend did not return a token"
|
|
2335
|
+
},
|
|
2336
|
+
markdown: {
|
|
2337
|
+
toolbar: "Markdown Toolbar",
|
|
2338
|
+
source: "Source",
|
|
2339
|
+
sourceTitle: "Edit source",
|
|
2340
|
+
split: "Split",
|
|
2341
|
+
splitTitle: "Source and preview side by side",
|
|
2342
|
+
visual: "Visual",
|
|
2343
|
+
visualTitle: "Edit in rendered view",
|
|
2344
|
+
preview: "Preview",
|
|
2345
|
+
previewTitle: "Read-only preview",
|
|
2346
|
+
heading: "Heading",
|
|
2347
|
+
bold: "Bold",
|
|
2348
|
+
italic: "Italic",
|
|
2349
|
+
quote: "Quote",
|
|
2350
|
+
code: "Code",
|
|
2351
|
+
link: "Link",
|
|
2352
|
+
unorderedList: "Bulleted list",
|
|
2353
|
+
orderedList: "Numbered list",
|
|
2354
|
+
taskList: "Task list",
|
|
2355
|
+
table: "Table",
|
|
2356
|
+
emptyPreview: "No Markdown content"
|
|
2357
|
+
},
|
|
2358
|
+
diff: {
|
|
2359
|
+
title: "Change Diff",
|
|
2360
|
+
subtitle: "Frontend comparison against the last loaded or saved rule-chain JSON.",
|
|
2361
|
+
total: "Diffs",
|
|
2362
|
+
added: "Added",
|
|
2363
|
+
removed: "Removed",
|
|
2364
|
+
changed: "Changed",
|
|
2365
|
+
kind: "Type",
|
|
2366
|
+
path: "Path",
|
|
2367
|
+
before: "Before",
|
|
2368
|
+
after: "After",
|
|
2369
|
+
noChanges: "The exported JSON matches the last saved snapshot.",
|
|
2370
|
+
truncated: "There are many changes. Showing the first 800 entries only.",
|
|
2371
|
+
lineTruncated: "The JSON line diff is large and has been truncated.",
|
|
2372
|
+
invalidCurrentJson: "The current rule-chain JSON structure is incomplete. Save will be blocked.",
|
|
2373
|
+
gitLike: "Single-file JSON diff",
|
|
2374
|
+
gitLikeHint: "Git-like diff: - is last loaded/saved, + is current canvas export.",
|
|
2375
|
+
delta: "jsondiffpatch delta",
|
|
2376
|
+
pathSummary: "Path Summary",
|
|
2377
|
+
pathSummaryHint: "Added, removed, and changed values grouped by JSON path."
|
|
2378
|
+
},
|
|
2379
|
+
sidebar: {
|
|
2380
|
+
title: "Components",
|
|
2381
|
+
ariaLabel: "Rule chain component library",
|
|
2382
|
+
recentComponents: "Recently Used",
|
|
2383
|
+
search: "Search components...",
|
|
2384
|
+
noResult: "No matching components",
|
|
2385
|
+
toggle: "Collapse/Expand components",
|
|
2386
|
+
expandAll: "Expand All",
|
|
2387
|
+
collapseAll: "Collapse All"
|
|
2388
|
+
},
|
|
2389
|
+
workspace: {
|
|
2390
|
+
tabs: "Rule-chain tabs",
|
|
2391
|
+
unsaved: "Unsaved changes",
|
|
2392
|
+
loading: "Loading",
|
|
2393
|
+
close: "Close",
|
|
2394
|
+
closeOthers: "Close Others",
|
|
2395
|
+
closeRight: "Close Tabs to the Right",
|
|
2396
|
+
add: "New rule chain",
|
|
2397
|
+
all: "All rule chains",
|
|
2398
|
+
empty: "Open a rule chain to show tabs",
|
|
2399
|
+
rename: "Rename",
|
|
2400
|
+
pin: "Pin",
|
|
2401
|
+
unpin: "Unpin",
|
|
2402
|
+
editInfo: "Edit Info",
|
|
2403
|
+
enable: "Enable",
|
|
2404
|
+
disable: "Disable",
|
|
2405
|
+
deploy: "Deploy",
|
|
2406
|
+
stop: "Stop",
|
|
2407
|
+
running: "Running",
|
|
2408
|
+
stopped: "Stopped",
|
|
2409
|
+
runHistory: "Run history",
|
|
2410
|
+
debug: "Debug"
|
|
2411
|
+
},
|
|
2412
|
+
panel: {
|
|
2413
|
+
nodeTitle: "Node Details",
|
|
2414
|
+
nodeInformation: "Node Information",
|
|
2415
|
+
edgeTitle: "Connection Properties",
|
|
2416
|
+
chainTitle: "Rule Chain Properties",
|
|
2417
|
+
noSelection: "No element selected",
|
|
2418
|
+
close: "Close",
|
|
2419
|
+
save: "Save",
|
|
2420
|
+
loaded: "Loaded",
|
|
2421
|
+
saving: "Saving...",
|
|
2422
|
+
saveSuccess: "Saved",
|
|
2423
|
+
deleting: "Deleting...",
|
|
2424
|
+
apply: "Apply",
|
|
2425
|
+
nodeId: "Node ID",
|
|
2426
|
+
nodeIdLocked: "Node ID is bound to the canvas and will not be changed by property edits",
|
|
2427
|
+
name: "Name",
|
|
2428
|
+
description: "Description",
|
|
2429
|
+
debugMode: "Debug Mode",
|
|
2430
|
+
confirm: "Confirm",
|
|
2431
|
+
cancel: "Cancel",
|
|
2432
|
+
detail: "Details",
|
|
2433
|
+
debugLog: "Debug Log",
|
|
2434
|
+
help: "Help",
|
|
2435
|
+
componentType: "Component Type",
|
|
2436
|
+
relationTypes: "Relation Types",
|
|
2437
|
+
nodeNamePlaceholder: "Enter node name",
|
|
2438
|
+
descriptionPlaceholder: "Enter node description",
|
|
2439
|
+
addPair: "+ Add",
|
|
2440
|
+
tableView: "Table",
|
|
2441
|
+
terminalView: "Terminal",
|
|
2442
|
+
refreshLog: "Refresh",
|
|
2443
|
+
eventTime: "Event Time",
|
|
2444
|
+
type: "Type",
|
|
2445
|
+
messageId: "Message ID",
|
|
2446
|
+
messageType: "Message Type",
|
|
2447
|
+
relationType: "Relation",
|
|
2448
|
+
data: "Data",
|
|
2449
|
+
metadata: "Metadata",
|
|
2450
|
+
error: "Error",
|
|
2451
|
+
view: "View",
|
|
2452
|
+
loading: "Loading...",
|
|
2453
|
+
inputNode: "Input",
|
|
2454
|
+
noData: "No data",
|
|
2455
|
+
noDebugLog: "No debug logs",
|
|
2456
|
+
liveDebug: "Live",
|
|
2457
|
+
liveDebugOn: "Live",
|
|
2458
|
+
liveDebugOff: "Disconnected",
|
|
2459
|
+
liveDebugConnecting: "Connecting...",
|
|
2460
|
+
liveDebugReconnectLimit: "Reconnect limit reached; retry manually",
|
|
2461
|
+
readOnlyCannotOperate: "The editor is read-only and cannot deploy or stop a chain",
|
|
2462
|
+
edit: "Edit",
|
|
2463
|
+
copy: "Copy",
|
|
2464
|
+
delete: "Delete",
|
|
2465
|
+
runFromNode: "Execute from this node",
|
|
2466
|
+
runSingleNode: "Execute only this node",
|
|
2467
|
+
confirmDelete: "Delete Rule Chain",
|
|
2468
|
+
confirmDeleteMsg: 'Are you sure you want to delete rule chain "{name}"? This action cannot be undone.',
|
|
2469
|
+
confirmDeleteGraphElementsMsg: "Delete {nodeCount} node(s) and {edgeCount} connection(s)? This action cannot be undone.",
|
|
2470
|
+
confirmDisconnectEdgesMsg: "Disconnect {edgeCount} connection(s) from this node?",
|
|
2471
|
+
confirmDeleteNewEdgeMsg: "Delete this new connection?",
|
|
2472
|
+
confirmDeleteUnavailable: "Delete confirmation is unavailable in this environment, so deletion was blocked.",
|
|
2473
|
+
deleteRolledBack: ", and the original graph data was restored.",
|
|
2474
|
+
deleteRollbackFailed: ". Automatic restoration was incomplete; reload the rule chain and verify it.",
|
|
2475
|
+
deploying: "Deploying...",
|
|
2476
|
+
deployed: "Deployed",
|
|
2477
|
+
undeploying: "Stopping...",
|
|
2478
|
+
undeployed: "Stopped",
|
|
2479
|
+
restarting: "Restarting...",
|
|
2480
|
+
restarted: "Restarted",
|
|
2481
|
+
restartConfirm: "Restarting rebuilds node instances. In-memory sessions, counters, timers, and similar state will be reset, and endpoint connections may briefly reconnect. Continue?",
|
|
2482
|
+
restartDirtyConfirm: "This rule chain has unsaved changes. They will be saved and verified before restart. Node memory will be reset and endpoint connections may briefly reconnect. Continue?",
|
|
2483
|
+
restartStoppedBySaveFailure: "Save did not complete; restart was cancelled",
|
|
2484
|
+
operate: "Actions",
|
|
2485
|
+
operateFailed: "Failed",
|
|
2486
|
+
codeEditor: "Code Editor",
|
|
2487
|
+
syntaxOk: "Syntax OK",
|
|
2488
|
+
formatCode: "Format",
|
|
2489
|
+
fullscreen: "Fullscreen",
|
|
2490
|
+
exitFullscreen: "Exit Fullscreen",
|
|
2491
|
+
idRequired: "ID is required",
|
|
2492
|
+
nameRequired: "Name is required",
|
|
2493
|
+
debugPrerequisite: "Configure apiBase and load a rule chain first",
|
|
2494
|
+
requestTimeout: "Request timed out",
|
|
2495
|
+
loadFailed: "Load failed: {{message}}",
|
|
2496
|
+
unsavedCloseTitle: "Unsaved form changes",
|
|
2497
|
+
unsavedCloseDesc: "This right-side panel contains unsaved form changes. Save before closing, discard changes, or keep editing.",
|
|
2498
|
+
saveAndClose: "Save and close",
|
|
2499
|
+
discardChanges: "Discard",
|
|
2500
|
+
keepEditing: "Keep editing",
|
|
2501
|
+
unsavedSaveBeforeClose: "The form has unsaved changes. Save before closing?",
|
|
2502
|
+
unsavedDiscardBeforeClose: "Discard unsaved changes and close?"
|
|
2503
|
+
},
|
|
2504
|
+
contextMenu: {
|
|
2505
|
+
editProperties: "Edit Properties",
|
|
2506
|
+
copy: "Copy",
|
|
2507
|
+
duplicate: "Duplicate Node",
|
|
2508
|
+
insertNode: "Insert Component",
|
|
2509
|
+
addNodeHere: "Add Node Here",
|
|
2510
|
+
arrange: "Arrange",
|
|
2511
|
+
help: "Documentation",
|
|
2512
|
+
viewConnections: "View Connections",
|
|
2513
|
+
delete: "Delete",
|
|
2514
|
+
selectAll: "Select All",
|
|
2515
|
+
fitView: "Fit View",
|
|
2516
|
+
paste: "Paste",
|
|
2517
|
+
disconnect: "Disconnect",
|
|
2518
|
+
resetZoom: "Reset Zoom",
|
|
2519
|
+
gridStyle: "Grid Style",
|
|
2520
|
+
gridMesh: "Mesh",
|
|
2521
|
+
gridDot: "Dots",
|
|
2522
|
+
showEdgeLabels: "Show Edge Labels",
|
|
2523
|
+
hideEdgeLabels: "Hide Edge Labels",
|
|
2524
|
+
panels: "Panels",
|
|
2525
|
+
leftPanel: "Left Panel",
|
|
2526
|
+
rightPanel: "Right Panel",
|
|
2527
|
+
bottomPanel: "Bottom Panel",
|
|
2528
|
+
runFromNode: "Run From This Node",
|
|
2529
|
+
runSingleNode: "Run This Node Only"
|
|
2530
|
+
},
|
|
2531
|
+
status: {
|
|
2532
|
+
ready: "Ready",
|
|
2533
|
+
nodes: "Nodes",
|
|
2534
|
+
edges: "Edges",
|
|
2535
|
+
running: "Running",
|
|
2536
|
+
stopped: "Stopped",
|
|
2537
|
+
unknown: "Unknown",
|
|
2538
|
+
updateTime: "Updated"
|
|
2539
|
+
},
|
|
2540
|
+
statusBar: {
|
|
2541
|
+
zoomIn: "Zoom in",
|
|
2542
|
+
zoomOut: "Zoom out",
|
|
2543
|
+
resetZoom: "Reset to 100%",
|
|
2544
|
+
nodes: "Nodes",
|
|
2545
|
+
edges: "Edges",
|
|
2546
|
+
selected: "Selected",
|
|
2547
|
+
diagnostics: "Diagnostics"
|
|
2548
|
+
},
|
|
2549
|
+
connection: {
|
|
2550
|
+
online: "Connected",
|
|
2551
|
+
checking: "Checking",
|
|
2552
|
+
unauthorized: "Sign in required",
|
|
2553
|
+
forbidden: "Permission denied",
|
|
2554
|
+
offline: "Unreachable",
|
|
2555
|
+
error: "Connection error",
|
|
2556
|
+
unknown: "Not checked",
|
|
2557
|
+
api: "API",
|
|
2558
|
+
ws: "WS",
|
|
2559
|
+
login: "Sign in",
|
|
2560
|
+
retry: "Retry"
|
|
2561
|
+
},
|
|
2562
|
+
nodeConnection: {
|
|
2563
|
+
connected: "Connected",
|
|
2564
|
+
reconnecting: "Reconnecting",
|
|
2565
|
+
disconnected: "Disconnected",
|
|
2566
|
+
error: "Connection error",
|
|
2567
|
+
unknown: "Unknown status",
|
|
2568
|
+
stale: "Status may be stale"
|
|
2569
|
+
},
|
|
2570
|
+
hoverTools: {
|
|
2571
|
+
nodeActions: "Node actions",
|
|
2572
|
+
edgeActions: "Connection actions",
|
|
2573
|
+
edit: "Edit node",
|
|
2574
|
+
copy: "Copy node",
|
|
2575
|
+
delete: "Delete node",
|
|
2576
|
+
runFrom: "Run from this node",
|
|
2577
|
+
runOnly: "Run this node only",
|
|
2578
|
+
insertNode: "Insert component on connection",
|
|
2579
|
+
deleteEdge: "Delete connection"
|
|
2580
|
+
},
|
|
2581
|
+
exportDialog: {
|
|
2582
|
+
title: "Export DSL",
|
|
2583
|
+
downloadJson: "Download JSON",
|
|
2584
|
+
downloadImage: "Download Screenshot",
|
|
2585
|
+
copyJson: "Copy JSON",
|
|
2586
|
+
copied: "Copied",
|
|
2587
|
+
snapshotFailed: "Screenshot failed: Snapshot plugin required",
|
|
2588
|
+
snapshotPlugin: "Screenshot requires LogicFlow Snapshot plugin",
|
|
2589
|
+
snapshotError: "Screenshot failed",
|
|
2590
|
+
exportedToConsole: "Data exported to console (F12 to view)",
|
|
2591
|
+
editHint: "Edit the current rule-chain JSON here, then apply it to the canvas",
|
|
2592
|
+
formatJson: "Format JSON",
|
|
2593
|
+
formatSuccess: "JSON formatted",
|
|
2594
|
+
applyJson: "Apply to Canvas",
|
|
2595
|
+
jsonValid: "JSON can be applied to the current canvas"
|
|
2596
|
+
},
|
|
2597
|
+
runPanel: {
|
|
2598
|
+
title: "Debug Rule Chain",
|
|
2599
|
+
request: "Request",
|
|
2600
|
+
msgType: "Message Type",
|
|
2601
|
+
dataType: "Data Type",
|
|
2602
|
+
fromNode: "Start Node",
|
|
2603
|
+
fromNodeDefault: "Start from chain input",
|
|
2604
|
+
onlyThisNode: "Execute only this node",
|
|
2605
|
+
metadata: "Metadata",
|
|
2606
|
+
requestHeaders: "Request Headers",
|
|
2607
|
+
requestBody: "Request Body",
|
|
2608
|
+
dynamicForm: "Dynamic Form",
|
|
2609
|
+
formMode: "Form",
|
|
2610
|
+
waitResult: "Wait for result",
|
|
2611
|
+
send: "Send",
|
|
2612
|
+
sendTest: "Send Test",
|
|
2613
|
+
aiChat: "AI Assistant",
|
|
2614
|
+
newChat: "New Chat",
|
|
2615
|
+
aiChatPlaceholder: "Use the OpenAI-compatible API in Integration, or let the host handle this through onRunClick.",
|
|
2616
|
+
aiNoAgentNotice: "No AI/Agent node was detected in this chain. The editor will still call the backend OpenAI-compatible endpoint.",
|
|
2617
|
+
aiBackendAvailable: "AI Assistant will call the backend OpenAI-compatible endpoint.",
|
|
2618
|
+
aiBackendHint: "If the backend endpoint is available, this can be called directly. If the current chain is unsupported, the backend will return the error.",
|
|
2619
|
+
aiUnavailable: "Backend AI capability is not enabled. Ask an administrator to enable the AI service and try again.",
|
|
2620
|
+
openaiCompatible: "OpenAI Compatible API",
|
|
2621
|
+
aiConfig: "AI Assistant Config",
|
|
2622
|
+
aiEndpoint: "Endpoint",
|
|
2623
|
+
aiSettings: "AI Assistant Settings",
|
|
2624
|
+
aiHelp: "Help",
|
|
2625
|
+
aiResizeHandle: "Drag left to resize the AI assistant",
|
|
2626
|
+
aiHelpHint: "The AI assistant calls the backend _assistant agent with current rule-chain context. Configure prompt, model, and global skills here.",
|
|
2627
|
+
aiPrompt: "System Prompt",
|
|
2628
|
+
aiPromptHint: "Edit the built-in AI assistant _assistant AGENTS.md content.",
|
|
2629
|
+
aiPromptPlaceholder: "Enter the AI assistant system prompt",
|
|
2630
|
+
aiModelConfig: "Model Config",
|
|
2631
|
+
aiModelHint: "Configure the default model and connection settings for the AI assistant. Changes take effect after saving.",
|
|
2632
|
+
aiModelManagedBySettings: "Model is managed by AI Assistant Settings",
|
|
2633
|
+
aiModelManagedCompact: "Settings",
|
|
2634
|
+
aiModelRequired: "API URL and model name are required",
|
|
2635
|
+
aiAdvancedConfig: "Advanced Config",
|
|
2636
|
+
aiAdvancedConfigHint: "Parameters are off by default. Only enabled parameters with valid values are saved to the backend and sent at runtime.",
|
|
2637
|
+
aiProvider: "Model Provider",
|
|
2638
|
+
aiProviderCustom: "Custom Provider",
|
|
2639
|
+
aiProviderPreset: "Preset Provider",
|
|
2640
|
+
aiProviderPlaceholder: "Select model provider",
|
|
2641
|
+
aiProviderSelect: "Select model provider",
|
|
2642
|
+
aiCatalogBuiltin: "Built-in model providers are ready; the models.dev catalog will be cached in the background.",
|
|
2643
|
+
aiCatalogLoading: "Loading models.dev model catalog...",
|
|
2644
|
+
aiCatalogNetwork: "Updated from models.dev",
|
|
2645
|
+
aiCatalogCache: "Using cached models.dev catalog",
|
|
2646
|
+
aiCatalogReady: "{source}: {providers} providers / {models} models",
|
|
2647
|
+
aiCatalogFailed: "Failed to load models.dev catalog. Built-in presets remain available: {error}",
|
|
2648
|
+
aiCatalogModelCount: "{count} models",
|
|
2649
|
+
aiModelProfile: "Model Capabilities",
|
|
2650
|
+
aiModelProfileEmpty: "Select or enter a model to inspect capabilities and parameter policy.",
|
|
2651
|
+
aiModelSourceModelsDev: "models.dev catalog",
|
|
2652
|
+
aiModelSourceLive: "Live probe",
|
|
2653
|
+
aiModelSourceHistory: "History",
|
|
2654
|
+
aiModelSourceHost: "Host preset",
|
|
2655
|
+
aiModelSourceManual: "Manual",
|
|
2656
|
+
aiModelCapabilityReasoning: "Reasoning",
|
|
2657
|
+
aiModelCapabilityStandard: "Standard",
|
|
2658
|
+
aiModelCapabilityTools: "Tools",
|
|
2659
|
+
aiModelCapabilityMultimodal: "Multimodal",
|
|
2660
|
+
aiModelCapabilityContext: "{value} context",
|
|
2661
|
+
aiModelCapabilityOutput: "{value} output",
|
|
2662
|
+
aiModelCapabilityCost: "${input}/${output}",
|
|
2663
|
+
aiParamPolicyReasoning: "Generic model policy: only enabled params with valid values are saved.",
|
|
2664
|
+
aiParamPolicyStandard: "Generic model policy: only enabled params with valid values are saved.",
|
|
2665
|
+
aiParamPolicyCounts: "{enabled}/{total} enabled",
|
|
2666
|
+
aiParamPolicyReasoningWarning: "If the backend still injects incompatible runtime defaults, the frontend can only stop writing those fields; full stability requires the backend default-parameter policy to be fixed too.",
|
|
2667
|
+
aiBackendDefaultParamsWarning: "Backend returned likely synthesized default params ({params}). The frontend treats them as omitted; if the assistant still fails, the backend must stop writing or forwarding unconfigured params.",
|
|
2668
|
+
aiBackendDefaultParamsAfterSave: "Saved, but backend returned likely synthesized default params ({params}). The frontend kept these params omitted; assistant runtime still needs the backend parameter policy fixed.",
|
|
2669
|
+
aiParamEnableHint: "Enable optional model parameters as needed. Disabled fields are omitted from the save request.",
|
|
2670
|
+
aiParamClearOptional: "Clear Optional Params",
|
|
2671
|
+
aiParamCleared: "Optional model params cleared. The frontend save request will omit these fields.",
|
|
2672
|
+
aiParamEnabled: "Enabled",
|
|
2673
|
+
aiParamOmitted: "Omitted",
|
|
2674
|
+
aiParamEnabledValueRequired: "Parameter {name} is enabled. Enter a valid number.",
|
|
2675
|
+
aiParamEditable: "Editable",
|
|
2676
|
+
aiParamFixed: "Fixed",
|
|
2677
|
+
aiParamUnsupported: "Not saved",
|
|
2678
|
+
aiParamFixedByReasoning: "This model family fixes the parameter; it is omitted from the save payload.",
|
|
2679
|
+
aiParamNotPersisted: "The current backend model config does not persist this field; it is shown only for compatibility.",
|
|
2680
|
+
aiParamNotSupportedByCatalog: "The selected catalog entry does not advertise this parameter; it is omitted from the save payload.",
|
|
2681
|
+
aiCustomParams: "Custom Params",
|
|
2682
|
+
aiCustomParamsHint: "For future model or provider-specific parameters. Checked rows are submitted; values are parsed as JSON first.",
|
|
2683
|
+
aiCustomParamAdd: "Add Param",
|
|
2684
|
+
aiCustomParamEmpty: "No custom params",
|
|
2685
|
+
aiCustomParamKeyPlaceholder: "Name, e.g. reasoning_effort",
|
|
2686
|
+
aiCustomParamValuePlaceholder: 'Value, JSON supported, e.g. "medium", true, {"type":"json_object"}',
|
|
2687
|
+
aiCustomParamKeyRequired: "Custom parameter name is required.",
|
|
2688
|
+
aiCustomParamValueRequired: "Parameter {name} is enabled. Enter a value.",
|
|
2689
|
+
aiCustomParamDuplicate: "Parameter {name} is duplicated.",
|
|
2690
|
+
aiCustomParamBuiltinDuplicate: "Parameter {name} already exists in common parameters. Enable that field instead.",
|
|
2691
|
+
aiModelProbe: "Model Monitor",
|
|
2692
|
+
aiModelProbeHint: "Fetch the model list and test availability using the current API URL and key. This does not save the config automatically.",
|
|
2693
|
+
aiModelProbeIdle: "Enter an API URL to request /models. Enter a model to run a minimal chat test.",
|
|
2694
|
+
aiModelFetchList: "Fetch Models",
|
|
2695
|
+
aiModelTest: "Test Model",
|
|
2696
|
+
aiCompletionsTest: "Test Completions",
|
|
2697
|
+
aiImageTest: "Test Image",
|
|
2698
|
+
aiImageModel: "Image Model",
|
|
2699
|
+
aiImageModelPlaceholder: "e.g. gpt-image-2",
|
|
2700
|
+
aiImageModelRequired: "Enter an image model first",
|
|
2701
|
+
aiCompletionsTesting: "Testing completions endpoint...",
|
|
2702
|
+
aiImageTesting: "Testing image endpoint. This may take 30-90 seconds...",
|
|
2703
|
+
aiCompletionsSuccess: "{model} completions endpoint is available, {ms}ms, response: {reply}",
|
|
2704
|
+
aiImageSuccess: "{model} image endpoint is available, {ms}ms, {summary}",
|
|
2705
|
+
aiImageProbeOk: "Image endpoint request succeeded",
|
|
2706
|
+
aiImageReturnedBase64: "The image endpoint returned b64_json. Raw base64 is hidden and only a summary is shown.",
|
|
2707
|
+
aiImageUrlFallback: "The provider did not return a URL. Preview b64_json on the frontend or store it through the backend.",
|
|
2708
|
+
aiCommonIssues: "Common Issues",
|
|
2709
|
+
aiCommonIssuesHint: "Probe results show endpoint, status, duration, and actionable suggestions.",
|
|
2710
|
+
aiProbeKindModels: "Model list",
|
|
2711
|
+
aiProbeKindChat: "Chat endpoint",
|
|
2712
|
+
aiProbeKindCompletions: "Completions endpoint",
|
|
2713
|
+
aiProbeKindImages: "Image endpoint",
|
|
2714
|
+
aiProbeEndpoint: "Endpoint",
|
|
2715
|
+
aiProbeStatusCode: "Status",
|
|
2716
|
+
aiProbeDuration: "Duration",
|
|
2717
|
+
aiProbeModel: "Model",
|
|
2718
|
+
aiProbeResponseType: "Response",
|
|
2719
|
+
aiProbeSize: "Size",
|
|
2720
|
+
aiCommonIssueBaseUrl: "Use the OpenAI-compatible base URL, for example https://host/v1. If a full endpoint is entered, the frontend normalizes it for other probe endpoints.",
|
|
2721
|
+
aiCommonIssueParams: "Advanced parameters are omitted by default. Only checked values are saved, avoiding temperature, top_p, n, and similar model limits.",
|
|
2722
|
+
aiCommonIssueImageLarge: "Image generation may take 30-90 seconds and return large b64_json payloads. The UI shows a summary instead of expanding raw base64.",
|
|
2723
|
+
aiCommonIssueAuth: "Authentication failed. Check whether the API key is empty, whether Bearer is needed, and whether the account has model access.",
|
|
2724
|
+
aiCommonIssueNotFound: "Endpoint not found. Check duplicated /v1, /chat/completions, or whether the provider supports this endpoint.",
|
|
2725
|
+
aiCommonIssueQuota: "Rate limit or quota issue. Reduce concurrency, switch model, or check provider billing.",
|
|
2726
|
+
aiCommonIssueTimeout: "Request timed out or was blocked. Image/completions endpoints can be slow; use a backend proxy when browser direct calls fail.",
|
|
2727
|
+
aiCommonIssueCors: "Browser direct call failed. Check CORS; in production prefer saving config to the backend and let the backend call the provider.",
|
|
2728
|
+
aiCommonIssueModel: "Model unavailable. Fetch the model list first, then select an exact model ID returned by the provider.",
|
|
2729
|
+
aiCommonIssueUnsupportedParams: "Model parameters are incompatible. Clear or uncheck advanced params so the backend omits unconfigured fields.",
|
|
2730
|
+
aiCommonIssueCompletionsSlow: "The completions endpoint can be slow. Prefer chat/completions; use old completions only for compatibility checks.",
|
|
2731
|
+
aiCommonIssueImageSummary: "The image probe shows response format, size, and duration only. Some providers return b64_json even when URL is requested.",
|
|
2732
|
+
aiCommonIssueHealthy: "No clear issue was detected. If the AI assistant still fails, inspect the backend _assistant config and runtime logs.",
|
|
2733
|
+
aiModelProbeListEmpty: "No live model list fetched yet",
|
|
2734
|
+
aiModelProbeUseModel: "Use {model}",
|
|
2735
|
+
aiModelProbeUrlRequired: "Enter the API URL first",
|
|
2736
|
+
aiModelProbeModelRequired: "Enter or choose a model first",
|
|
2737
|
+
aiModelProbeLoading: "Fetching model list...",
|
|
2738
|
+
aiModelProbeTesting: "Testing model...",
|
|
2739
|
+
aiModelProbeModelsLoaded: "Fetched {count} model(s) in {ms}ms",
|
|
2740
|
+
aiModelProbeNoModels: "Request succeeded, but no recognizable models were found in the response",
|
|
2741
|
+
aiModelProbeSuccess: "{model} is available, {ms}ms, response: {reply}",
|
|
2742
|
+
aiModelProbeFailed: "Model monitor failed: {error}",
|
|
2743
|
+
aiModelHistory: "Config History",
|
|
2744
|
+
aiModelHistoryHint: "Stored only in this browser. Custom providers can restore API URL, key, and model from history.",
|
|
2745
|
+
aiModelHistorySelect: "Choose history config",
|
|
2746
|
+
aiModelHistoryApply: "Apply",
|
|
2747
|
+
aiModelHistoryDelete: "Delete",
|
|
2748
|
+
aiModelHistoryEmpty: "No history yet. A successful save or model test will record one.",
|
|
2749
|
+
aiModelHistoryCustomOnly: "Switch to Custom Provider to choose from history.",
|
|
2750
|
+
aiModelHistoryTotal: "{count} history config(s)",
|
|
2751
|
+
aiModelHistorySummary: "API: {url} · Key: {key} · Model: {model}",
|
|
2752
|
+
aiModelHistoryApplied: "History config applied. Save to update the global config.",
|
|
2753
|
+
aiModelHistoryDeleted: "History config deleted",
|
|
2754
|
+
aiModelHistoryDeleteConfirm: "Delete history config {model}?",
|
|
2755
|
+
aiModelGlobalValue: "Global: {value}",
|
|
2756
|
+
aiModelGlobalEmpty: "Global: not configured",
|
|
2757
|
+
aiModelGlobalKeyConfigured: "Global: configured",
|
|
2758
|
+
aiModelGlobalKeyEmpty: "Global: not configured",
|
|
2759
|
+
aiApiUrl: "API URL",
|
|
2760
|
+
aiApiKey: "API Key",
|
|
2761
|
+
aiApiKeyPlaceholder: "Enter API Key",
|
|
2762
|
+
aiModelPlaceholder: "Enter model name",
|
|
2763
|
+
aiMaxStep: "Max Steps",
|
|
2764
|
+
aiMaxToolOutput: "Max Tool Output Length",
|
|
2765
|
+
aiMaxToolOutputLength: "Max Tool Output Length",
|
|
2766
|
+
aiTemperature: "Temperature",
|
|
2767
|
+
aiTopP: "Top P",
|
|
2768
|
+
aiPresencePenalty: "Presence Penalty",
|
|
2769
|
+
aiFrequencyPenalty: "Frequency Penalty",
|
|
2770
|
+
aiMaxTokens: "Max Tokens",
|
|
2771
|
+
aiMaxCompletionTokens: "Max Completion Tokens",
|
|
2772
|
+
aiN: "Choices (n)",
|
|
2773
|
+
aiGlobalSkills: "Global Skills",
|
|
2774
|
+
aiSkillsHint: "Manage global skills that the AI assistant can use directly.",
|
|
2775
|
+
aiSkillNew: "New Skill",
|
|
2776
|
+
aiSkillSearch: "Search skill name or description",
|
|
2777
|
+
aiSkillTotal: "{{total}} skill(s), {{filtered}} shown",
|
|
2778
|
+
aiSkillSelected: "Selected: {{name}}",
|
|
2779
|
+
aiSkillEmpty: 'No skills yet. Click "New Skill" to create one.',
|
|
2780
|
+
aiSkillNoSearchResult: "No matching skills",
|
|
2781
|
+
aiSkillName: "Skill Name",
|
|
2782
|
+
aiSkillNameRequired: "Skill name is required",
|
|
2783
|
+
aiSkillDescription: "Skill Description",
|
|
2784
|
+
aiSkillContent: "Skill Content (SKILL.md)",
|
|
2785
|
+
aiSkillUpload: "Upload Archive",
|
|
2786
|
+
aiSkillUploadTitle: "Upload Skill Archive",
|
|
2787
|
+
aiSkillUploadTip: "Each skill directory in the archive must contain SKILL.md. Nested directories are supported.",
|
|
2788
|
+
aiSkillFormatGuide: "SKILL.md Format",
|
|
2789
|
+
aiSkillUploadDrop: "Drop an archive here, or click to choose a file",
|
|
2790
|
+
aiSkillUploadHint: "Supports .zip, .tar.gz, and .tgz. Recommended size is under 50MB.",
|
|
2791
|
+
aiSkillUploadRemove: "Remove",
|
|
2792
|
+
aiSkillUploadSubmit: "Upload",
|
|
2793
|
+
aiSkillUploadInvalidType: "Only .zip, .tar.gz, and .tgz files are supported",
|
|
2794
|
+
aiSkillUploadTooLarge: "Archive must not exceed 50MB",
|
|
2795
|
+
aiSkillUploading: "Uploading...",
|
|
2796
|
+
aiSkillUploadSuccess: "Imported {{count}} skill(s)",
|
|
2797
|
+
aiQuickPromptMqttHttp: "Create an MQTT to HTTP data forwarding rule chain",
|
|
2798
|
+
aiQuickPromptFilterLog: "Generate a message chain with condition filtering and logging",
|
|
2799
|
+
aiQuickPromptParallel: "Create a rule chain that processes multiple data sources in parallel",
|
|
2800
|
+
aiRuleChainPreview: "Rule chain preview is ready",
|
|
2801
|
+
aiRuleChainSaved: "New rule chain has been created and saved",
|
|
2802
|
+
aiRuleChainApplied: "Applied",
|
|
2803
|
+
aiRuleChainApply: "Apply to canvas",
|
|
2804
|
+
aiRuleChainReapply: "Apply again",
|
|
2805
|
+
aiRuleChainOpen: "Open in canvas",
|
|
2806
|
+
aiRuleChainOpenNew: "Open in new window",
|
|
2807
|
+
aiOpenOtherChainConfirm: "Opening this rule chain will replace the current canvas and discard unsaved changes. Continue?",
|
|
2808
|
+
aiRuleChainSourcePreview: "Source: preview_rule_chain",
|
|
2809
|
+
aiRuleChainSourceSave: "Source: save_rule_chain",
|
|
2810
|
+
aiRuleChainNodes: "nodes",
|
|
2811
|
+
aiRuleChainEdges: "edges",
|
|
2812
|
+
chatCompletions: "Chat Completions",
|
|
2813
|
+
chatWelcome: "Hi, I am the rule-chain assistant. Describe the rule chain you want to create, and I can generate it or modify the current canvas.",
|
|
2814
|
+
chatInputPlaceholder: "Describe the rule chain you want... (Enter to send, Shift+Enter for newline)",
|
|
2815
|
+
chatModel: "Model",
|
|
2816
|
+
chatModelCustom: "Custom",
|
|
2817
|
+
chatMe: "Me",
|
|
2818
|
+
chatAssistant: "AI Assistant",
|
|
2819
|
+
chatSending: "Thinking...",
|
|
2820
|
+
chatWaitingBackend: "The backend is still processing and has not returned stream content yet ({seconds}s).",
|
|
2821
|
+
chatWaitingBackendSlow: "The backend is taking longer than expected and has not returned stream content yet ({seconds}s). It may be waiting for the model or tools.",
|
|
2822
|
+
chatToolIdleCompleted: "Tool execution is complete. The backend did not return final text, so the assistant finished automatically.",
|
|
2823
|
+
chatToolIdleFinalizing: "Tools completed. Finishing...",
|
|
2824
|
+
chatCancelled: "Stopped",
|
|
2825
|
+
chatRequestFailed: "Request not completed",
|
|
2826
|
+
chatTurnFailed: "Not completed",
|
|
2827
|
+
chatErrorDismiss: "Dismiss error",
|
|
2828
|
+
aiMaxStepsExceeded: "The AI assistant reached the maximum execution steps. Increase Max Steps in AI assistant settings, or split the task and retry.",
|
|
2829
|
+
chatReasoning: "Reasoning",
|
|
2830
|
+
chatItems: "items",
|
|
2831
|
+
chatThinking: "Thinking",
|
|
2832
|
+
chatToolRunning: "Running",
|
|
2833
|
+
chatToolDone: "Done",
|
|
2834
|
+
chatToolFailed: "Failed",
|
|
2835
|
+
chatToolCancelled: "Stopped",
|
|
2836
|
+
chatToolArgs: "Arguments:",
|
|
2837
|
+
chatToolResult: "Result:",
|
|
2838
|
+
chatToolEmptyResult: "(Empty result)",
|
|
2839
|
+
chatToolError: "Error:",
|
|
2840
|
+
chatRegenerate: "Regenerate",
|
|
2841
|
+
chatEdit: "Edit",
|
|
2842
|
+
chatCopy: "Copy",
|
|
2843
|
+
chatCopied: "Copied to clipboard",
|
|
2844
|
+
chatCopyFailed: "Copy failed",
|
|
2845
|
+
chatCode: "Code",
|
|
2846
|
+
chatPreview: "Preview",
|
|
2847
|
+
chatFullscreen: "Fullscreen",
|
|
2848
|
+
chatClose: "Close",
|
|
2849
|
+
chatDelete: "Delete",
|
|
2850
|
+
chatDeleteConfirm: "Delete this message?",
|
|
2851
|
+
chatDeleteCancel: "Cancel",
|
|
2852
|
+
chatEditPrompt: "Edit message",
|
|
2853
|
+
chatNoUserForRegenerate: "No matching user message found",
|
|
2854
|
+
chatScrollBottom: "Scroll to bottom",
|
|
2855
|
+
stop: "Stop",
|
|
2856
|
+
execute: "Execute (Sync)",
|
|
2857
|
+
notify: "Notify (Async)",
|
|
2858
|
+
output: "Output",
|
|
2859
|
+
log: "Log",
|
|
2860
|
+
responseBody: "Response Body",
|
|
2861
|
+
responseHeaders: "Response Headers",
|
|
2862
|
+
responseHeadersLabel: "Response Headers",
|
|
2863
|
+
responseBodyLabel: "Response Body",
|
|
2864
|
+
debugLog: "Debug Log",
|
|
2865
|
+
history: "Run History",
|
|
2866
|
+
integration: "Integration",
|
|
2867
|
+
noHistory: "No run history",
|
|
2868
|
+
historyStart: "Start",
|
|
2869
|
+
historyEnd: "End",
|
|
2870
|
+
historyClearFilter: "Clear",
|
|
2871
|
+
historyRefresh: "Refresh",
|
|
2872
|
+
historyLoading: "Loading run history...",
|
|
2873
|
+
historyLoadFailed: "Failed to load run history",
|
|
2874
|
+
historyResponseTooLarge: "Run history timed out or the response is too large. The list endpoint should return paged summaries; load full logs from a single record detail, or retry with a smaller page size.",
|
|
2875
|
+
historyRemote: "Backend run history",
|
|
2876
|
+
historyLocal: "Current session",
|
|
2877
|
+
historyEmptyHint: "No run records. Check that backend saveRunLog=true is enabled.",
|
|
2878
|
+
historyPageSizeCustom: "Custom",
|
|
2879
|
+
historyPageSizeHint: "Page size can be selected or customized. The list is expected to return paged summaries; click a record to load full details.",
|
|
2880
|
+
historyBack: "Back to list",
|
|
2881
|
+
historyReplay: "Replay",
|
|
2882
|
+
testCase: "Test Cases",
|
|
2883
|
+
testCaseEmpty: "No named cases",
|
|
2884
|
+
testCasePlaceholder: "Select a test case",
|
|
2885
|
+
testCaseNamePlaceholder: "Case name",
|
|
2886
|
+
testCaseLoad: "Load",
|
|
2887
|
+
testCaseSave: "Save Case",
|
|
2888
|
+
testCaseDelete: "Delete Case",
|
|
2889
|
+
testCaseNamePrompt: "Enter a test case name",
|
|
2890
|
+
testCaseDeleteConfirm: "Delete test case {name}?",
|
|
2891
|
+
testCaseLoaded: "Loaded test case: {name}",
|
|
2892
|
+
testCaseSaved: "Test case saved: {name}",
|
|
2893
|
+
testCaseStorageFailed: "Saved for this session, but host persistence failed",
|
|
2894
|
+
testCaseSessionOnly: "Stored for this session only; host persistence is unavailable or not configured",
|
|
2895
|
+
historyReplayHint: "Fill inputs from history without sending; click Send to execute again",
|
|
2896
|
+
historyReplayPrepared: "Input was filled from run history (message type: {msgType}, node: {nodeId}{scope}). Click Send to execute again with the current settings.",
|
|
2897
|
+
historyReplayFromNode: ", run from this node",
|
|
2898
|
+
historyReplayOnlyNode: ", execute only this node",
|
|
2899
|
+
historyDelete: "Delete",
|
|
2900
|
+
historyDeleteAll: "Delete All",
|
|
2901
|
+
historyDeleteConfirm: "Delete this run record?",
|
|
2902
|
+
historyDeleteAllConfirm: "Delete all run records? This cannot be undone.",
|
|
2903
|
+
historyDeleteSuccess: "Deleted",
|
|
2904
|
+
historyDeleteAllSuccess: "Cleared",
|
|
2905
|
+
historyDeleteFailed: "Delete failed",
|
|
2906
|
+
historyDuration: "Duration",
|
|
2907
|
+
historyStatus: "Status",
|
|
2908
|
+
historySuccess: "Success",
|
|
2909
|
+
historyFailed: "Failed",
|
|
2910
|
+
historyNoInput: "This record has no input message and cannot be replayed",
|
|
2911
|
+
historyPrev: "Previous",
|
|
2912
|
+
historyNext: "Next",
|
|
2913
|
+
historyTotal: "Total",
|
|
2914
|
+
historyPage: "Page {page}/{pages}",
|
|
2915
|
+
historyMessage: "Message",
|
|
2916
|
+
historyFullData: "Full Data",
|
|
2917
|
+
historyRawRecord: "Raw Record",
|
|
2918
|
+
historyLargeDataHint: 'Large data. Click "Full Data" to view it.',
|
|
2919
|
+
historyMsgTypeInDetail: "View in detail",
|
|
2920
|
+
historyCollapse: "Collapse",
|
|
2921
|
+
historyInput: "Input:",
|
|
2922
|
+
historyOutput: "Output:",
|
|
2923
|
+
historyError: "Error:",
|
|
2924
|
+
historyNoNodeLogs: "No node execution logs",
|
|
2925
|
+
apiUsage: "API Usage",
|
|
2926
|
+
waitingExecution: "Waiting for execution...",
|
|
2927
|
+
executing: "Executing synchronously...",
|
|
2928
|
+
notifying: "Sending async notification...",
|
|
2929
|
+
requesting: "Requesting...",
|
|
2930
|
+
needApiBase: "apiBase configuration required",
|
|
2931
|
+
runCancelled: "Run cancelled",
|
|
2932
|
+
runFailed: "Run failed",
|
|
2933
|
+
noHeaders: "(none)",
|
|
2934
|
+
timeout: "Request timeout (10s)",
|
|
2935
|
+
deleteTimeout: "Timeout",
|
|
2936
|
+
loadChainFirst: "Please load a rule chain first",
|
|
2937
|
+
unsavedWarning: "The canvas has unsaved changes. Save before running.",
|
|
2938
|
+
confirmDeployBeforeRun: "This rule chain is not deployed. Save and deploy before running?",
|
|
2939
|
+
confirmSaveBeforeRun: "The canvas has unsaved changes. Save before running?",
|
|
2940
|
+
confirmStartBeforeRun: "This rule chain is stopped. Start it before running?",
|
|
2941
|
+
saveBeforeRunFailed: "Save before run failed",
|
|
2942
|
+
startBeforeRunFailed: "Starting the rule chain failed",
|
|
2943
|
+
deployRequired: "This rule chain is not deployed. Deploy it before debugging.",
|
|
2944
|
+
confirmDeployRetry: "This rule chain is not deployed. Deploy it and retry now?",
|
|
2945
|
+
deploySucceeded: "Rule chain deployed. Retrying now.",
|
|
2946
|
+
deployFailed: "Deployment failed",
|
|
2947
|
+
runHistoryNoApi: "apiBase is not configured; run history cannot be loaded",
|
|
2948
|
+
runHistoryHttpEmpty: "HTTP {{status}} returned; no run history is available",
|
|
2949
|
+
runHistoryTime: "Time",
|
|
2950
|
+
runHistoryRecordCount: "{{count}} record(s)"
|
|
2951
|
+
},
|
|
2952
|
+
componentManage: {
|
|
2953
|
+
title: "Component Management",
|
|
2954
|
+
installed: "Installed",
|
|
2955
|
+
market: "Marketplace",
|
|
2956
|
+
dslInstall: "Install from DSL",
|
|
2957
|
+
searchPlaceholder: "Search components...",
|
|
2958
|
+
browsePlaceholder: "Search or browse the marketplace",
|
|
2959
|
+
noInstalled: "No installed components",
|
|
2960
|
+
noAvailable: "No available components",
|
|
2961
|
+
needApiBase: "apiBase configuration required",
|
|
2962
|
+
loadFailed: "Load failed",
|
|
2963
|
+
dslLabel: "Paste Component DSL (JSON)",
|
|
2964
|
+
dslPlaceholder: "Paste JSON component definition...",
|
|
2965
|
+
installBtn: "Install Component",
|
|
2966
|
+
install: "Install",
|
|
2967
|
+
installSuccess: "Successfully installed {{count}} component(s)",
|
|
2968
|
+
dslEmpty: "Please paste component DSL",
|
|
2969
|
+
jsonParseFailed: "JSON parse failed",
|
|
2970
|
+
enable: "Enable",
|
|
2971
|
+
disable: "Disable",
|
|
2972
|
+
uninstall: "Uninstall",
|
|
2973
|
+
downloadDsl: "Download DSL",
|
|
2974
|
+
upgrade: "Upgrade",
|
|
2975
|
+
confirmUninstall: 'Are you sure to uninstall component "{{name}}"? This cannot be undone.',
|
|
2976
|
+
enableSuccess: "Component enabled",
|
|
2977
|
+
disableSuccess: "Component disabled",
|
|
2978
|
+
uninstallSuccess: "Component uninstalled",
|
|
2979
|
+
operateFailed: "Operation failed",
|
|
2980
|
+
refreshFailed: "Component installed, but the component catalog could not be refreshed",
|
|
2981
|
+
expandAll: "Expand all",
|
|
2982
|
+
collapseAll: "Collapse all",
|
|
2983
|
+
builtinComponent: "Built-in",
|
|
2984
|
+
customComponent: "Custom",
|
|
2985
|
+
totalComponents: "{{count}} component(s)",
|
|
2986
|
+
sharedNodes: {
|
|
2987
|
+
tab: "Shared Nodes",
|
|
2988
|
+
search: "Search",
|
|
2989
|
+
searchPlaceholder: "Search shared nodes...",
|
|
2990
|
+
create: "New shared node",
|
|
2991
|
+
empty: "No shared nodes",
|
|
2992
|
+
loading: "Loading shared nodes...",
|
|
2993
|
+
loadFailed: "Failed to load shared nodes",
|
|
2994
|
+
detailLoading: "Loading shared-node details...",
|
|
2995
|
+
detailFailed: "Failed to load shared-node details",
|
|
2996
|
+
detailInvalid: "Shared-node detail is not an object",
|
|
2997
|
+
unsupported: "Shared-node management is not supported by this server",
|
|
2998
|
+
unauthorized: "You are not authorized to manage shared nodes",
|
|
2999
|
+
id: "ID",
|
|
3000
|
+
name: "Name",
|
|
3001
|
+
componentType: "Component type",
|
|
3002
|
+
connectionStatus: "Connection status",
|
|
3003
|
+
actions: "Actions",
|
|
3004
|
+
edit: "Edit",
|
|
3005
|
+
delete: "Delete",
|
|
3006
|
+
createTitle: "New shared node",
|
|
3007
|
+
editTitle: "Edit shared node",
|
|
3008
|
+
formHint: "Basic fields are structured; configuration is saved as a complete JSON object.",
|
|
3009
|
+
selectComponent: "Select a component",
|
|
3010
|
+
noEligibleComponents: "No installed component supports shared references",
|
|
3011
|
+
configuration: "Configuration (JSON)",
|
|
3012
|
+
configurationObjectRequired: "Configuration must be a JSON object",
|
|
3013
|
+
invalidJson: "Configuration is not valid JSON",
|
|
3014
|
+
formatJson: "Format JSON",
|
|
3015
|
+
required: "ID, name, and component type are required",
|
|
3016
|
+
identityMissing: "Shared-node ID and component type are required",
|
|
3017
|
+
save: "Save",
|
|
3018
|
+
cancel: "Cancel",
|
|
3019
|
+
back: "Back to list",
|
|
3020
|
+
saveFailed: "Failed to save shared node",
|
|
3021
|
+
saveSuccess: "Shared node saved",
|
|
3022
|
+
refreshFailed: "Shared node was saved, but the component catalog could not be refreshed",
|
|
3023
|
+
deleteFailed: "Failed to delete shared node",
|
|
3024
|
+
deleteSuccess: "Shared node deleted",
|
|
3025
|
+
deleteRefreshFailed: "Shared node was deleted, but the component catalog could not be refreshed",
|
|
3026
|
+
deleting: "Deleting shared node...",
|
|
3027
|
+
confirmDelete: 'Delete shared node "{{name}}"? This cannot be undone.',
|
|
3028
|
+
confirmTypeChange: "Changing component type will replace the current configuration. Continue?",
|
|
3029
|
+
pageSize: "Page size",
|
|
3030
|
+
pageSummary: "Page {{page}} of {{pages}}, {{total}} total",
|
|
3031
|
+
previous: "Previous page",
|
|
3032
|
+
next: "Next page",
|
|
3033
|
+
statusLoading: "Loading connection status...",
|
|
3034
|
+
statusUnsupported: "Connection status is not supported by this server",
|
|
3035
|
+
statusUnauthorized: "Sign in to view connection status",
|
|
3036
|
+
statusStale: "Connection status may be stale",
|
|
3037
|
+
statusError: "Connection status could not be loaded",
|
|
3038
|
+
statusLoadingShort: "Loading",
|
|
3039
|
+
statusUnsupportedShort: "Unsupported",
|
|
3040
|
+
statusUnauthorizedShort: "Unauthorized",
|
|
3041
|
+
statusErrorShort: "Unavailable",
|
|
3042
|
+
statusStaleShort: "Stale",
|
|
3043
|
+
statusUnknown: "Unknown"
|
|
3044
|
+
}
|
|
3045
|
+
},
|
|
3046
|
+
/** Rule chain info panel */
|
|
3047
|
+
chainInfo: {
|
|
3048
|
+
title: "Rule Chain Info",
|
|
3049
|
+
noData: "No data",
|
|
3050
|
+
basicInfo: "Basic Info",
|
|
3051
|
+
name: "Name",
|
|
3052
|
+
rootChain: "Root Rule Chain",
|
|
3053
|
+
enabled: "Enabled",
|
|
3054
|
+
disabled: "Disabled",
|
|
3055
|
+
createRootChain: "Create root rule chain",
|
|
3056
|
+
createSubChain: "Create sub rule chain",
|
|
3057
|
+
debugMode: "Debug Mode",
|
|
3058
|
+
debugModeDesc: "When enabled, every message is logged for debugging and node debug settings are overridden. This affects runtime performance; disable it in production. Manual editor debugging is unaffected.",
|
|
3059
|
+
category: "Category",
|
|
3060
|
+
categoryPlaceholder: "Enter category, for example: agent, iot, data-flow",
|
|
3061
|
+
description: "Description",
|
|
3062
|
+
noDescription: "No description",
|
|
3063
|
+
inputDefinition: "Input Definition",
|
|
3064
|
+
inputSchemaDesc: "Define public rule-chain input parameters for app integration and AI calls.",
|
|
3065
|
+
inputSchemaEmpty: "No input definition",
|
|
3066
|
+
visualMode: "Visual",
|
|
3067
|
+
jsonMode: "JSON Code",
|
|
3068
|
+
addProperty: "Add Property",
|
|
3069
|
+
propertyName: "Field",
|
|
3070
|
+
propertyTitle: "Title",
|
|
3071
|
+
propertyDescription: "Description",
|
|
3072
|
+
propertyType: "Type",
|
|
3073
|
+
required: "Required",
|
|
3074
|
+
order: "Order",
|
|
3075
|
+
inputSchemaJsonHint: "Use JSON Code mode for nested object/array structures. Existing nested structure is preserved.",
|
|
3076
|
+
formatJson: "Format JSON",
|
|
3077
|
+
jsonInvalid: "Invalid JSON",
|
|
3078
|
+
saveInputSchema: "Save Input Definition",
|
|
3079
|
+
varsAndSecrets: "Variables & Secrets",
|
|
3080
|
+
vars: "Variables",
|
|
3081
|
+
secrets: "Secrets",
|
|
3082
|
+
varName: "Name",
|
|
3083
|
+
varValue: "Value",
|
|
3084
|
+
platformIntegration: "Platform Integration",
|
|
3085
|
+
syncAPI: "Sync API",
|
|
3086
|
+
syncAPIDesc: "Returns processing result",
|
|
3087
|
+
asyncAPI: "Async API",
|
|
3088
|
+
asyncAPIDesc: "Fire and forget",
|
|
3089
|
+
openaiCompatibleAPI: "OpenAI Compatible API",
|
|
3090
|
+
openaiCompatibleDesc: "Compatible with OpenAI Chat Completions and streaming responses",
|
|
3091
|
+
openaiConfigExample: "OpenAI Config Example",
|
|
3092
|
+
mcpIntegration: "MCP Integration",
|
|
3093
|
+
tenantAPI: "Tenant API",
|
|
3094
|
+
tenantAPIDesc: "Expose all rule chains as MCP tools",
|
|
3095
|
+
chainAPI: "Rule Chain API",
|
|
3096
|
+
chainAPIDesc: "Requires MCP Server Endpoint configuration",
|
|
3097
|
+
mcpStreamableHttp: "MCP API (StreamableHTTP)",
|
|
3098
|
+
mcpStreamableHttpDesc: "Expose all rule chains as MCP tools",
|
|
3099
|
+
mcpGroupAPI: "MCP Group API",
|
|
3100
|
+
mcpGroupAPIDesc: "Filter tool subsets by group",
|
|
3101
|
+
mcpConfigExample: "MCP Config Example",
|
|
3102
|
+
clickCopy: "Click to copy",
|
|
3103
|
+
copied: "Copied!",
|
|
3104
|
+
appIntegration: "App Integration",
|
|
3105
|
+
addVar: "Add Variable",
|
|
3106
|
+
addSecret: "Add Secret",
|
|
3107
|
+
addTitle: "Add {{type}}",
|
|
3108
|
+
namePlaceholder: "Enter name",
|
|
3109
|
+
valuePlaceholder: "Enter value",
|
|
3110
|
+
saving: "Saving...",
|
|
3111
|
+
saved: "Saved",
|
|
3112
|
+
appliedLocally: "Applied locally; use Save to persist",
|
|
3113
|
+
saveFailed: "Save failed",
|
|
3114
|
+
saveBaseOperation: "Save basic information",
|
|
3115
|
+
saveInputSchemaOperation: "Save input definition",
|
|
3116
|
+
saveVarsOperation: "Save variables",
|
|
3117
|
+
saveSecretsOperation: "Save secrets",
|
|
3118
|
+
requestTimeout: "Request timed out. Check the service and try again.",
|
|
3119
|
+
unknownSaveError: "Unknown save error",
|
|
3120
|
+
saveVars: "Save Variables",
|
|
3121
|
+
saveSecrets: "Save Secrets",
|
|
3122
|
+
selectAll: "Select all",
|
|
3123
|
+
select: "Select",
|
|
3124
|
+
selectedCount: "{{count}} selected",
|
|
3125
|
+
selectRow: "Select item {{index}}",
|
|
3126
|
+
batchDelete: "Delete selected",
|
|
3127
|
+
batchDeleteConfirm: "Delete the selected {{count}} item(s)?",
|
|
3128
|
+
deleteEntryConfirm: "Delete “{{key}}”?"
|
|
3129
|
+
},
|
|
3130
|
+
chainSelector: {
|
|
3131
|
+
title: "Select Rule Chain",
|
|
3132
|
+
subtitle: "Load a main chain or sub-chain into the canvas",
|
|
3133
|
+
searchPlaceholder: "Search rule chains...",
|
|
3134
|
+
noChains: "No rule chains available",
|
|
3135
|
+
allChains: "All",
|
|
3136
|
+
mainChains: "Main Chains",
|
|
3137
|
+
subChains: "Sub Chains",
|
|
3138
|
+
refresh: "Refresh",
|
|
3139
|
+
rootBadge: "Root",
|
|
3140
|
+
subBadge: "Sub",
|
|
3141
|
+
debugBadge: "Debug",
|
|
3142
|
+
pageInfo: "Page {{current}} / {{total}} ({{count}} items)",
|
|
3143
|
+
prevPage: "Previous",
|
|
3144
|
+
nextPage: "Next",
|
|
3145
|
+
totalItems: "{{count}} items"
|
|
3146
|
+
},
|
|
3147
|
+
dialog: {
|
|
3148
|
+
confirm: "OK",
|
|
3149
|
+
cancel: "Cancel",
|
|
3150
|
+
deleteTitle: "Confirm Delete",
|
|
3151
|
+
deleteMessage: "Are you sure to delete selected elements? This cannot be undone.",
|
|
3152
|
+
saveTitle: "Save Confirmation",
|
|
3153
|
+
saveMessage: "Save the current rule chain?",
|
|
3154
|
+
delete: "Delete"
|
|
3155
|
+
},
|
|
3156
|
+
form: {
|
|
3157
|
+
name: "Name",
|
|
3158
|
+
type: "Type",
|
|
3159
|
+
debugMode: "Debug Mode",
|
|
3160
|
+
configuration: "Configuration",
|
|
3161
|
+
description: "Description",
|
|
3162
|
+
relationType: "Relation Type",
|
|
3163
|
+
inputPlaceholder: "Enter value",
|
|
3164
|
+
schemaMentionHint: "Type . to select rule chain input fields",
|
|
3165
|
+
runtimeObserved: "Observed at runtime",
|
|
3166
|
+
selectOptionRequired: "Select a valid option from the list",
|
|
3167
|
+
jsScriptPlaceholder: "Enter JS script...",
|
|
3168
|
+
keyPlaceholder: "Enter key",
|
|
3169
|
+
valuePlaceholder: "Enter value",
|
|
3170
|
+
selectRuleChain: "Select rule chain",
|
|
3171
|
+
useInputValue: "Use",
|
|
3172
|
+
connectionMode: "Connection Mode",
|
|
3173
|
+
customConnection: "Custom Connection",
|
|
3174
|
+
sharedConnection: "Shared Connection",
|
|
3175
|
+
sharedConnectionPlaceholder: "Select or enter ref:// shared connection",
|
|
3176
|
+
sharedConnectionDesc: "Shared connection writes a ref:// reference; custom connection writes the service address directly.",
|
|
3177
|
+
aiProvider: "AI Provider",
|
|
3178
|
+
customProvider: "Custom Provider",
|
|
3179
|
+
presetProvider: "Preset Provider",
|
|
3180
|
+
providerPlaceholder: "Select AI provider",
|
|
3181
|
+
providerDesc: "Preset providers fill API URL and model automatically; custom provider keeps manual inputs."
|
|
3182
|
+
},
|
|
3183
|
+
/** Edge properties */
|
|
3184
|
+
edge: {
|
|
3185
|
+
title: "Edge Details",
|
|
3186
|
+
id: "Edge ID",
|
|
3187
|
+
source: "Source",
|
|
3188
|
+
target: "Target",
|
|
3189
|
+
label: "Edge Label",
|
|
3190
|
+
labelPlaceholder: "e.g. True / False / Success",
|
|
3191
|
+
required: "Edge label is required",
|
|
3192
|
+
custom: "Custom",
|
|
3193
|
+
customPlaceholder: "Enter a custom relation type",
|
|
3194
|
+
quickEditTitle: "Quick Edit Edge Label",
|
|
3195
|
+
quickEditFailed: "Failed to update edge label"
|
|
3196
|
+
},
|
|
3197
|
+
/** Route Settings modal */
|
|
3198
|
+
routeSettings: {
|
|
3199
|
+
title: "Route Settings",
|
|
3200
|
+
endpointType: "Endpoint Type",
|
|
3201
|
+
routerList: "Routing Rules",
|
|
3202
|
+
addRouter: "Add Route",
|
|
3203
|
+
fromPath: "Request Path (From)",
|
|
3204
|
+
fromPathPlaceholder: "e.g. /api/v1/data or :id",
|
|
3205
|
+
toPath: "Target Path (To)",
|
|
3206
|
+
toPathPlaceholder: "e.g. chain:rule_chain_id",
|
|
3207
|
+
preProcessor: "Pre-processor",
|
|
3208
|
+
postProcessor: "Post-processor",
|
|
3209
|
+
noProcessor: "None",
|
|
3210
|
+
noProcessorMatch: "No matching processors",
|
|
3211
|
+
processorPickerSummary: "Showing {{visible}} / {{matched}} matches / {{total}} total, {{selected}} selected",
|
|
3212
|
+
waitResult: "Wait for result",
|
|
3213
|
+
globalProcessors: "Global Processors",
|
|
3214
|
+
routeSettingsBtn: "Route Settings",
|
|
3215
|
+
waitExecuteResult: "Wait for execution result",
|
|
3216
|
+
toolDesc: "Tool Description",
|
|
3217
|
+
operate: "Actions",
|
|
3218
|
+
edit: "Edit",
|
|
3219
|
+
delete: "Delete",
|
|
3220
|
+
confirmDeleteRoute: 'Delete route "{{path}}"? This action cannot be undone.',
|
|
3221
|
+
unnamedRoute: "Unnamed route",
|
|
3222
|
+
empty: "No data",
|
|
3223
|
+
yes: "Yes",
|
|
3224
|
+
no: "No",
|
|
3225
|
+
totalItems: "{{count}} items",
|
|
3226
|
+
itemsPerPage: "{{size}} / page",
|
|
3227
|
+
prevPage: "Previous",
|
|
3228
|
+
nextPage: "Next",
|
|
3229
|
+
jumpTo: "Go to",
|
|
3230
|
+
jump: "Go",
|
|
3231
|
+
jumpPage: "Jump to page",
|
|
3232
|
+
noRouteNeeded: "This endpoint type does not require route configuration",
|
|
3233
|
+
messageBody: "Message Body",
|
|
3234
|
+
fieldPlaceholder: "Enter {{label}}",
|
|
3235
|
+
messageBodyPlaceholder: "Enter message body, for example: {'id':1}",
|
|
3236
|
+
scheduleBodyDesc: "Message body and type sent to the rule chain by the schedule trigger",
|
|
3237
|
+
cronPreset: "Schedule preset",
|
|
3238
|
+
cronEverySeconds: "Every N seconds",
|
|
3239
|
+
cronEveryMinutes: "Every N minutes",
|
|
3240
|
+
cronEveryHour: "Hourly",
|
|
3241
|
+
cronDaily: "Daily",
|
|
3242
|
+
cronWeekdays: "Weekdays",
|
|
3243
|
+
cronWeekly: "Weekly",
|
|
3244
|
+
cronMonthly: "Monthly",
|
|
3245
|
+
cronYearly: "Yearly",
|
|
3246
|
+
cronCustom: "Custom",
|
|
3247
|
+
cronAtMinute: "At minute",
|
|
3248
|
+
cronSixFieldHint: "Six fields: second minute hour day month weekday",
|
|
3249
|
+
cronPreviewTimezone: "Preview timezone: {{timeZone}}",
|
|
3250
|
+
cronNoFutureRuns: "No upcoming run can be previewed for this expression",
|
|
3251
|
+
seconds: "seconds",
|
|
3252
|
+
minutes: "minutes",
|
|
3253
|
+
monthUnit: "month",
|
|
3254
|
+
dayUnit: "day",
|
|
3255
|
+
sundayShort: "Su",
|
|
3256
|
+
mondayShort: "Mo",
|
|
3257
|
+
tuesdayShort: "Tu",
|
|
3258
|
+
wednesdayShort: "We",
|
|
3259
|
+
thursdayShort: "Th",
|
|
3260
|
+
fridayShort: "Fr",
|
|
3261
|
+
saturdayShort: "Sa",
|
|
3262
|
+
waitWsDesc: "When enabled, the rule-chain execution result is written back to the same WebSocket connection",
|
|
3263
|
+
waitHttpDesc: "When enabled, the rule-chain execution result is returned to the client",
|
|
3264
|
+
toolInputSchema: "Tool Input JsonSchema",
|
|
3265
|
+
format: "Format",
|
|
3266
|
+
fullscreen: "Fullscreen",
|
|
3267
|
+
exitFullscreen: "Exit Fullscreen",
|
|
3268
|
+
contentPlaceholder: "Enter content...",
|
|
3269
|
+
editRoute: "Edit Route",
|
|
3270
|
+
addRoute: "Add Route",
|
|
3271
|
+
save: "Save",
|
|
3272
|
+
cancel: "Cancel",
|
|
3273
|
+
jsonInvalid: "Invalid JSON format",
|
|
3274
|
+
reservedWsPath: "endpoint/ws cannot reuse /api/v1/logs/ws or /api/v1/huanban/logs/ws; that path is reserved for Debug WS and HBC Runtime WS",
|
|
3275
|
+
pathExists: "{{path}} already exists"
|
|
3276
|
+
},
|
|
3277
|
+
property: {
|
|
3278
|
+
configurationJson: "Full Configuration JSON",
|
|
3279
|
+
loadingOptions: "Loading options...",
|
|
3280
|
+
fieldChangeLoading: "Updating related fields...",
|
|
3281
|
+
fieldChangeWait: "Wait for related fields to finish updating",
|
|
3282
|
+
fieldChangeFailed: "Field update failed",
|
|
3283
|
+
fieldChangeFailedMessage: "Failed to update related fields: {{message}}",
|
|
3284
|
+
fieldChangeUnavailable: "Field change handler is unavailable: {{name}}",
|
|
3285
|
+
configureAttached: "Configure attached fields",
|
|
3286
|
+
attachedSettings: "Attached fields",
|
|
3287
|
+
relationSummaryTitle: "Relation / Matching Protocol",
|
|
3288
|
+
casesTitle: "cases / then Matching",
|
|
3289
|
+
outgoingRelationsTitle: "Outgoing Relation Types",
|
|
3290
|
+
availableValues: "Available Values",
|
|
3291
|
+
groupFilterTitle: "groupFilter Matching Protocol",
|
|
3292
|
+
groupActionTitle: "groupAction Matching Protocol",
|
|
3293
|
+
forTitle: "for Loop Protocol",
|
|
3294
|
+
whileTitle: "while Loop Protocol",
|
|
3295
|
+
iteratorTitle: "iterator Compatibility Protocol",
|
|
3296
|
+
iteratorDeprecated: "Iterator is deprecated for this flow. Use the for protocol instead.",
|
|
3297
|
+
msgTypeSwitchTitle: "msgTypeSwitch Routing Protocol",
|
|
3298
|
+
endpointRouteTitle: "endpoint Outgoing Routes",
|
|
3299
|
+
matchMode: "Match Mode",
|
|
3300
|
+
allMatches: "All matched (AND)",
|
|
3301
|
+
anyMatch: "Any matched (OR)",
|
|
3302
|
+
allNodesSatisfied: "0 (all nodes satisfied)",
|
|
3303
|
+
notConfigured: "Not configured",
|
|
3304
|
+
noTools: "No tools",
|
|
3305
|
+
noSubagents: "No subagents",
|
|
3306
|
+
addTool: "Add Tool",
|
|
3307
|
+
addSubagent: "Add Subagent",
|
|
3308
|
+
builtinTool: "Built-in Tool",
|
|
3309
|
+
ruleChain: "Rule Chain",
|
|
3310
|
+
custom: "Custom",
|
|
3311
|
+
subagent: "Subagent",
|
|
3312
|
+
customAgent: "Custom Agent",
|
|
3313
|
+
toolType: "Tool Type",
|
|
3314
|
+
agentType: "Agent Type",
|
|
3315
|
+
searchTools: "Search tools...",
|
|
3316
|
+
selectRuleChain: "Select Rule Chain",
|
|
3317
|
+
selectTool: "Select Tool",
|
|
3318
|
+
selectSubagent: "Select Subagent",
|
|
3319
|
+
editTool: "Edit Tool",
|
|
3320
|
+
editSubagent: "Edit Subagent",
|
|
3321
|
+
configTool: "Configure Tool",
|
|
3322
|
+
configSubagent: "Configure Subagent",
|
|
3323
|
+
mainSubChain: "Main / Sub Chain",
|
|
3324
|
+
createCustomAgent: "Create Custom Agent",
|
|
3325
|
+
createCustomTool: "Create Custom Tool",
|
|
3326
|
+
parameterSchema: "Parameter Schema",
|
|
3327
|
+
agentName: "Agent Name",
|
|
3328
|
+
toolName: "Tool Name",
|
|
3329
|
+
agentNamePlaceholder: "Subagent Name",
|
|
3330
|
+
toolNamePlaceholder: "Tool Name",
|
|
3331
|
+
selectOrInputRuleChainId: "Select or enter rule chain ID",
|
|
3332
|
+
select: "Select",
|
|
3333
|
+
search: "Search",
|
|
3334
|
+
ruleChainToolDesc: "Rule-chain tools write targetId and populate parameter definitions from inputSchema.",
|
|
3335
|
+
description: "Description",
|
|
3336
|
+
subagentDesc: "Subagent Description",
|
|
3337
|
+
toolDesc: "Tool Description",
|
|
3338
|
+
customToolDesc: "Custom tool description",
|
|
3339
|
+
autoLoadSkillDir: "Auto-load global skill directory ({{dir}})",
|
|
3340
|
+
manageSkills: "Manage Skills",
|
|
3341
|
+
schemaParameters: "Parameter Definition",
|
|
3342
|
+
parameters: "Parameter Definition",
|
|
3343
|
+
visualMode: "Visual Mode",
|
|
3344
|
+
codeMode: "Code Mode",
|
|
3345
|
+
visual: "Visual",
|
|
3346
|
+
jsonCode: "JSON Code",
|
|
3347
|
+
propertyName: "Property Name",
|
|
3348
|
+
title: "Title",
|
|
3349
|
+
type: "Type",
|
|
3350
|
+
order: "Order",
|
|
3351
|
+
required: "Required",
|
|
3352
|
+
operate: "Actions",
|
|
3353
|
+
edit: "Edit",
|
|
3354
|
+
delete: "Delete",
|
|
3355
|
+
name: "Name",
|
|
3356
|
+
id: "ID",
|
|
3357
|
+
addProperty: "Add Property",
|
|
3358
|
+
initConfig: "Initial Config",
|
|
3359
|
+
backToSelect: "Back to Select",
|
|
3360
|
+
back: "Back to Select",
|
|
3361
|
+
cancel: "Cancel",
|
|
3362
|
+
confirm: "OK",
|
|
3363
|
+
confirmAndContinue: "OK and continue",
|
|
3364
|
+
finishToolSelection: "Done",
|
|
3365
|
+
noSchemaProperties: "No properties. Click the button below to add one.",
|
|
3366
|
+
arrayItems: "Array Items",
|
|
3367
|
+
childProperties: "Child Properties",
|
|
3368
|
+
itemType: "Item Type",
|
|
3369
|
+
arrayNonObject: "Current array item is not object; item properties are not required.",
|
|
3370
|
+
addItemProperty: "Add Item Property",
|
|
3371
|
+
addChildProperty: "Add Child Property",
|
|
3372
|
+
dragSort: "Drag to sort",
|
|
3373
|
+
moveUp: "Move up",
|
|
3374
|
+
moveDown: "Move down",
|
|
3375
|
+
noMatchingTools: "No matching tools",
|
|
3376
|
+
noDescription: "No description",
|
|
3377
|
+
added: "Added",
|
|
3378
|
+
pageInfo: "Page {{page}}/{{pages}}, {{total}} items",
|
|
3379
|
+
prevPage: "Previous",
|
|
3380
|
+
nextPage: "Next",
|
|
3381
|
+
loading: "Loading...",
|
|
3382
|
+
noData: "No data",
|
|
3383
|
+
selected: "Selected",
|
|
3384
|
+
subChain: "Sub Chain",
|
|
3385
|
+
rootChain: "Main Chain",
|
|
3386
|
+
subRuleChains: "Sub Rule Chains",
|
|
3387
|
+
rootRuleChains: "Main Rule Chains",
|
|
3388
|
+
searchRuleChains: "Search rule chains...",
|
|
3389
|
+
datePlaceholder: "Select date",
|
|
3390
|
+
timePlaceholder: "Select time",
|
|
3391
|
+
dateTimeFormatInfo: "Output format: {{format}}, supports ${} variable substitution",
|
|
3392
|
+
toggleToPicker: "Switch to date/time picker",
|
|
3393
|
+
toggleToManual: "Switch to manual input (variables supported)",
|
|
3394
|
+
picker: "Picker",
|
|
3395
|
+
variable: "Variable",
|
|
3396
|
+
nestedArrayPlaceholder: "Enter value",
|
|
3397
|
+
simpleArrayPlaceholder: "Press Enter to add; paste multiple values at once",
|
|
3398
|
+
clearValues: "Clear",
|
|
3399
|
+
key: "Key",
|
|
3400
|
+
value: "Value",
|
|
3401
|
+
actions: "Actions",
|
|
3402
|
+
editRowDetails: "Edit row details",
|
|
3403
|
+
confirmDeleteRows: "Delete {{count}} rows?",
|
|
3404
|
+
confirmReplacePointTable: "Importing {{incoming}} rows will replace the current {{existing}} points. Continue?",
|
|
3405
|
+
deleteSelected: "Delete Selected",
|
|
3406
|
+
exportCsv: "Export CSV",
|
|
3407
|
+
csvExportFailed: "CSV export failed: {{message}}",
|
|
3408
|
+
generatePoints: "Generate Points",
|
|
3409
|
+
importCsv: "Import CSV",
|
|
3410
|
+
csvImportFailed: "CSV import failed: {{message}}",
|
|
3411
|
+
emptyExcelTable: "No valid data found in the Excel file",
|
|
3412
|
+
excelExportFailed: "Excel export failed: {{message}}",
|
|
3413
|
+
excelImportFailed: "Excel import failed: {{message}}",
|
|
3414
|
+
exportExcel: "Export Excel",
|
|
3415
|
+
importExcel: "Import Excel",
|
|
3416
|
+
noRows: "No rows",
|
|
3417
|
+
pointCount: "Count",
|
|
3418
|
+
pointNamePrefix: "Name Prefix",
|
|
3419
|
+
pointPrefix: "Address Prefix",
|
|
3420
|
+
pointStart: "Start",
|
|
3421
|
+
pointStep: "Step",
|
|
3422
|
+
pointType: "Data Type",
|
|
3423
|
+
searchTable: "Search table",
|
|
3424
|
+
tableCount: "{{count}} rows",
|
|
3425
|
+
add: "Add",
|
|
3426
|
+
expressionPlaceholder: "Enter expression, e.g. msg.temperature > 50",
|
|
3427
|
+
conditionPlaceholder: "Enter condition, e.g. msg.temperature > 50",
|
|
3428
|
+
expressionFieldPlaceholder: "Field, e.g. msg.temperature",
|
|
3429
|
+
expressionValuePlaceholder: "Value, e.g. 50",
|
|
3430
|
+
deleteCondition: "Delete Condition",
|
|
3431
|
+
addAndCondition: "Add AND Condition",
|
|
3432
|
+
remove: "Remove",
|
|
3433
|
+
addOrCondition: "Add OR Condition",
|
|
3434
|
+
switchCondition: "Condition",
|
|
3435
|
+
switchRoute: "Route",
|
|
3436
|
+
switchRoutePlaceholder: "Enter route, e.g. Case1",
|
|
3437
|
+
deleteBranch: "Delete Branch",
|
|
3438
|
+
addBranch: "Add Branch",
|
|
3439
|
+
builtinToolAlreadyAdded: "This built-in tool has already been added",
|
|
3440
|
+
ruleChainAlreadyAdded: "This rule chain has already been added",
|
|
3441
|
+
ruleChainRequired: "Rule chain is required",
|
|
3442
|
+
nameRequired: "{{name}} is required",
|
|
3443
|
+
parametersJsonInvalid: "Parameter definition JSON is invalid: {{message}}",
|
|
3444
|
+
configJsonInvalid: "Initial config JSON is invalid: {{message}}",
|
|
3445
|
+
relationUsedSuffix: " (used)",
|
|
3446
|
+
validationFailedTitle: "Validation failed. Fix the following issues:",
|
|
3447
|
+
chooseOption: "Select",
|
|
3448
|
+
searchOptions: "Search options...",
|
|
3449
|
+
noMatchingOptions: "No matching options",
|
|
3450
|
+
selectedCount: "{{count}} selected",
|
|
3451
|
+
selectResultCount: "Showing {{shown}} / {{total}}",
|
|
3452
|
+
moreOptionsHint: "Keep typing to narrow the list",
|
|
3453
|
+
noConfigItems: "No configuration items"
|
|
3454
|
+
},
|
|
3455
|
+
trace: {
|
|
3456
|
+
needApiBase: "Trace requires apiBase. Set the backend API address in editor options.",
|
|
3457
|
+
loadChainFirst: "Load a rule chain before using trace.",
|
|
3458
|
+
title: "Trace",
|
|
3459
|
+
mode: "Trace Mode",
|
|
3460
|
+
message: "Message: {{msgId}}",
|
|
3461
|
+
executedNodes: "{{count}} node(s) executed",
|
|
3462
|
+
totalDuration: "Total {{duration}}",
|
|
3463
|
+
exit: "Exit Trace",
|
|
3464
|
+
empty: "(empty)",
|
|
3465
|
+
truncated: "... (truncated)",
|
|
3466
|
+
fullData: "Full",
|
|
3467
|
+
msgId: "Message ID",
|
|
3468
|
+
msgIdPlaceholder: "Enter a message ID or select one below",
|
|
3469
|
+
recentMessages: "Recent Messages",
|
|
3470
|
+
loadingRecent: "Loading recent messages...",
|
|
3471
|
+
cancel: "Cancel",
|
|
3472
|
+
start: "Start Trace",
|
|
3473
|
+
querying: "Querying...",
|
|
3474
|
+
queryingLogs: "Querying debug logs...",
|
|
3475
|
+
retry: "Retry",
|
|
3476
|
+
queryFailed: "Query failed: {{message}}",
|
|
3477
|
+
noLogsForMsg: `No debug logs were found for message ID "{{msgId}}".
|
|
3478
|
+
|
|
3479
|
+
Check:
|
|
3480
|
+
1. The message was processed by this rule chain
|
|
3481
|
+
2. Debug mode is enabled
|
|
3482
|
+
3. Logs have not expired`,
|
|
3483
|
+
noDebugLogs: "No debug logs",
|
|
3484
|
+
enableDebugHint: "Send a message to the rule chain and enable debug mode first",
|
|
3485
|
+
loadFailedManual: "Load failed. Enter a message ID manually",
|
|
3486
|
+
noNodes: "The current rule chain has no nodes",
|
|
3487
|
+
queryingChainLogs: "Querying rule-chain logs...",
|
|
3488
|
+
queryingNodes: "Querying nodes {{start}}~{{end}} / {{total}}..."
|
|
3489
|
+
},
|
|
3490
|
+
debugConsole: {
|
|
3491
|
+
title: "Debug Console",
|
|
3492
|
+
clear: "Clear"
|
|
3493
|
+
},
|
|
3494
|
+
aiProvider: {
|
|
3495
|
+
gitee_ai: "Gitee AI",
|
|
3496
|
+
deepseek: "DeepSeek",
|
|
3497
|
+
qwen: "Tongyi Qianwen",
|
|
3498
|
+
zhipu: "Zhipu AI",
|
|
3499
|
+
openai: "OpenAI",
|
|
3500
|
+
ollama: "Ollama (Local)"
|
|
3501
|
+
},
|
|
3502
|
+
customNode: {
|
|
3503
|
+
onlyRightAnchorOut: "Only the right anchor can connect out",
|
|
3504
|
+
inputSingleOutput: "Input can only connect to one outgoing edge",
|
|
3505
|
+
externalCannotConnectGroupChild: "External nodes cannot connect to nodes inside a group",
|
|
3506
|
+
onlyLeftAnchorIn: "Only the left anchor can connect in",
|
|
3507
|
+
agentOnlyRightOrBottomOut: "Only right and bottom anchors can connect out",
|
|
3508
|
+
agentOrchestrationLabel: "Agent Orchestration",
|
|
3509
|
+
agentOrchestrationOnlyRightOrBottomOut: "Agent orchestration can only connect out from the right or bottom anchors",
|
|
3510
|
+
agentOrchestrationOnlyLeftIn: "Agent orchestration can only connect in from the left anchor",
|
|
3511
|
+
anchorLlm: "LLM",
|
|
3512
|
+
anchorTool: "Tools",
|
|
3513
|
+
anchorMemory: "Memory",
|
|
3514
|
+
anchorKnowledge: "Knowledge"
|
|
3515
|
+
},
|
|
3516
|
+
groupNode: {
|
|
3517
|
+
onlyRightAnchorOut: "Only the right anchor can connect out",
|
|
3518
|
+
notToInput: "Cannot connect to input nodes",
|
|
3519
|
+
onlyLeftAnchorIn: "Only the left anchor can connect in"
|
|
3520
|
+
},
|
|
3521
|
+
importExport: {
|
|
3522
|
+
exportTitle: "Export Rule Chain",
|
|
3523
|
+
importTitle: "Import Rule Chain",
|
|
3524
|
+
exportTab: "Export",
|
|
3525
|
+
importTab: "Import",
|
|
3526
|
+
nodes: "Nodes",
|
|
3527
|
+
edges: "Edges",
|
|
3528
|
+
size: "Size",
|
|
3529
|
+
name: "Name",
|
|
3530
|
+
fileLoaded: "File loaded. Click to choose again",
|
|
3531
|
+
dropHint: "Drop a JSON file here, or click to choose one",
|
|
3532
|
+
jsonPlaceholder: "Paste rule-chain JSON",
|
|
3533
|
+
invalidRuleChainJson: "Invalid RuleGo rule-chain JSON: missing ruleChain or metadata",
|
|
3534
|
+
jsonParseFailed: "JSON parse failed: {{message}}",
|
|
3535
|
+
selectJsonFile: "Choose a .json file",
|
|
3536
|
+
copied: "Copied to clipboard",
|
|
3537
|
+
downloaded: "Downloaded: {{fileName}}",
|
|
3538
|
+
noImportData: "No data to import",
|
|
3539
|
+
importSuccess: "Rule chain imported",
|
|
3540
|
+
downloadFile: "Download File",
|
|
3541
|
+
confirmImport: "Confirm Import"
|
|
3542
|
+
},
|
|
3543
|
+
workflowList: {
|
|
3544
|
+
title: "Workflow List",
|
|
3545
|
+
searchPlaceholder: "Search workflows...",
|
|
3546
|
+
create: "New",
|
|
3547
|
+
createTitle: "New Workflow",
|
|
3548
|
+
createAndOpen: "Create and open",
|
|
3549
|
+
defaultName: "New Workflow",
|
|
3550
|
+
id: "ID",
|
|
3551
|
+
idPlaceholder: "Rule chain ID. Do not use /, \\ or .",
|
|
3552
|
+
idInvalid: "ID is required and cannot contain /, \\ or .",
|
|
3553
|
+
namePlaceholder: "Enter workflow name",
|
|
3554
|
+
descriptionPlaceholder: "Optional description",
|
|
3555
|
+
chainType: "Rule chain type",
|
|
3556
|
+
rootChain: "Main chain",
|
|
3557
|
+
subChain: "Sub chain",
|
|
3558
|
+
debugMode: "Debug mode",
|
|
3559
|
+
debugModeHint: "When enabled, every message is logged for debugging and node debug settings are overridden. This affects runtime performance; disable it in production. Manual editor debugging is unaffected.",
|
|
3560
|
+
category: "Category",
|
|
3561
|
+
categoryPlaceholder: "Optional category, such as IoT / AI / Sync",
|
|
3562
|
+
initialStatus: "Initial status",
|
|
3563
|
+
initialStopped: "Stopped",
|
|
3564
|
+
initialRunning: "Running",
|
|
3565
|
+
openAfterCreate: "Open editor after create",
|
|
3566
|
+
updateTime: "Updated",
|
|
3567
|
+
more: "More actions",
|
|
3568
|
+
rowHint: "Click for info, double-click to design",
|
|
3569
|
+
loginRequired: "Please sign in before viewing workflows.",
|
|
3570
|
+
empty: "No workflows",
|
|
3571
|
+
createFirst: "Create first workflow",
|
|
3572
|
+
design: "Design",
|
|
3573
|
+
info: "Info",
|
|
3574
|
+
logs: "Logs",
|
|
3575
|
+
online: "Running",
|
|
3576
|
+
offline: "Stopped",
|
|
3577
|
+
onlineAction: "Deploy",
|
|
3578
|
+
offlineAction: "Stop",
|
|
3579
|
+
confirmDelete: 'Delete workflow "{{name}}"? This action cannot be undone.',
|
|
3580
|
+
operateFailed: "Operation failed",
|
|
3581
|
+
copyFailed: "Copy failed",
|
|
3582
|
+
deleteFailed: "Delete failed",
|
|
3583
|
+
createFailed: "Create failed"
|
|
3584
|
+
},
|
|
3585
|
+
dataView: {
|
|
3586
|
+
title: "Rule Chain Data",
|
|
3587
|
+
copyJson: "Copy",
|
|
3588
|
+
downloadJson: "Download",
|
|
3589
|
+
fullJson: "Full JSON",
|
|
3590
|
+
lineCount: "{{count}} lines",
|
|
3591
|
+
byteSize: "{{size}}",
|
|
3592
|
+
fullJsonHint: "This view does not truncate data. For large payloads, copy or download the JSON.",
|
|
3593
|
+
copied: "JSON copied to clipboard",
|
|
3594
|
+
copyFailed: "Copy failed",
|
|
3595
|
+
downloaded: "Downloaded {{fileName}}",
|
|
3596
|
+
downloadFailed: "Download failed"
|
|
3597
|
+
},
|
|
3598
|
+
validation: {
|
|
3599
|
+
title: "Rule Chain Validation",
|
|
3600
|
+
revalidate: "Revalidate",
|
|
3601
|
+
noProblems: "No topology issues found",
|
|
3602
|
+
validate: "Validate",
|
|
3603
|
+
clearResults: "Clear results",
|
|
3604
|
+
close: "Close",
|
|
3605
|
+
all: "All",
|
|
3606
|
+
validating: "Validating...",
|
|
3607
|
+
empty: "No validation results. Click Validate to start.",
|
|
3608
|
+
noFilteredResults: "No results for the current filter"
|
|
3609
|
+
},
|
|
3610
|
+
problems: {
|
|
3611
|
+
title: "Chain Diagnostics",
|
|
3612
|
+
validate: "Revalidate",
|
|
3613
|
+
clear: "Clear problems",
|
|
3614
|
+
close: "Close",
|
|
3615
|
+
filter: "Filter diagnostics",
|
|
3616
|
+
all: "All",
|
|
3617
|
+
error: "Error",
|
|
3618
|
+
warning: "Warning",
|
|
3619
|
+
info: "Info",
|
|
3620
|
+
chain: "Rule chain",
|
|
3621
|
+
node: "Node",
|
|
3622
|
+
edge: "Connection",
|
|
3623
|
+
loading: "Validating...",
|
|
3624
|
+
empty: "No chain problems found",
|
|
3625
|
+
noFiltered: "No problems for the current filter"
|
|
3626
|
+
},
|
|
3627
|
+
ruleChainSettings: {
|
|
3628
|
+
title: "Rule Chain Settings",
|
|
3629
|
+
nameRequired: "Rule chain name is required",
|
|
3630
|
+
namePlaceholder: "Enter rule chain name",
|
|
3631
|
+
descriptionPlaceholder: "Enter rule chain description",
|
|
3632
|
+
root: "Root Chain",
|
|
3633
|
+
additionalInfo: "Additional Info (JSON)"
|
|
3634
|
+
},
|
|
3635
|
+
debugPanel: {
|
|
3636
|
+
sendMessage: "Send Message",
|
|
3637
|
+
debugLogs: "Debug Logs",
|
|
3638
|
+
runLogs: "Run Logs",
|
|
3639
|
+
chainId: "Rule Chain ID",
|
|
3640
|
+
msgType: "Message Type",
|
|
3641
|
+
msgTypePlaceholder: "e.g. TEST_MSG",
|
|
3642
|
+
msgBodyJson: "Message Body (JSON)",
|
|
3643
|
+
sending: "Sending...",
|
|
3644
|
+
sendTestMessage: "Send Test Message",
|
|
3645
|
+
responseData: "Response Data",
|
|
3646
|
+
nodeLabel: "Node",
|
|
3647
|
+
loading: "Loading...",
|
|
3648
|
+
refresh: "Refresh",
|
|
3649
|
+
noDebugLogs: "No debug logs",
|
|
3650
|
+
debugModeHint: "Enable Debug Mode on the node and send a message first",
|
|
3651
|
+
time: "Time",
|
|
3652
|
+
type: "Type",
|
|
3653
|
+
relation: "Relation",
|
|
3654
|
+
operate: "Actions",
|
|
3655
|
+
data: "Data",
|
|
3656
|
+
metadata: "Metadata",
|
|
3657
|
+
error: "Error",
|
|
3658
|
+
noRunLogs: "No run logs",
|
|
3659
|
+
runLogDetail: "Run Log Details",
|
|
3660
|
+
selectChainFirst: "Select a rule chain first",
|
|
3661
|
+
noSendCallback: "Send message callback is not configured",
|
|
3662
|
+
invalidJson: "Message body JSON is invalid",
|
|
3663
|
+
sendSuccess: "Message sent successfully",
|
|
3664
|
+
sendFailed: "Send failed: {{message}}",
|
|
3665
|
+
unknownError: "Unknown error",
|
|
3666
|
+
sendException: "Send exception: {{message}}",
|
|
3667
|
+
deployRequired: "This rule chain is not deployed. Deploy it before debugging.",
|
|
3668
|
+
deployAndRetry: "Deploy and Retry",
|
|
3669
|
+
deploying: "Deploying...",
|
|
3670
|
+
deploySucceeded: "Rule chain deployed. Sending again.",
|
|
3671
|
+
deployFailed: "Deployment failed",
|
|
3672
|
+
deployFailedWithMessage: "Deployment failed: {{message}}",
|
|
3673
|
+
loadDebugLogsFailed: "Failed to load debug logs",
|
|
3674
|
+
loadRunLogsFailed: "Failed to load run logs",
|
|
3675
|
+
copied: "Copied",
|
|
3676
|
+
copyFailed: "Copy failed"
|
|
3677
|
+
},
|
|
3678
|
+
searchPanel: {
|
|
3679
|
+
placeholder: "Search node name, type, or ID...",
|
|
3680
|
+
resultCount: "{{count}} result(s)",
|
|
3681
|
+
matchCount: "{{count}} match(es)",
|
|
3682
|
+
noMatch: "No matches",
|
|
3683
|
+
empty: "No matching nodes found"
|
|
3684
|
+
},
|
|
3685
|
+
workflowInfo: {
|
|
3686
|
+
noData: "Select a workflow to view details",
|
|
3687
|
+
baseInfo: "Basic Info",
|
|
3688
|
+
inputDefinition: "Input Definition",
|
|
3689
|
+
varsSecrets: "Variables & Secrets",
|
|
3690
|
+
integration: "App Integration",
|
|
3691
|
+
maintenance: "Maintenance",
|
|
3692
|
+
rootChain: "Root Rule Chain",
|
|
3693
|
+
rootChainHint: "On: main chain; off: sub-chain",
|
|
3694
|
+
debugMode: "Debug Mode",
|
|
3695
|
+
debugModeHint: "When enabled, every message is logged for debugging and node debug settings are overridden. This affects runtime performance; disable it in production. Manual editor debugging is unaffected.",
|
|
3696
|
+
category: "Category",
|
|
3697
|
+
categoryPlaceholder: "For example: agent, iot, data-flow",
|
|
3698
|
+
online: "Running",
|
|
3699
|
+
offline: "Stopped",
|
|
3700
|
+
saveBaseInfo: "Save Basic Info",
|
|
3701
|
+
saveInputDefinition: "Save Input Definition",
|
|
3702
|
+
saveVars: "Save Variables",
|
|
3703
|
+
saveSecrets: "Save Secrets",
|
|
3704
|
+
saving: "Saving...",
|
|
3705
|
+
inputSchemaJson: "Input Definition JSON",
|
|
3706
|
+
inputSchemaInvalid: "Invalid input definition JSON",
|
|
3707
|
+
visualMode: "Visual",
|
|
3708
|
+
codeMode: "JSON Code",
|
|
3709
|
+
addProperty: "Add Property",
|
|
3710
|
+
inputSchemaJsonHint: "Use JSON Code mode for nested object/array structures. Existing nested structure is preserved.",
|
|
3711
|
+
formatJson: "Format JSON",
|
|
3712
|
+
vars: "Variables",
|
|
3713
|
+
secrets: "Secrets",
|
|
3714
|
+
varName: "Variable Name",
|
|
3715
|
+
varValue: "Variable Value",
|
|
3716
|
+
secretName: "Secret Name",
|
|
3717
|
+
secretValue: "Secret Value",
|
|
3718
|
+
apiIntegration: "API Integration",
|
|
3719
|
+
executeAPI: "Execute API:",
|
|
3720
|
+
notifyAPI: "Notify API:",
|
|
3721
|
+
openaiCompatibleAPI: "OpenAI:",
|
|
3722
|
+
webSocket: "WebSocket",
|
|
3723
|
+
debugWS: "Debug WS:",
|
|
3724
|
+
runtimeWS: "Runtime WS:",
|
|
3725
|
+
endpointWS: "Endpoint WS:",
|
|
3726
|
+
mcpIntegration: "MCP Integration",
|
|
3727
|
+
mcpSSE: "MCP SSE:",
|
|
3728
|
+
mcpStreamableHTTP: "MCP HTTP:",
|
|
3729
|
+
mcpGroupAPI: "MCP Group:",
|
|
3730
|
+
action: "Actions",
|
|
3731
|
+
add: "Add",
|
|
3732
|
+
delete: "Delete",
|
|
3733
|
+
deleteEntryConfirm: "Delete “{{key}}”?",
|
|
3734
|
+
batchDelete: "Delete selected",
|
|
3735
|
+
batchDeleteConfirm: "Delete the selected {{count}} item(s)?",
|
|
3736
|
+
select: "Select",
|
|
3737
|
+
selectedCount: "{{count}} selected",
|
|
3738
|
+
selectRow: "Select item {{index}}",
|
|
3739
|
+
saveFailed: "Save failed"
|
|
3740
|
+
},
|
|
3741
|
+
maintenance: {
|
|
3742
|
+
title: "Maintenance",
|
|
3743
|
+
noApi: "The current request adapter does not provide maintenance APIs",
|
|
3744
|
+
noIssues: "No issues returned",
|
|
3745
|
+
validating: "Validating...",
|
|
3746
|
+
runValidate: "Run Validation",
|
|
3747
|
+
schemaDiff: "Schema Diff",
|
|
3748
|
+
repairPlan: "Repair Plan",
|
|
3749
|
+
patchPreview: "Patch Preview",
|
|
3750
|
+
validateResult: "Validation Result",
|
|
3751
|
+
valid: "Passed",
|
|
3752
|
+
invalid: "Failed",
|
|
3753
|
+
finished: " finished",
|
|
3754
|
+
failed: " failed"
|
|
3755
|
+
},
|
|
3756
|
+
logViewer: {
|
|
3757
|
+
title: "Debug Console",
|
|
3758
|
+
empty: "No debug logs"
|
|
3759
|
+
},
|
|
3760
|
+
copilot: {
|
|
3761
|
+
title: "AI Assistant",
|
|
3762
|
+
placeholder: "Ask something...",
|
|
3763
|
+
send: "Send",
|
|
3764
|
+
stop: "Stop",
|
|
3765
|
+
clear: "Clear",
|
|
3766
|
+
empty: "Enter a message to start a conversation",
|
|
3767
|
+
sending: "Processing",
|
|
3768
|
+
cancelled: "Request cancelled",
|
|
3769
|
+
failed: "Not completed",
|
|
3770
|
+
dismissError: "Dismiss error",
|
|
3771
|
+
reasoning: "Reasoning",
|
|
3772
|
+
userRole: "User",
|
|
3773
|
+
assistantRole: "Assistant",
|
|
3774
|
+
toolCalls: "Tool calls",
|
|
3775
|
+
toolRunning: "Running",
|
|
3776
|
+
toolReceived: "Received",
|
|
3777
|
+
toolCompleted: "Completed",
|
|
3778
|
+
toolFailed: "Failed",
|
|
3779
|
+
copy: "Copy",
|
|
3780
|
+
copied: "Copied",
|
|
3781
|
+
copyFailed: "Copy failed",
|
|
3782
|
+
regenerate: "Regenerate",
|
|
3783
|
+
code: "Code",
|
|
3784
|
+
preview: "Preview",
|
|
3785
|
+
fullscreen: "Fullscreen",
|
|
3786
|
+
close: "Close"
|
|
3787
|
+
},
|
|
3788
|
+
aiProperties: {
|
|
3789
|
+
modelSelector: "LLM Operator",
|
|
3790
|
+
loading: "Loading LLM engine...",
|
|
3791
|
+
fallback: "AI service is temporarily unavailable. This rule chain will run in normal fallback mode.",
|
|
3792
|
+
selectPlaceholder: "-- Select LLM --",
|
|
3793
|
+
empty: "The backend did not return any available models. Check the AI API configuration."
|
|
3794
|
+
}
|
|
3795
|
+
},
|
|
3796
|
+
/** Component type display names */
|
|
3797
|
+
components: {
|
|
3798
|
+
"start-node": "Input",
|
|
3799
|
+
// === action ===
|
|
3800
|
+
delay: "Delay",
|
|
3801
|
+
exec: "Exec Command",
|
|
3802
|
+
fetchNodeOutput: "Fetch Node Output",
|
|
3803
|
+
functions: "Functions",
|
|
3804
|
+
log: "Log",
|
|
3805
|
+
"x/python": "Python Script",
|
|
3806
|
+
// === common ===
|
|
3807
|
+
break: "Break",
|
|
3808
|
+
comment: "Comment",
|
|
3809
|
+
end: "End",
|
|
3810
|
+
for: "For Loop",
|
|
3811
|
+
fork: "Fork",
|
|
3812
|
+
groupAction: "Group Action",
|
|
3813
|
+
inclusive: "Inclusive Gateway",
|
|
3814
|
+
join: "Join",
|
|
3815
|
+
ref: "Reference Node",
|
|
3816
|
+
switch: "Switch",
|
|
3817
|
+
while: "While Loop",
|
|
3818
|
+
iterator: "Iterator",
|
|
3819
|
+
// === filter ===
|
|
3820
|
+
exprFilter: "Expr Filter",
|
|
3821
|
+
fieldFilter: "Field Filter",
|
|
3822
|
+
groupFilter: "Group Filter",
|
|
3823
|
+
jsFilter: "JS Filter",
|
|
3824
|
+
jsSwitch: "JS Switch",
|
|
3825
|
+
msgTypeSwitch: "Msg Type Switch",
|
|
3826
|
+
"x/luaFilter": "Lua Filter",
|
|
3827
|
+
// === transform ===
|
|
3828
|
+
exprTransform: "Expr Transform",
|
|
3829
|
+
jsTransform: "JS Transform",
|
|
3830
|
+
metadataTransform: "Metadata Transform",
|
|
3831
|
+
"text/template": "Template Transform",
|
|
3832
|
+
"x/luaTransform": "Lua Transform",
|
|
3833
|
+
// === external ===
|
|
3834
|
+
cacheDelete: "Cache Delete",
|
|
3835
|
+
cacheGet: "Cache Get",
|
|
3836
|
+
cacheSet: "Cache Set",
|
|
3837
|
+
dbClient: "Database",
|
|
3838
|
+
mqttClient: "MQTT",
|
|
3839
|
+
net: "TCP/UDP",
|
|
3840
|
+
sendEmail: "Send Email",
|
|
3841
|
+
ssh: "SSH",
|
|
3842
|
+
"x/receiveEmail": "Receive Email",
|
|
3843
|
+
restApiCall: "REST API Call",
|
|
3844
|
+
"x/fileDelete": "File Delete",
|
|
3845
|
+
"x/fileList": "File List",
|
|
3846
|
+
"x/fileRead": "File Read",
|
|
3847
|
+
"x/fileWrite": "File Write",
|
|
3848
|
+
"x/grpcClient": "gRPC Client",
|
|
3849
|
+
"x/kafkaProducer": "Kafka",
|
|
3850
|
+
"x/mongodbClient": "MongoDB",
|
|
3851
|
+
"x/natsClient": "NATS",
|
|
3852
|
+
"x/nsqClient": "NSQ",
|
|
3853
|
+
"x/opengeminiQuery": "OpenGemini Query",
|
|
3854
|
+
"x/opengeminiWrite": "OpenGemini Write",
|
|
3855
|
+
"x/otel": "OpenTelemetry",
|
|
3856
|
+
"x/pulsarClient": "Pulsar",
|
|
3857
|
+
"x/rabbitmqClient": "RabbitMQ",
|
|
3858
|
+
"x/redisClient": "Redis",
|
|
3859
|
+
"x/redisPub": "Redis Pub",
|
|
3860
|
+
"x/wukongimSender": "WuKong IM",
|
|
3861
|
+
"x/beanstalkdWorker": "Beanstalkd Worker",
|
|
3862
|
+
"x/beanstalkdTube": "Beanstalkd Tube",
|
|
3863
|
+
"x/jsonQuery": "JSON Query",
|
|
3864
|
+
"x/odooCrudCreate": "Odoo Create",
|
|
3865
|
+
"x/odooCrudUpdate": "Odoo Update",
|
|
3866
|
+
"x/soapParse": "SOAP Parse",
|
|
3867
|
+
"x/soapRequest": "SOAP Request",
|
|
3868
|
+
// === flow ===
|
|
3869
|
+
flow: "Sub Rule Chain",
|
|
3870
|
+
// === custom ===
|
|
3871
|
+
simple_admission: "Simple Admission",
|
|
3872
|
+
temperature_conversion: "Temperature Conversion",
|
|
3873
|
+
// === AI ===
|
|
3874
|
+
"ai/llm": "AI LLM",
|
|
3875
|
+
"ai/createImage": "AI Image",
|
|
3876
|
+
"ai/agent": "Agent",
|
|
3877
|
+
"ai/intent": "Intent Recognition",
|
|
3878
|
+
"ai/localIntent": "Local Intent Recognition",
|
|
3879
|
+
"ai/mcpClient": "MCP Client",
|
|
3880
|
+
"ai/transform/documentLoader": "Document Loader",
|
|
3881
|
+
"ai/transform/textChunker": "Text Chunker",
|
|
3882
|
+
"ai/embedding/openai": "OpenAI Embedding",
|
|
3883
|
+
"ai/indexer/milvus": "Milvus Indexer",
|
|
3884
|
+
"ai/indexer/redis": "Redis Indexer",
|
|
3885
|
+
"ai/retriever/milvus": "Milvus Retriever",
|
|
3886
|
+
"ai/retriever/redis": "Redis Retriever",
|
|
3887
|
+
// === CI/CD ===
|
|
3888
|
+
"ci/exec": "Command Line",
|
|
3889
|
+
"ci/gitClone": "Git Clone",
|
|
3890
|
+
"ci/gitCommit": "Git Commit",
|
|
3891
|
+
"ci/gitCreateTag": "Git Create Tag",
|
|
3892
|
+
"ci/gitLog": "Git Log",
|
|
3893
|
+
"ci/gitPush": "Git Push",
|
|
3894
|
+
"ci/ps": "Server Metrics",
|
|
3895
|
+
// === IoT ===
|
|
3896
|
+
"x/opcua": "OPC UA Subscribe",
|
|
3897
|
+
"x/modbus": "Modbus",
|
|
3898
|
+
"x/opcuaRead": "OPC UA Read",
|
|
3899
|
+
"x/opcuaWrite": "OPC UA Write",
|
|
3900
|
+
"x/serialControl": "Serial Control",
|
|
3901
|
+
"x/serialIn": "Serial Input",
|
|
3902
|
+
"x/serialOut": "Serial Output",
|
|
3903
|
+
"x/serialRequest": "Serial Request",
|
|
3904
|
+
"x/bacnetRead": "BACnet Read",
|
|
3905
|
+
"x/bacnetWrite": "BACnet Write",
|
|
3906
|
+
"x/finsRead": "FINS Read",
|
|
3907
|
+
"x/finsWrite": "FINS Write",
|
|
3908
|
+
"x/control/timer": "Control Timer",
|
|
3909
|
+
"x/control/watchdog": "Control Watchdog",
|
|
3910
|
+
"x/dlt645Read": "DLT645 Read",
|
|
3911
|
+
"x/dlt645Write": "DLT645 Write",
|
|
3912
|
+
"x/eipRead": "EtherNet/IP Read",
|
|
3913
|
+
"x/eipWrite": "EtherNet/IP Write",
|
|
3914
|
+
"x/iec104Read": "IEC104 Read",
|
|
3915
|
+
"x/iec104Write": "IEC104 Write",
|
|
3916
|
+
"x/influxdbQuery": "InfluxDB Query",
|
|
3917
|
+
"x/influxdbWrite": "InfluxDB Write",
|
|
3918
|
+
"x/iotRead": "Generic Protocol Read",
|
|
3919
|
+
"x/iotWrite": "Generic Protocol Write",
|
|
3920
|
+
"x/mcRead": "MC Protocol Read",
|
|
3921
|
+
"x/mcWrite": "MC Protocol Write",
|
|
3922
|
+
"x/modbusRead": "Modbus Point Read",
|
|
3923
|
+
"x/modbusWrite": "Modbus Point Write",
|
|
3924
|
+
"x/nacosConfigGet": "Nacos Config Get",
|
|
3925
|
+
"x/nacosConfigSet": "Nacos Config Set",
|
|
3926
|
+
"x/nacosServiceCall": "Nacos Service Call",
|
|
3927
|
+
"x/promremoteWrite": "Prometheus Remote Write",
|
|
3928
|
+
"x/s7Read": "S7 Read",
|
|
3929
|
+
"x/s7Write": "S7 Write",
|
|
3930
|
+
"x/snmpRead": "SNMP Read",
|
|
3931
|
+
"x/snmpWrite": "SNMP Write",
|
|
3932
|
+
"x/tdengineQuery": "TDengine Query",
|
|
3933
|
+
"x/tdengineWrite": "TDengine Write",
|
|
3934
|
+
"x/timescaledbQuery": "TimescaleDB Query",
|
|
3935
|
+
"x/timescaledbWrite": "TimescaleDB Write",
|
|
3936
|
+
"x/tsdbQuery": "Generic TSDB Query",
|
|
3937
|
+
"x/tsdbWrite": "Generic TSDB Write",
|
|
3938
|
+
ws: "WebSocket Send",
|
|
3939
|
+
// === stats ===
|
|
3940
|
+
"x/streamAggregator": "Stream Aggregator",
|
|
3941
|
+
"x/streamTransform": "Stream Transform",
|
|
3942
|
+
// === Endpoint ===
|
|
3943
|
+
"endpoint/http": "HTTP Server",
|
|
3944
|
+
"endpoint/ws": "WebSocket",
|
|
3945
|
+
"endpoint/ws_client": "WebSocket Client",
|
|
3946
|
+
"endpoint/mqtt": "MQTT Subscribe",
|
|
3947
|
+
"endpoint/kafka": "Kafka Consumer",
|
|
3948
|
+
"endpoint/nats": "NATS Subscribe",
|
|
3949
|
+
"endpoint/nsq": "NSQ Consumer",
|
|
3950
|
+
"endpoint/pulsar": "Pulsar Consumer",
|
|
3951
|
+
"endpoint/rabbitmq": "RabbitMQ Consumer",
|
|
3952
|
+
"endpoint/redis": "Redis Subscribe",
|
|
3953
|
+
"endpoint/redis/stream": "Redis Stream",
|
|
3954
|
+
"endpoint/net": "TCP/UDP Server",
|
|
3955
|
+
"endpoint/net_client": "TCP/UDP Client",
|
|
3956
|
+
"endpoint/schedule": "Scheduler",
|
|
3957
|
+
"endpoint/grpc/stream": "gRPC Stream",
|
|
3958
|
+
"endpoint/wukongim": "WuKong IM Receiver",
|
|
3959
|
+
"endpoint/mcpServer": "MCP Server",
|
|
3960
|
+
"endpoint/beanstalkdTubeset": "Beanstalkd",
|
|
3961
|
+
"endpoint/mysql_cdc": "MySQL CDC",
|
|
3962
|
+
"endpoint/opcua": "OPC UA Server",
|
|
3963
|
+
"endpoint/hj212": "HJ212 Receiver",
|
|
3964
|
+
"endpoint/modbusServer": "Modbus Slave",
|
|
3965
|
+
"endpoint/nacos": "Nacos Config Listener",
|
|
3966
|
+
"endpoint/snmp": "SNMP Trap"
|
|
3967
|
+
},
|
|
3968
|
+
/** Field labels for component config forms */
|
|
3969
|
+
fields: {
|
|
3970
|
+
jsScript: "JS Script",
|
|
3971
|
+
script: "Script",
|
|
3972
|
+
expr: "Expression",
|
|
3973
|
+
template: "Template",
|
|
3974
|
+
server: "Server",
|
|
3975
|
+
username: "Username",
|
|
3976
|
+
password: "Password",
|
|
3977
|
+
topic: "Topic",
|
|
3978
|
+
key: "Key",
|
|
3979
|
+
headers: "Headers",
|
|
3980
|
+
host: "Host",
|
|
3981
|
+
port: "Port",
|
|
3982
|
+
cmd: "Command",
|
|
3983
|
+
timeout: "Timeout (sec)",
|
|
3984
|
+
targetId: "Target ID",
|
|
3985
|
+
periodInSeconds: "Period (sec)",
|
|
3986
|
+
maxPendingMsgs: "Max Pending Messages",
|
|
3987
|
+
periodInSecondsPattern: "Period Expression (sec)",
|
|
3988
|
+
functionName: "Function Name",
|
|
3989
|
+
args: "Arguments",
|
|
3990
|
+
targetNodeId: "Target Node ID",
|
|
3991
|
+
range: "Iteration Range",
|
|
3992
|
+
do: "Action",
|
|
3993
|
+
allMatches: "All Must Match",
|
|
3994
|
+
nodeIds: "Node IDs",
|
|
3995
|
+
checkAllKeys: "Check All Keys",
|
|
3996
|
+
dataNames: "Data Field Names",
|
|
3997
|
+
metadataNames: "Metadata Field Names",
|
|
3998
|
+
mapping: "Field Mapping",
|
|
3999
|
+
isNew: "Replace All Metadata",
|
|
4000
|
+
restEndpointUrlPattern: "Endpoint URL",
|
|
4001
|
+
requestMethod: "Method",
|
|
4002
|
+
readTimeoutMs: "Timeout (ms)",
|
|
4003
|
+
maxParallelRequestsCount: "Max Concurrency",
|
|
4004
|
+
enableProxy: "Enable Proxy",
|
|
4005
|
+
proxyScheme: "Proxy Scheme",
|
|
4006
|
+
proxyHost: "Proxy Host",
|
|
4007
|
+
proxyPort: "Proxy Port",
|
|
4008
|
+
driverName: "Driver",
|
|
4009
|
+
dsn: "DSN",
|
|
4010
|
+
sql: "SQL",
|
|
4011
|
+
params: "Parameters",
|
|
4012
|
+
getOne: "Return One Record",
|
|
4013
|
+
poolSize: "Pool Size",
|
|
4014
|
+
protocol: "Protocol",
|
|
4015
|
+
connectTimeout: "Connect Timeout (sec)",
|
|
4016
|
+
heartbeatInterval: "Heartbeat Interval (sec)",
|
|
4017
|
+
maxReconnectInterval: "Max Reconnect Interval (sec)",
|
|
4018
|
+
qOS: "QoS",
|
|
4019
|
+
smtpHost: "SMTP Host",
|
|
4020
|
+
smtpPort: "SMTP Port",
|
|
4021
|
+
fromEmail: "From Email",
|
|
4022
|
+
toEmail: "To Email",
|
|
4023
|
+
ccEmail: "CC Email",
|
|
4024
|
+
bccEmail: "BCC Email",
|
|
4025
|
+
path: "File Path",
|
|
4026
|
+
content: "Content",
|
|
4027
|
+
append: "Append",
|
|
4028
|
+
recursive: "Recursive",
|
|
4029
|
+
dataType: "Data Type",
|
|
4030
|
+
exchange: "Exchange",
|
|
4031
|
+
exchangeType: "Exchange Type",
|
|
4032
|
+
durable: "Durable",
|
|
4033
|
+
autoDelete: "Auto Delete",
|
|
4034
|
+
channel: "Channel",
|
|
4035
|
+
partition: "Partition",
|
|
4036
|
+
database: "Database",
|
|
4037
|
+
collection: "Collection",
|
|
4038
|
+
opType: "Operation Type",
|
|
4039
|
+
filter: "Filter",
|
|
4040
|
+
doc: "Document",
|
|
4041
|
+
one: "Return One",
|
|
4042
|
+
db: "DB Number",
|
|
4043
|
+
service: "Service",
|
|
4044
|
+
method: "Method",
|
|
4045
|
+
request: "Request Body",
|
|
4046
|
+
url: "API URL",
|
|
4047
|
+
model: "Model Name",
|
|
4048
|
+
systemPrompt: "System Prompt",
|
|
4049
|
+
messages: "Messages",
|
|
4050
|
+
images: "Images",
|
|
4051
|
+
prompt: "Prompt",
|
|
4052
|
+
n: "Count",
|
|
4053
|
+
size: "Size",
|
|
4054
|
+
quality: "Quality",
|
|
4055
|
+
style: "Style",
|
|
4056
|
+
response_format: "Response Format",
|
|
4057
|
+
repository: "Repository URL",
|
|
4058
|
+
directory: "Directory",
|
|
4059
|
+
reference: "Branch/Tag",
|
|
4060
|
+
authType: "Auth Type",
|
|
4061
|
+
authUser: "Auth User",
|
|
4062
|
+
authPassword: "Auth Password/Token",
|
|
4063
|
+
pattern: "Pattern",
|
|
4064
|
+
message: "Message",
|
|
4065
|
+
tag: "Tag",
|
|
4066
|
+
limit: "Limit",
|
|
4067
|
+
startTime: "Start Time",
|
|
4068
|
+
endTime: "End Time",
|
|
4069
|
+
refSpecs: "Ref Specs",
|
|
4070
|
+
options: "Options",
|
|
4071
|
+
unitId: "Unit ID",
|
|
4072
|
+
address: "Register Address",
|
|
4073
|
+
quantity: "Register Quantity",
|
|
4074
|
+
value: "Value",
|
|
4075
|
+
regType: "Register Type",
|
|
4076
|
+
policy: "Security Policy",
|
|
4077
|
+
mode: "Security Mode",
|
|
4078
|
+
auth: "Auth",
|
|
4079
|
+
baudRate: "Baud Rate",
|
|
4080
|
+
dataBits: "Data Bits",
|
|
4081
|
+
stopBits: "Stop Bits",
|
|
4082
|
+
parity: "Parity",
|
|
4083
|
+
dtr: "DTR",
|
|
4084
|
+
rts: "RTS",
|
|
4085
|
+
action: "Action",
|
|
4086
|
+
splitType: "Split Type",
|
|
4087
|
+
splitKey: "Split Key",
|
|
4088
|
+
data: "Data",
|
|
4089
|
+
addChar: "Append Char",
|
|
4090
|
+
requestTimeout: "Request Timeout (ms)",
|
|
4091
|
+
metricExpr: "Metric Expression",
|
|
4092
|
+
metrics: "Metrics",
|
|
4093
|
+
extend: "Extend Parent Context",
|
|
4094
|
+
uID: "User ID",
|
|
4095
|
+
token: "Auth Token",
|
|
4096
|
+
channelType: "Channel Type",
|
|
4097
|
+
channelID: "Channel ID"
|
|
4098
|
+
},
|
|
4099
|
+
/** Category names */
|
|
4100
|
+
category: {
|
|
4101
|
+
filter: "Filter",
|
|
4102
|
+
transform: "Transform",
|
|
4103
|
+
action: "Action",
|
|
4104
|
+
external: "External",
|
|
4105
|
+
flow: "Flow",
|
|
4106
|
+
common: "Common",
|
|
4107
|
+
custom: "Custom",
|
|
4108
|
+
ai: "AI",
|
|
4109
|
+
ci: "CI/CD",
|
|
4110
|
+
iot: "IoT",
|
|
4111
|
+
discovery: "Service Discovery",
|
|
4112
|
+
stats: "Stream Computing",
|
|
4113
|
+
endpoint: "Endpoint",
|
|
4114
|
+
endpoints: "Endpoint",
|
|
4115
|
+
storage: "Storage",
|
|
4116
|
+
knowledge: "Knowledge",
|
|
4117
|
+
image: "Image",
|
|
4118
|
+
audio: "Audio",
|
|
4119
|
+
file: "File",
|
|
4120
|
+
other: "Other"
|
|
4121
|
+
},
|
|
4122
|
+
/** Official relation type labels */
|
|
4123
|
+
relationTypes: {
|
|
4124
|
+
Success: "Success",
|
|
4125
|
+
Failure: "Failure",
|
|
4126
|
+
True: "True",
|
|
4127
|
+
False: "False",
|
|
4128
|
+
Default: "Default",
|
|
4129
|
+
Stream: "Stream",
|
|
4130
|
+
NotFound: "Not Found"
|
|
4131
|
+
},
|
|
4132
|
+
/** Validation messages */
|
|
4133
|
+
validation: {
|
|
4134
|
+
orphanNode: 'Node "{{name}}" is orphaned with no connections',
|
|
4135
|
+
startNoConnection: "Start node (Input) has no connections",
|
|
4136
|
+
missingRelationType: "Connection is missing relation type",
|
|
4137
|
+
missingNodeType: 'Node "{{name}}" is missing type definition',
|
|
4138
|
+
cyclicConnection: "Cyclic connection detected",
|
|
4139
|
+
duplicateNodeId: "Duplicate node ID found"
|
|
4140
|
+
},
|
|
4141
|
+
/** Action feedback messages */
|
|
4142
|
+
action: {
|
|
4143
|
+
saveSuccess: "Rule chain saved successfully",
|
|
4144
|
+
saveFailed: "Save failed: {{error}}",
|
|
4145
|
+
deleteSuccess: "Deleted successfully",
|
|
4146
|
+
loadFailed: "Load failed: {{error}}",
|
|
4147
|
+
exportSuccess: "Exported successfully",
|
|
4148
|
+
importSuccess: "Imported successfully",
|
|
4149
|
+
importFailed: "Import failed: invalid data format",
|
|
4150
|
+
undoSuccess: "Undone: {{description}}",
|
|
4151
|
+
redoSuccess: "Redone: {{description}}",
|
|
4152
|
+
noUndoAvailable: "Nothing to undo",
|
|
4153
|
+
noRedoAvailable: "Nothing to redo"
|
|
4154
|
+
}
|
|
4155
|
+
};
|
|
4156
|
+
export {
|
|
4157
|
+
t as a,
|
|
4158
|
+
e as l
|
|
4159
|
+
};
|