codexmate 0.0.41 → 0.0.42
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 +168 -168
- package/README.zh.md +168 -168
- package/cli/agents-files.js +230 -230
- package/cli/analytics-export-args.js +68 -68
- package/cli/archive-helpers.js +453 -453
- package/cli/auth-profiles.js +375 -375
- package/cli/builtin-proxy.js +2144 -2144
- package/cli/claude-proxy.js +1022 -1022
- package/cli/config-bootstrap.js +407 -407
- package/cli/config-health.js +454 -454
- package/cli/doctor-core.js +903 -903
- package/cli/import-skills-url.js +356 -356
- package/cli/local-bridge.js +556 -556
- package/cli/openai-bridge.js +1984 -1984
- package/cli/openclaw-config.js +629 -629
- package/cli/session-convert-args.js +69 -69
- package/cli/session-convert-io.js +82 -82
- package/cli/session-convert.js +150 -150
- package/cli/session-usage.concurrent.js +28 -28
- package/cli/session-usage.js +304 -304
- package/cli/session-usage.models.js +176 -176
- package/cli/skills.js +1141 -1141
- package/cli/update.js +171 -171
- package/cli/zip-commands.js +510 -510
- package/cli.js +16494 -16458
- package/lib/automation.js +404 -404
- package/lib/cli-file-utils.js +151 -151
- package/lib/cli-models-utils.js +440 -440
- package/lib/cli-network-utils.js +190 -190
- package/lib/cli-path-utils.js +85 -85
- package/lib/cli-session-utils.js +121 -121
- package/lib/cli-sessions.js +427 -427
- package/lib/cli-utils.js +155 -155
- package/lib/cli-webhook.js +154 -154
- package/lib/download-artifacts.js +92 -92
- package/lib/mcp-stdio.js +453 -453
- package/lib/task-orchestrator.js +869 -869
- package/lib/text-diff.js +303 -303
- package/lib/win-tray.js +119 -119
- package/lib/workflow-engine.js +340 -340
- package/package.json +77 -77
- package/plugins/README.md +20 -20
- package/plugins/README.zh-CN.md +20 -20
- package/plugins/prompt-templates/comment-polish/index.mjs +25 -25
- package/plugins/prompt-templates/computed.mjs +311 -311
- package/plugins/prompt-templates/index.mjs +8 -8
- package/plugins/prompt-templates/manifest.mjs +18 -18
- package/plugins/prompt-templates/methods.mjs +553 -553
- package/plugins/prompt-templates/overview.mjs +91 -91
- package/plugins/prompt-templates/ownership.mjs +19 -19
- package/plugins/prompt-templates/rule-ack/index.mjs +21 -21
- package/plugins/prompt-templates/storage.mjs +64 -64
- package/plugins/registry.mjs +16 -16
- package/web-ui/app.js +695 -695
- package/web-ui/index.html +37 -37
- package/web-ui/logic.agents-diff.mjs +386 -386
- package/web-ui/logic.claude.mjs +172 -172
- package/web-ui/logic.codex.mjs +69 -69
- package/web-ui/logic.mjs +5 -5
- package/web-ui/logic.runtime.mjs +128 -128
- package/web-ui/logic.session-convert.mjs +70 -70
- package/web-ui/logic.sessions.mjs +782 -782
- package/web-ui/modules/api.mjs +90 -90
- package/web-ui/modules/app.computed.dashboard.mjs +252 -252
- package/web-ui/modules/app.computed.index.mjs +17 -17
- package/web-ui/modules/app.computed.main-tabs.mjs +214 -214
- package/web-ui/modules/app.computed.session.mjs +876 -876
- package/web-ui/modules/app.constants.mjs +15 -15
- package/web-ui/modules/app.methods.agents.mjs +651 -651
- package/web-ui/modules/app.methods.claude-config.mjs +412 -412
- package/web-ui/modules/app.methods.codex-config.mjs +869 -869
- package/web-ui/modules/app.methods.index.mjs +96 -96
- package/web-ui/modules/app.methods.install.mjs +205 -205
- package/web-ui/modules/app.methods.navigation.mjs +804 -804
- package/web-ui/modules/app.methods.openclaw-core.mjs +814 -814
- package/web-ui/modules/app.methods.openclaw-editing.mjs +420 -420
- package/web-ui/modules/app.methods.openclaw-persist.mjs +375 -375
- package/web-ui/modules/app.methods.providers.mjs +601 -601
- package/web-ui/modules/app.methods.runtime.mjs +420 -420
- package/web-ui/modules/app.methods.session-actions.mjs +617 -591
- package/web-ui/modules/app.methods.session-browser.mjs +1018 -1018
- package/web-ui/modules/app.methods.session-timeline.mjs +479 -479
- package/web-ui/modules/app.methods.session-trash.mjs +468 -468
- package/web-ui/modules/app.methods.startup-claude.mjs +554 -554
- package/web-ui/modules/app.methods.task-orchestration.mjs +556 -556
- package/web-ui/modules/app.methods.tool-config-permissions.mjs +87 -87
- package/web-ui/modules/app.methods.webhook.mjs +87 -87
- package/web-ui/modules/config-mode.computed.mjs +124 -124
- package/web-ui/modules/config-template-confirm-pref.mjs +33 -33
- package/web-ui/modules/i18n/locales/en.mjs +1141 -1140
- package/web-ui/modules/i18n/locales/ja.mjs +1132 -1130
- package/web-ui/modules/i18n/locales/vi.mjs +239 -239
- package/web-ui/modules/i18n/locales/zh.mjs +1144 -1143
- package/web-ui/modules/i18n.dict.mjs +14 -14
- package/web-ui/modules/i18n.mjs +111 -111
- package/web-ui/modules/plugins.computed.mjs +3 -3
- package/web-ui/modules/plugins.methods.mjs +3 -3
- package/web-ui/modules/plugins.storage.mjs +11 -11
- package/web-ui/modules/provider-url-display.mjs +17 -17
- package/web-ui/modules/sessions-filters-url.mjs +138 -138
- package/web-ui/modules/skills.computed.mjs +107 -107
- package/web-ui/modules/skills.methods.mjs +513 -513
- package/web-ui/partials/index/layout-footer.html +13 -13
- package/web-ui/partials/index/layout-header.html +478 -478
- package/web-ui/partials/index/modal-config-template-agents.html +185 -185
- package/web-ui/partials/index/modal-confirm-toast.html +32 -32
- package/web-ui/partials/index/modal-health-check.html +45 -45
- package/web-ui/partials/index/modal-openclaw-config.html +344 -344
- package/web-ui/partials/index/modal-skills.html +200 -200
- package/web-ui/partials/index/modal-webhook.html +42 -42
- package/web-ui/partials/index/modals-basic.html +263 -263
- package/web-ui/partials/index/panel-config-claude.html +187 -187
- package/web-ui/partials/index/panel-config-codex.html +205 -205
- package/web-ui/partials/index/panel-config-openclaw.html +89 -89
- package/web-ui/partials/index/panel-dashboard.html +171 -171
- package/web-ui/partials/index/panel-docs.html +114 -114
- package/web-ui/partials/index/panel-market.html +104 -104
- package/web-ui/partials/index/panel-orchestration.html +391 -391
- package/web-ui/partials/index/panel-plugins.html +253 -253
- package/web-ui/partials/index/panel-sessions.html +325 -319
- package/web-ui/partials/index/panel-settings.html +181 -181
- package/web-ui/partials/index/panel-trash.html +82 -82
- package/web-ui/partials/index/panel-usage.html +181 -181
- package/web-ui/res/json5.min.js +1 -1
- package/web-ui/res/vue.global.prod.js +13 -13
- package/web-ui/res/vue.runtime.global.prod.js +7 -7
- package/web-ui/res/web-ui-render.precompiled.js +7671 -7666
- package/web-ui/session-helpers.mjs +602 -602
- package/web-ui/source-bundle.cjs +305 -305
- package/web-ui/styles/base-theme.css +291 -291
- package/web-ui/styles/bridge-pool.css +266 -266
- package/web-ui/styles/controls-forms.css +532 -532
- package/web-ui/styles/dashboard.css +438 -438
- package/web-ui/styles/docs-panel.css +245 -245
- package/web-ui/styles/feedback.css +108 -108
- package/web-ui/styles/health-check-dialog.css +144 -144
- package/web-ui/styles/layout-shell.css +711 -711
- package/web-ui/styles/modals-core.css +499 -499
- package/web-ui/styles/navigation-panels.css +399 -399
- package/web-ui/styles/openclaw-structured.css +616 -616
- package/web-ui/styles/plugins-panel.css +564 -564
- package/web-ui/styles/responsive.css +501 -501
- package/web-ui/styles/sessions-list.css +683 -683
- package/web-ui/styles/sessions-preview.css +407 -407
- package/web-ui/styles/sessions-toolbar-trash.css +518 -518
- package/web-ui/styles/sessions-usage.css +849 -849
- package/web-ui/styles/settings-panel.css +419 -419
- package/web-ui/styles/skills-list.css +305 -305
- package/web-ui/styles/skills-market.css +723 -723
- package/web-ui/styles/task-orchestration.css +822 -822
- package/web-ui/styles/titles-cards.css +486 -486
- package/web-ui/styles/trash-panel.css +90 -90
- package/web-ui/styles/webhook.css +115 -115
- package/web-ui/styles.css +24 -24
- package/web-ui.html +17 -17
|
@@ -1,1143 +1,1144 @@
|
|
|
1
|
-
const zh = Object.freeze({
|
|
2
|
-
// Global
|
|
3
|
-
'lang.zh': '中文',
|
|
4
|
-
'lang.en': 'English',
|
|
5
|
-
'lang.vi': '越南语',
|
|
6
|
-
'lang.label': '语言',
|
|
7
|
-
'nav.topTabs.aria': '导航',
|
|
8
|
-
|
|
9
|
-
// Common
|
|
10
|
-
'common.all': '全部',
|
|
11
|
-
'common.copy': '复制',
|
|
12
|
-
'common.paste': '粘贴',
|
|
13
|
-
'common.edit': '编辑',
|
|
14
|
-
'common.install': '安装',
|
|
15
|
-
'common.update': '升级',
|
|
16
|
-
'common.uninstall': '卸载',
|
|
17
|
-
'common.official': '官方',
|
|
18
|
-
'common.custom': '自定义',
|
|
19
|
-
'common.rules': '规则',
|
|
20
|
-
'common.troubleshooting': '排障提示',
|
|
21
|
-
'common.command': '命令',
|
|
22
|
-
'common.mirror': '镜像源',
|
|
23
|
-
'common.packageManager': '包管理器',
|
|
24
|
-
'common.action': '操作',
|
|
25
|
-
'common.targets': '目标数',
|
|
26
|
-
'common.currentPm': '当前包管理器',
|
|
27
|
-
'common.currentAction': '当前操作',
|
|
28
|
-
'common.mirrorActive': '镜像',
|
|
29
|
-
'common.defaultOfficial': '官方默认',
|
|
30
|
-
'common.cancel': '取消',
|
|
31
|
-
'common.confirm': '确认',
|
|
32
|
-
'common.add': '添加',
|
|
33
|
-
'common.save': '保存',
|
|
34
|
-
'common.saveApply': '保存并应用',
|
|
35
|
-
'common.close': '关闭',
|
|
36
|
-
'common.delete': '删除',
|
|
37
|
-
'common.clear': '清空',
|
|
38
|
-
'common.show': '显示',
|
|
39
|
-
'common.hide': '隐藏',
|
|
40
|
-
'common.detail': '详情',
|
|
41
|
-
'common.refresh': '刷新',
|
|
42
|
-
'common.refreshing': '刷新中...',
|
|
43
|
-
'common.loading': '加载中...',
|
|
44
|
-
'common.saving': '保存中...',
|
|
45
|
-
'common.sending': '发送中...',
|
|
46
|
-
'common.scanning': '扫描中...',
|
|
47
|
-
'common.export': '导出',
|
|
48
|
-
'common.import': '导入',
|
|
49
|
-
'common.apply': '应用',
|
|
50
|
-
'common.applying': '应用中...',
|
|
51
|
-
'common.confirming': '确认中...',
|
|
52
|
-
'common.refreshFromText': '从文本刷新',
|
|
53
|
-
'common.backToEdit': '返回编辑',
|
|
54
|
-
'common.selectAll': '全选',
|
|
55
|
-
'common.unselectAll': '取消全选',
|
|
56
|
-
'common.resetFilters': '重置筛选',
|
|
57
|
-
'common.notEditable': '不可编辑',
|
|
58
|
-
'common.notDeletable': '不可删除',
|
|
59
|
-
'common.notLoaded': '未加载',
|
|
60
|
-
'common.exists': '已存在',
|
|
61
|
-
'common.notExistsWillCreateOnApply': '不存在,将在应用时创建',
|
|
62
|
-
'common.notExistsWillCreateOnSave': '不存在,将在保存时创建',
|
|
63
|
-
'common.none': '暂无',
|
|
64
|
-
'cli.missing.title': '{name} CLI 未安装',
|
|
65
|
-
'cli.missing.subtitle': '请先安装 {name} CLI 后再继续使用此页面。',
|
|
66
|
-
'cli.missing.openDocs': '打开安装指南',
|
|
67
|
-
'cli.missing.commandAria': '{name} CLI 安装命令',
|
|
68
|
-
|
|
69
|
-
// Brand
|
|
70
|
-
'brand.kicker.workspace': '工作区',
|
|
71
|
-
'brand.subtitle.localConfigSessionsWorkspace': '本地配置与会话工作区',
|
|
72
|
-
|
|
73
|
-
// Confirm dialog
|
|
74
|
-
'confirm.aria': '确认操作',
|
|
75
|
-
'confirm.title.default': '请确认操作',
|
|
76
|
-
'confirm.ok': '确认',
|
|
77
|
-
'confirm.cancel': '取消',
|
|
78
|
-
|
|
79
|
-
// Shared fields
|
|
80
|
-
'field.name': '名称',
|
|
81
|
-
'field.configName': '配置名称',
|
|
82
|
-
'field.apiEndpoint': 'API 端点',
|
|
83
|
-
'field.apiKey': '认证密钥',
|
|
84
|
-
'field.baseUrl': 'Base URL',
|
|
85
|
-
'field.provider': '提供商',
|
|
86
|
-
'field.providerName': 'Provider 名称',
|
|
87
|
-
'field.modelName': '模型名称',
|
|
88
|
-
'field.model': '模型',
|
|
89
|
-
'field.message': '消息',
|
|
90
|
-
'field.varName': '变量名',
|
|
91
|
-
'field.targetFile': '目标文件',
|
|
92
|
-
'field.modelId': '模型 ID',
|
|
93
|
-
'field.displayName': '展示名称',
|
|
94
|
-
'field.contextAndMaxOutput': '上下文与最大输出',
|
|
95
|
-
'field.apiType': 'API 类型',
|
|
96
|
-
'field.env': '环境变量',
|
|
97
|
-
'field.allow': 'Allow',
|
|
98
|
-
'field.deny': 'Deny',
|
|
99
|
-
|
|
100
|
-
// Shared placeholders/hints
|
|
101
|
-
'placeholder.providerNameExample': '例如: myapi',
|
|
102
|
-
'placeholder.apiEndpointExample': 'https://api.example.com/v1',
|
|
103
|
-
'placeholder.providerName': '提供商名称',
|
|
104
|
-
'placeholder.keepUnchanged': '留空则保持不变',
|
|
105
|
-
'hint.keepKeyUnchanged': '留空表示不修改密钥',
|
|
106
|
-
'placeholder.modelExample': '例如: gpt-5',
|
|
107
|
-
'placeholder.configNameExample': '例如: 智谱GLM',
|
|
108
|
-
'placeholder.apiKeyExampleClaude': 'sk-ant-...',
|
|
109
|
-
'placeholder.baseUrlExampleClaude': 'https://open.bigmodel.cn/api/anthropic',
|
|
110
|
-
'placeholder.selectProvider': '请选择提供商',
|
|
111
|
-
|
|
112
|
-
// Roles / labels
|
|
113
|
-
'role.you': '你',
|
|
114
|
-
'role.provider': '提供商',
|
|
115
|
-
'label.model': '模型:',
|
|
116
|
-
|
|
117
|
-
// Top tabs
|
|
118
|
-
'tab.dashboard': '概览',
|
|
119
|
-
'tab.docs': '文档',
|
|
120
|
-
'tab.config': '配置',
|
|
121
|
-
'tab.config.codex': 'Codex',
|
|
122
|
-
'tab.config.claude': 'Claude',
|
|
123
|
-
'tab.config.openclaw': 'OpenClaw',
|
|
124
|
-
'tab.sessions': '会话',
|
|
125
|
-
'tab.usage': '用量',
|
|
126
|
-
'tab.orchestration': '任务',
|
|
127
|
-
'tab.market': 'Skills',
|
|
128
|
-
'tab.plugins': '插件',
|
|
129
|
-
'tab.settings': '设置',
|
|
130
|
-
|
|
131
|
-
// Side rail section titles
|
|
132
|
-
'side.overview': '概览',
|
|
133
|
-
'side.docs': '文档',
|
|
134
|
-
'side.config': '配置',
|
|
135
|
-
'side.sessions': '会话',
|
|
136
|
-
'side.plugins': '插件',
|
|
137
|
-
'side.system': '系统',
|
|
138
|
-
'side.orchestration': '任务',
|
|
139
|
-
'side.skills': 'Skills',
|
|
140
|
-
|
|
141
|
-
// Side rail items
|
|
142
|
-
'side.overview.doctor': 'Doctor 面板',
|
|
143
|
-
'side.overview.doctor.meta': '总览 / 诊断 / 跳转',
|
|
144
|
-
'side.docs.cliInstall': 'CLI 安装',
|
|
145
|
-
'side.docs.cliInstall.meta': '安装 / 升级 / 卸载',
|
|
146
|
-
'side.config.codex': 'Codex',
|
|
147
|
-
'side.config.codex.meta': 'Provider / Model',
|
|
148
|
-
'side.config.claude': 'Claude Code',
|
|
149
|
-
'side.config.claude.meta': 'Claude Settings',
|
|
150
|
-
'side.config.openclaw': 'OpenClaw',
|
|
151
|
-
'side.config.openclaw.meta': 'JSON5 / AGENTS',
|
|
152
|
-
'side.sessions.browser': '会话浏览',
|
|
153
|
-
'side.sessions.browser.meta': '浏览 / 导出 / 清理',
|
|
154
|
-
'side.plugins.tools': '提示词工具',
|
|
155
|
-
'side.plugins.tools.meta': '模板 / 变量',
|
|
156
|
-
'side.plugins.templatesCount': '{count} 个模板',
|
|
157
|
-
'side.system.settings': '运行设置',
|
|
158
|
-
'side.system.settings.meta': '数据 / 备份',
|
|
159
|
-
'side.newTab': '新建标签页',
|
|
160
|
-
|
|
161
|
-
// Header titles
|
|
162
|
-
'kicker.dashboard': 'Doctor',
|
|
163
|
-
'kicker.config': 'Configuration',
|
|
164
|
-
'kicker.sessions': 'Sessions',
|
|
165
|
-
'kicker.usage': 'Usage',
|
|
166
|
-
'kicker.orchestration': 'Tasks',
|
|
167
|
-
'kicker.market': 'Skills',
|
|
168
|
-
'kicker.plugins': 'Plugins',
|
|
169
|
-
'kicker.docs': 'Docs',
|
|
170
|
-
'kicker.trash': '回收站',
|
|
171
|
-
'kicker.settings': 'Settings',
|
|
172
|
-
|
|
173
|
-
'title.dashboard': 'Dashboard / Doctor',
|
|
174
|
-
'title.config': '本地配置控制台',
|
|
175
|
-
'title.sessions': '会话与导出',
|
|
176
|
-
'title.usage': '本地用量与趋势',
|
|
177
|
-
'title.orchestration': '任务编排',
|
|
178
|
-
'title.market': 'Skills 安装与同步',
|
|
179
|
-
'title.plugins': '插件与模板',
|
|
180
|
-
'title.docs': 'CLI 安装与文档',
|
|
181
|
-
'title.settings': '系统与数据设置',
|
|
182
|
-
|
|
183
|
-
'subtitle.dashboard': '聚合状态与诊断入口。',
|
|
184
|
-
'subtitle.config': '管理本地配置与模型。',
|
|
185
|
-
'subtitle.sessions': '浏览与导出会话。',
|
|
186
|
-
'subtitle.usage': '查看近 7 / 30 天用量。',
|
|
187
|
-
'subtitle.orchestration': '规划、排队、执行与回看本地任务。',
|
|
188
|
-
'subtitle.market': '管理本地 Skills。',
|
|
189
|
-
'subtitle.plugins': '管理模板化 prompt 与可复用插件。',
|
|
190
|
-
'subtitle.docs': '查看 CLI 安装命令与排障。',
|
|
191
|
-
'subtitle.settings': '管理下载、目录与回收站。',
|
|
192
|
-
'dashboard.doctor.title': 'Doctor',
|
|
193
|
-
'dashboard.doctor.runChecks': '运行检查',
|
|
194
|
-
'dashboard.doctor.checking': '检查中...',
|
|
195
|
-
'dashboard.doctor.export': '导出报告',
|
|
196
|
-
'dashboard.doctor.export.json': '导出 JSON',
|
|
197
|
-
'dashboard.doctor.export.md': '导出 Markdown',
|
|
198
|
-
'dashboard.doctor.open': '打开',
|
|
199
|
-
'doctor.action.openConfig': '打开 Config',
|
|
200
|
-
'doctor.action.checkProvider': '检查 Provider 配置',
|
|
201
|
-
'doctor.action.openUsage': '打开 Usage',
|
|
202
|
-
'doctor.action.openSessions': '打开 Sessions',
|
|
203
|
-
'doctor.action.openTasks': '打开 Tasks',
|
|
204
|
-
'doctor.action.viewTaskLogs': '查看 Tasks / Logs',
|
|
205
|
-
'doctor.action.openSkills': '打开 Skills',
|
|
206
|
-
'doctor.issue.configNotReady.problem': '配置文件未就绪',
|
|
207
|
-
'doctor.issue.configNotReady.impact': '可能导致 provider/model 无法读取,模型列表与请求将不可用。',
|
|
208
|
-
'doctor.issue.providerUnreachable.problem.remote-model-probe-unreachable': 'Provider 不可达',
|
|
209
|
-
'doctor.issue.providerUnreachable.problem.remote-model-probe-auth-failed': 'Provider 鉴权失败',
|
|
210
|
-
'doctor.issue.providerUnreachable.problem.remote-model-probe-not-found': 'Provider 返回 404',
|
|
211
|
-
'doctor.issue.providerUnreachable.problem.remote-model-probe-http-error': 'Provider 返回 HTTP 错误',
|
|
212
|
-
'doctor.issue.providerUnreachable.problem.remote-model-probe-error': 'Provider 探测失败',
|
|
213
|
-
'doctor.issue.providerUnreachable.problem.unknown': 'Provider 不可用',
|
|
214
|
-
'doctor.issue.providerUnreachable.impactAuth': '鉴权失败会导致模型列表/对话请求返回 401/403。',
|
|
215
|
-
'doctor.issue.providerUnreachable.impactNetwork': '远端不可达会导致模型列表/对话请求失败或超时。',
|
|
216
|
-
'doctor.issue.configHealthFailed.problem': '配置健康检查未通过',
|
|
217
|
-
'doctor.issue.configHealthFailed.impact': '可能导致部分功能不可用或行为不符合预期。',
|
|
218
|
-
'doctor.issue.usageError.problem': 'Usage 统计异常',
|
|
219
|
-
'doctor.issue.usageError.impact': 'Usage 页面可能无法展示趋势/汇总,Doctor 的用量诊断也会缺失。',
|
|
220
|
-
'doctor.issue.usageMissingModel.problem': '部分会话缺少模型信息',
|
|
221
|
-
'doctor.issue.usageMissingModel.impact': '会导致用量归因与成本估算不准确。',
|
|
222
|
-
'doctor.issue.tasksError.problem': 'Tasks 状态读取失败',
|
|
223
|
-
'doctor.issue.tasksError.impact': '可能导致编排队列/运行记录无法展示。',
|
|
224
|
-
'doctor.issue.tasksFailed.problem': '存在失败的任务运行',
|
|
225
|
-
'doctor.issue.tasksFailed.impact': '可能导致自动化流水线中断,需要查看日志并重试或修复输入。',
|
|
226
|
-
'doctor.issue.skillsError.problem': 'Skills 列表读取失败',
|
|
227
|
-
'doctor.issue.skillsError.impact': '会导致 Skills 页面无法正常展示或安装。',
|
|
228
|
-
'doctor.issue.skillsRootMissing.problem': 'Skills 目录不存在',
|
|
229
|
-
'doctor.issue.skillsRootMissing.impact': '会导致 Skills 安装/扫描为空;可在 Settings/Docs 按指引初始化目录。',
|
|
230
|
-
'doctor.issue.skillsMissingFiles.problem': '存在缺失 skill.json 的技能',
|
|
231
|
-
'doctor.issue.skillsMissingFiles.impact': '会导致部分技能无法被运行或同步。',
|
|
232
|
-
'dashboard.card.config': '配置',
|
|
233
|
-
'dashboard.card.sessions': '会话',
|
|
234
|
-
'dashboard.card.usage': '用量',
|
|
235
|
-
'dashboard.card.tasks': '任务',
|
|
236
|
-
'dashboard.card.skills': 'Skills',
|
|
237
|
-
'dashboard.kv.model': '模型',
|
|
238
|
-
'dashboard.kv.issue': '异常',
|
|
239
|
-
'dashboard.kv.active': '当前',
|
|
240
|
-
'dashboard.kv.sessions': '会话数',
|
|
241
|
-
'dashboard.kv.missingModel': '缺失模型',
|
|
242
|
-
'dashboard.kv.blockers': '阻塞',
|
|
243
|
-
'dashboard.kv.runs': '运行',
|
|
244
|
-
'dashboard.kv.target': '目标',
|
|
245
|
-
'dashboard.kv.root': '目录',
|
|
246
|
-
'dashboard.status.health': '健康',
|
|
247
|
-
'dashboard.status.busy': '忙闲',
|
|
248
|
-
'dashboard.status.models': '模型',
|
|
249
|
-
'dashboard.busy.init': '初始化',
|
|
250
|
-
'dashboard.busy.sessions': '会话加载',
|
|
251
|
-
'dashboard.busy.models': '模型加载',
|
|
252
|
-
'dashboard.busy.configApply': '配置应用',
|
|
253
|
-
'dashboard.busy.agents': 'AGENTS 保存',
|
|
254
|
-
'dashboard.busy.skills': 'Skills 管理',
|
|
255
|
-
'dashboard.busy.tasks': '任务编排',
|
|
256
|
-
'dashboard.busy.idle': '空闲',
|
|
257
|
-
'dashboard.message.none': '暂无提示',
|
|
258
|
-
'dashboard.sessionSource.codex': 'Codex',
|
|
259
|
-
'dashboard.sessionSource.claude': 'Claude Code',
|
|
260
|
-
'dashboard.sessionSource.gemini': 'Gemini CLI',
|
|
261
|
-
'dashboard.sessionSource.codebuddy': 'CodeBuddy Code',
|
|
262
|
-
'dashboard.sessionSource.all': '全部',
|
|
263
|
-
'dashboard.sessionPath.all': '全部路径',
|
|
264
|
-
'dashboard.sessionQuery.unsupported': '当前来源不支持',
|
|
265
|
-
'dashboard.sessionQuery.unset': '未设置',
|
|
266
|
-
'dashboard.healthStatus.failRead': '读取失败',
|
|
267
|
-
'dashboard.healthStatus.initializing': '初始化中',
|
|
268
|
-
'dashboard.healthStatus.ok': '正常',
|
|
269
|
-
'dashboard.modelStatus.loading': '加载中',
|
|
270
|
-
'dashboard.modelStatus.error': '加载异常',
|
|
271
|
-
'dashboard.modelStatus.ok': '正常',
|
|
272
|
-
'dashboard.health.ok': '检查通过',
|
|
273
|
-
'dashboard.health.fail': '检查失败',
|
|
274
|
-
'dashboard.health.issues': '{count} 条问题',
|
|
275
|
-
'dashboard.issues.title': '发现 {count} 条可操作问题',
|
|
276
|
-
'dashboard.state.loading': '加载中',
|
|
277
|
-
'dashboard.state.ready': '就绪',
|
|
278
|
-
'dashboard.state.idle': '未加载',
|
|
279
|
-
'dashboard.none': '无',
|
|
280
|
-
'dashboard.sessions.count': '{count} 条会话',
|
|
281
|
-
'dashboard.usage.range': '范围 {value}',
|
|
282
|
-
'dashboard.tasks.queue': 'run {running} / queue {queued}',
|
|
283
|
-
'dashboard.skills.count': 'installed {installed} / import {importable}',
|
|
284
|
-
'dashboard.providersHealth.title': 'Provider 健康状态',
|
|
285
|
-
'dashboard.providersHealth.current': '(当前)',
|
|
286
|
-
'dashboard.providersHealth.checking': '检查中...',
|
|
287
|
-
'dashboard.providersHealth.allOk': '所有 Provider 正常',
|
|
288
|
-
'dashboard.providersHealth.hasIssues': '{count} 个 Provider 存在问题',
|
|
289
|
-
|
|
290
|
-
// Plugins panel
|
|
291
|
-
'plugins.sidebar.title': 'Plugins',
|
|
292
|
-
'plugins.sidebar.note': '可复用的标准化工具。未来自定义插件应遵循相同结构。',
|
|
293
|
-
'plugins.sidebar.ariaList': '插件列表',
|
|
294
|
-
'plugins.catalog.promptTemplates.title': '提示词模板',
|
|
295
|
-
'plugins.catalog.promptTemplates.description': '标准化、模板驱动的提示词工具,支持变量、复制与导出。',
|
|
296
|
-
'plugins.status.standard': '标准',
|
|
297
|
-
'plugins.main.ariaWorkspace': '插件工作区',
|
|
298
|
-
'plugins.refresh': '刷新',
|
|
299
|
-
'plugins.refreshing': '刷新中...',
|
|
300
|
-
'plugins.promptTemplates.title': '提示词模板',
|
|
301
|
-
'plugins.promptTemplates.subtitle': '内置:代码注释润色({{code}})。复制后直接粘贴到输入框即可。',
|
|
302
|
-
'plugins.promptTemplates.mode.aria': '提示词模板模式',
|
|
303
|
-
'plugins.promptTemplates.mode.compose': '生成',
|
|
304
|
-
'plugins.promptTemplates.mode.manage': '管理',
|
|
305
|
-
'plugins.promptTemplates.compose.selectTemplate': '选择模板',
|
|
306
|
-
'plugins.promptTemplates.compose.chooseTemplate': '选择模板',
|
|
307
|
-
'plugins.promptTemplates.compose.chooseTemplateHint': '请选择一个模板开始生成。',
|
|
308
|
-
'plugins.promptTemplates.compose.builtinSuffix': '(内置)',
|
|
309
|
-
'plugins.promptTemplates.compose.empty': '暂无可用模板。',
|
|
310
|
-
'plugins.promptTemplates.compose.varsHint': '变量填写与新增请在「管理」中进行。',
|
|
311
|
-
'plugins.promptTemplates.compose.missingCount': '未填 {count} 项',
|
|
312
|
-
'plugins.promptTemplates.compose.jumpToMissing': '跳到未填',
|
|
313
|
-
'plugins.promptTemplates.compose.goManage': '去管理填写变量',
|
|
314
|
-
'plugins.promptTemplates.compose.outputTitle': '生成结果',
|
|
315
|
-
'plugins.promptTemplates.compose.outputHint': '点“复制”后直接粘贴到 Codex/Claude 输入框。',
|
|
316
|
-
'plugins.promptTemplates.compose.outputAria': '生成结果(提示词)',
|
|
317
|
-
'plugins.promptTemplates.compose.copy': '复制',
|
|
318
|
-
'plugins.promptTemplates.manage.searchAria': '搜索模板',
|
|
319
|
-
'plugins.promptTemplates.manage.searchPlaceholder': '搜索模板',
|
|
320
|
-
'plugins.promptTemplates.manage.create': '新建',
|
|
321
|
-
'plugins.promptTemplates.manage.export': '导出',
|
|
322
|
-
'plugins.promptTemplates.manage.import': '导入',
|
|
323
|
-
'plugins.promptTemplates.manage.loading': '正在加载模板...',
|
|
324
|
-
'plugins.promptTemplates.manage.empty': '暂无模板。',
|
|
325
|
-
'plugins.promptTemplates.manage.vars': '{count} vars',
|
|
326
|
-
'plugins.promptTemplates.manage.builtin': 'built-in',
|
|
327
|
-
'plugins.promptTemplates.manage.custom': 'custom',
|
|
328
|
-
'plugins.promptTemplates.manage.newTemplateName': '新模板',
|
|
329
|
-
'plugins.promptTemplates.editor.selectHint': '请选择一个模板进行编辑。',
|
|
330
|
-
'plugins.promptTemplates.editor.namePlaceholder': '模板名称',
|
|
331
|
-
'plugins.promptTemplates.editor.nameAria': '模板名称',
|
|
332
|
-
'plugins.promptTemplates.editor.duplicate': '复制',
|
|
333
|
-
'plugins.promptTemplates.editor.delete': '删除',
|
|
334
|
-
'plugins.promptTemplates.editor.save': '保存',
|
|
335
|
-
'plugins.promptTemplates.editor.builtinReadOnly': '内置模板为只读,不支持编辑/保存/删除/复制。',
|
|
336
|
-
'plugins.promptTemplates.editor.descPlaceholder': '描述(可选)',
|
|
337
|
-
'plugins.promptTemplates.editor.descAria': '模板描述',
|
|
338
|
-
'plugins.promptTemplates.editor.templateLabel': '模板',
|
|
339
|
-
'plugins.promptTemplates.editor.templateAria': '模板内容',
|
|
340
|
-
'plugins.promptTemplates.editor.templatePlaceholder': '在这里编写模板。使用 {{var}} 占位符。',
|
|
341
|
-
'plugins.promptTemplates.vars.title': '变量',
|
|
342
|
-
'plugins.promptTemplates.vars.hint': '从模板中检测。填写后可渲染最终提示词。',
|
|
343
|
-
'plugins.promptTemplates.vars.reset': '重置',
|
|
344
|
-
'plugins.promptTemplates.vars.empty': '未检测到变量。',
|
|
345
|
-
'plugins.promptTemplates.vars.valuePlaceholder': '变量值:{name}',
|
|
346
|
-
'plugins.promptTemplates.preview.title': '预览',
|
|
347
|
-
'plugins.promptTemplates.preview.hint': '渲染结果(缺失变量会替换为空)。',
|
|
348
|
-
'plugins.promptTemplates.preview.copy': '复制',
|
|
349
|
-
'plugins.promptTemplates.preview.outputAria': '渲染结果(提示词)',
|
|
350
|
-
'plugins.promptTemplates.noPluginSelected': '请先从左侧选择一个插件。',
|
|
351
|
-
|
|
352
|
-
'plugins.meta.attribution': '创建者:{createdBy} · 维护者:{maintainers}',
|
|
353
|
-
'plugins.meta.createdBy': '创建者:{createdBy}',
|
|
354
|
-
'plugins.meta.maintainedBy': '维护者:{maintainers}',
|
|
355
|
-
|
|
356
|
-
// Built-in prompt templates
|
|
357
|
-
'plugins.builtin.commentPolish.name': '代码注释润色',
|
|
358
|
-
'plugins.builtin.commentPolish.desc': '轻微收敛以下代码注释 {{code}}',
|
|
359
|
-
'plugins.builtin.commentPolish.line1': '轻微收敛以下代码注释',
|
|
360
|
-
'plugins.builtin.ruleAck.name': '规则确认回复',
|
|
361
|
-
'plugins.builtin.ruleAck.desc': '请根据【{{rule}}】,收到请回复',
|
|
362
|
-
'plugins.builtin.ruleAck.line1': '请根据【{{rule}}】,收到请回复',
|
|
363
|
-
|
|
364
|
-
// Toasts
|
|
365
|
-
'toast.copy.empty': '没有可复制内容',
|
|
366
|
-
'toast.copy.ok': '已复制',
|
|
367
|
-
'toast.copy.fail': '复制失败',
|
|
368
|
-
'toast.save.ok': '已保存',
|
|
369
|
-
'toast.save.fail': '保存失败',
|
|
370
|
-
'toast.delete.ok': '已删除',
|
|
371
|
-
'toast.delete.fail': '删除失败',
|
|
372
|
-
'toast.export.empty': '没有可导出内容',
|
|
373
|
-
'toast.export.ok': '已导出',
|
|
374
|
-
'toast.export.fail': '导出失败',
|
|
375
|
-
'toast.import.ok': '导入成功',
|
|
376
|
-
'toast.import.fail': '导入失败',
|
|
377
|
-
'toast.import.notAvailable': '导入不可用',
|
|
378
|
-
'toast.import.readFileFail': '读取文件失败',
|
|
379
|
-
'toast.import.invalidJson': 'JSON 无效',
|
|
380
|
-
'toast.import.expectedArray': 'JSON 必须为数组',
|
|
381
|
-
'toast.export.notSupported': '当前不支持导出',
|
|
382
|
-
'toast.plugins.loadFail': '加载 Plugins 失败',
|
|
383
|
-
'toast.templates.builtinNotEditable': '内置模板不可编辑',
|
|
384
|
-
'toast.templates.builtinNotModifiable': '内置模板不可修改,请先复制再编辑',
|
|
385
|
-
'toast.templates.nameRequired': '模板名称不能为空',
|
|
386
|
-
'toast.templates.builtinNotDuplicable': '内置模板不可复制',
|
|
387
|
-
'toast.templates.builtinNotDeletable': '内置模板不可删除',
|
|
388
|
-
'toast.templates.deleteTitle': '删除模板',
|
|
389
|
-
'toast.templates.deleteMessage': '删除“{name}”?此操作无法撤销。',
|
|
390
|
-
'toast.templates.deleteConfirm': '删除',
|
|
391
|
-
'toast.templates.deleteCancel': '取消',
|
|
392
|
-
|
|
393
|
-
// Basic modals
|
|
394
|
-
'modal.providerAdd.title': '添加提供商',
|
|
395
|
-
'modal.providerEdit.title': '编辑提供商',
|
|
396
|
-
'modal.modelAdd.title': '添加模型',
|
|
397
|
-
'modal.modelManage.title': '管理模型',
|
|
398
|
-
'modal.claudeConfigAdd.title': '添加 Claude Code 配置',
|
|
399
|
-
'modal.claudeConfigEdit.title': '编辑 Claude Code 配置',
|
|
400
|
-
'field.useBuiltinTransform': '使用内建转换(兼容 OpenAI 格式)',
|
|
401
|
-
'hint.useBuiltinTransform': '开启后:写入的 base_url 会指向 codexmate 内建转换服务;Codex 使用的令牌固定为 codexmate。',
|
|
402
|
-
|
|
403
|
-
// Config template / agents modals
|
|
404
|
-
'modal.configTemplate.label': 'config.toml 模板',
|
|
405
|
-
'modal.configTemplate.mode.twoStep': '两步确认:先预览差异,再应用写入。',
|
|
406
|
-
'modal.configTemplate.mode.oneStep': '一步应用:点击“应用”直接写入。',
|
|
407
|
-
'diff.title.configTemplate': '差异预览(config.toml)',
|
|
408
|
-
'diff.generating': '生成中...',
|
|
409
|
-
'diff.failed': '生成失败',
|
|
410
|
-
'diff.noChanges': '未检测到改动',
|
|
411
|
-
'diff.hint.busy': '正在生成差异或应用中,操作暂不可用。',
|
|
412
|
-
'diff.hint.failedBack': '差异预览失败,请返回编辑后重试。',
|
|
413
|
-
'diff.hint.noChangesBack': '未检测到改动,可返回编辑继续修改或取消退出。',
|
|
414
|
-
'diff.hint.previewMode': '当前为预览模式,可点击“应用”写入或“返回编辑”继续修改。',
|
|
415
|
-
|
|
416
|
-
'modal.agents.export': '导出',
|
|
417
|
-
'modal.agents.copy': '复制',
|
|
418
|
-
'modal.agents.title': 'AGENTS.md 编辑器',
|
|
419
|
-
'modal.agents.hint': '保存后会写入目标 AGENTS.md(与 config.toml 同级)。',
|
|
420
|
-
'modal.agents.targetFile': '目标文件',
|
|
421
|
-
'modal.agents.contentLabel': 'AGENTS.md 内容',
|
|
422
|
-
'modal.agents.placeholder': '在这里编辑 AGENTS.md 内容',
|
|
423
|
-
'modal.agents.unsaved.previewModeHint': '预览模式:当前改动尚未保存,只有点击“应用”后才会写入文件。',
|
|
424
|
-
'modal.agents.unsaved.detectedHint': '检测到未保存改动:关闭页面或应用前请先保存。',
|
|
425
|
-
'modal.agents.hint.shortcuts': '快捷键:Esc(差异预览时返回编辑,编辑时关闭窗口)。',
|
|
426
|
-
'modal.agents.hint.twoStepSave': '保存需两步:先点击“确认”预览差异,再点击“应用”保存。',
|
|
427
|
-
'diff.tooLargeSkip': '内容过大,已跳过逐行差异预览',
|
|
428
|
-
'diff.viewHint.preview': '当前为预览模式,可点击“应用”保存或“返回编辑”继续修改。',
|
|
429
|
-
'diff.viewHint.truncated': '内容过大,已跳过预览,可点击“应用”保存或“返回编辑”继续修改。',
|
|
430
|
-
|
|
431
|
-
// Skills modal
|
|
432
|
-
'modal.skills.title': 'Skills 管理',
|
|
433
|
-
'modal.skills.subtitle': '管理当前宿主的本地 Skills。',
|
|
434
|
-
'modal.skills.target.aria': '选择 Skills 管理目标',
|
|
435
|
-
'modal.skills.rootDir': 'Skills 目录({label})',
|
|
436
|
-
'modal.skills.summary.target': '安装目标',
|
|
437
|
-
'modal.skills.summary.total': '本地总数',
|
|
438
|
-
'modal.skills.summary.withSkill': '含 SKILL.md',
|
|
439
|
-
'modal.skills.summary.missingSkill': '缺少 SKILL.md',
|
|
440
|
-
'modal.skills.summary.importable': '可导入',
|
|
441
|
-
'modal.skills.panel.aria': 'Skills 管理面板',
|
|
442
|
-
'modal.skills.local.title': '本地 Skills',
|
|
443
|
-
'modal.skills.local.note': '可检索、筛选与批量删除。',
|
|
444
|
-
'modal.skills.filter.keywordAria': '按名称或描述筛选 skill',
|
|
445
|
-
'modal.skills.filter.keywordPlaceholder': '按目录名/显示名/描述检索',
|
|
446
|
-
'modal.skills.filter.statusAria': '按 SKILL.md 状态筛选 skill',
|
|
447
|
-
'modal.skills.filter.status.all': '全部状态',
|
|
448
|
-
'modal.skills.filter.status.withSkill': '仅含 SKILL.md',
|
|
449
|
-
'modal.skills.filter.status.missingSkill': '仅缺少 SKILL.md',
|
|
450
|
-
'modal.skills.selection.stats': '已选 {selected}(筛选命中 {filtered} / {total},筛选内已选 {visibleSelected})',
|
|
451
|
-
'modal.skills.empty.local': '暂无可管理的 skill。',
|
|
452
|
-
'modal.skills.empty.filtered': '当前筛选条件下没有匹配的 skill。',
|
|
453
|
-
'modal.skills.pill.hasSkillFile': '含 SKILL.md',
|
|
454
|
-
'modal.skills.pill.missingSkillFile': '缺少 SKILL.md',
|
|
455
|
-
'modal.skills.pill.symlink': '符号链接',
|
|
456
|
-
'modal.skills.pill.dir': '目录',
|
|
457
|
-
'modal.skills.import.title': '跨应用导入',
|
|
458
|
-
'modal.skills.import.note': '扫描并导入到当前 {label}。',
|
|
459
|
-
'modal.skills.import.scan': '扫描可导入',
|
|
460
|
-
'modal.skills.import.stats': '已选 {selected} / {total},含 SKILL.md {configured},缺失 {missing}',
|
|
461
|
-
'modal.skills.import.emptyHint': '暂无可导入 skill,点击“扫描可导入”。',
|
|
462
|
-
'modal.skills.bulk.title': '批量操作',
|
|
463
|
-
'modal.skills.bulk.note': '右侧为导入操作,左侧为本地选择。',
|
|
464
|
-
'modal.skills.actions.zipImport': '导入 ZIP',
|
|
465
|
-
'modal.skills.actions.zipImporting': 'ZIP 导入中...',
|
|
466
|
-
'modal.skills.actions.exportSelected': '导出选中',
|
|
467
|
-
'modal.skills.actions.exporting': '导出中...',
|
|
468
|
-
'modal.skills.actions.importSelected': '导入选中',
|
|
469
|
-
'modal.skills.actions.importing': '导入中...',
|
|
470
|
-
'modal.skills.actions.deleteSelected': '删除选中',
|
|
471
|
-
'modal.skills.actions.deleting': '删除中...',
|
|
472
|
-
|
|
473
|
-
// OpenClaw config modal (quick)
|
|
474
|
-
'placeholder.openclawConfigNameExample': '例如: 默认配置',
|
|
475
|
-
'modal.openclaw.loadCurrent': '加载当前配置',
|
|
476
|
-
'modal.openclaw.quick.title': '新手快速配置',
|
|
477
|
-
'modal.openclaw.quick.readFromEditor': '从编辑器读取',
|
|
478
|
-
'modal.openclaw.quick.step1': '填写 Provider 与模型',
|
|
479
|
-
'modal.openclaw.quick.step3': '保存并应用',
|
|
480
|
-
'modal.openclaw.quick.providerHint': '会拼成 provider/model 作为主模型标识。',
|
|
481
|
-
'modal.openclaw.quick.baseUrlHintDefault': '已按 OpenClaw 内建 provider 默认值回填,可直接修改。',
|
|
482
|
-
'modal.openclaw.quick.baseUrlHintReadonly': '检测到外部引用,快速表单中只读显示;如需修改请使用原文编辑。',
|
|
483
|
-
'modal.openclaw.quick.apiKeyHintFromAuth': '当前值来自 OpenClaw 外部认证配置;修改后在“保存并应用”时会回写对应 auth profile。',
|
|
484
|
-
'modal.openclaw.quick.apiKeyHintReadonly': '检测到外部认证或引用,快速表单中只读显示;如需修改请使用原文编辑或对应认证配置。',
|
|
485
|
-
'modal.openclaw.quick.apiKeyHintKeep': '留空表示不覆盖现有 key。',
|
|
486
|
-
'placeholder.apiTypeExample': '例如: openai-responses',
|
|
487
|
-
'modal.openclaw.quick.modelTitle': '模型',
|
|
488
|
-
'placeholder.modelIdExample': '例如: gpt-4.1',
|
|
489
|
-
'placeholder.modelNameOptional': '留空则使用模型 ID',
|
|
490
|
-
'field.contextWindow': '上下文长度',
|
|
491
|
-
'field.maxOutput': '最大输出',
|
|
492
|
-
'hint.emptyNoChange': '留空表示不改动已有配置。',
|
|
493
|
-
'modal.openclaw.quick.optionsTitle': '选项',
|
|
494
|
-
'modal.openclaw.quick.setPrimary': '设为主模型',
|
|
495
|
-
'modal.openclaw.quick.overrideProvider': '覆盖同名 Provider 基础信息',
|
|
496
|
-
'modal.openclaw.quick.overrideModels': '覆盖同名模型列表',
|
|
497
|
-
'modal.openclaw.quick.optionsHint': '关闭覆盖会只补空缺字段。',
|
|
498
|
-
'modal.openclaw.quick.writeToEditor': '写入编辑器',
|
|
499
|
-
|
|
500
|
-
// Docs panel
|
|
501
|
-
'docs.title': 'CLI 安装文档',
|
|
502
|
-
'docs.subtitle': '查看 Claude Code / Gemini CLI / CodeBuddy Code / Codex CLI 命令。',
|
|
503
|
-
'docs.section.commands': '安装命令',
|
|
504
|
-
'docs.section.commandsNote': '命令可直接复制。',
|
|
505
|
-
'docs.section.faq': '常见问题',
|
|
506
|
-
'docs.section.faqNote': '常见问题见下。',
|
|
507
|
-
'docs.command.aria': '{name} 命令',
|
|
508
|
-
'docs.registryHintPrefix': '命令将附加:',
|
|
509
|
-
'docs.registryHintCustom': '请输入完整 URL(含 http/https),将自动附加到命令。',
|
|
510
|
-
'docs.registry.tencent': '腾讯云',
|
|
511
|
-
'docs.meta.bin': 'bin: {bin}',
|
|
512
|
-
'docs.termuxLabel': 'Termux',
|
|
513
|
-
'docs.termuxAria': 'Termux Codex CLI command',
|
|
514
|
-
'docs.rule.1': '命令按当前包管理器、镜像与操作生成。',
|
|
515
|
-
'docs.rule.2': '自定义镜像仅用于安装与升级。',
|
|
516
|
-
'docs.tip.win.1': 'PowerShell 报权限不足(EACCES/EPERM)时,请以管理员身份执行安装命令。',
|
|
517
|
-
'docs.tip.win.2': '安装后若仍提示找不到命令,重开终端并执行:where codex / where claude / where gemini / where codebuddy。',
|
|
518
|
-
'docs.tip.win.3': '公司网络受限时,可先切换镜像源快捷项(npmmirror / 腾讯云 / 自定义)。',
|
|
519
|
-
'docs.tip.unix.1': '出现 EACCES 权限错误时,优先修复 Node 全局目录权限,不建议直接 sudo npm。',
|
|
520
|
-
'docs.tip.unix.2': '安装后若命令未生效,重开终端并执行:which codex / which claude / which gemini / which codebuddy。',
|
|
521
|
-
'docs.tip.unix.3': '公司网络受限时,可先切换镜像源快捷项(npmmirror / 腾讯云 / 自定义)。',
|
|
522
|
-
|
|
523
|
-
// Sessions panel
|
|
524
|
-
'sessions.loading': '加载中...',
|
|
525
|
-
'sessions.sourceTitle': '会话来源',
|
|
526
|
-
'sessions.refresh': '刷新会话',
|
|
527
|
-
'sessions.refreshing': '刷新中...',
|
|
528
|
-
'sessions.allPaths': '全部路径',
|
|
529
|
-
'sessions.source.codex': 'Codex',
|
|
530
|
-
'sessions.source.claudeCode': 'Claude Code',
|
|
531
|
-
'sessions.source.gemini': 'Gemini CLI',
|
|
532
|
-
'sessions.source.codebuddy': 'CodeBuddy Code',
|
|
533
|
-
'sessions.loadingList': '会话加载中...',
|
|
534
|
-
'sessions.empty': '暂无可用会话记录',
|
|
535
|
-
'sessions.unknownTime': '未知时间',
|
|
536
|
-
|
|
537
|
-
'sessions.query.placeholder.enabled': '关键词检索(支持 Codex/Claude/Gemini/CodeBuddy,例:claude code)',
|
|
538
|
-
'sessions.query.placeholder.disabled': '当前来源暂不支持关键词检索',
|
|
539
|
-
'sessions.pin': '置顶',
|
|
540
|
-
'sessions.unpin': '取消置顶',
|
|
541
|
-
'sessions.copyResume': '复制恢复命令',
|
|
542
|
-
'sessions.preview.refresh': '刷新内容',
|
|
543
|
-
'sessions.preview.loading': '加载中...',
|
|
544
|
-
'sessions.preview.deleteHard': '直接删除',
|
|
545
|
-
'sessions.preview.moveToTrash': '移入回收站',
|
|
546
|
-
'sessions.preview.deleting': '删除中...',
|
|
547
|
-
'sessions.preview.moving': '移入中...',
|
|
548
|
-
'sessions.preview.export': '导出记录',
|
|
549
|
-
'sessions.preview.exporting': '导出中...',
|
|
550
|
-
'sessions.preview.convert': '生成派生会话',
|
|
551
|
-
'sessions.preview.converting': '生成中...',
|
|
552
|
-
'sessions.preview.convert.loadedOnly': '仅转换已加载消息',
|
|
553
|
-
'sessions.preview.importNative': '导入原生目录',
|
|
554
|
-
'sessions.preview.importingNative': '导入中...',
|
|
555
|
-
'sessions.preview.importNative.unsupported': '不支持此操作',
|
|
556
|
-
'sessions.preview.importNative.confirmTitle': '覆盖原生会话文件?',
|
|
557
|
-
'sessions.preview.importNative.confirmMessage': '原生会话文件已存在,覆盖后会替换目标工具原生目录中的同名会话。',
|
|
558
|
-
'sessions.preview.importNative.confirmText': '覆盖',
|
|
559
|
-
'sessions.preview.importNative.cancelled': '已取消导入',
|
|
560
|
-
'sessions.preview.importNative.conflict': '原生会话已存在',
|
|
561
|
-
'sessions.preview.importNative.invalidSource': '会话来源无效',
|
|
562
|
-
'sessions.preview.importNative.fileNotFound': '未找到会话文件',
|
|
563
|
-
'sessions.preview.importNative.nativePathUnavailable': '无法解析原生会话路径',
|
|
564
|
-
'sessions.preview.importNative.success': '已导入原生目录',
|
|
565
|
-
'sessions.preview.importNative.failed': '导入失败',
|
|
566
|
-
'sessions.preview.importNative.failedWithReason': '导入原生目录失败:{reason}',
|
|
567
|
-
'sessions.preview.copyLink': '复制链接',
|
|
568
|
-
'sessions.preview.
|
|
569
|
-
'sessions.preview.
|
|
570
|
-
'sessions.preview.
|
|
571
|
-
'sessions.preview.
|
|
572
|
-
'sessions.preview.
|
|
573
|
-
'sessions.preview.
|
|
574
|
-
'sessions.preview.
|
|
575
|
-
'sessions.preview.
|
|
576
|
-
'sessions.preview.
|
|
577
|
-
'sessions.
|
|
578
|
-
'sessions.
|
|
579
|
-
'sessions.
|
|
580
|
-
'sessions.role.
|
|
581
|
-
'sessions.role.
|
|
582
|
-
'sessions.role.
|
|
583
|
-
'sessions.
|
|
584
|
-
'sessions.time.
|
|
585
|
-
'sessions.time.
|
|
586
|
-
'sessions.time.
|
|
587
|
-
'sessions.
|
|
588
|
-
'sessions.sort.
|
|
589
|
-
'sessions.sort.
|
|
590
|
-
'sessions.
|
|
591
|
-
'sessions.filters.
|
|
592
|
-
'sessions.filters.
|
|
593
|
-
'sessions.filters.
|
|
594
|
-
'sessions.filters.
|
|
595
|
-
'sessions.filters.
|
|
596
|
-
'sessions.filters.
|
|
597
|
-
'sessions.
|
|
598
|
-
'sessions.roleLabel.
|
|
599
|
-
'sessions.roleLabel.
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
'usage.
|
|
604
|
-
'usage.range.
|
|
605
|
-
'usage.range.
|
|
606
|
-
'usage.
|
|
607
|
-
'usage.compare.
|
|
608
|
-
'usage.compare.
|
|
609
|
-
'usage.
|
|
610
|
-
'usage.
|
|
611
|
-
'usage.
|
|
612
|
-
'usage.
|
|
613
|
-
'usage.
|
|
614
|
-
'usage.
|
|
615
|
-
'usage.
|
|
616
|
-
'usage.
|
|
617
|
-
'usage.
|
|
618
|
-
'usage.
|
|
619
|
-
'usage.daily.
|
|
620
|
-
'usage.daily.
|
|
621
|
-
'usage.
|
|
622
|
-
'usage.heatmap.
|
|
623
|
-
'usage.heatmap.
|
|
624
|
-
'usage.heatmap.legend.
|
|
625
|
-
'usage.heatmap.
|
|
626
|
-
'usage.heatmap.
|
|
627
|
-
'usage.
|
|
628
|
-
'usage.hourlyHeatmap.
|
|
629
|
-
'usage.hourlyHeatmap.
|
|
630
|
-
'usage.hourlyHeatmap.
|
|
631
|
-
'usage.hourlyHeatmap.legend.
|
|
632
|
-
'usage.legend.
|
|
633
|
-
'usage.legend.
|
|
634
|
-
'usage.
|
|
635
|
-
'usage.table.
|
|
636
|
-
'usage.table.
|
|
637
|
-
'usage.table.
|
|
638
|
-
'usage.table.
|
|
639
|
-
'usage.
|
|
640
|
-
'usage.trend.
|
|
641
|
-
'usage.trend.
|
|
642
|
-
'usage.trend.
|
|
643
|
-
'usage.
|
|
644
|
-
'usage.legend.
|
|
645
|
-
'usage.
|
|
646
|
-
'usage.trend.sessions.
|
|
647
|
-
'usage.trend.
|
|
648
|
-
'usage.
|
|
649
|
-
'usage.
|
|
650
|
-
'usage.
|
|
651
|
-
'usage.summary.
|
|
652
|
-
'usage.summary.
|
|
653
|
-
'usage.summary.
|
|
654
|
-
'usage.summary.
|
|
655
|
-
'usage.estimatedCost
|
|
656
|
-
'usage.estimatedCost.
|
|
657
|
-
'usage.estimatedCost.method.
|
|
658
|
-
'usage.estimatedCost.method.
|
|
659
|
-
'usage.estimatedCost.
|
|
660
|
-
'usage.estimatedCost.detail.
|
|
661
|
-
'usage.
|
|
662
|
-
'usage.summary.activeDuration
|
|
663
|
-
'usage.summary.
|
|
664
|
-
'usage.summary.totalDuration
|
|
665
|
-
'usage.summary.
|
|
666
|
-
'usage.summary.
|
|
667
|
-
'usage.summary.
|
|
668
|
-
'usage.summary.
|
|
669
|
-
'usage.
|
|
670
|
-
'usage.currentSession.
|
|
671
|
-
'usage.currentSession.
|
|
672
|
-
'usage.currentSession.
|
|
673
|
-
'usage.
|
|
674
|
-
'usage.range.kicker.
|
|
675
|
-
'usage.range.kicker.
|
|
676
|
-
'usage.
|
|
677
|
-
'usage.
|
|
678
|
-
'usage.
|
|
679
|
-
'usage.dayDetail.
|
|
680
|
-
'usage.dayDetail.
|
|
681
|
-
'usage.dayDetail.
|
|
682
|
-
'usage.dayDetail.
|
|
683
|
-
'usage.dayDetail.
|
|
684
|
-
'usage.dayDetail.
|
|
685
|
-
'usage.
|
|
686
|
-
'usage.models.
|
|
687
|
-
'usage.models.
|
|
688
|
-
'usage.models.
|
|
689
|
-
'usage.models.
|
|
690
|
-
'usage.models.
|
|
691
|
-
'usage.models.
|
|
692
|
-
'usage.models.
|
|
693
|
-
'usage.models.
|
|
694
|
-
'usage.models.
|
|
695
|
-
'usage.models.missingNote': '另有 {count}
|
|
696
|
-
'usage.models.
|
|
697
|
-
'usage.models.
|
|
698
|
-
'usage.models.
|
|
699
|
-
'usage.
|
|
700
|
-
'usage.
|
|
701
|
-
'usage.paths.
|
|
702
|
-
'usage.paths.
|
|
703
|
-
'usage.paths.
|
|
704
|
-
'usage.paths.
|
|
705
|
-
'usage.recent
|
|
706
|
-
'usage.
|
|
707
|
-
'usage.sessions.
|
|
708
|
-
'usage.sessions.
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
'
|
|
713
|
-
'toolConfig.
|
|
714
|
-
'toolConfig.
|
|
715
|
-
'toolConfig.
|
|
716
|
-
'toolConfig.
|
|
717
|
-
'toolConfig.
|
|
718
|
-
'toolConfig.
|
|
719
|
-
'toolConfig.
|
|
720
|
-
'toolConfig.
|
|
721
|
-
'toolConfig.codex.
|
|
722
|
-
'toolConfig.codex.
|
|
723
|
-
'toolConfig.codex.
|
|
724
|
-
'toolConfig.codex.
|
|
725
|
-
'toolConfig.
|
|
726
|
-
'toolConfig.claude.
|
|
727
|
-
'toolConfig.claude.
|
|
728
|
-
'toolConfig.claude.
|
|
729
|
-
'toolConfig.claude.
|
|
730
|
-
'
|
|
731
|
-
'config.
|
|
732
|
-
'config.
|
|
733
|
-
'config.
|
|
734
|
-
'config.models.
|
|
735
|
-
'config.models.
|
|
736
|
-
'config.models.notInList.
|
|
737
|
-
'config.
|
|
738
|
-
'config.template.
|
|
739
|
-
'config.
|
|
740
|
-
'config.
|
|
741
|
-
'
|
|
742
|
-
'modal.configTemplate.
|
|
743
|
-
'
|
|
744
|
-
'config.serviceTier
|
|
745
|
-
'config.serviceTier.
|
|
746
|
-
'config.serviceTier.
|
|
747
|
-
'config.
|
|
748
|
-
'config.reasoningEffort
|
|
749
|
-
'config.reasoningEffort.
|
|
750
|
-
'config.
|
|
751
|
-
'config.
|
|
752
|
-
'config.
|
|
753
|
-
'config.
|
|
754
|
-
'config.
|
|
755
|
-
'config.
|
|
756
|
-
'
|
|
757
|
-
'modal.agents.title.
|
|
758
|
-
'modal.agents.title.
|
|
759
|
-
'modal.agents.
|
|
760
|
-
'modal.agents.hint.
|
|
761
|
-
'modal.agents.
|
|
762
|
-
'modal.agents.
|
|
763
|
-
'modal.agents.
|
|
764
|
-
'modal.agents.
|
|
765
|
-
'modal.agents.
|
|
766
|
-
'
|
|
767
|
-
'config.
|
|
768
|
-
'config.
|
|
769
|
-
'config.
|
|
770
|
-
'config.
|
|
771
|
-
'config.
|
|
772
|
-
'config.health.
|
|
773
|
-
'config.health.
|
|
774
|
-
'config.health.
|
|
775
|
-
'config.health.
|
|
776
|
-
'config.health.
|
|
777
|
-
'config.health.
|
|
778
|
-
'config.health.
|
|
779
|
-
'config.
|
|
780
|
-
'config.
|
|
781
|
-
'config.
|
|
782
|
-
'config.
|
|
783
|
-
'config.provider.
|
|
784
|
-
'config.provider.
|
|
785
|
-
'config.provider.clone
|
|
786
|
-
'
|
|
787
|
-
'
|
|
788
|
-
'common.
|
|
789
|
-
'common.
|
|
790
|
-
'common.
|
|
791
|
-
'
|
|
792
|
-
'
|
|
793
|
-
'
|
|
794
|
-
'
|
|
795
|
-
'usage.range.
|
|
796
|
-
'usage.range.
|
|
797
|
-
'
|
|
798
|
-
'orchestration.
|
|
799
|
-
'orchestration.hero.
|
|
800
|
-
'orchestration.hero.
|
|
801
|
-
'orchestration.
|
|
802
|
-
'orchestration.
|
|
803
|
-
'orchestration.summary.
|
|
804
|
-
'orchestration.summary.
|
|
805
|
-
'orchestration.summary.
|
|
806
|
-
'orchestration.
|
|
807
|
-
'orchestration.readiness.target.
|
|
808
|
-
'orchestration.readiness.target.
|
|
809
|
-
'orchestration.readiness.
|
|
810
|
-
'orchestration.readiness.engine.
|
|
811
|
-
'orchestration.readiness.
|
|
812
|
-
'orchestration.readiness.workflow.
|
|
813
|
-
'orchestration.readiness.
|
|
814
|
-
'orchestration.readiness.scope.
|
|
815
|
-
'orchestration.readiness.scope.
|
|
816
|
-
'orchestration.readiness.scope.
|
|
817
|
-
'orchestration.readiness.
|
|
818
|
-
'orchestration.readiness.preview.
|
|
819
|
-
'orchestration.readiness.preview.
|
|
820
|
-
'orchestration.readiness.preview.
|
|
821
|
-
'orchestration.readiness.
|
|
822
|
-
'orchestration.readiness.empty.
|
|
823
|
-
'orchestration.readiness.
|
|
824
|
-
'orchestration.readiness.workflow.
|
|
825
|
-
'orchestration.readiness.
|
|
826
|
-
'orchestration.readiness.preview.
|
|
827
|
-
'orchestration.readiness.
|
|
828
|
-
'orchestration.readiness.blocked.
|
|
829
|
-
'orchestration.readiness.
|
|
830
|
-
'orchestration.readiness.warn.
|
|
831
|
-
'orchestration.readiness.
|
|
832
|
-
'orchestration.readiness.dryRun.
|
|
833
|
-
'orchestration.readiness.
|
|
834
|
-
'orchestration.readiness.ready.
|
|
835
|
-
'orchestration.readiness.ready.
|
|
836
|
-
'orchestration.
|
|
837
|
-
'orchestration.step1.
|
|
838
|
-
'orchestration.
|
|
839
|
-
'orchestration.templates.
|
|
840
|
-
'orchestration.templates.reviewFix.
|
|
841
|
-
'orchestration.templates.reviewFix.
|
|
842
|
-
'orchestration.templates.reviewFix.
|
|
843
|
-
'orchestration.templates.
|
|
844
|
-
'orchestration.templates.planOnly.
|
|
845
|
-
'orchestration.templates.planOnly.
|
|
846
|
-
'orchestration.templates.
|
|
847
|
-
'orchestration.templates.workflowBatch.
|
|
848
|
-
'orchestration.templates.workflowBatch.
|
|
849
|
-
'orchestration.templates.workflowBatch.
|
|
850
|
-
'orchestration.
|
|
851
|
-
'orchestration.fields.target
|
|
852
|
-
'orchestration.fields.target.
|
|
853
|
-
'orchestration.
|
|
854
|
-
'orchestration.engine.
|
|
855
|
-
'orchestration.
|
|
856
|
-
'orchestration.runMode.
|
|
857
|
-
'orchestration.runMode.
|
|
858
|
-
'orchestration.
|
|
859
|
-
'orchestration.pills.
|
|
860
|
-
'orchestration.pills.
|
|
861
|
-
'orchestration.
|
|
862
|
-
'orchestration.step2.
|
|
863
|
-
'orchestration.
|
|
864
|
-
'orchestration.fields.
|
|
865
|
-
'orchestration.
|
|
866
|
-
'orchestration.
|
|
867
|
-
'orchestration.fields.title
|
|
868
|
-
'orchestration.fields.
|
|
869
|
-
'orchestration.fields.notes
|
|
870
|
-
'orchestration.fields.notes.
|
|
871
|
-
'orchestration.fields.
|
|
872
|
-
'orchestration.fields.followUps
|
|
873
|
-
'orchestration.fields.
|
|
874
|
-
'orchestration.fields.concurrency
|
|
875
|
-
'orchestration.fields.
|
|
876
|
-
'orchestration.fields.autoFixRounds
|
|
877
|
-
'orchestration.fields.
|
|
878
|
-
'orchestration.fields.workflowIds
|
|
879
|
-
'orchestration.fields.workflowIds.
|
|
880
|
-
'orchestration.
|
|
881
|
-
'orchestration.
|
|
882
|
-
'orchestration.step3.
|
|
883
|
-
'orchestration.
|
|
884
|
-
'orchestration.actions.
|
|
885
|
-
'orchestration.actions.
|
|
886
|
-
'orchestration.actions.
|
|
887
|
-
'orchestration.actions.
|
|
888
|
-
'orchestration.actions.
|
|
889
|
-
'orchestration.actions.
|
|
890
|
-
'orchestration.actions.
|
|
891
|
-
'orchestration.
|
|
892
|
-
'orchestration.stage.
|
|
893
|
-
'orchestration.stage.
|
|
894
|
-
'orchestration.stage.pill.
|
|
895
|
-
'orchestration.stage.pill.
|
|
896
|
-
'orchestration.
|
|
897
|
-
'orchestration.plan.
|
|
898
|
-
'orchestration.plan.
|
|
899
|
-
'orchestration.plan.summary.
|
|
900
|
-
'orchestration.plan.summary.
|
|
901
|
-
'orchestration.plan.
|
|
902
|
-
'orchestration.plan.node.
|
|
903
|
-
'orchestration.
|
|
904
|
-
'orchestration.labels.
|
|
905
|
-
'orchestration.
|
|
906
|
-
'orchestration.workbench.
|
|
907
|
-
'orchestration.
|
|
908
|
-
'orchestration.queue.
|
|
909
|
-
'orchestration.
|
|
910
|
-
'orchestration.workbench.tabs.
|
|
911
|
-
'orchestration.workbench.tabs.
|
|
912
|
-
'orchestration.workbench.tabs.
|
|
913
|
-
'orchestration.
|
|
914
|
-
'orchestration.queue.empty.
|
|
915
|
-
'orchestration.
|
|
916
|
-
'orchestration.runs.empty.
|
|
917
|
-
'orchestration.
|
|
918
|
-
'orchestration.detail.
|
|
919
|
-
'orchestration.detail.
|
|
920
|
-
'orchestration.detail.
|
|
921
|
-
'orchestration.detail.empty.
|
|
922
|
-
'orchestration.detail.
|
|
923
|
-
'orchestration.detail.summary.
|
|
924
|
-
'orchestration.detail.summary.
|
|
925
|
-
'orchestration.detail.summary.
|
|
926
|
-
'orchestration.detail.
|
|
927
|
-
'
|
|
928
|
-
'skills.
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
'status.
|
|
933
|
-
'status.
|
|
934
|
-
'status.
|
|
935
|
-
'status.
|
|
936
|
-
'status.
|
|
937
|
-
'status.
|
|
938
|
-
'status.
|
|
939
|
-
'status.
|
|
940
|
-
'status.
|
|
941
|
-
'status.
|
|
942
|
-
'status.
|
|
943
|
-
'status.
|
|
944
|
-
'status.
|
|
945
|
-
'status.
|
|
946
|
-
'status.
|
|
947
|
-
'status.
|
|
948
|
-
'status.
|
|
949
|
-
'status.
|
|
950
|
-
'status.
|
|
951
|
-
'status.
|
|
952
|
-
'status.
|
|
953
|
-
'status.
|
|
954
|
-
'status.
|
|
955
|
-
'status.
|
|
956
|
-
'
|
|
957
|
-
'side.
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
'settings.tab.
|
|
962
|
-
'settings.
|
|
963
|
-
'settings.
|
|
964
|
-
'settings.
|
|
965
|
-
'settings.language.
|
|
966
|
-
'settings.language.
|
|
967
|
-
'settings.language.
|
|
968
|
-
'settings.language.
|
|
969
|
-
'settings.
|
|
970
|
-
'settings.sharePrefix.
|
|
971
|
-
'settings.sharePrefix.
|
|
972
|
-
'settings.sharePrefix.
|
|
973
|
-
'settings.
|
|
974
|
-
'settings.backup.
|
|
975
|
-
'settings.
|
|
976
|
-
'settings.claude.
|
|
977
|
-
'settings.
|
|
978
|
-
'settings.codex.
|
|
979
|
-
'settings.
|
|
980
|
-
'settings.backup.
|
|
981
|
-
'settings.backup.
|
|
982
|
-
'settings.backup.
|
|
983
|
-
'settings.backup.
|
|
984
|
-
'settings.
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
'settings.trashConfig.
|
|
988
|
-
'settings.
|
|
989
|
-
'settings.deleteBehavior.
|
|
990
|
-
'settings.deleteBehavior.
|
|
991
|
-
'settings.deleteBehavior.
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
'settings.trash.
|
|
995
|
-
'settings.trash.
|
|
996
|
-
'settings.trash.
|
|
997
|
-
'settings.trash.
|
|
998
|
-
'settings.trash.
|
|
999
|
-
'settings.trash.
|
|
1000
|
-
'settings.trash.
|
|
1001
|
-
'settings.trash.
|
|
1002
|
-
'settings.trash.
|
|
1003
|
-
'settings.trash.
|
|
1004
|
-
'settings.trash.
|
|
1005
|
-
'settings.trash.
|
|
1006
|
-
'settings.trash.
|
|
1007
|
-
'settings.trash.
|
|
1008
|
-
'settings.trash.
|
|
1009
|
-
'settings.trash.
|
|
1010
|
-
'settings.trash.
|
|
1011
|
-
'settings.trash.
|
|
1012
|
-
'settings.trash.
|
|
1013
|
-
'settings.trash.
|
|
1014
|
-
'settings.trash.
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
'settings.webhook.
|
|
1018
|
-
'settings.webhook.
|
|
1019
|
-
'settings.webhook.
|
|
1020
|
-
'settings.webhook.
|
|
1021
|
-
'settings.webhook.
|
|
1022
|
-
'settings.webhook.
|
|
1023
|
-
'settings.webhook.
|
|
1024
|
-
'settings.webhook.
|
|
1025
|
-
'settings.webhook.
|
|
1026
|
-
'settings.webhook.
|
|
1027
|
-
'settings.webhook.
|
|
1028
|
-
'settings.
|
|
1029
|
-
'settings.templateConfirm.
|
|
1030
|
-
'settings.templateConfirm.
|
|
1031
|
-
'settings.templateConfirm.
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
'settings.reset.
|
|
1035
|
-
'settings.reset.
|
|
1036
|
-
'settings.reset.
|
|
1037
|
-
'settings.reset.
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
'market.
|
|
1042
|
-
'market.
|
|
1043
|
-
'market.
|
|
1044
|
-
'market.
|
|
1045
|
-
'market.
|
|
1046
|
-
'market.
|
|
1047
|
-
'market.summary.
|
|
1048
|
-
'market.summary.
|
|
1049
|
-
'market.summary.
|
|
1050
|
-
'market.summary.
|
|
1051
|
-
'market.summary.
|
|
1052
|
-
'market.
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
'market.installed.
|
|
1056
|
-
'market.
|
|
1057
|
-
'market.local.
|
|
1058
|
-
'market.local.
|
|
1059
|
-
'market.local.
|
|
1060
|
-
'market.
|
|
1061
|
-
'market.pill.
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
'market.import.
|
|
1065
|
-
'market.import.
|
|
1066
|
-
'market.import.
|
|
1067
|
-
'market.import.
|
|
1068
|
-
'market.import.
|
|
1069
|
-
'market.
|
|
1070
|
-
'market.pill.
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
'market.actions.
|
|
1074
|
-
'market.
|
|
1075
|
-
'market.action.manage.
|
|
1076
|
-
'market.action.
|
|
1077
|
-
'market.action.crossImport.
|
|
1078
|
-
'market.action.
|
|
1079
|
-
'market.action.zipImport.
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
'market.help.
|
|
1083
|
-
'market.help.target.
|
|
1084
|
-
'market.help.
|
|
1085
|
-
'market.help.crossImport.
|
|
1086
|
-
'market.help.
|
|
1087
|
-
'market.help.zipImport.
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
'claude.
|
|
1092
|
-
'claude.
|
|
1093
|
-
'claude.
|
|
1094
|
-
'claude.
|
|
1095
|
-
'claude.model
|
|
1096
|
-
'claude.model.
|
|
1097
|
-
'claude.
|
|
1098
|
-
'claude.health.
|
|
1099
|
-
'claude.health.
|
|
1100
|
-
'claude.health.
|
|
1101
|
-
'claude.health.
|
|
1102
|
-
'claude.
|
|
1103
|
-
'claude.md.
|
|
1104
|
-
'claude.md.
|
|
1105
|
-
'claude.
|
|
1106
|
-
'claude.
|
|
1107
|
-
'claude.
|
|
1108
|
-
'claude.
|
|
1109
|
-
'claude.action.
|
|
1110
|
-
'claude.action.
|
|
1111
|
-
'claude.action.
|
|
1112
|
-
'claude.action.
|
|
1113
|
-
'claude.action.
|
|
1114
|
-
'claude.action.
|
|
1115
|
-
'claude.
|
|
1116
|
-
'claude.localBridge.
|
|
1117
|
-
'claude.localBridge.
|
|
1118
|
-
'claude.localBridge.
|
|
1119
|
-
'claude.localBridge.
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
'openclaw.
|
|
1124
|
-
'openclaw.
|
|
1125
|
-
'openclaw.
|
|
1126
|
-
'openclaw.agents.
|
|
1127
|
-
'openclaw.
|
|
1128
|
-
'openclaw.
|
|
1129
|
-
'openclaw.workspace.
|
|
1130
|
-
'openclaw.workspace.
|
|
1131
|
-
'openclaw.
|
|
1132
|
-
'openclaw.
|
|
1133
|
-
'openclaw.
|
|
1134
|
-
'openclaw.action.
|
|
1135
|
-
'
|
|
1136
|
-
'modal.openclaw.quick.
|
|
1137
|
-
'modal.openclaw.
|
|
1138
|
-
'openclaw.
|
|
1139
|
-
'openclaw.action.
|
|
1140
|
-
'openclaw.action.
|
|
1141
|
-
}
|
|
1142
|
-
|
|
1143
|
-
|
|
1
|
+
const zh = Object.freeze({
|
|
2
|
+
// Global
|
|
3
|
+
'lang.zh': '中文',
|
|
4
|
+
'lang.en': 'English',
|
|
5
|
+
'lang.vi': '越南语',
|
|
6
|
+
'lang.label': '语言',
|
|
7
|
+
'nav.topTabs.aria': '导航',
|
|
8
|
+
|
|
9
|
+
// Common
|
|
10
|
+
'common.all': '全部',
|
|
11
|
+
'common.copy': '复制',
|
|
12
|
+
'common.paste': '粘贴',
|
|
13
|
+
'common.edit': '编辑',
|
|
14
|
+
'common.install': '安装',
|
|
15
|
+
'common.update': '升级',
|
|
16
|
+
'common.uninstall': '卸载',
|
|
17
|
+
'common.official': '官方',
|
|
18
|
+
'common.custom': '自定义',
|
|
19
|
+
'common.rules': '规则',
|
|
20
|
+
'common.troubleshooting': '排障提示',
|
|
21
|
+
'common.command': '命令',
|
|
22
|
+
'common.mirror': '镜像源',
|
|
23
|
+
'common.packageManager': '包管理器',
|
|
24
|
+
'common.action': '操作',
|
|
25
|
+
'common.targets': '目标数',
|
|
26
|
+
'common.currentPm': '当前包管理器',
|
|
27
|
+
'common.currentAction': '当前操作',
|
|
28
|
+
'common.mirrorActive': '镜像',
|
|
29
|
+
'common.defaultOfficial': '官方默认',
|
|
30
|
+
'common.cancel': '取消',
|
|
31
|
+
'common.confirm': '确认',
|
|
32
|
+
'common.add': '添加',
|
|
33
|
+
'common.save': '保存',
|
|
34
|
+
'common.saveApply': '保存并应用',
|
|
35
|
+
'common.close': '关闭',
|
|
36
|
+
'common.delete': '删除',
|
|
37
|
+
'common.clear': '清空',
|
|
38
|
+
'common.show': '显示',
|
|
39
|
+
'common.hide': '隐藏',
|
|
40
|
+
'common.detail': '详情',
|
|
41
|
+
'common.refresh': '刷新',
|
|
42
|
+
'common.refreshing': '刷新中...',
|
|
43
|
+
'common.loading': '加载中...',
|
|
44
|
+
'common.saving': '保存中...',
|
|
45
|
+
'common.sending': '发送中...',
|
|
46
|
+
'common.scanning': '扫描中...',
|
|
47
|
+
'common.export': '导出',
|
|
48
|
+
'common.import': '导入',
|
|
49
|
+
'common.apply': '应用',
|
|
50
|
+
'common.applying': '应用中...',
|
|
51
|
+
'common.confirming': '确认中...',
|
|
52
|
+
'common.refreshFromText': '从文本刷新',
|
|
53
|
+
'common.backToEdit': '返回编辑',
|
|
54
|
+
'common.selectAll': '全选',
|
|
55
|
+
'common.unselectAll': '取消全选',
|
|
56
|
+
'common.resetFilters': '重置筛选',
|
|
57
|
+
'common.notEditable': '不可编辑',
|
|
58
|
+
'common.notDeletable': '不可删除',
|
|
59
|
+
'common.notLoaded': '未加载',
|
|
60
|
+
'common.exists': '已存在',
|
|
61
|
+
'common.notExistsWillCreateOnApply': '不存在,将在应用时创建',
|
|
62
|
+
'common.notExistsWillCreateOnSave': '不存在,将在保存时创建',
|
|
63
|
+
'common.none': '暂无',
|
|
64
|
+
'cli.missing.title': '{name} CLI 未安装',
|
|
65
|
+
'cli.missing.subtitle': '请先安装 {name} CLI 后再继续使用此页面。',
|
|
66
|
+
'cli.missing.openDocs': '打开安装指南',
|
|
67
|
+
'cli.missing.commandAria': '{name} CLI 安装命令',
|
|
68
|
+
|
|
69
|
+
// Brand
|
|
70
|
+
'brand.kicker.workspace': '工作区',
|
|
71
|
+
'brand.subtitle.localConfigSessionsWorkspace': '本地配置与会话工作区',
|
|
72
|
+
|
|
73
|
+
// Confirm dialog
|
|
74
|
+
'confirm.aria': '确认操作',
|
|
75
|
+
'confirm.title.default': '请确认操作',
|
|
76
|
+
'confirm.ok': '确认',
|
|
77
|
+
'confirm.cancel': '取消',
|
|
78
|
+
|
|
79
|
+
// Shared fields
|
|
80
|
+
'field.name': '名称',
|
|
81
|
+
'field.configName': '配置名称',
|
|
82
|
+
'field.apiEndpoint': 'API 端点',
|
|
83
|
+
'field.apiKey': '认证密钥',
|
|
84
|
+
'field.baseUrl': 'Base URL',
|
|
85
|
+
'field.provider': '提供商',
|
|
86
|
+
'field.providerName': 'Provider 名称',
|
|
87
|
+
'field.modelName': '模型名称',
|
|
88
|
+
'field.model': '模型',
|
|
89
|
+
'field.message': '消息',
|
|
90
|
+
'field.varName': '变量名',
|
|
91
|
+
'field.targetFile': '目标文件',
|
|
92
|
+
'field.modelId': '模型 ID',
|
|
93
|
+
'field.displayName': '展示名称',
|
|
94
|
+
'field.contextAndMaxOutput': '上下文与最大输出',
|
|
95
|
+
'field.apiType': 'API 类型',
|
|
96
|
+
'field.env': '环境变量',
|
|
97
|
+
'field.allow': 'Allow',
|
|
98
|
+
'field.deny': 'Deny',
|
|
99
|
+
|
|
100
|
+
// Shared placeholders/hints
|
|
101
|
+
'placeholder.providerNameExample': '例如: myapi',
|
|
102
|
+
'placeholder.apiEndpointExample': 'https://api.example.com/v1',
|
|
103
|
+
'placeholder.providerName': '提供商名称',
|
|
104
|
+
'placeholder.keepUnchanged': '留空则保持不变',
|
|
105
|
+
'hint.keepKeyUnchanged': '留空表示不修改密钥',
|
|
106
|
+
'placeholder.modelExample': '例如: gpt-5',
|
|
107
|
+
'placeholder.configNameExample': '例如: 智谱GLM',
|
|
108
|
+
'placeholder.apiKeyExampleClaude': 'sk-ant-...',
|
|
109
|
+
'placeholder.baseUrlExampleClaude': 'https://open.bigmodel.cn/api/anthropic',
|
|
110
|
+
'placeholder.selectProvider': '请选择提供商',
|
|
111
|
+
|
|
112
|
+
// Roles / labels
|
|
113
|
+
'role.you': '你',
|
|
114
|
+
'role.provider': '提供商',
|
|
115
|
+
'label.model': '模型:',
|
|
116
|
+
|
|
117
|
+
// Top tabs
|
|
118
|
+
'tab.dashboard': '概览',
|
|
119
|
+
'tab.docs': '文档',
|
|
120
|
+
'tab.config': '配置',
|
|
121
|
+
'tab.config.codex': 'Codex',
|
|
122
|
+
'tab.config.claude': 'Claude',
|
|
123
|
+
'tab.config.openclaw': 'OpenClaw',
|
|
124
|
+
'tab.sessions': '会话',
|
|
125
|
+
'tab.usage': '用量',
|
|
126
|
+
'tab.orchestration': '任务',
|
|
127
|
+
'tab.market': 'Skills',
|
|
128
|
+
'tab.plugins': '插件',
|
|
129
|
+
'tab.settings': '设置',
|
|
130
|
+
|
|
131
|
+
// Side rail section titles
|
|
132
|
+
'side.overview': '概览',
|
|
133
|
+
'side.docs': '文档',
|
|
134
|
+
'side.config': '配置',
|
|
135
|
+
'side.sessions': '会话',
|
|
136
|
+
'side.plugins': '插件',
|
|
137
|
+
'side.system': '系统',
|
|
138
|
+
'side.orchestration': '任务',
|
|
139
|
+
'side.skills': 'Skills',
|
|
140
|
+
|
|
141
|
+
// Side rail items
|
|
142
|
+
'side.overview.doctor': 'Doctor 面板',
|
|
143
|
+
'side.overview.doctor.meta': '总览 / 诊断 / 跳转',
|
|
144
|
+
'side.docs.cliInstall': 'CLI 安装',
|
|
145
|
+
'side.docs.cliInstall.meta': '安装 / 升级 / 卸载',
|
|
146
|
+
'side.config.codex': 'Codex',
|
|
147
|
+
'side.config.codex.meta': 'Provider / Model',
|
|
148
|
+
'side.config.claude': 'Claude Code',
|
|
149
|
+
'side.config.claude.meta': 'Claude Settings',
|
|
150
|
+
'side.config.openclaw': 'OpenClaw',
|
|
151
|
+
'side.config.openclaw.meta': 'JSON5 / AGENTS',
|
|
152
|
+
'side.sessions.browser': '会话浏览',
|
|
153
|
+
'side.sessions.browser.meta': '浏览 / 导出 / 清理',
|
|
154
|
+
'side.plugins.tools': '提示词工具',
|
|
155
|
+
'side.plugins.tools.meta': '模板 / 变量',
|
|
156
|
+
'side.plugins.templatesCount': '{count} 个模板',
|
|
157
|
+
'side.system.settings': '运行设置',
|
|
158
|
+
'side.system.settings.meta': '数据 / 备份',
|
|
159
|
+
'side.newTab': '新建标签页',
|
|
160
|
+
|
|
161
|
+
// Header titles
|
|
162
|
+
'kicker.dashboard': 'Doctor',
|
|
163
|
+
'kicker.config': 'Configuration',
|
|
164
|
+
'kicker.sessions': 'Sessions',
|
|
165
|
+
'kicker.usage': 'Usage',
|
|
166
|
+
'kicker.orchestration': 'Tasks',
|
|
167
|
+
'kicker.market': 'Skills',
|
|
168
|
+
'kicker.plugins': 'Plugins',
|
|
169
|
+
'kicker.docs': 'Docs',
|
|
170
|
+
'kicker.trash': '回收站',
|
|
171
|
+
'kicker.settings': 'Settings',
|
|
172
|
+
|
|
173
|
+
'title.dashboard': 'Dashboard / Doctor',
|
|
174
|
+
'title.config': '本地配置控制台',
|
|
175
|
+
'title.sessions': '会话与导出',
|
|
176
|
+
'title.usage': '本地用量与趋势',
|
|
177
|
+
'title.orchestration': '任务编排',
|
|
178
|
+
'title.market': 'Skills 安装与同步',
|
|
179
|
+
'title.plugins': '插件与模板',
|
|
180
|
+
'title.docs': 'CLI 安装与文档',
|
|
181
|
+
'title.settings': '系统与数据设置',
|
|
182
|
+
|
|
183
|
+
'subtitle.dashboard': '聚合状态与诊断入口。',
|
|
184
|
+
'subtitle.config': '管理本地配置与模型。',
|
|
185
|
+
'subtitle.sessions': '浏览与导出会话。',
|
|
186
|
+
'subtitle.usage': '查看近 7 / 30 天用量。',
|
|
187
|
+
'subtitle.orchestration': '规划、排队、执行与回看本地任务。',
|
|
188
|
+
'subtitle.market': '管理本地 Skills。',
|
|
189
|
+
'subtitle.plugins': '管理模板化 prompt 与可复用插件。',
|
|
190
|
+
'subtitle.docs': '查看 CLI 安装命令与排障。',
|
|
191
|
+
'subtitle.settings': '管理下载、目录与回收站。',
|
|
192
|
+
'dashboard.doctor.title': 'Doctor',
|
|
193
|
+
'dashboard.doctor.runChecks': '运行检查',
|
|
194
|
+
'dashboard.doctor.checking': '检查中...',
|
|
195
|
+
'dashboard.doctor.export': '导出报告',
|
|
196
|
+
'dashboard.doctor.export.json': '导出 JSON',
|
|
197
|
+
'dashboard.doctor.export.md': '导出 Markdown',
|
|
198
|
+
'dashboard.doctor.open': '打开',
|
|
199
|
+
'doctor.action.openConfig': '打开 Config',
|
|
200
|
+
'doctor.action.checkProvider': '检查 Provider 配置',
|
|
201
|
+
'doctor.action.openUsage': '打开 Usage',
|
|
202
|
+
'doctor.action.openSessions': '打开 Sessions',
|
|
203
|
+
'doctor.action.openTasks': '打开 Tasks',
|
|
204
|
+
'doctor.action.viewTaskLogs': '查看 Tasks / Logs',
|
|
205
|
+
'doctor.action.openSkills': '打开 Skills',
|
|
206
|
+
'doctor.issue.configNotReady.problem': '配置文件未就绪',
|
|
207
|
+
'doctor.issue.configNotReady.impact': '可能导致 provider/model 无法读取,模型列表与请求将不可用。',
|
|
208
|
+
'doctor.issue.providerUnreachable.problem.remote-model-probe-unreachable': 'Provider 不可达',
|
|
209
|
+
'doctor.issue.providerUnreachable.problem.remote-model-probe-auth-failed': 'Provider 鉴权失败',
|
|
210
|
+
'doctor.issue.providerUnreachable.problem.remote-model-probe-not-found': 'Provider 返回 404',
|
|
211
|
+
'doctor.issue.providerUnreachable.problem.remote-model-probe-http-error': 'Provider 返回 HTTP 错误',
|
|
212
|
+
'doctor.issue.providerUnreachable.problem.remote-model-probe-error': 'Provider 探测失败',
|
|
213
|
+
'doctor.issue.providerUnreachable.problem.unknown': 'Provider 不可用',
|
|
214
|
+
'doctor.issue.providerUnreachable.impactAuth': '鉴权失败会导致模型列表/对话请求返回 401/403。',
|
|
215
|
+
'doctor.issue.providerUnreachable.impactNetwork': '远端不可达会导致模型列表/对话请求失败或超时。',
|
|
216
|
+
'doctor.issue.configHealthFailed.problem': '配置健康检查未通过',
|
|
217
|
+
'doctor.issue.configHealthFailed.impact': '可能导致部分功能不可用或行为不符合预期。',
|
|
218
|
+
'doctor.issue.usageError.problem': 'Usage 统计异常',
|
|
219
|
+
'doctor.issue.usageError.impact': 'Usage 页面可能无法展示趋势/汇总,Doctor 的用量诊断也会缺失。',
|
|
220
|
+
'doctor.issue.usageMissingModel.problem': '部分会话缺少模型信息',
|
|
221
|
+
'doctor.issue.usageMissingModel.impact': '会导致用量归因与成本估算不准确。',
|
|
222
|
+
'doctor.issue.tasksError.problem': 'Tasks 状态读取失败',
|
|
223
|
+
'doctor.issue.tasksError.impact': '可能导致编排队列/运行记录无法展示。',
|
|
224
|
+
'doctor.issue.tasksFailed.problem': '存在失败的任务运行',
|
|
225
|
+
'doctor.issue.tasksFailed.impact': '可能导致自动化流水线中断,需要查看日志并重试或修复输入。',
|
|
226
|
+
'doctor.issue.skillsError.problem': 'Skills 列表读取失败',
|
|
227
|
+
'doctor.issue.skillsError.impact': '会导致 Skills 页面无法正常展示或安装。',
|
|
228
|
+
'doctor.issue.skillsRootMissing.problem': 'Skills 目录不存在',
|
|
229
|
+
'doctor.issue.skillsRootMissing.impact': '会导致 Skills 安装/扫描为空;可在 Settings/Docs 按指引初始化目录。',
|
|
230
|
+
'doctor.issue.skillsMissingFiles.problem': '存在缺失 skill.json 的技能',
|
|
231
|
+
'doctor.issue.skillsMissingFiles.impact': '会导致部分技能无法被运行或同步。',
|
|
232
|
+
'dashboard.card.config': '配置',
|
|
233
|
+
'dashboard.card.sessions': '会话',
|
|
234
|
+
'dashboard.card.usage': '用量',
|
|
235
|
+
'dashboard.card.tasks': '任务',
|
|
236
|
+
'dashboard.card.skills': 'Skills',
|
|
237
|
+
'dashboard.kv.model': '模型',
|
|
238
|
+
'dashboard.kv.issue': '异常',
|
|
239
|
+
'dashboard.kv.active': '当前',
|
|
240
|
+
'dashboard.kv.sessions': '会话数',
|
|
241
|
+
'dashboard.kv.missingModel': '缺失模型',
|
|
242
|
+
'dashboard.kv.blockers': '阻塞',
|
|
243
|
+
'dashboard.kv.runs': '运行',
|
|
244
|
+
'dashboard.kv.target': '目标',
|
|
245
|
+
'dashboard.kv.root': '目录',
|
|
246
|
+
'dashboard.status.health': '健康',
|
|
247
|
+
'dashboard.status.busy': '忙闲',
|
|
248
|
+
'dashboard.status.models': '模型',
|
|
249
|
+
'dashboard.busy.init': '初始化',
|
|
250
|
+
'dashboard.busy.sessions': '会话加载',
|
|
251
|
+
'dashboard.busy.models': '模型加载',
|
|
252
|
+
'dashboard.busy.configApply': '配置应用',
|
|
253
|
+
'dashboard.busy.agents': 'AGENTS 保存',
|
|
254
|
+
'dashboard.busy.skills': 'Skills 管理',
|
|
255
|
+
'dashboard.busy.tasks': '任务编排',
|
|
256
|
+
'dashboard.busy.idle': '空闲',
|
|
257
|
+
'dashboard.message.none': '暂无提示',
|
|
258
|
+
'dashboard.sessionSource.codex': 'Codex',
|
|
259
|
+
'dashboard.sessionSource.claude': 'Claude Code',
|
|
260
|
+
'dashboard.sessionSource.gemini': 'Gemini CLI',
|
|
261
|
+
'dashboard.sessionSource.codebuddy': 'CodeBuddy Code',
|
|
262
|
+
'dashboard.sessionSource.all': '全部',
|
|
263
|
+
'dashboard.sessionPath.all': '全部路径',
|
|
264
|
+
'dashboard.sessionQuery.unsupported': '当前来源不支持',
|
|
265
|
+
'dashboard.sessionQuery.unset': '未设置',
|
|
266
|
+
'dashboard.healthStatus.failRead': '读取失败',
|
|
267
|
+
'dashboard.healthStatus.initializing': '初始化中',
|
|
268
|
+
'dashboard.healthStatus.ok': '正常',
|
|
269
|
+
'dashboard.modelStatus.loading': '加载中',
|
|
270
|
+
'dashboard.modelStatus.error': '加载异常',
|
|
271
|
+
'dashboard.modelStatus.ok': '正常',
|
|
272
|
+
'dashboard.health.ok': '检查通过',
|
|
273
|
+
'dashboard.health.fail': '检查失败',
|
|
274
|
+
'dashboard.health.issues': '{count} 条问题',
|
|
275
|
+
'dashboard.issues.title': '发现 {count} 条可操作问题',
|
|
276
|
+
'dashboard.state.loading': '加载中',
|
|
277
|
+
'dashboard.state.ready': '就绪',
|
|
278
|
+
'dashboard.state.idle': '未加载',
|
|
279
|
+
'dashboard.none': '无',
|
|
280
|
+
'dashboard.sessions.count': '{count} 条会话',
|
|
281
|
+
'dashboard.usage.range': '范围 {value}',
|
|
282
|
+
'dashboard.tasks.queue': 'run {running} / queue {queued}',
|
|
283
|
+
'dashboard.skills.count': 'installed {installed} / import {importable}',
|
|
284
|
+
'dashboard.providersHealth.title': 'Provider 健康状态',
|
|
285
|
+
'dashboard.providersHealth.current': '(当前)',
|
|
286
|
+
'dashboard.providersHealth.checking': '检查中...',
|
|
287
|
+
'dashboard.providersHealth.allOk': '所有 Provider 正常',
|
|
288
|
+
'dashboard.providersHealth.hasIssues': '{count} 个 Provider 存在问题',
|
|
289
|
+
|
|
290
|
+
// Plugins panel
|
|
291
|
+
'plugins.sidebar.title': 'Plugins',
|
|
292
|
+
'plugins.sidebar.note': '可复用的标准化工具。未来自定义插件应遵循相同结构。',
|
|
293
|
+
'plugins.sidebar.ariaList': '插件列表',
|
|
294
|
+
'plugins.catalog.promptTemplates.title': '提示词模板',
|
|
295
|
+
'plugins.catalog.promptTemplates.description': '标准化、模板驱动的提示词工具,支持变量、复制与导出。',
|
|
296
|
+
'plugins.status.standard': '标准',
|
|
297
|
+
'plugins.main.ariaWorkspace': '插件工作区',
|
|
298
|
+
'plugins.refresh': '刷新',
|
|
299
|
+
'plugins.refreshing': '刷新中...',
|
|
300
|
+
'plugins.promptTemplates.title': '提示词模板',
|
|
301
|
+
'plugins.promptTemplates.subtitle': '内置:代码注释润色({{code}})。复制后直接粘贴到输入框即可。',
|
|
302
|
+
'plugins.promptTemplates.mode.aria': '提示词模板模式',
|
|
303
|
+
'plugins.promptTemplates.mode.compose': '生成',
|
|
304
|
+
'plugins.promptTemplates.mode.manage': '管理',
|
|
305
|
+
'plugins.promptTemplates.compose.selectTemplate': '选择模板',
|
|
306
|
+
'plugins.promptTemplates.compose.chooseTemplate': '选择模板',
|
|
307
|
+
'plugins.promptTemplates.compose.chooseTemplateHint': '请选择一个模板开始生成。',
|
|
308
|
+
'plugins.promptTemplates.compose.builtinSuffix': '(内置)',
|
|
309
|
+
'plugins.promptTemplates.compose.empty': '暂无可用模板。',
|
|
310
|
+
'plugins.promptTemplates.compose.varsHint': '变量填写与新增请在「管理」中进行。',
|
|
311
|
+
'plugins.promptTemplates.compose.missingCount': '未填 {count} 项',
|
|
312
|
+
'plugins.promptTemplates.compose.jumpToMissing': '跳到未填',
|
|
313
|
+
'plugins.promptTemplates.compose.goManage': '去管理填写变量',
|
|
314
|
+
'plugins.promptTemplates.compose.outputTitle': '生成结果',
|
|
315
|
+
'plugins.promptTemplates.compose.outputHint': '点“复制”后直接粘贴到 Codex/Claude 输入框。',
|
|
316
|
+
'plugins.promptTemplates.compose.outputAria': '生成结果(提示词)',
|
|
317
|
+
'plugins.promptTemplates.compose.copy': '复制',
|
|
318
|
+
'plugins.promptTemplates.manage.searchAria': '搜索模板',
|
|
319
|
+
'plugins.promptTemplates.manage.searchPlaceholder': '搜索模板',
|
|
320
|
+
'plugins.promptTemplates.manage.create': '新建',
|
|
321
|
+
'plugins.promptTemplates.manage.export': '导出',
|
|
322
|
+
'plugins.promptTemplates.manage.import': '导入',
|
|
323
|
+
'plugins.promptTemplates.manage.loading': '正在加载模板...',
|
|
324
|
+
'plugins.promptTemplates.manage.empty': '暂无模板。',
|
|
325
|
+
'plugins.promptTemplates.manage.vars': '{count} vars',
|
|
326
|
+
'plugins.promptTemplates.manage.builtin': 'built-in',
|
|
327
|
+
'plugins.promptTemplates.manage.custom': 'custom',
|
|
328
|
+
'plugins.promptTemplates.manage.newTemplateName': '新模板',
|
|
329
|
+
'plugins.promptTemplates.editor.selectHint': '请选择一个模板进行编辑。',
|
|
330
|
+
'plugins.promptTemplates.editor.namePlaceholder': '模板名称',
|
|
331
|
+
'plugins.promptTemplates.editor.nameAria': '模板名称',
|
|
332
|
+
'plugins.promptTemplates.editor.duplicate': '复制',
|
|
333
|
+
'plugins.promptTemplates.editor.delete': '删除',
|
|
334
|
+
'plugins.promptTemplates.editor.save': '保存',
|
|
335
|
+
'plugins.promptTemplates.editor.builtinReadOnly': '内置模板为只读,不支持编辑/保存/删除/复制。',
|
|
336
|
+
'plugins.promptTemplates.editor.descPlaceholder': '描述(可选)',
|
|
337
|
+
'plugins.promptTemplates.editor.descAria': '模板描述',
|
|
338
|
+
'plugins.promptTemplates.editor.templateLabel': '模板',
|
|
339
|
+
'plugins.promptTemplates.editor.templateAria': '模板内容',
|
|
340
|
+
'plugins.promptTemplates.editor.templatePlaceholder': '在这里编写模板。使用 {{var}} 占位符。',
|
|
341
|
+
'plugins.promptTemplates.vars.title': '变量',
|
|
342
|
+
'plugins.promptTemplates.vars.hint': '从模板中检测。填写后可渲染最终提示词。',
|
|
343
|
+
'plugins.promptTemplates.vars.reset': '重置',
|
|
344
|
+
'plugins.promptTemplates.vars.empty': '未检测到变量。',
|
|
345
|
+
'plugins.promptTemplates.vars.valuePlaceholder': '变量值:{name}',
|
|
346
|
+
'plugins.promptTemplates.preview.title': '预览',
|
|
347
|
+
'plugins.promptTemplates.preview.hint': '渲染结果(缺失变量会替换为空)。',
|
|
348
|
+
'plugins.promptTemplates.preview.copy': '复制',
|
|
349
|
+
'plugins.promptTemplates.preview.outputAria': '渲染结果(提示词)',
|
|
350
|
+
'plugins.promptTemplates.noPluginSelected': '请先从左侧选择一个插件。',
|
|
351
|
+
|
|
352
|
+
'plugins.meta.attribution': '创建者:{createdBy} · 维护者:{maintainers}',
|
|
353
|
+
'plugins.meta.createdBy': '创建者:{createdBy}',
|
|
354
|
+
'plugins.meta.maintainedBy': '维护者:{maintainers}',
|
|
355
|
+
|
|
356
|
+
// Built-in prompt templates
|
|
357
|
+
'plugins.builtin.commentPolish.name': '代码注释润色',
|
|
358
|
+
'plugins.builtin.commentPolish.desc': '轻微收敛以下代码注释 {{code}}',
|
|
359
|
+
'plugins.builtin.commentPolish.line1': '轻微收敛以下代码注释',
|
|
360
|
+
'plugins.builtin.ruleAck.name': '规则确认回复',
|
|
361
|
+
'plugins.builtin.ruleAck.desc': '请根据【{{rule}}】,收到请回复',
|
|
362
|
+
'plugins.builtin.ruleAck.line1': '请根据【{{rule}}】,收到请回复',
|
|
363
|
+
|
|
364
|
+
// Toasts
|
|
365
|
+
'toast.copy.empty': '没有可复制内容',
|
|
366
|
+
'toast.copy.ok': '已复制',
|
|
367
|
+
'toast.copy.fail': '复制失败',
|
|
368
|
+
'toast.save.ok': '已保存',
|
|
369
|
+
'toast.save.fail': '保存失败',
|
|
370
|
+
'toast.delete.ok': '已删除',
|
|
371
|
+
'toast.delete.fail': '删除失败',
|
|
372
|
+
'toast.export.empty': '没有可导出内容',
|
|
373
|
+
'toast.export.ok': '已导出',
|
|
374
|
+
'toast.export.fail': '导出失败',
|
|
375
|
+
'toast.import.ok': '导入成功',
|
|
376
|
+
'toast.import.fail': '导入失败',
|
|
377
|
+
'toast.import.notAvailable': '导入不可用',
|
|
378
|
+
'toast.import.readFileFail': '读取文件失败',
|
|
379
|
+
'toast.import.invalidJson': 'JSON 无效',
|
|
380
|
+
'toast.import.expectedArray': 'JSON 必须为数组',
|
|
381
|
+
'toast.export.notSupported': '当前不支持导出',
|
|
382
|
+
'toast.plugins.loadFail': '加载 Plugins 失败',
|
|
383
|
+
'toast.templates.builtinNotEditable': '内置模板不可编辑',
|
|
384
|
+
'toast.templates.builtinNotModifiable': '内置模板不可修改,请先复制再编辑',
|
|
385
|
+
'toast.templates.nameRequired': '模板名称不能为空',
|
|
386
|
+
'toast.templates.builtinNotDuplicable': '内置模板不可复制',
|
|
387
|
+
'toast.templates.builtinNotDeletable': '内置模板不可删除',
|
|
388
|
+
'toast.templates.deleteTitle': '删除模板',
|
|
389
|
+
'toast.templates.deleteMessage': '删除“{name}”?此操作无法撤销。',
|
|
390
|
+
'toast.templates.deleteConfirm': '删除',
|
|
391
|
+
'toast.templates.deleteCancel': '取消',
|
|
392
|
+
|
|
393
|
+
// Basic modals
|
|
394
|
+
'modal.providerAdd.title': '添加提供商',
|
|
395
|
+
'modal.providerEdit.title': '编辑提供商',
|
|
396
|
+
'modal.modelAdd.title': '添加模型',
|
|
397
|
+
'modal.modelManage.title': '管理模型',
|
|
398
|
+
'modal.claudeConfigAdd.title': '添加 Claude Code 配置',
|
|
399
|
+
'modal.claudeConfigEdit.title': '编辑 Claude Code 配置',
|
|
400
|
+
'field.useBuiltinTransform': '使用内建转换(兼容 OpenAI 格式)',
|
|
401
|
+
'hint.useBuiltinTransform': '开启后:写入的 base_url 会指向 codexmate 内建转换服务;Codex 使用的令牌固定为 codexmate。',
|
|
402
|
+
|
|
403
|
+
// Config template / agents modals
|
|
404
|
+
'modal.configTemplate.label': 'config.toml 模板',
|
|
405
|
+
'modal.configTemplate.mode.twoStep': '两步确认:先预览差异,再应用写入。',
|
|
406
|
+
'modal.configTemplate.mode.oneStep': '一步应用:点击“应用”直接写入。',
|
|
407
|
+
'diff.title.configTemplate': '差异预览(config.toml)',
|
|
408
|
+
'diff.generating': '生成中...',
|
|
409
|
+
'diff.failed': '生成失败',
|
|
410
|
+
'diff.noChanges': '未检测到改动',
|
|
411
|
+
'diff.hint.busy': '正在生成差异或应用中,操作暂不可用。',
|
|
412
|
+
'diff.hint.failedBack': '差异预览失败,请返回编辑后重试。',
|
|
413
|
+
'diff.hint.noChangesBack': '未检测到改动,可返回编辑继续修改或取消退出。',
|
|
414
|
+
'diff.hint.previewMode': '当前为预览模式,可点击“应用”写入或“返回编辑”继续修改。',
|
|
415
|
+
|
|
416
|
+
'modal.agents.export': '导出',
|
|
417
|
+
'modal.agents.copy': '复制',
|
|
418
|
+
'modal.agents.title': 'AGENTS.md 编辑器',
|
|
419
|
+
'modal.agents.hint': '保存后会写入目标 AGENTS.md(与 config.toml 同级)。',
|
|
420
|
+
'modal.agents.targetFile': '目标文件',
|
|
421
|
+
'modal.agents.contentLabel': 'AGENTS.md 内容',
|
|
422
|
+
'modal.agents.placeholder': '在这里编辑 AGENTS.md 内容',
|
|
423
|
+
'modal.agents.unsaved.previewModeHint': '预览模式:当前改动尚未保存,只有点击“应用”后才会写入文件。',
|
|
424
|
+
'modal.agents.unsaved.detectedHint': '检测到未保存改动:关闭页面或应用前请先保存。',
|
|
425
|
+
'modal.agents.hint.shortcuts': '快捷键:Esc(差异预览时返回编辑,编辑时关闭窗口)。',
|
|
426
|
+
'modal.agents.hint.twoStepSave': '保存需两步:先点击“确认”预览差异,再点击“应用”保存。',
|
|
427
|
+
'diff.tooLargeSkip': '内容过大,已跳过逐行差异预览',
|
|
428
|
+
'diff.viewHint.preview': '当前为预览模式,可点击“应用”保存或“返回编辑”继续修改。',
|
|
429
|
+
'diff.viewHint.truncated': '内容过大,已跳过预览,可点击“应用”保存或“返回编辑”继续修改。',
|
|
430
|
+
|
|
431
|
+
// Skills modal
|
|
432
|
+
'modal.skills.title': 'Skills 管理',
|
|
433
|
+
'modal.skills.subtitle': '管理当前宿主的本地 Skills。',
|
|
434
|
+
'modal.skills.target.aria': '选择 Skills 管理目标',
|
|
435
|
+
'modal.skills.rootDir': 'Skills 目录({label})',
|
|
436
|
+
'modal.skills.summary.target': '安装目标',
|
|
437
|
+
'modal.skills.summary.total': '本地总数',
|
|
438
|
+
'modal.skills.summary.withSkill': '含 SKILL.md',
|
|
439
|
+
'modal.skills.summary.missingSkill': '缺少 SKILL.md',
|
|
440
|
+
'modal.skills.summary.importable': '可导入',
|
|
441
|
+
'modal.skills.panel.aria': 'Skills 管理面板',
|
|
442
|
+
'modal.skills.local.title': '本地 Skills',
|
|
443
|
+
'modal.skills.local.note': '可检索、筛选与批量删除。',
|
|
444
|
+
'modal.skills.filter.keywordAria': '按名称或描述筛选 skill',
|
|
445
|
+
'modal.skills.filter.keywordPlaceholder': '按目录名/显示名/描述检索',
|
|
446
|
+
'modal.skills.filter.statusAria': '按 SKILL.md 状态筛选 skill',
|
|
447
|
+
'modal.skills.filter.status.all': '全部状态',
|
|
448
|
+
'modal.skills.filter.status.withSkill': '仅含 SKILL.md',
|
|
449
|
+
'modal.skills.filter.status.missingSkill': '仅缺少 SKILL.md',
|
|
450
|
+
'modal.skills.selection.stats': '已选 {selected}(筛选命中 {filtered} / {total},筛选内已选 {visibleSelected})',
|
|
451
|
+
'modal.skills.empty.local': '暂无可管理的 skill。',
|
|
452
|
+
'modal.skills.empty.filtered': '当前筛选条件下没有匹配的 skill。',
|
|
453
|
+
'modal.skills.pill.hasSkillFile': '含 SKILL.md',
|
|
454
|
+
'modal.skills.pill.missingSkillFile': '缺少 SKILL.md',
|
|
455
|
+
'modal.skills.pill.symlink': '符号链接',
|
|
456
|
+
'modal.skills.pill.dir': '目录',
|
|
457
|
+
'modal.skills.import.title': '跨应用导入',
|
|
458
|
+
'modal.skills.import.note': '扫描并导入到当前 {label}。',
|
|
459
|
+
'modal.skills.import.scan': '扫描可导入',
|
|
460
|
+
'modal.skills.import.stats': '已选 {selected} / {total},含 SKILL.md {configured},缺失 {missing}',
|
|
461
|
+
'modal.skills.import.emptyHint': '暂无可导入 skill,点击“扫描可导入”。',
|
|
462
|
+
'modal.skills.bulk.title': '批量操作',
|
|
463
|
+
'modal.skills.bulk.note': '右侧为导入操作,左侧为本地选择。',
|
|
464
|
+
'modal.skills.actions.zipImport': '导入 ZIP',
|
|
465
|
+
'modal.skills.actions.zipImporting': 'ZIP 导入中...',
|
|
466
|
+
'modal.skills.actions.exportSelected': '导出选中',
|
|
467
|
+
'modal.skills.actions.exporting': '导出中...',
|
|
468
|
+
'modal.skills.actions.importSelected': '导入选中',
|
|
469
|
+
'modal.skills.actions.importing': '导入中...',
|
|
470
|
+
'modal.skills.actions.deleteSelected': '删除选中',
|
|
471
|
+
'modal.skills.actions.deleting': '删除中...',
|
|
472
|
+
|
|
473
|
+
// OpenClaw config modal (quick)
|
|
474
|
+
'placeholder.openclawConfigNameExample': '例如: 默认配置',
|
|
475
|
+
'modal.openclaw.loadCurrent': '加载当前配置',
|
|
476
|
+
'modal.openclaw.quick.title': '新手快速配置',
|
|
477
|
+
'modal.openclaw.quick.readFromEditor': '从编辑器读取',
|
|
478
|
+
'modal.openclaw.quick.step1': '填写 Provider 与模型',
|
|
479
|
+
'modal.openclaw.quick.step3': '保存并应用',
|
|
480
|
+
'modal.openclaw.quick.providerHint': '会拼成 provider/model 作为主模型标识。',
|
|
481
|
+
'modal.openclaw.quick.baseUrlHintDefault': '已按 OpenClaw 内建 provider 默认值回填,可直接修改。',
|
|
482
|
+
'modal.openclaw.quick.baseUrlHintReadonly': '检测到外部引用,快速表单中只读显示;如需修改请使用原文编辑。',
|
|
483
|
+
'modal.openclaw.quick.apiKeyHintFromAuth': '当前值来自 OpenClaw 外部认证配置;修改后在“保存并应用”时会回写对应 auth profile。',
|
|
484
|
+
'modal.openclaw.quick.apiKeyHintReadonly': '检测到外部认证或引用,快速表单中只读显示;如需修改请使用原文编辑或对应认证配置。',
|
|
485
|
+
'modal.openclaw.quick.apiKeyHintKeep': '留空表示不覆盖现有 key。',
|
|
486
|
+
'placeholder.apiTypeExample': '例如: openai-responses',
|
|
487
|
+
'modal.openclaw.quick.modelTitle': '模型',
|
|
488
|
+
'placeholder.modelIdExample': '例如: gpt-4.1',
|
|
489
|
+
'placeholder.modelNameOptional': '留空则使用模型 ID',
|
|
490
|
+
'field.contextWindow': '上下文长度',
|
|
491
|
+
'field.maxOutput': '最大输出',
|
|
492
|
+
'hint.emptyNoChange': '留空表示不改动已有配置。',
|
|
493
|
+
'modal.openclaw.quick.optionsTitle': '选项',
|
|
494
|
+
'modal.openclaw.quick.setPrimary': '设为主模型',
|
|
495
|
+
'modal.openclaw.quick.overrideProvider': '覆盖同名 Provider 基础信息',
|
|
496
|
+
'modal.openclaw.quick.overrideModels': '覆盖同名模型列表',
|
|
497
|
+
'modal.openclaw.quick.optionsHint': '关闭覆盖会只补空缺字段。',
|
|
498
|
+
'modal.openclaw.quick.writeToEditor': '写入编辑器',
|
|
499
|
+
|
|
500
|
+
// Docs panel
|
|
501
|
+
'docs.title': 'CLI 安装文档',
|
|
502
|
+
'docs.subtitle': '查看 Claude Code / Gemini CLI / CodeBuddy Code / Codex CLI 命令。',
|
|
503
|
+
'docs.section.commands': '安装命令',
|
|
504
|
+
'docs.section.commandsNote': '命令可直接复制。',
|
|
505
|
+
'docs.section.faq': '常见问题',
|
|
506
|
+
'docs.section.faqNote': '常见问题见下。',
|
|
507
|
+
'docs.command.aria': '{name} 命令',
|
|
508
|
+
'docs.registryHintPrefix': '命令将附加:',
|
|
509
|
+
'docs.registryHintCustom': '请输入完整 URL(含 http/https),将自动附加到命令。',
|
|
510
|
+
'docs.registry.tencent': '腾讯云',
|
|
511
|
+
'docs.meta.bin': 'bin: {bin}',
|
|
512
|
+
'docs.termuxLabel': 'Termux',
|
|
513
|
+
'docs.termuxAria': 'Termux Codex CLI command',
|
|
514
|
+
'docs.rule.1': '命令按当前包管理器、镜像与操作生成。',
|
|
515
|
+
'docs.rule.2': '自定义镜像仅用于安装与升级。',
|
|
516
|
+
'docs.tip.win.1': 'PowerShell 报权限不足(EACCES/EPERM)时,请以管理员身份执行安装命令。',
|
|
517
|
+
'docs.tip.win.2': '安装后若仍提示找不到命令,重开终端并执行:where codex / where claude / where gemini / where codebuddy。',
|
|
518
|
+
'docs.tip.win.3': '公司网络受限时,可先切换镜像源快捷项(npmmirror / 腾讯云 / 自定义)。',
|
|
519
|
+
'docs.tip.unix.1': '出现 EACCES 权限错误时,优先修复 Node 全局目录权限,不建议直接 sudo npm。',
|
|
520
|
+
'docs.tip.unix.2': '安装后若命令未生效,重开终端并执行:which codex / which claude / which gemini / which codebuddy。',
|
|
521
|
+
'docs.tip.unix.3': '公司网络受限时,可先切换镜像源快捷项(npmmirror / 腾讯云 / 自定义)。',
|
|
522
|
+
|
|
523
|
+
// Sessions panel
|
|
524
|
+
'sessions.loading': '加载中...',
|
|
525
|
+
'sessions.sourceTitle': '会话来源',
|
|
526
|
+
'sessions.refresh': '刷新会话',
|
|
527
|
+
'sessions.refreshing': '刷新中...',
|
|
528
|
+
'sessions.allPaths': '全部路径',
|
|
529
|
+
'sessions.source.codex': 'Codex',
|
|
530
|
+
'sessions.source.claudeCode': 'Claude Code',
|
|
531
|
+
'sessions.source.gemini': 'Gemini CLI',
|
|
532
|
+
'sessions.source.codebuddy': 'CodeBuddy Code',
|
|
533
|
+
'sessions.loadingList': '会话加载中...',
|
|
534
|
+
'sessions.empty': '暂无可用会话记录',
|
|
535
|
+
'sessions.unknownTime': '未知时间',
|
|
536
|
+
|
|
537
|
+
'sessions.query.placeholder.enabled': '关键词检索(支持 Codex/Claude/Gemini/CodeBuddy,例:claude code)',
|
|
538
|
+
'sessions.query.placeholder.disabled': '当前来源暂不支持关键词检索',
|
|
539
|
+
'sessions.pin': '置顶',
|
|
540
|
+
'sessions.unpin': '取消置顶',
|
|
541
|
+
'sessions.copyResume': '复制恢复命令',
|
|
542
|
+
'sessions.preview.refresh': '刷新内容',
|
|
543
|
+
'sessions.preview.loading': '加载中...',
|
|
544
|
+
'sessions.preview.deleteHard': '直接删除',
|
|
545
|
+
'sessions.preview.moveToTrash': '移入回收站',
|
|
546
|
+
'sessions.preview.deleting': '删除中...',
|
|
547
|
+
'sessions.preview.moving': '移入中...',
|
|
548
|
+
'sessions.preview.export': '导出记录',
|
|
549
|
+
'sessions.preview.exporting': '导出中...',
|
|
550
|
+
'sessions.preview.convert': '生成派生会话',
|
|
551
|
+
'sessions.preview.converting': '生成中...',
|
|
552
|
+
'sessions.preview.convert.loadedOnly': '仅转换已加载消息',
|
|
553
|
+
'sessions.preview.importNative': '导入原生目录',
|
|
554
|
+
'sessions.preview.importingNative': '导入中...',
|
|
555
|
+
'sessions.preview.importNative.unsupported': '不支持此操作',
|
|
556
|
+
'sessions.preview.importNative.confirmTitle': '覆盖原生会话文件?',
|
|
557
|
+
'sessions.preview.importNative.confirmMessage': '原生会话文件已存在,覆盖后会替换目标工具原生目录中的同名会话。',
|
|
558
|
+
'sessions.preview.importNative.confirmText': '覆盖',
|
|
559
|
+
'sessions.preview.importNative.cancelled': '已取消导入',
|
|
560
|
+
'sessions.preview.importNative.conflict': '原生会话已存在',
|
|
561
|
+
'sessions.preview.importNative.invalidSource': '会话来源无效',
|
|
562
|
+
'sessions.preview.importNative.fileNotFound': '未找到会话文件',
|
|
563
|
+
'sessions.preview.importNative.nativePathUnavailable': '无法解析原生会话路径',
|
|
564
|
+
'sessions.preview.importNative.success': '已导入原生目录',
|
|
565
|
+
'sessions.preview.importNative.failed': '导入失败',
|
|
566
|
+
'sessions.preview.importNative.failedWithReason': '导入原生目录失败:{reason}',
|
|
567
|
+
'sessions.preview.copyLink': '复制链接',
|
|
568
|
+
'sessions.preview.copyPath': '复制路径',
|
|
569
|
+
'sessions.preview.loadingBody': '正在加载会话内容...',
|
|
570
|
+
'sessions.preview.emptyMsgs': '当前会话暂无可展示消息',
|
|
571
|
+
'sessions.preview.rendering': '正在渲染会话内容...',
|
|
572
|
+
'sessions.preview.rerender': '重新渲染',
|
|
573
|
+
'sessions.preview.preparing': '正在准备会话内容...',
|
|
574
|
+
'sessions.preview.clipped': '仅展示最近 {count} 条消息。',
|
|
575
|
+
'sessions.preview.shownCount': '已显示 {shown} / {total} 条',
|
|
576
|
+
'sessions.preview.loadMore': '加载更多(剩余 {remain})',
|
|
577
|
+
'sessions.preview.loadingMore': '正在加载更早消息...',
|
|
578
|
+
'sessions.timeline.aria': '会话时间轴',
|
|
579
|
+
'sessions.selectHint': '请先在左侧选择一个会话',
|
|
580
|
+
'sessions.role.all': '全部角色',
|
|
581
|
+
'sessions.role.user': '仅 User',
|
|
582
|
+
'sessions.role.assistant': '仅 Assistant',
|
|
583
|
+
'sessions.role.system': '仅 System',
|
|
584
|
+
'sessions.time.all': '全部时间',
|
|
585
|
+
'sessions.time.7d': '近 7 天',
|
|
586
|
+
'sessions.time.30d': '近 30 天',
|
|
587
|
+
'sessions.time.90d': '近 90 天',
|
|
588
|
+
'sessions.sort.time': '按时间',
|
|
589
|
+
'sessions.sort.hot': '按热度',
|
|
590
|
+
'sessions.sort.hotBadge': '热',
|
|
591
|
+
'sessions.filters.copyLink': '复制筛选链接',
|
|
592
|
+
'sessions.filters.urlBuildFail': '无法生成链接',
|
|
593
|
+
'sessions.filters.source': '来源',
|
|
594
|
+
'sessions.filters.path': '路径',
|
|
595
|
+
'sessions.filters.keyword': '关键词',
|
|
596
|
+
'sessions.filters.role': '角色',
|
|
597
|
+
'sessions.filters.time': '时间',
|
|
598
|
+
'sessions.roleLabel.user': 'User',
|
|
599
|
+
'sessions.roleLabel.system': 'System',
|
|
600
|
+
'sessions.roleLabel.assistant': 'Assistant',
|
|
601
|
+
|
|
602
|
+
// Usage panel
|
|
603
|
+
'usage.overview': 'Usage 概览',
|
|
604
|
+
'usage.range.aria': 'Usage 时间范围',
|
|
605
|
+
'usage.range.7d': '近 7 天',
|
|
606
|
+
'usage.range.30d': '近 30 天',
|
|
607
|
+
'usage.compare.toggle': '对比上周期',
|
|
608
|
+
'usage.compare.prev': '上周期',
|
|
609
|
+
'usage.compare.delta': '变化',
|
|
610
|
+
'usage.refresh': '刷新统计',
|
|
611
|
+
'usage.refreshing': '刷新中...',
|
|
612
|
+
'usage.loading': '正在加载 Usage 统计...',
|
|
613
|
+
'usage.empty': '暂无可用于统计的会话数据',
|
|
614
|
+
'usage.refreshOverlay': '正在刷新…',
|
|
615
|
+
'usage.copyTitle': '点击复制:{value}',
|
|
616
|
+
'usage.copySuccess': '已复制:{label}',
|
|
617
|
+
'usage.copyFail': '复制失败',
|
|
618
|
+
'usage.copyNone': '没有可复制内容',
|
|
619
|
+
'usage.daily.title': '每天消耗',
|
|
620
|
+
'usage.daily.subtitle': '按天汇总 token 与预估费用(费用各自按最大值归一显示)。',
|
|
621
|
+
'usage.daily.note': '说明:预估费用默认不含 Claude;仅在可匹配模型单价且会话记录 input/output token 时计算。',
|
|
622
|
+
'usage.heatmap.title': '活动热力图',
|
|
623
|
+
'usage.heatmap.subtitle': '按每天会话数聚合,支持 hover 查看详细数据。',
|
|
624
|
+
'usage.heatmap.legend.less': '少',
|
|
625
|
+
'usage.heatmap.legend.more': '多',
|
|
626
|
+
'usage.heatmap.tooltip': '{date} · {sessions} 会话 · {messages} 消息 · {tokens} token',
|
|
627
|
+
'usage.heatmap.aria': '{date},{sessions} 会话',
|
|
628
|
+
'usage.hourlyHeatmap.title': '7×24 活跃热力图',
|
|
629
|
+
'usage.hourlyHeatmap.subtitle': '按星期 × 小时聚合会话分布,深色 = 高活跃。',
|
|
630
|
+
'usage.hourlyHeatmap.tooltip': '{weekday} {hour}:00 · {sessions} 会话 · {messages} 消息 · {tokens} token',
|
|
631
|
+
'usage.hourlyHeatmap.legend.less': '少',
|
|
632
|
+
'usage.hourlyHeatmap.legend.more': '多',
|
|
633
|
+
'usage.legend.tokens': 'Token',
|
|
634
|
+
'usage.legend.cost': '预估费用',
|
|
635
|
+
'usage.table.date': '日期',
|
|
636
|
+
'usage.table.sessions': '会话',
|
|
637
|
+
'usage.table.messages': '消息',
|
|
638
|
+
'usage.table.tokens': 'Token',
|
|
639
|
+
'usage.table.cost': '预估费用',
|
|
640
|
+
'usage.trend.sessions': '会话趋势',
|
|
641
|
+
'usage.trend.messages': '消息趋势',
|
|
642
|
+
'usage.trend.activeHours': '活跃时段',
|
|
643
|
+
'usage.trend.sources': '来源洞察',
|
|
644
|
+
'usage.legend.codex': 'Codex',
|
|
645
|
+
'usage.legend.claude': 'Claude',
|
|
646
|
+
'usage.trend.sessions.codexTitle': 'Codex {count}',
|
|
647
|
+
'usage.trend.sessions.claudeTitle': 'Claude {count}',
|
|
648
|
+
'usage.trend.messages.barTitle': '{count} 条消息',
|
|
649
|
+
'usage.hour.title': '{hour}:00 · {count} 次会话',
|
|
650
|
+
'usage.source.row': '{sessions} 会话 · {messages} 消息 · 均值 {avg}',
|
|
651
|
+
'usage.summary.sessions': '总会话数',
|
|
652
|
+
'usage.summary.messages': '总消息数',
|
|
653
|
+
'usage.summary.tokens': '总 Token 数',
|
|
654
|
+
'usage.summary.contextWindow': '总上下文数',
|
|
655
|
+
'usage.summary.estimatedCost': '预估费用 · {range}',
|
|
656
|
+
'usage.estimatedCost.note.excludesClaudePrefix': '暂不含 Claude,',
|
|
657
|
+
'usage.estimatedCost.method.configured': '按已配置单价估算',
|
|
658
|
+
'usage.estimatedCost.method.catalog': '按公开模型目录估算',
|
|
659
|
+
'usage.estimatedCost.method.configuredAndCatalog': '按已配置单价 + 公开模型目录估算',
|
|
660
|
+
'usage.estimatedCost.detail.estimate': '{prefix}{method},估算 {estimate},覆盖 {covered}/{total} 个会话,约 {percent}% token',
|
|
661
|
+
'usage.estimatedCost.detail.missing': '{prefix}缺少可匹配的模型单价或 token 拆分。请先补 models.cost,或确认会话已记录 input/output token。',
|
|
662
|
+
'usage.summary.activeDuration': '活跃时长',
|
|
663
|
+
'usage.summary.activeDuration.title': '累计会话跨度 {value}',
|
|
664
|
+
'usage.summary.totalDuration': '总时长',
|
|
665
|
+
'usage.summary.totalDuration.title': '整体时间跨度 {value}',
|
|
666
|
+
'usage.summary.activeDays': '活跃天数',
|
|
667
|
+
'usage.summary.avgMessagesPerSession': '平均每会话消息',
|
|
668
|
+
'usage.summary.busiestDay': '最忙日',
|
|
669
|
+
'usage.summary.busiestHour': '高峰时段',
|
|
670
|
+
'usage.currentSession.title': '当前会话',
|
|
671
|
+
'usage.currentSession.apiDuration': 'API时长',
|
|
672
|
+
'usage.currentSession.totalDuration': '总时长',
|
|
673
|
+
'usage.currentSession.tokens': 'Token',
|
|
674
|
+
'usage.range.kicker.all': '全部',
|
|
675
|
+
'usage.range.kicker.30d': '近 30 天',
|
|
676
|
+
'usage.range.kicker.7d': '近 7 天',
|
|
677
|
+
'usage.copyTokenDay': '已复制:Token({day})',
|
|
678
|
+
'usage.copyCostDay': '已复制:预估费用({day})',
|
|
679
|
+
'usage.dayDetail.title': '{day} 详情',
|
|
680
|
+
'usage.dayDetail.subtitle': '选择日期可快速查看当天构成。',
|
|
681
|
+
'usage.dayDetail.pick': '选择日期',
|
|
682
|
+
'usage.dayDetail.empty': '请选择一个日期以查看当天构成。',
|
|
683
|
+
'usage.dayDetail.clear': '清除',
|
|
684
|
+
'usage.dayDetail.topSessions': 'Top 会话',
|
|
685
|
+
'usage.dayDetail.topModels': 'Top 模型',
|
|
686
|
+
'usage.models.title': '使用模型',
|
|
687
|
+
'usage.models.subtitle': '只列真实落盘的 model 名。',
|
|
688
|
+
'usage.models.kicker': '已识别 {modeled}/{total}',
|
|
689
|
+
'usage.models.count': '模型数',
|
|
690
|
+
'usage.models.coverage': '会话覆盖率',
|
|
691
|
+
'usage.models.missing': '缺 model',
|
|
692
|
+
'usage.models.noneTitle': '当前范围没读到模型名',
|
|
693
|
+
'usage.models.noneBody': '已扫描 {total} 个会话,但原始记录里没有可识别的 model 字段。',
|
|
694
|
+
'usage.models.providerOnly': '其中 {count} 个旧会话只写了 provider。',
|
|
695
|
+
'usage.models.missingNote.providerOnly': '另有 {count} 个会话没写模型名,未计入列表。',
|
|
696
|
+
'usage.models.missingNote': '另有 {count} 个会话缺少 model,未计入列表。',
|
|
697
|
+
'usage.models.missingListTitle': '仍缺模型名的会话',
|
|
698
|
+
'usage.models.chipTitle': '{model} · {sessions} 会话 · {messages} 消息{tokens}',
|
|
699
|
+
'usage.models.meta': '{sessions} 会话 · {messages} 消息{tokens}',
|
|
700
|
+
'usage.weekday.title': '工作日分布',
|
|
701
|
+
'usage.paths.title': '高频路径',
|
|
702
|
+
'usage.paths.empty': '暂无路径数据',
|
|
703
|
+
'usage.paths.count': '{count} 次',
|
|
704
|
+
'usage.paths.meta': '{messages} 消息{recent}',
|
|
705
|
+
'usage.paths.recent': ' · 最近 {label}',
|
|
706
|
+
'usage.recent.title': '近期活跃会话',
|
|
707
|
+
'usage.sessions.empty': '暂无会话数据',
|
|
708
|
+
'usage.sessions.messages': '{count} 消息',
|
|
709
|
+
'usage.sessions.topDensity': '消息密度最高',
|
|
710
|
+
|
|
711
|
+
// Config panel (Codex)
|
|
712
|
+
'config.addProvider': '新增提供商',
|
|
713
|
+
'toolConfig.allow': '允许写入',
|
|
714
|
+
'toolConfig.viewOnly': '只读模式',
|
|
715
|
+
'toolConfig.enableWrite': '打开写入开关',
|
|
716
|
+
'toolConfig.allowToast': '写入开关已打开',
|
|
717
|
+
'toolConfig.viewOnlyToast': '已切回只读模式',
|
|
718
|
+
'toolConfig.saveFailed': '保存写入开关失败',
|
|
719
|
+
'toolConfig.confirmTitle': '确认打开写入权限',
|
|
720
|
+
'toolConfig.confirmAllow': '打开写入',
|
|
721
|
+
'toolConfig.codex.title': 'Codex 提供商写入',
|
|
722
|
+
'toolConfig.codex.desc': '默认只读展示 Codex 提供商;打开后才允许修改 ~/.codex 配置。',
|
|
723
|
+
'toolConfig.codex.lockedTitle': 'Codex 提供商当前为只读',
|
|
724
|
+
'toolConfig.codex.lockedDesc': '这里不会写入 Codex 账号配置。要添加、切换、编辑或删除提供商,请先打开本 tab 的写入开关。',
|
|
725
|
+
'toolConfig.codex.confirmMessage': '打开后,Codex tab 内的提供商操作会写入 ~/.codex/config.toml、认证或模型相关配置。',
|
|
726
|
+
'toolConfig.claude.title': 'Claude 提供商写入',
|
|
727
|
+
'toolConfig.claude.desc': '默认只读展示 Claude 提供商;打开后才允许写入 Claude settings。',
|
|
728
|
+
'toolConfig.claude.lockedTitle': 'Claude 提供商当前为只读',
|
|
729
|
+
'toolConfig.claude.lockedDesc': '这里不会写入 Claude 配置。要添加、应用、编辑或删除提供商,请先打开本 tab 的写入开关。',
|
|
730
|
+
'toolConfig.claude.confirmMessage': '打开后,Claude tab 内的应用操作会写入 ~/.claude/settings.json 等 Claude 配置。',
|
|
731
|
+
'config.providerTemplate.title': '预设供应商',
|
|
732
|
+
'config.models': '模型',
|
|
733
|
+
'config.modelLoading': '加载中...',
|
|
734
|
+
'config.models.unlimited': '当前无模型列表,可手填。',
|
|
735
|
+
'config.models.error': '模型列表获取失败,可手填。',
|
|
736
|
+
'config.models.notInList.codex': '当前模型不在列表,可手填或改模板。',
|
|
737
|
+
'config.models.notInList.other': '当前模型不在列表,可手填。',
|
|
738
|
+
'config.template.editFirst': '先改模板,再应用。',
|
|
739
|
+
'config.template.bridgeCodexOnly': '{hint} 模板仅限 Codex 编辑。',
|
|
740
|
+
'config.localBridge.enabledCount': '已启用 {enabled}/{total}',
|
|
741
|
+
'config.template.openEditor': '打开模板编辑器',
|
|
742
|
+
'modal.configTemplate.title': 'Config 模板编辑器(手动确认应用)',
|
|
743
|
+
'modal.configTemplate.placeholder': '在这里编辑 config.toml 模板内容',
|
|
744
|
+
'config.serviceTier': '服务档',
|
|
745
|
+
'config.serviceTier.fast': 'fast(默认)',
|
|
746
|
+
'config.serviceTier.standard': 'standard',
|
|
747
|
+
'config.serviceTier.hint': '仅 fast 写入 {field}。',
|
|
748
|
+
'config.reasoningEffort': '推理强度',
|
|
749
|
+
'config.reasoningEffort.medium': 'medium(默认)',
|
|
750
|
+
'config.reasoningEffort.hint': '控制推理深度;high 更深。',
|
|
751
|
+
'config.contextBudget': '压缩阈值',
|
|
752
|
+
'config.reset': '重置',
|
|
753
|
+
'config.example': '例如: {value}',
|
|
754
|
+
'config.contextWindow.hint': '上下文上限,默认 190000。',
|
|
755
|
+
'config.autoCompact.hint': '自动压缩阈值,默认 185000。',
|
|
756
|
+
'config.agents.open': '打开 AGENTS.md',
|
|
757
|
+
'modal.agents.title.default': 'AGENTS.md 编辑器',
|
|
758
|
+
'modal.agents.title.claudeMd': 'CLAUDE.md 编辑器',
|
|
759
|
+
'modal.agents.title.openclaw': 'OpenClaw AGENTS.md 编辑器',
|
|
760
|
+
'modal.agents.hint.default': '保存后会写入目标 AGENTS.md(与 config.toml 同级)。',
|
|
761
|
+
'modal.agents.hint.claudeMd': '保存后会写入 ~/.claude/CLAUDE.md。',
|
|
762
|
+
'modal.agents.contentLabel.claudeMd': 'CLAUDE.md 内容',
|
|
763
|
+
'modal.agents.placeholder.claudeMd': '在这里编辑 CLAUDE.md 内容',
|
|
764
|
+
'modal.agents.hint.openclaw': '保存后会写入 OpenClaw Workspace 下的 AGENTS.md。',
|
|
765
|
+
'modal.agents.title.openclawWorkspaceFile': 'OpenClaw 工作区文件: {fileName}',
|
|
766
|
+
'modal.agents.hint.openclawWorkspaceFile': '保存后会写入 OpenClaw Workspace 下的 {fileName}。',
|
|
767
|
+
'config.url.unset': '未设 URL',
|
|
768
|
+
'config.model.unset': '未设置模型',
|
|
769
|
+
'config.badge.system': '系统',
|
|
770
|
+
'config.availabilityTest': '可用性测试',
|
|
771
|
+
'config.availabilityTestAria': '测试 {name} 可用性',
|
|
772
|
+
'config.health.title': '配置健康检查',
|
|
773
|
+
'config.health.run': '运行检查',
|
|
774
|
+
'config.health.running': '检查中...',
|
|
775
|
+
'config.health.hint': '会批量探测所有提供商可用性,并刷新延迟显示。',
|
|
776
|
+
'config.health.progress': '已完成 {done}/{total} · 失败 {failed}',
|
|
777
|
+
'config.health.ok': '检查通过',
|
|
778
|
+
'config.health.fail': '检查未通过',
|
|
779
|
+
'config.health.issues': '{count} 项问题',
|
|
780
|
+
'config.shareCommand': '分享命令',
|
|
781
|
+
'config.shareDisabled': '不可分享',
|
|
782
|
+
'config.shareCommand.aria': '分享导入命令',
|
|
783
|
+
'config.provider.edit.aria': '编辑提供商:{name}',
|
|
784
|
+
'config.provider.delete.aria': '删除提供商:{name}',
|
|
785
|
+
'config.provider.clone': '克隆',
|
|
786
|
+
'config.provider.clone.aria': '克隆提供商:{name}',
|
|
787
|
+
'app.loadingConfig': '加载配置中...',
|
|
788
|
+
'common.current': '当前 {value}',
|
|
789
|
+
'common.notSelected': '未选择',
|
|
790
|
+
'common.readFromEditor': '从编辑器读取',
|
|
791
|
+
'common.writeToEditor': '写入编辑器',
|
|
792
|
+
'sessions.sourceLabel': '来源:{value}',
|
|
793
|
+
'usage.rangeLabel': '范围:{value}',
|
|
794
|
+
'sessions.source.all': '全部',
|
|
795
|
+
'usage.range.all': '全部',
|
|
796
|
+
'usage.range.7d.short': '近 7 天',
|
|
797
|
+
'usage.range.30d.short': '近 30 天',
|
|
798
|
+
'orchestration.queueStats': '队列 {running} 运行中 · {queued} 等待中',
|
|
799
|
+
'orchestration.hero.kicker': '任务编排',
|
|
800
|
+
'orchestration.hero.title': '把需求拆成可执行步骤',
|
|
801
|
+
'orchestration.hero.subtitle': '先写目标,再预览计划,再执行。',
|
|
802
|
+
'orchestration.draft.reset': '重置草稿',
|
|
803
|
+
'orchestration.summary.aria': '任务编排概览',
|
|
804
|
+
'orchestration.summary.running': '运行中',
|
|
805
|
+
'orchestration.summary.queued': '排队中',
|
|
806
|
+
'orchestration.summary.runs': '运行记录',
|
|
807
|
+
'orchestration.readiness.target.label': '目标',
|
|
808
|
+
'orchestration.readiness.target.done': '已写目标',
|
|
809
|
+
'orchestration.readiness.target.missing': '还没写目标',
|
|
810
|
+
'orchestration.readiness.engine.label': '执行策略',
|
|
811
|
+
'orchestration.readiness.engine.codex': '使用 Codex 规划节点',
|
|
812
|
+
'orchestration.readiness.workflow.done': '已选 {count} 个 Workflow',
|
|
813
|
+
'orchestration.readiness.workflow.missing': '还没选 Workflow ID',
|
|
814
|
+
'orchestration.readiness.scope.label': '边界',
|
|
815
|
+
'orchestration.readiness.scope.done': '已补充说明',
|
|
816
|
+
'orchestration.readiness.scope.writeHint': '建议补说明后再写入',
|
|
817
|
+
'orchestration.readiness.scope.readonlyHint': '当前是只读,可直接试',
|
|
818
|
+
'orchestration.readiness.preview.label': '预览',
|
|
819
|
+
'orchestration.readiness.preview.missing': '还没生成计划',
|
|
820
|
+
'orchestration.readiness.preview.blocked': '有 {count} 个阻塞项',
|
|
821
|
+
'orchestration.readiness.preview.ready': '计划可用,{count} 个节点',
|
|
822
|
+
'orchestration.readiness.empty.title': '先写目标',
|
|
823
|
+
'orchestration.readiness.empty.summary': '先把想完成的结果写清楚,再让编排器拆节点。',
|
|
824
|
+
'orchestration.readiness.workflow.title': '缺少 Workflow',
|
|
825
|
+
'orchestration.readiness.workflow.summary': '你已经选了 Workflow 模式,但还没指定可复用流程。',
|
|
826
|
+
'orchestration.readiness.preview.title': '建议先预览',
|
|
827
|
+
'orchestration.readiness.preview.summary': '草稿已成形,先生成一次计划,确认节点和依赖再执行。',
|
|
828
|
+
'orchestration.readiness.blocked.title': '预览有阻塞',
|
|
829
|
+
'orchestration.readiness.blocked.summary': '当前计划里还有 {count} 个阻塞项,先处理它们。',
|
|
830
|
+
'orchestration.readiness.warn.title': '可以执行,但有提醒',
|
|
831
|
+
'orchestration.readiness.warn.summary': '计划已生成,但还有 {count} 条提醒值得先看一眼。',
|
|
832
|
+
'orchestration.readiness.dryRun.title': '适合先预演',
|
|
833
|
+
'orchestration.readiness.dryRun.summary': '现在可以安全地跑一次仅预演,先看结果再决定是否真实执行。',
|
|
834
|
+
'orchestration.readiness.ready.title': '可以执行',
|
|
835
|
+
'orchestration.readiness.ready.withFollowUps': '主目标和收尾动作都已具备,可以直接执行或入队。',
|
|
836
|
+
'orchestration.readiness.ready.summary': '主目标已经够清楚了,可以直接执行或入队。',
|
|
837
|
+
'orchestration.step1.title': '先把结果写清楚',
|
|
838
|
+
'orchestration.step1.subtitle': '只写会影响执行的内容。',
|
|
839
|
+
'orchestration.templates.title': '快捷示例',
|
|
840
|
+
'orchestration.templates.reviewFix.label': '修 review + 回归',
|
|
841
|
+
'orchestration.templates.reviewFix.target': '修复当前 PR review 评论,并补对应回归测试',
|
|
842
|
+
'orchestration.templates.reviewFix.notes': '不要改动无关模块;需要给出验证结果',
|
|
843
|
+
'orchestration.templates.reviewFix.followUps': '继续处理新增 review 评论\n最后更新 PR 摘要',
|
|
844
|
+
'orchestration.templates.planOnly.label': '只做排查规划',
|
|
845
|
+
'orchestration.templates.planOnly.target': '先排查问题根因并给出执行计划,不直接修改代码',
|
|
846
|
+
'orchestration.templates.planOnly.notes': '优先定位根因、影响范围和风险点',
|
|
847
|
+
'orchestration.templates.workflowBatch.label': 'Workflow 批处理',
|
|
848
|
+
'orchestration.templates.workflowBatch.target': '用 Workflow 跑一组固定检查并整理结果',
|
|
849
|
+
'orchestration.templates.workflowBatch.workflowIds': 'diagnose-config\nsafe-provider-switch',
|
|
850
|
+
'orchestration.templates.workflowBatch.notes': '输出统一结论,避免重复描述',
|
|
851
|
+
'orchestration.fields.target': '目标',
|
|
852
|
+
'orchestration.fields.target.placeholder': '例如:修复当前 PR review 评论,并补对应回归测试;不要改无关模块',
|
|
853
|
+
'orchestration.fields.target.hint': '一句话写清结果、边界和验收标准就够了。',
|
|
854
|
+
'orchestration.engine.codex': 'Codex',
|
|
855
|
+
'orchestration.engine.workflow': 'Workflow',
|
|
856
|
+
'orchestration.runMode.write': '写入',
|
|
857
|
+
'orchestration.runMode.readOnly': '只读',
|
|
858
|
+
'orchestration.runMode.dryRun': '仅预演',
|
|
859
|
+
'orchestration.pills.hasTitle': '标题已设',
|
|
860
|
+
'orchestration.pills.workflowCount': 'Workflow {count}',
|
|
861
|
+
'orchestration.pills.planNodes': '计划 {count} 节点',
|
|
862
|
+
'orchestration.step2.title': '选择执行方式',
|
|
863
|
+
'orchestration.step2.subtitle': '常用项默认展开,其余放高级设置。',
|
|
864
|
+
'orchestration.fields.engine': '引擎',
|
|
865
|
+
'orchestration.fields.runMode': '运行模式',
|
|
866
|
+
'orchestration.advanced.title': '高级设置',
|
|
867
|
+
'orchestration.fields.title': '标题',
|
|
868
|
+
'orchestration.fields.title.placeholder': '可选,默认从目标自动提取',
|
|
869
|
+
'orchestration.fields.notes': '说明',
|
|
870
|
+
'orchestration.fields.notes.placeholder': '例如:不要重写现有架构,只做增量实现',
|
|
871
|
+
'orchestration.fields.notes.hint': '补边界、禁区、风格要求或验证要求。',
|
|
872
|
+
'orchestration.fields.followUps': '后续动作(每行一条)',
|
|
873
|
+
'orchestration.fields.followUps.placeholder': '例如:\n继续处理 review 评论\n最后补回归测试',
|
|
874
|
+
'orchestration.fields.concurrency': '并发',
|
|
875
|
+
'orchestration.fields.concurrency.hint': '复杂任务先从 1~2 开始更稳。',
|
|
876
|
+
'orchestration.fields.autoFixRounds': '自动修复',
|
|
877
|
+
'orchestration.fields.autoFixRounds.hint': '失败后自动再试几轮。',
|
|
878
|
+
'orchestration.fields.workflowIds': 'Workflow ID(每行一条)',
|
|
879
|
+
'orchestration.fields.workflowIds.placeholder': '例如:\ndiagnose-config\nsafe-provider-switch',
|
|
880
|
+
'orchestration.fields.workflowIds.hint': '仅 Workflow 模式需要。当前本地可用 {count} 个。',
|
|
881
|
+
'orchestration.workflow.stepCount': '{count} 步',
|
|
882
|
+
'orchestration.step3.title': '先预览,再执行',
|
|
883
|
+
'orchestration.step3.subtitle': '先确认计划,再决定立即执行还是入队。',
|
|
884
|
+
'orchestration.actions.planning': '规划中...',
|
|
885
|
+
'orchestration.actions.previewOnly': '仅预览',
|
|
886
|
+
'orchestration.actions.preparing': '准备中...',
|
|
887
|
+
'orchestration.actions.generatePlan': '生成计划',
|
|
888
|
+
'orchestration.actions.planAndRun': '计划并执行',
|
|
889
|
+
'orchestration.actions.processing': '处理中...',
|
|
890
|
+
'orchestration.actions.queueAndStart': '入队并开始',
|
|
891
|
+
'orchestration.actions.caption': '“计划并执行”会在必要时自动刷新计划;批量任务用“入队并开始”。',
|
|
892
|
+
'orchestration.stage.title': '有内容时再展开工作区',
|
|
893
|
+
'orchestration.stage.subtitle': '先写目标,再预览计划。',
|
|
894
|
+
'orchestration.stage.pill.target': '写目标',
|
|
895
|
+
'orchestration.stage.pill.preview': '预览',
|
|
896
|
+
'orchestration.stage.pill.run': '执行或入队',
|
|
897
|
+
'orchestration.plan.title': '计划预览',
|
|
898
|
+
'orchestration.plan.subtitle': '先确认节点、波次和依赖。',
|
|
899
|
+
'orchestration.plan.summary.nodes': '节点数',
|
|
900
|
+
'orchestration.plan.summary.waves': '波次',
|
|
901
|
+
'orchestration.plan.summary.engine': '引擎',
|
|
902
|
+
'orchestration.plan.node.write': 'write',
|
|
903
|
+
'orchestration.plan.node.readOnly': 'read-only',
|
|
904
|
+
'orchestration.labels.dependencies': '依赖:',
|
|
905
|
+
'orchestration.labels.error': '错误:',
|
|
906
|
+
'orchestration.workbench.title': '执行工作台',
|
|
907
|
+
'orchestration.workbench.subtitle': '有内容时才展开。',
|
|
908
|
+
'orchestration.queue.start': '开始队列',
|
|
909
|
+
'orchestration.queue.starting': '启动中...',
|
|
910
|
+
'orchestration.workbench.tabs.aria': '任务编排工作台视图',
|
|
911
|
+
'orchestration.workbench.tabs.queue': '队列 {count}',
|
|
912
|
+
'orchestration.workbench.tabs.runs': '运行记录 {count}',
|
|
913
|
+
'orchestration.workbench.tabs.detail': '运行详情',
|
|
914
|
+
'orchestration.queue.empty.title': '当前没有排队任务',
|
|
915
|
+
'orchestration.queue.empty.subtitle': '批量任务可先入队,再启动队列。',
|
|
916
|
+
'orchestration.runs.empty.title': '还没有运行记录',
|
|
917
|
+
'orchestration.runs.empty.subtitle': '执行后会显示最近运行记录。',
|
|
918
|
+
'orchestration.detail.refresh': '刷新详情',
|
|
919
|
+
'orchestration.detail.retry': '重试',
|
|
920
|
+
'orchestration.detail.retrying': '重试中...',
|
|
921
|
+
'orchestration.detail.empty.title': '选择一条运行记录查看详情',
|
|
922
|
+
'orchestration.detail.empty.subtitle': '这里会显示节点状态、摘要和日志。',
|
|
923
|
+
'orchestration.detail.summary.status': '状态',
|
|
924
|
+
'orchestration.detail.summary.duration': '耗时',
|
|
925
|
+
'orchestration.detail.summary.nodes': '节点数',
|
|
926
|
+
'orchestration.detail.summary.summary': '摘要',
|
|
927
|
+
'orchestration.detail.node.meta': '{id} · attempts {attempts} · auto-fix {autoFix}',
|
|
928
|
+
'skills.localLabel': '{target} / 本地 Skills',
|
|
929
|
+
'skills.counts': '已装 {installed} · 可导入 {importable}',
|
|
930
|
+
|
|
931
|
+
// Sidebar status labels (compact)
|
|
932
|
+
'status.currentSource': '当前来源',
|
|
933
|
+
'status.sessionCount': '会话数',
|
|
934
|
+
'status.range': '统计范围',
|
|
935
|
+
'status.totalSessions': '总会话数',
|
|
936
|
+
'status.totalMessages': '总消息数',
|
|
937
|
+
'status.engine': '引擎',
|
|
938
|
+
'status.concurrency': '并发度',
|
|
939
|
+
'status.running': '运行中',
|
|
940
|
+
'status.queued': '排队中',
|
|
941
|
+
'status.runs': '历史 Runs',
|
|
942
|
+
'status.currentTarget': '当前目标',
|
|
943
|
+
'status.localSkills': '本地 Skills',
|
|
944
|
+
'status.importable': '可导入',
|
|
945
|
+
'status.importableDirect': '可直接导入',
|
|
946
|
+
'status.pm': '包管理器',
|
|
947
|
+
'status.action': '当前操作',
|
|
948
|
+
'status.registry': '镜像',
|
|
949
|
+
'status.claudeConfig': 'Claude 配置',
|
|
950
|
+
'status.claudeModel': 'Claude 模型',
|
|
951
|
+
'status.openclawConfig': 'OpenClaw 配置',
|
|
952
|
+
'status.workspaceFile': '工作区文件',
|
|
953
|
+
'status.configMode': '配置模式',
|
|
954
|
+
'status.currentProvider': '当前 Provider',
|
|
955
|
+
'status.currentModel': '当前模型',
|
|
956
|
+
'status.quickSwitchProvider': '快速切换提供商',
|
|
957
|
+
'side.usage.meta': '本地统计 / 趋势',
|
|
958
|
+
'side.orchestration.meta': '计划 / 队列 / Runs',
|
|
959
|
+
|
|
960
|
+
// Settings panel
|
|
961
|
+
'settings.tab.general': '通用',
|
|
962
|
+
'settings.tab.data': '数据',
|
|
963
|
+
'settings.tabs.aria': '设置分类',
|
|
964
|
+
'settings.quickSettings.title': '快捷设置',
|
|
965
|
+
'settings.language.sideLabel': '语言:{language}',
|
|
966
|
+
'settings.language.title': '语言',
|
|
967
|
+
'settings.language.meta': '选择 Web UI 的显示语言',
|
|
968
|
+
'settings.language.label': '界面语言',
|
|
969
|
+
'settings.language.hint': '语言偏好会保存在当前浏览器。',
|
|
970
|
+
'settings.sharePrefix.title': '分享命令前缀',
|
|
971
|
+
'settings.sharePrefix.meta': '影响 Web UI 里“复制分享命令”的前缀',
|
|
972
|
+
'settings.sharePrefix.label': '前缀',
|
|
973
|
+
'settings.sharePrefix.hint': '默认走项目内 npm start,也可切到全局 codexmate。该设置会缓存到浏览器本地。',
|
|
974
|
+
'settings.backup.title': '数据备份',
|
|
975
|
+
'settings.backup.meta': '导出 / 导入 Claude 与 Codex 配置',
|
|
976
|
+
'settings.claude.title': 'Claude 配置',
|
|
977
|
+
'settings.claude.meta': '备份 / 导入 ~/.claude',
|
|
978
|
+
'settings.codex.title': 'Codex 配置',
|
|
979
|
+
'settings.codex.meta': '备份 / 导入 ~/.codex',
|
|
980
|
+
'settings.backup.progress': '备份中 {percent}%',
|
|
981
|
+
'settings.backup.oneClickClaude': '一键备份 ~/.claude',
|
|
982
|
+
'settings.backup.importClaude': '导入 ~/.claude 备份',
|
|
983
|
+
'settings.backup.oneClickCodex': '一键备份 ~/.codex',
|
|
984
|
+
'settings.backup.importCodex': '导入 ~/.codex 备份',
|
|
985
|
+
'settings.importing': '导入中...',
|
|
986
|
+
|
|
987
|
+
'settings.trashConfig.title': '回收站配置',
|
|
988
|
+
'settings.trashConfig.meta': '回收站开关与自动清理天数',
|
|
989
|
+
'settings.deleteBehavior.title': '会话删除行为',
|
|
990
|
+
'settings.deleteBehavior.meta': '决定“删除”是否先进入回收站',
|
|
991
|
+
'settings.deleteBehavior.toggle': '删除会话时先移入回收站',
|
|
992
|
+
'settings.deleteBehavior.hint': '默认开启。关闭后,会话浏览里的删除会直接永久删除,不再进入回收站。',
|
|
993
|
+
|
|
994
|
+
'settings.trash.title': '回收站',
|
|
995
|
+
'settings.trash.meta': '已删除会话(可恢复/彻底删除)',
|
|
996
|
+
'settings.trash.refresh': '刷新列表',
|
|
997
|
+
'settings.trash.refreshing': '刷新中...',
|
|
998
|
+
'settings.trash.clear': '清空回收站',
|
|
999
|
+
'settings.trash.clearing': '清空中...',
|
|
1000
|
+
'settings.trash.loading': '正在加载回收站...',
|
|
1001
|
+
'settings.trash.empty': '回收站为空',
|
|
1002
|
+
'settings.trash.emptyHint': '保留期 {days} 天内没有已删除会话。',
|
|
1003
|
+
'settings.trash.retry': '回收站列表加载失败,请刷新重试',
|
|
1004
|
+
'settings.trash.restore': '恢复',
|
|
1005
|
+
'settings.trash.restoring': '恢复中...',
|
|
1006
|
+
'settings.trash.purge': '彻底删除',
|
|
1007
|
+
'settings.trash.purging': '删除中...',
|
|
1008
|
+
'settings.trash.workspace': '工作区',
|
|
1009
|
+
'settings.trash.originalFile': '原文件',
|
|
1010
|
+
'settings.trash.loadMore': '加载更多(剩余 {count} 项)',
|
|
1011
|
+
'settings.trash.retention': '自动清理',
|
|
1012
|
+
'settings.trash.retentionMeta': '超过保留天数的回收站记录将自动清除',
|
|
1013
|
+
'settings.trash.retentionLabel': '保留天数',
|
|
1014
|
+
'settings.trash.retentionUnit': '天',
|
|
1015
|
+
'settings.trash.retentionHint': '范围 1-365 天,默认 30 天。每次加载回收站时自动清理过期记录。',
|
|
1016
|
+
|
|
1017
|
+
'settings.webhook.title': 'Webhook',
|
|
1018
|
+
'settings.webhook.meta': '发送事件通知到外部服务',
|
|
1019
|
+
'settings.webhook.enabled': '已启用',
|
|
1020
|
+
'settings.webhook.disabled': '未启用',
|
|
1021
|
+
'settings.webhook.enable': '启用',
|
|
1022
|
+
'settings.webhook.edit': '编辑',
|
|
1023
|
+
'settings.webhook.configure': '配置',
|
|
1024
|
+
'settings.webhook.modalTitle': 'Webhook 设置',
|
|
1025
|
+
'settings.webhook.enabledLabel': '状态',
|
|
1026
|
+
'settings.webhook.enableToggle': '启用 Webhook',
|
|
1027
|
+
'settings.webhook.urlLabel': 'Webhook URL',
|
|
1028
|
+
'settings.webhook.eventsLabel': '事件',
|
|
1029
|
+
'settings.templateConfirm.title': '配置模板二次确认',
|
|
1030
|
+
'settings.templateConfirm.meta': '降低误写入风险',
|
|
1031
|
+
'settings.templateConfirm.toggle': '应用模板前先预览差异(两步:确认 → 应用)',
|
|
1032
|
+
'settings.templateConfirm.hint': '开启后:先展示差异预览,再确认写入。',
|
|
1033
|
+
|
|
1034
|
+
'settings.reset.title': '配置重置',
|
|
1035
|
+
'settings.reset.meta': '谨慎操作',
|
|
1036
|
+
'settings.reset.hint': '会先备份 config.toml,再写入默认配置。',
|
|
1037
|
+
'settings.reset.button': '重装配置',
|
|
1038
|
+
'settings.reset.loading': '重装中...',
|
|
1039
|
+
|
|
1040
|
+
// Market (Skills)
|
|
1041
|
+
'market.title': 'Skills 概览',
|
|
1042
|
+
'market.subtitle': '切换目标并查看本地 Skills。',
|
|
1043
|
+
'market.refresh': '刷新概览',
|
|
1044
|
+
'market.refreshing': '刷新中...',
|
|
1045
|
+
'market.openManager': '打开 Skills 管理',
|
|
1046
|
+
'market.target.aria': '选择 Skills 安装目标',
|
|
1047
|
+
'market.summary.target': '安装目标',
|
|
1048
|
+
'market.summary.total': '本地总数',
|
|
1049
|
+
'market.summary.configured': '含 SKILL.md',
|
|
1050
|
+
'market.summary.missing': '缺少 SKILL.md',
|
|
1051
|
+
'market.summary.importable': '可导入',
|
|
1052
|
+
'market.summary.importableDirect': '可直接导入',
|
|
1053
|
+
'market.root.fallback': '默认目录',
|
|
1054
|
+
|
|
1055
|
+
'market.installed.title': '已安装 Skills',
|
|
1056
|
+
'market.installed.note': '仅显示前 6 项。',
|
|
1057
|
+
'market.local.refresh': '刷新本地',
|
|
1058
|
+
'market.local.refreshing': '刷新中...',
|
|
1059
|
+
'market.local.loading': '正在加载本地 Skills...',
|
|
1060
|
+
'market.local.empty': '当前暂无已安装 skill。',
|
|
1061
|
+
'market.pill.verified': '已验证',
|
|
1062
|
+
'market.pill.missingSkill': '待补 SKILL.md',
|
|
1063
|
+
|
|
1064
|
+
'market.import.title': '可导入来源',
|
|
1065
|
+
'market.import.note': '扫描并导入到当前 {target}。',
|
|
1066
|
+
'market.import.scan': '扫描来源',
|
|
1067
|
+
'market.import.scanning': '扫描中...',
|
|
1068
|
+
'market.import.loading': '正在扫描可导入 skill...',
|
|
1069
|
+
'market.import.empty': '暂未扫描到可导入 skill。',
|
|
1070
|
+
'market.pill.importableDirect': '可直接导入',
|
|
1071
|
+
'market.pill.importMissing': '缺少 SKILL.md',
|
|
1072
|
+
|
|
1073
|
+
'market.actions.title': '分发入口',
|
|
1074
|
+
'market.actions.note': '操作均作用于当前安装目标。',
|
|
1075
|
+
'market.action.manage.title': '本地 Skills 管理',
|
|
1076
|
+
'market.action.manage.copy': '管理当前 {target} 的已装 skills',
|
|
1077
|
+
'market.action.crossImport.title': '跨应用导入',
|
|
1078
|
+
'market.action.crossImport.copy': '导入到当前 {target}',
|
|
1079
|
+
'market.action.zipImport.title': 'ZIP 导入',
|
|
1080
|
+
'market.action.zipImport.copy': '从 ZIP 导入到当前目标',
|
|
1081
|
+
|
|
1082
|
+
'market.help.title': '操作说明',
|
|
1083
|
+
'market.help.target.title': '目标切换',
|
|
1084
|
+
'market.help.target.copy': '当前操作写入 {target} 目录。',
|
|
1085
|
+
'market.help.crossImport.title': '跨应用导入',
|
|
1086
|
+
'market.help.crossImport.copy': '从其他宿主导入未托管 skill。',
|
|
1087
|
+
'market.help.zipImport.title': 'ZIP 导入',
|
|
1088
|
+
'market.help.zipImport.copy': '从 ZIP 导入本地 skill。',
|
|
1089
|
+
|
|
1090
|
+
// Claude config panel
|
|
1091
|
+
'claude.addProvider': '添加提供商',
|
|
1092
|
+
'claude.applyDefault': '默认应用到 ~/.claude/settings.json。',
|
|
1093
|
+
'claude.presetProviders': '预设供应商',
|
|
1094
|
+
'claude.customConfig': '自定义配置',
|
|
1095
|
+
'claude.model': '模型',
|
|
1096
|
+
'claude.model.placeholder': '例如: claude-3-7-sonnet',
|
|
1097
|
+
'claude.model.hint': '模型修改后会自动保存并应用到当前配置。',
|
|
1098
|
+
'claude.health.title': '配置健康检查',
|
|
1099
|
+
'claude.health.run': '运行检查',
|
|
1100
|
+
'claude.health.running': '检查中...',
|
|
1101
|
+
'claude.health.hint': '会批量探测所有 Claude 配置可用性,并刷新延迟显示。',
|
|
1102
|
+
'claude.health.progress': '已完成 {done}/{total} · 失败 {failed}',
|
|
1103
|
+
'claude.md.title': 'CLAUDE.md',
|
|
1104
|
+
'claude.md.open': '打开 CLAUDE.md',
|
|
1105
|
+
'claude.md.hint': '读写 ~/.claude/CLAUDE.md。',
|
|
1106
|
+
'claude.model.unset': '未设置模型',
|
|
1107
|
+
'claude.configured': '已配置',
|
|
1108
|
+
'claude.notConfigured': '未配置',
|
|
1109
|
+
'claude.action.edit': '编辑',
|
|
1110
|
+
'claude.action.delete': '删除',
|
|
1111
|
+
'claude.action.shareDisabled': '分享导入命令',
|
|
1112
|
+
'claude.action.editAria': '编辑 Claude 配置:{name}',
|
|
1113
|
+
'claude.action.deleteAria': '删除 Claude 配置:{name}',
|
|
1114
|
+
'claude.action.clone': '克隆',
|
|
1115
|
+
'claude.action.cloneAria': '克隆 Claude 配置:{name}',
|
|
1116
|
+
'claude.localBridge.poolTitle': '轮询池',
|
|
1117
|
+
'claude.localBridge.poolHint': '勾选参与负载均衡的提供商',
|
|
1118
|
+
'claude.localBridge.noProviders': '暂无可用提供商,请先添加直连提供商',
|
|
1119
|
+
'claude.localBridge.disabled': '未启用',
|
|
1120
|
+
'claude.localBridge.enabled': '已启用',
|
|
1121
|
+
|
|
1122
|
+
// OpenClaw config panel
|
|
1123
|
+
'openclaw.applyHint': '写入 ~/.openclaw/openclaw.json,支持 JSON5。',
|
|
1124
|
+
'openclaw.workspace.title': 'OpenClaw 工作区',
|
|
1125
|
+
'openclaw.configs.hint': '选择常用配置,或进入编辑器维护完整 JSON5。',
|
|
1126
|
+
'openclaw.agents.hint': '读写 Workspace 的 AGENTS.md,默认路径 ~/.openclaw/workspace/AGENTS.md。',
|
|
1127
|
+
'openclaw.agents.open': '打开 AGENTS.md',
|
|
1128
|
+
'openclaw.workspaceFile': '工作区文件',
|
|
1129
|
+
'openclaw.workspace.placeholder': '例如: SOUL.md',
|
|
1130
|
+
'openclaw.workspace.hint': '仅限 Workspace 内的 .md 文件。',
|
|
1131
|
+
'openclaw.workspace.open': '打开工作区文件',
|
|
1132
|
+
'openclaw.configured': '已配置',
|
|
1133
|
+
'openclaw.notConfigured': '未配置',
|
|
1134
|
+
'openclaw.action.edit': '编辑',
|
|
1135
|
+
'openclaw.action.delete': '删除',
|
|
1136
|
+
'modal.openclaw.quick.subtitle': '按 3 步完成:填 Provider 和模型,写入编辑器,保存并应用。',
|
|
1137
|
+
'modal.openclaw.quick.step2': '点击写入编辑器',
|
|
1138
|
+
'modal.openclaw.structured.writeHint': '写入编辑器会重排 JSON,注释可能丢失。',
|
|
1139
|
+
'openclaw.action.applyAria': '应用 OpenClaw 配置:{name}',
|
|
1140
|
+
'openclaw.action.editAria': '编辑 OpenClaw 配置:{name}',
|
|
1141
|
+
'openclaw.action.deleteAria': '删除 OpenClaw 配置:{name}'
|
|
1142
|
+
});
|
|
1143
|
+
|
|
1144
|
+
export { zh };
|