codexmate 0.0.45 → 0.0.47
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 +20 -7
- package/README.zh.md +20 -7
- package/cli.js +473 -3
- package/package.json +2 -1
- package/web-ui/app.js +27 -4
- package/web-ui/index.html +1 -0
- package/web-ui/modules/app.constants.mjs +13 -0
- package/web-ui/modules/app.methods.index.mjs +6 -0
- package/web-ui/modules/app.methods.opencode-config.mjs +228 -0
- package/web-ui/modules/app.methods.startup-claude.mjs +3 -1
- package/web-ui/modules/app.methods.tool-config-permissions.mjs +3 -2
- package/web-ui/modules/config-mode.computed.mjs +17 -1
- package/web-ui/modules/i18n/locales/en.mjs +42 -0
- package/web-ui/modules/i18n/locales/ja.mjs +42 -0
- package/web-ui/modules/i18n/locales/vi.mjs +43 -0
- package/web-ui/modules/i18n/locales/zh-tw.mjs +1269 -0
- package/web-ui/modules/i18n/locales/zh.mjs +42 -0
- package/web-ui/modules/i18n.dict.mjs +2 -0
- package/web-ui/modules/i18n.mjs +3 -2
- package/web-ui/partials/index/layout-header.html +30 -2
- package/web-ui/partials/index/panel-config-claude.html +6 -6
- package/web-ui/partials/index/panel-config-codex.html +6 -6
- package/web-ui/partials/index/panel-config-opencode.html +166 -0
- package/web-ui/res/web-ui-render.precompiled.js +467 -55
- package/web-ui/styles/controls-forms.css +62 -4
|
@@ -0,0 +1,1269 @@
|
|
|
1
|
+
const zhTw = Object.freeze({
|
|
2
|
+
// Global
|
|
3
|
+
'lang.zh': '中文',
|
|
4
|
+
'lang.zh-tw': '繁體中文',
|
|
5
|
+
'lang.en': 'English',
|
|
6
|
+
'lang.vi': '越南語',
|
|
7
|
+
'lang.label': '語言',
|
|
8
|
+
'nav.topTabs.aria': '導航',
|
|
9
|
+
|
|
10
|
+
// Common
|
|
11
|
+
'common.all': '全部',
|
|
12
|
+
'common.copy': '複製',
|
|
13
|
+
'common.paste': '粘貼',
|
|
14
|
+
'common.edit': '編輯',
|
|
15
|
+
'common.install': '安裝',
|
|
16
|
+
'common.update': '升級',
|
|
17
|
+
'common.uninstall': '解除安裝',
|
|
18
|
+
'common.official': '官方',
|
|
19
|
+
'common.custom': '自訂',
|
|
20
|
+
'common.rules': '規則',
|
|
21
|
+
'common.troubleshooting': '排障提示',
|
|
22
|
+
'common.command': '命令',
|
|
23
|
+
'common.mirror': '鏡像源',
|
|
24
|
+
'common.packageManager': '包管理器',
|
|
25
|
+
'common.action': '操作',
|
|
26
|
+
'common.targets': '目標數',
|
|
27
|
+
'common.currentPm': '目前包管理器',
|
|
28
|
+
'common.currentAction': '目前操作',
|
|
29
|
+
'common.mirrorActive': '鏡像',
|
|
30
|
+
'common.defaultOfficial': '官方預設',
|
|
31
|
+
'common.cancel': '取消',
|
|
32
|
+
'common.confirm': '確認',
|
|
33
|
+
'common.add': '添加',
|
|
34
|
+
'common.save': '保存',
|
|
35
|
+
'common.saveApply': '保存並應用',
|
|
36
|
+
'common.close': '關閉',
|
|
37
|
+
'common.delete': '刪除',
|
|
38
|
+
'common.clear': '清空',
|
|
39
|
+
'common.show': '顯示',
|
|
40
|
+
'common.hide': '隱藏',
|
|
41
|
+
'common.detail': '詳情',
|
|
42
|
+
'common.refresh': '重新整理',
|
|
43
|
+
'common.refreshing': '重新整理中...',
|
|
44
|
+
'common.loading': '載入中...',
|
|
45
|
+
'common.saving': '保存中...',
|
|
46
|
+
'common.sending': '發送中...',
|
|
47
|
+
'common.scanning': '掃描中...',
|
|
48
|
+
'common.export': '匯出',
|
|
49
|
+
'common.import': '匯入',
|
|
50
|
+
'common.apply': '應用',
|
|
51
|
+
'common.applying': '應用中...',
|
|
52
|
+
'common.confirming': '確認中...',
|
|
53
|
+
'common.preview': '預覽',
|
|
54
|
+
'common.previewing': '預覽中...',
|
|
55
|
+
'common.refreshFromText': '從文本重新整理',
|
|
56
|
+
'common.backToEdit': '返回編輯',
|
|
57
|
+
'common.selectAll': '全選',
|
|
58
|
+
'common.unselectAll': '取消全選',
|
|
59
|
+
'common.resetFilters': '重置篩選',
|
|
60
|
+
'common.notEditable': '不可編輯',
|
|
61
|
+
'common.notDeletable': '不可刪除',
|
|
62
|
+
'common.notLoaded': '未載入',
|
|
63
|
+
'common.exists': '已存在',
|
|
64
|
+
'common.notExistsWillCreateOnApply': '不存在,將在應用時創建',
|
|
65
|
+
'common.notExistsWillCreateOnSave': '不存在,將在保存時創建',
|
|
66
|
+
'common.none': '暫無',
|
|
67
|
+
'common.configured': '已設定',
|
|
68
|
+
'common.notConfigured': '未設定',
|
|
69
|
+
'common.enabled': '已啟用',
|
|
70
|
+
'common.disabled': '已停用',
|
|
71
|
+
'cli.missing.title': '{name} CLI 未安裝',
|
|
72
|
+
'cli.missing.subtitle': '請先安裝 {name} CLI 後再繼續使用此頁面。',
|
|
73
|
+
'cli.missing.openDocs': '打開安裝指南',
|
|
74
|
+
'cli.missing.commandAria': '{name} CLI 安裝命令',
|
|
75
|
+
|
|
76
|
+
// Brand
|
|
77
|
+
'brand.kicker.workspace': '工作區',
|
|
78
|
+
'brand.subtitle.localConfigSessionsWorkspace': '本地設定與會話工作區',
|
|
79
|
+
|
|
80
|
+
// Confirm dialog
|
|
81
|
+
'confirm.aria': '確認操作',
|
|
82
|
+
'confirm.title.default': '請確認操作',
|
|
83
|
+
'confirm.ok': '確認',
|
|
84
|
+
'confirm.cancel': '取消',
|
|
85
|
+
|
|
86
|
+
// Shared fields
|
|
87
|
+
'field.name': '名稱',
|
|
88
|
+
'field.configName': '設定名稱',
|
|
89
|
+
'field.apiEndpoint': 'API 端點',
|
|
90
|
+
'field.apiKey': '認證密鑰',
|
|
91
|
+
'field.baseUrl': 'Base URL',
|
|
92
|
+
'field.provider': '提供商',
|
|
93
|
+
'field.providerName': 'Provider 名稱',
|
|
94
|
+
'field.modelName': '模型名稱',
|
|
95
|
+
'field.model': '模型',
|
|
96
|
+
'field.message': '消息',
|
|
97
|
+
'field.varName': '變量名',
|
|
98
|
+
'field.targetFile': '目標文件',
|
|
99
|
+
'field.modelId': '模型 ID',
|
|
100
|
+
'field.displayName': '展示名稱',
|
|
101
|
+
'field.contextAndMaxOutput': '上下文與最大輸出',
|
|
102
|
+
'field.apiType': 'API 類型',
|
|
103
|
+
'field.env': '環境變量',
|
|
104
|
+
'field.allow': 'Allow',
|
|
105
|
+
'field.deny': 'Deny',
|
|
106
|
+
|
|
107
|
+
// Shared placeholders/hints
|
|
108
|
+
'placeholder.providerNameExample': '例如: myapi',
|
|
109
|
+
'placeholder.apiEndpointExample': 'https://api.example.com/v1',
|
|
110
|
+
'placeholder.providerName': '提供商名稱',
|
|
111
|
+
'placeholder.keepUnchanged': '留空則保持不變',
|
|
112
|
+
'hint.keepKeyUnchanged': '留空表示不修改密鑰',
|
|
113
|
+
'placeholder.modelExample': '例如: gpt-5',
|
|
114
|
+
'placeholder.configNameExample': '例如: 智譜GLM',
|
|
115
|
+
'placeholder.apiKeyExampleClaude': 'sk-ant-...',
|
|
116
|
+
'placeholder.baseUrlExampleClaude': 'https://open.bigmodel.cn/api/anthropic',
|
|
117
|
+
'placeholder.selectProvider': '請選擇提供商',
|
|
118
|
+
|
|
119
|
+
// Roles / labels
|
|
120
|
+
'role.you': '你',
|
|
121
|
+
'role.provider': '提供商',
|
|
122
|
+
'label.model': '模型:',
|
|
123
|
+
|
|
124
|
+
// Top tabs
|
|
125
|
+
'tab.dashboard': '概覽',
|
|
126
|
+
'tab.docs': '文檔',
|
|
127
|
+
'tab.config': '設定',
|
|
128
|
+
'tab.config.codex': 'Codex',
|
|
129
|
+
'tab.config.claude': 'Claude',
|
|
130
|
+
'tab.config.openclaw': 'OpenClaw',
|
|
131
|
+
'tab.config.opencode': 'OpenCode',
|
|
132
|
+
'tab.sessions': '會話',
|
|
133
|
+
'tab.usage': '用量',
|
|
134
|
+
'tab.orchestration': '任務',
|
|
135
|
+
'tab.market': 'Skills',
|
|
136
|
+
'tab.plugins': '插件',
|
|
137
|
+
'tab.settings': '設定',
|
|
138
|
+
'tab.prompts': 'Prompts',
|
|
139
|
+
|
|
140
|
+
// Side rail section titles
|
|
141
|
+
'side.overview': '概覽',
|
|
142
|
+
'side.docs': '文檔',
|
|
143
|
+
'side.config': '設定',
|
|
144
|
+
'side.sessions': '會話',
|
|
145
|
+
'side.prompts': 'Prompts',
|
|
146
|
+
'side.plugins': '插件',
|
|
147
|
+
'side.system': '系統',
|
|
148
|
+
'side.orchestration': '任務',
|
|
149
|
+
'side.skills': 'Skills',
|
|
150
|
+
|
|
151
|
+
// Side rail items
|
|
152
|
+
'side.overview.doctor': 'Doctor 面板',
|
|
153
|
+
'side.overview.doctor.meta': '總覽 / 診斷 / 跳轉',
|
|
154
|
+
'side.docs.cliInstall': 'CLI 安裝',
|
|
155
|
+
'side.docs.cliInstall.meta': '安裝 / 升級 / 解除安裝',
|
|
156
|
+
'side.update.available': '有新版本',
|
|
157
|
+
'side.update.availableWithVersion': '有新版本 v{version}',
|
|
158
|
+
'side.update.meta': '點擊查看更新命令',
|
|
159
|
+
'side.update.metaVersions': '目前 v{current} → 最新 v{latest}',
|
|
160
|
+
'side.update.checkFailed': '檢查最新版本失敗',
|
|
161
|
+
'side.update.check': '檢查更新',
|
|
162
|
+
'side.update.checking': '正在檢查更新…',
|
|
163
|
+
'side.update.checkingMeta': '正在連接 npm registry',
|
|
164
|
+
'side.update.upToDate': '已是最新',
|
|
165
|
+
'side.update.currentOnly': '目前 v{current}',
|
|
166
|
+
'side.update.retry': '重試版本檢查',
|
|
167
|
+
'side.config.codex': 'Codex',
|
|
168
|
+
'side.config.codex.meta': 'Provider / Model',
|
|
169
|
+
'side.config.claude': 'Claude Code',
|
|
170
|
+
'side.config.claude.meta': 'Claude Settings',
|
|
171
|
+
'side.config.openclaw': 'OpenClaw',
|
|
172
|
+
'side.config.openclaw.meta': 'JSON5 / AGENTS',
|
|
173
|
+
'side.config.opencode': 'OpenCode',
|
|
174
|
+
'side.config.opencode.meta': '設定 / Provider',
|
|
175
|
+
'side.sessions.browser': '會話瀏覽',
|
|
176
|
+
'side.sessions.browser.meta': '瀏覽 / 匯出 / 清理',
|
|
177
|
+
'side.prompts.agents': 'AGENTS.md',
|
|
178
|
+
'side.prompts.agents.meta': 'Codex 指令文件',
|
|
179
|
+
'side.prompts.claude': 'CLAUDE.md',
|
|
180
|
+
'side.prompts.claude.meta': 'Claude 指令文件',
|
|
181
|
+
'side.plugins.tools': '提示詞工具',
|
|
182
|
+
'side.plugins.tools.meta': '模板 / 變量',
|
|
183
|
+
'side.plugins.templatesCount': '{count} 個模板',
|
|
184
|
+
'side.system.settings': '運行設定',
|
|
185
|
+
'side.system.settings.meta': '資料 / 備份',
|
|
186
|
+
'side.newTab': '新建標籤頁',
|
|
187
|
+
|
|
188
|
+
// Header titles
|
|
189
|
+
'kicker.dashboard': 'Doctor',
|
|
190
|
+
'kicker.config': 'Configuration',
|
|
191
|
+
'kicker.sessions': 'Sessions',
|
|
192
|
+
'kicker.usage': 'Usage',
|
|
193
|
+
'kicker.orchestration': 'Tasks',
|
|
194
|
+
'kicker.market': 'Skills',
|
|
195
|
+
'kicker.plugins': 'Plugins',
|
|
196
|
+
'kicker.docs': 'Docs',
|
|
197
|
+
'kicker.trash': '回收站',
|
|
198
|
+
'kicker.settings': 'Settings',
|
|
199
|
+
'kicker.prompts': 'Prompts',
|
|
200
|
+
|
|
201
|
+
'title.dashboard': 'Dashboard / Doctor',
|
|
202
|
+
'title.config': '本地設定控制台',
|
|
203
|
+
'title.sessions': '會話與匯出',
|
|
204
|
+
'title.usage': '本地用量與趨勢',
|
|
205
|
+
'title.orchestration': '任務編排',
|
|
206
|
+
'title.market': 'Skills 安裝與同步',
|
|
207
|
+
'title.plugins': '插件與模板',
|
|
208
|
+
'title.docs': 'CLI 安裝與文檔',
|
|
209
|
+
'title.settings': '系統與資料設定',
|
|
210
|
+
'title.prompts': '指令文件編輯器',
|
|
211
|
+
|
|
212
|
+
'subtitle.dashboard': '聚合狀態與診斷入口。',
|
|
213
|
+
'subtitle.config': '管理本地設定與模型。',
|
|
214
|
+
'subtitle.sessions': '瀏覽與匯出會話。',
|
|
215
|
+
'subtitle.usage': '查看近 7 / 30 天用量。',
|
|
216
|
+
'subtitle.orchestration': '規劃、排隊、執行與回看本地任務。',
|
|
217
|
+
'subtitle.market': '管理本地 Skills。',
|
|
218
|
+
'subtitle.plugins': '管理模板化 prompt 與可複用插件。',
|
|
219
|
+
'subtitle.docs': '查看 CLI 安裝命令與排障。',
|
|
220
|
+
'subtitle.settings': '管理下載、目錄與回收站。',
|
|
221
|
+
'subtitle.prompts': '編輯 AGENTS.md 與 CLAUDE.md。',
|
|
222
|
+
'prompts.subTab.codex': 'AGENTS.md (Codex)',
|
|
223
|
+
'prompts.subTab.claude': 'CLAUDE.md (Claude)',
|
|
224
|
+
'dashboard.doctor.title': 'Doctor',
|
|
225
|
+
'dashboard.doctor.runChecks': '運行檢查',
|
|
226
|
+
'dashboard.doctor.checking': '檢查中...',
|
|
227
|
+
'dashboard.doctor.export': '匯出報告',
|
|
228
|
+
'dashboard.doctor.export.json': '匯出 JSON',
|
|
229
|
+
'dashboard.doctor.export.md': '匯出 Markdown',
|
|
230
|
+
'dashboard.doctor.open': '打開',
|
|
231
|
+
'doctor.action.openConfig': '打開 Config',
|
|
232
|
+
'doctor.action.checkProvider': '檢查 Provider 設定',
|
|
233
|
+
'doctor.action.openUsage': '打開 Usage',
|
|
234
|
+
'doctor.action.openSessions': '打開 Sessions',
|
|
235
|
+
'doctor.action.openTasks': '打開 Tasks',
|
|
236
|
+
'doctor.action.viewTaskLogs': '查看 Tasks / Logs',
|
|
237
|
+
'doctor.action.openSkills': '打開 Skills',
|
|
238
|
+
'doctor.issue.configNotReady.problem': '設定文件未就緒',
|
|
239
|
+
'doctor.issue.configNotReady.impact': '可能導致 provider/model 無法讀取,模型列表與請求將不可用。',
|
|
240
|
+
'doctor.issue.providerUnreachable.problem.remote-model-probe-unreachable': 'Provider 不可達',
|
|
241
|
+
'doctor.issue.providerUnreachable.problem.remote-model-probe-auth-failed': 'Provider 鑑權失敗',
|
|
242
|
+
'doctor.issue.providerUnreachable.problem.remote-model-probe-not-found': 'Provider 返回 404',
|
|
243
|
+
'doctor.issue.providerUnreachable.problem.remote-model-probe-http-error': 'Provider 返回 HTTP 錯誤',
|
|
244
|
+
'doctor.issue.providerUnreachable.problem.remote-model-probe-error': 'Provider 探測失敗',
|
|
245
|
+
'doctor.issue.providerUnreachable.problem.unknown': 'Provider 不可用',
|
|
246
|
+
'doctor.issue.providerUnreachable.impactAuth': '鑑權失敗會導致模型列表/對話請求返回 401/403。',
|
|
247
|
+
'doctor.issue.providerUnreachable.impactNetwork': '遠端不可達會導致模型列表/對話請求失敗或超時。',
|
|
248
|
+
'doctor.issue.configHealthFailed.problem': '設定健康檢查未通過',
|
|
249
|
+
'doctor.issue.configHealthFailed.impact': '可能導致部分功能不可用或行為不符合預期。',
|
|
250
|
+
'doctor.issue.usageError.problem': 'Usage 統計異常',
|
|
251
|
+
'doctor.issue.usageError.impact': 'Usage 頁面可能無法展示趨勢/彙總,Doctor 的用量診斷也會缺失。',
|
|
252
|
+
'doctor.issue.usageMissingModel.problem': '部分會話缺少模型資訊',
|
|
253
|
+
'doctor.issue.usageMissingModel.impact': '會導致用量歸因與成本估算不準確。',
|
|
254
|
+
'doctor.issue.tasksError.problem': 'Tasks 狀態讀取失敗',
|
|
255
|
+
'doctor.issue.tasksError.impact': '可能導致編排隊列/運行記錄無法展示。',
|
|
256
|
+
'doctor.issue.tasksFailed.problem': '存在失敗的任務運行',
|
|
257
|
+
'doctor.issue.tasksFailed.impact': '可能導致自動化流水線中斷,需要查看日誌並重試或修復輸入。',
|
|
258
|
+
'doctor.issue.skillsError.problem': 'Skills 列表讀取失敗',
|
|
259
|
+
'doctor.issue.skillsError.impact': '會導致 Skills 頁面無法正常展示或安裝。',
|
|
260
|
+
'doctor.issue.skillsRootMissing.problem': 'Skills 目錄不存在',
|
|
261
|
+
'doctor.issue.skillsRootMissing.impact': '會導致 Skills 安裝/掃描為空;可在 Settings/Docs 按指引初始化目錄。',
|
|
262
|
+
'doctor.issue.skillsMissingFiles.problem': '存在缺失 skill.json 的技能',
|
|
263
|
+
'doctor.issue.skillsMissingFiles.impact': '會導致部分技能無法被運行或同步。',
|
|
264
|
+
'dashboard.card.config': '設定',
|
|
265
|
+
'dashboard.card.sessions': '會話',
|
|
266
|
+
'dashboard.card.usage': '用量',
|
|
267
|
+
'dashboard.card.tasks': '任務',
|
|
268
|
+
'dashboard.card.skills': 'Skills',
|
|
269
|
+
'dashboard.kv.model': '模型',
|
|
270
|
+
'dashboard.kv.issue': '異常',
|
|
271
|
+
'dashboard.kv.active': '目前',
|
|
272
|
+
'dashboard.kv.sessions': '會話數',
|
|
273
|
+
'dashboard.kv.missingModel': '缺失模型',
|
|
274
|
+
'dashboard.kv.blockers': '阻塞',
|
|
275
|
+
'dashboard.kv.runs': '運行',
|
|
276
|
+
'dashboard.kv.target': '目標',
|
|
277
|
+
'dashboard.kv.root': '目錄',
|
|
278
|
+
'dashboard.status.health': '健康',
|
|
279
|
+
'dashboard.status.busy': '忙閒',
|
|
280
|
+
'dashboard.status.models': '模型',
|
|
281
|
+
'dashboard.busy.init': '初始化',
|
|
282
|
+
'dashboard.busy.sessions': '會話載入',
|
|
283
|
+
'dashboard.busy.models': '模型載入',
|
|
284
|
+
'dashboard.busy.configApply': '設定應用',
|
|
285
|
+
'dashboard.busy.agents': 'AGENTS 保存',
|
|
286
|
+
'dashboard.busy.skills': 'Skills 管理',
|
|
287
|
+
'dashboard.busy.tasks': '任務編排',
|
|
288
|
+
'dashboard.busy.idle': '空閒',
|
|
289
|
+
'dashboard.message.none': '暫無提示',
|
|
290
|
+
'dashboard.sessionSource.codex': 'Codex',
|
|
291
|
+
'dashboard.sessionSource.claude': 'Claude Code',
|
|
292
|
+
'dashboard.sessionSource.gemini': 'Gemini CLI',
|
|
293
|
+
'dashboard.sessionSource.codebuddy': 'CodeBuddy Code',
|
|
294
|
+
'dashboard.sessionSource.all': '全部',
|
|
295
|
+
'dashboard.sessionPath.all': '全部路徑',
|
|
296
|
+
'dashboard.sessionQuery.unsupported': '目前來源不支持',
|
|
297
|
+
'dashboard.sessionQuery.unset': '未設定',
|
|
298
|
+
'dashboard.healthStatus.failRead': '讀取失敗',
|
|
299
|
+
'dashboard.healthStatus.initializing': '初始化中',
|
|
300
|
+
'dashboard.healthStatus.ok': '正常',
|
|
301
|
+
'dashboard.modelStatus.loading': '載入中',
|
|
302
|
+
'dashboard.modelStatus.error': '載入異常',
|
|
303
|
+
'dashboard.modelStatus.ok': '正常',
|
|
304
|
+
'dashboard.health.ok': '檢查通過',
|
|
305
|
+
'dashboard.health.fail': '檢查失敗',
|
|
306
|
+
'dashboard.health.issues': '{count} 條問題',
|
|
307
|
+
'dashboard.issues.title': '發現 {count} 條可操作問題',
|
|
308
|
+
'dashboard.state.loading': '載入中',
|
|
309
|
+
'dashboard.state.ready': '就緒',
|
|
310
|
+
'dashboard.state.idle': '未載入',
|
|
311
|
+
'dashboard.none': '無',
|
|
312
|
+
'dashboard.sessions.count': '{count} 條會話',
|
|
313
|
+
'dashboard.usage.range': '範圍 {value}',
|
|
314
|
+
'dashboard.tasks.queue': 'run {running} / queue {queued}',
|
|
315
|
+
'dashboard.skills.count': 'installed {installed} / import {importable}',
|
|
316
|
+
'dashboard.providersHealth.title': 'Provider 健康狀態',
|
|
317
|
+
'dashboard.providersHealth.current': '(目前)',
|
|
318
|
+
'dashboard.providersHealth.checking': '檢查中...',
|
|
319
|
+
'dashboard.providersHealth.allOk': '所有 Provider 正常',
|
|
320
|
+
'dashboard.providersHealth.hasIssues': '{count} 個 Provider 存在問題',
|
|
321
|
+
|
|
322
|
+
// Plugins panel
|
|
323
|
+
'plugins.sidebar.title': 'Plugins',
|
|
324
|
+
'plugins.sidebar.note': '可複用的標準化工具。未來自訂插件應遵循相同結構。',
|
|
325
|
+
'plugins.sidebar.ariaList': '插件列表',
|
|
326
|
+
'plugins.catalog.promptTemplates.title': '提示詞模板',
|
|
327
|
+
'plugins.catalog.promptTemplates.description': '標準化、模板驅動的提示詞工具,支持變量、複製與匯出。',
|
|
328
|
+
'plugins.status.standard': '標準',
|
|
329
|
+
'plugins.main.ariaWorkspace': '插件工作區',
|
|
330
|
+
'plugins.refresh': '重新整理',
|
|
331
|
+
'plugins.refreshing': '重新整理中...',
|
|
332
|
+
'plugins.promptTemplates.title': '提示詞模板',
|
|
333
|
+
'plugins.promptTemplates.subtitle': '內置:代碼註釋潤色({{code}})。複製後直接粘貼到輸入框即可。',
|
|
334
|
+
'plugins.promptTemplates.mode.aria': '提示詞模板模式',
|
|
335
|
+
'plugins.promptTemplates.mode.compose': '生成',
|
|
336
|
+
'plugins.promptTemplates.mode.manage': '管理',
|
|
337
|
+
'plugins.promptTemplates.compose.selectTemplate': '選擇模板',
|
|
338
|
+
'plugins.promptTemplates.compose.chooseTemplate': '選擇模板',
|
|
339
|
+
'plugins.promptTemplates.compose.chooseTemplateHint': '請選擇一個模板開始生成。',
|
|
340
|
+
'plugins.promptTemplates.compose.builtinSuffix': '(內置)',
|
|
341
|
+
'plugins.promptTemplates.compose.empty': '暫無可用模板。',
|
|
342
|
+
'plugins.promptTemplates.compose.varsHint': '變量填寫與新增請在「管理」中進行。',
|
|
343
|
+
'plugins.promptTemplates.compose.missingCount': '未填 {count} 項',
|
|
344
|
+
'plugins.promptTemplates.compose.jumpToMissing': '跳到未填',
|
|
345
|
+
'plugins.promptTemplates.compose.goManage': '去管理填寫變量',
|
|
346
|
+
'plugins.promptTemplates.compose.outputTitle': '生成結果',
|
|
347
|
+
'plugins.promptTemplates.compose.outputHint': '點“複製”後直接粘貼到 Codex/Claude 輸入框。',
|
|
348
|
+
'plugins.promptTemplates.compose.outputAria': '生成結果(提示詞)',
|
|
349
|
+
'plugins.promptTemplates.compose.copy': '複製',
|
|
350
|
+
'plugins.promptTemplates.manage.searchAria': '搜尋模板',
|
|
351
|
+
'plugins.promptTemplates.manage.searchPlaceholder': '搜尋模板',
|
|
352
|
+
'plugins.promptTemplates.manage.create': '新建',
|
|
353
|
+
'plugins.promptTemplates.manage.export': '匯出',
|
|
354
|
+
'plugins.promptTemplates.manage.import': '匯入',
|
|
355
|
+
'plugins.promptTemplates.manage.loading': '正在載入模板...',
|
|
356
|
+
'plugins.promptTemplates.manage.empty': '暫無模板。',
|
|
357
|
+
'plugins.promptTemplates.manage.vars': '{count} vars',
|
|
358
|
+
'plugins.promptTemplates.manage.builtin': 'built-in',
|
|
359
|
+
'plugins.promptTemplates.manage.custom': 'custom',
|
|
360
|
+
'plugins.promptTemplates.manage.newTemplateName': '新模板',
|
|
361
|
+
'plugins.promptTemplates.editor.selectHint': '請選擇一個模板進行編輯。',
|
|
362
|
+
'plugins.promptTemplates.editor.namePlaceholder': '模板名稱',
|
|
363
|
+
'plugins.promptTemplates.editor.nameAria': '模板名稱',
|
|
364
|
+
'plugins.promptTemplates.editor.duplicate': '複製',
|
|
365
|
+
'plugins.promptTemplates.editor.delete': '刪除',
|
|
366
|
+
'plugins.promptTemplates.editor.save': '保存',
|
|
367
|
+
'plugins.promptTemplates.editor.builtinReadOnly': '內置模板為只讀,不支持編輯/保存/刪除/複製。',
|
|
368
|
+
'plugins.promptTemplates.editor.descPlaceholder': '描述(可選)',
|
|
369
|
+
'plugins.promptTemplates.editor.descAria': '模板描述',
|
|
370
|
+
'plugins.promptTemplates.editor.templateLabel': '模板',
|
|
371
|
+
'plugins.promptTemplates.editor.templateAria': '模板內容',
|
|
372
|
+
'plugins.promptTemplates.editor.templatePlaceholder': '在這裡編寫模板。使用 {{var}} 佔位符。',
|
|
373
|
+
'plugins.promptTemplates.vars.title': '變量',
|
|
374
|
+
'plugins.promptTemplates.vars.hint': '從模板中檢測。填寫後可渲染最終提示詞。',
|
|
375
|
+
'plugins.promptTemplates.vars.reset': '重置',
|
|
376
|
+
'plugins.promptTemplates.vars.empty': '未檢測到變量。',
|
|
377
|
+
'plugins.promptTemplates.vars.valuePlaceholder': '變量值:{name}',
|
|
378
|
+
'plugins.promptTemplates.preview.title': '預覽',
|
|
379
|
+
'plugins.promptTemplates.preview.hint': '渲染結果(缺失變量會取代為空)。',
|
|
380
|
+
'plugins.promptTemplates.preview.copy': '複製',
|
|
381
|
+
'plugins.promptTemplates.preview.outputAria': '渲染結果(提示詞)',
|
|
382
|
+
'plugins.promptTemplates.noPluginSelected': '請先從左側選擇一個插件。',
|
|
383
|
+
|
|
384
|
+
'plugins.meta.attribution': '創建者:{createdBy} · 維護者:{maintainers}',
|
|
385
|
+
'plugins.meta.createdBy': '創建者:{createdBy}',
|
|
386
|
+
'plugins.meta.maintainedBy': '維護者:{maintainers}',
|
|
387
|
+
|
|
388
|
+
// Built-in prompt templates
|
|
389
|
+
'plugins.builtin.commentPolish.name': '代碼註釋潤色',
|
|
390
|
+
'plugins.builtin.commentPolish.desc': '輕微收斂以下代碼註釋 {{code}}',
|
|
391
|
+
'plugins.builtin.commentPolish.line1': '輕微收斂以下代碼註釋',
|
|
392
|
+
'plugins.builtin.ruleAck.name': '規則確認回覆',
|
|
393
|
+
'plugins.builtin.ruleAck.desc': '生成規則確認回覆',
|
|
394
|
+
'plugins.builtin.ruleAck.line1': '請根據【{{rule}}】,收到請回復',
|
|
395
|
+
|
|
396
|
+
// Toasts
|
|
397
|
+
'toast.copy.empty': '沒有可複製內容',
|
|
398
|
+
'toast.copy.ok': '已複製',
|
|
399
|
+
'toast.copy.fail': '複製失敗',
|
|
400
|
+
'toast.link.fail': '無法生成鏈接',
|
|
401
|
+
'toast.save.ok': '已保存',
|
|
402
|
+
'toast.save.fail': '保存失敗',
|
|
403
|
+
'toast.agents.saved.agents': 'AGENTS.md 已保存',
|
|
404
|
+
'toast.agents.saved.claudeMd': 'CLAUDE.md 已保存',
|
|
405
|
+
'toast.agents.saved.openclaw': 'OpenClaw AGENTS.md 已保存',
|
|
406
|
+
'toast.agents.saved.workspace': '工作區文件已保存: {name}',
|
|
407
|
+
'toast.delete.ok': '已刪除',
|
|
408
|
+
'toast.delete.fail': '刪除失敗',
|
|
409
|
+
'toast.export.empty': '沒有可匯出內容',
|
|
410
|
+
'toast.export.ok': '已匯出',
|
|
411
|
+
'toast.export.fail': '匯出失敗',
|
|
412
|
+
'toast.import.ok': '匯入成功',
|
|
413
|
+
'toast.import.fail': '匯入失敗',
|
|
414
|
+
'toast.import.notAvailable': '匯入不可用',
|
|
415
|
+
'toast.import.readFileFail': '讀取文件失敗',
|
|
416
|
+
'toast.import.invalidJson': 'JSON 無效',
|
|
417
|
+
'toast.import.expectedArray': 'JSON 必須為數組',
|
|
418
|
+
'toast.export.notSupported': '目前不支持匯出',
|
|
419
|
+
'toast.plugins.loadFail': '載入 Plugins 失敗',
|
|
420
|
+
'toast.templates.builtinNotEditable': '內置模板不可編輯',
|
|
421
|
+
'toast.templates.builtinNotModifiable': '內置模板不可修改,請先複製再編輯',
|
|
422
|
+
'toast.templates.nameRequired': '模板名稱不能為空',
|
|
423
|
+
'toast.templates.builtinNotDuplicable': '內置模板不可複製',
|
|
424
|
+
'toast.templates.builtinNotDeletable': '內置模板不可刪除',
|
|
425
|
+
'toast.templates.deleteTitle': '刪除模板',
|
|
426
|
+
'toast.templates.deleteMessage': '刪除”{name}”?此操作無法撤銷。',
|
|
427
|
+
'toast.templates.deleteConfirm': '刪除',
|
|
428
|
+
'toast.templates.deleteCancel': '取消',
|
|
429
|
+
'toast.operation.success': '操作成功',
|
|
430
|
+
'toast.load.fail': '載入文件失敗',
|
|
431
|
+
'toast.apply.success': '設定已應用',
|
|
432
|
+
'toast.apply.fail': '應用設定失敗',
|
|
433
|
+
'toast.check.success': '檢查通過',
|
|
434
|
+
'toast.check.fail': '檢查失敗',
|
|
435
|
+
'toast.noChanges': '未檢測到改動',
|
|
436
|
+
'toast.template.loadFail': '載入模板失敗',
|
|
437
|
+
'toast.template.empty': '模板不能為空',
|
|
438
|
+
'toast.template.applied': '模板已應用',
|
|
439
|
+
'toast.template.appliedButRefreshFail': '模板已應用,但界面重新整理失敗,請手動重新整理',
|
|
440
|
+
'toast.template.applyFail': '應用模板失敗',
|
|
441
|
+
'toast.provider.addFail': '添加失敗',
|
|
442
|
+
'toast.provider.notDeletable': '該 provider 為保留項,不可刪除',
|
|
443
|
+
'toast.provider.deletedAndSwitched': '已刪除提供商,自動切換到 {provider}{model}',
|
|
444
|
+
'toast.provider.notEditable': '該 provider 為保留項,不可編輯',
|
|
445
|
+
'toast.provider.updateFail': '更新失敗',
|
|
446
|
+
'toast.provider.resetSuccess': '設定已重裝{backup}',
|
|
447
|
+
'toast.provider.resetFail': '重裝失敗',
|
|
448
|
+
'toast.provider.fieldsRequired': '名稱、URL、API Key 和模型名稱必填',
|
|
449
|
+
'toast.provider.urlRequired': 'URL 必填',
|
|
450
|
+
'toast.claude.modelRequired': '請輸入模型',
|
|
451
|
+
'toast.claude.apiKeyRequired': '請先設定 API Key',
|
|
452
|
+
'toast.claude.checkConfig': '請檢查 Claude 設定',
|
|
453
|
+
'toast.claude.savedWithoutKey': '已保存(未填寫 API Key)',
|
|
454
|
+
'toast.claude.applied': 'Claude 設定已生效',
|
|
455
|
+
'toast.claude.exists': '設定已存在',
|
|
456
|
+
'toast.claude.keepOne': '至少保留一項',
|
|
457
|
+
'toast.claude.externalAuth': '使用外部認證,無需 API Key',
|
|
458
|
+
'toast.claude.balanceEnabled': 'Claude 本地負載均衡已啟用',
|
|
459
|
+
'toast.claude.balanceDisabled': 'Claude 本地負載均衡已關閉',
|
|
460
|
+
'toast.claude.balanceEnableFail': '啟用本地負載均衡失敗',
|
|
461
|
+
'toast.claude.balanceRequireProvider': '請先添加並設定至少一個 Claude 提供商',
|
|
462
|
+
'toast.claude.loadSettingsFail': '載入 Claude settings 失敗',
|
|
463
|
+
'validation.claude.nameRequired': '設定名稱不能為空',
|
|
464
|
+
'validation.claude.nameExists': '名稱已存在',
|
|
465
|
+
'validation.claude.apiKeyRequired': 'API Key 必填',
|
|
466
|
+
'validation.claude.baseUrlRequired': 'Base URL 必填',
|
|
467
|
+
'validation.claude.baseUrlHttpOnly': 'Base URL 僅支持 http/https',
|
|
468
|
+
'validation.claude.modelRequired': '模型名稱必填',
|
|
469
|
+
'modal.claudeDelete.title': '刪除 Claude 設定',
|
|
470
|
+
'modal.claudeDelete.message': '確定刪除設定 "{name}"?',
|
|
471
|
+
'modal.claudeDelete.confirm': '刪除',
|
|
472
|
+
'modal.claudeDelete.cancel': '取消',
|
|
473
|
+
|
|
474
|
+
// Basic modals
|
|
475
|
+
'modal.providerAdd.title': '添加提供商',
|
|
476
|
+
'modal.providerEdit.title': '編輯提供商',
|
|
477
|
+
'modal.modelAdd.title': '添加模型',
|
|
478
|
+
'modal.modelManage.title': '管理模型',
|
|
479
|
+
'modal.claudeConfigAdd.title': '添加 Claude Code 設定',
|
|
480
|
+
'modal.claudeConfigEdit.title': '編輯 Claude Code 設定',
|
|
481
|
+
'field.useBuiltinTransform': '使用內建轉換(兼容 OpenAI 格式)',
|
|
482
|
+
'hint.useBuiltinTransform': '開啟後:寫入的 base_url 會指向 codexmate 內建轉換服務;Codex 使用的令牌固定為 codexmate。',
|
|
483
|
+
|
|
484
|
+
// Config template / agents modals
|
|
485
|
+
'modal.configTemplate.label': 'config.toml 模板',
|
|
486
|
+
'modal.configTemplate.mode.twoStep': '兩步確認:先預覽差異,再應用寫入。',
|
|
487
|
+
'modal.configTemplate.mode.oneStep': '一步應用:點擊“應用”直接寫入。',
|
|
488
|
+
'diff.title.configTemplate': '差異預覽(config.toml)',
|
|
489
|
+
'diff.generating': '生成中...',
|
|
490
|
+
'diff.failed': '生成失敗',
|
|
491
|
+
'diff.noChanges': '未檢測到改動',
|
|
492
|
+
'diff.hint.busy': '正在生成差異或應用中,操作暫不可用。',
|
|
493
|
+
'diff.hint.failedBack': '差異預覽失敗,請返回編輯後重試。',
|
|
494
|
+
'diff.hint.noChangesBack': '未檢測到改動,可返回編輯繼續修改或取消退出。',
|
|
495
|
+
'diff.hint.previewMode': '目前為預覽模式,可點擊”保存”寫入或”返回編輯”繼續修改。',
|
|
496
|
+
|
|
497
|
+
'modal.agents.export': '匯出',
|
|
498
|
+
'modal.agents.copy': '複製',
|
|
499
|
+
'modal.agents.title': 'AGENTS.md 編輯器',
|
|
500
|
+
'modal.agents.hint': '保存後會寫入目標 AGENTS.md(與 config.toml 同級)。',
|
|
501
|
+
'modal.agents.targetFile': '目標文件',
|
|
502
|
+
'modal.agents.contentLabel': 'AGENTS.md 內容',
|
|
503
|
+
'modal.agents.placeholder': '在這裡編輯 AGENTS.md 內容',
|
|
504
|
+
'modal.agents.unsaved.previewModeHint': '預覽模式:目前改動尚未保存,只有點擊”保存”後才會寫入文件。',
|
|
505
|
+
'modal.agents.unsaved.detectedHint': '檢測到未保存改動:關閉頁面或應用前請先保存。',
|
|
506
|
+
'modal.agents.hint.shortcuts': '快捷鍵:Esc(差異預覽時返回編輯,編輯時關閉窗口)。',
|
|
507
|
+
'modal.agents.hint.twoStepSave': '保存需兩步:先點擊”預覽”查看差異,再點擊”保存”寫入。',
|
|
508
|
+
'diff.tooLargeSkip': '內容過大,已跳過逐行差異預覽',
|
|
509
|
+
'diff.viewHint.preview': '目前為預覽模式,可點擊”保存”寫入或”返回編輯”繼續修改。',
|
|
510
|
+
'diff.viewHint.truncated': '內容過大,已跳過預覽,可點擊”保存”寫入或”返回編輯”繼續修改。',
|
|
511
|
+
|
|
512
|
+
// Skills modal
|
|
513
|
+
'modal.skills.title': 'Skills 管理',
|
|
514
|
+
'modal.skills.subtitle': '管理目前宿主的本地 Skills。',
|
|
515
|
+
'modal.skills.target.aria': '選擇 Skills 管理目標',
|
|
516
|
+
'modal.skills.rootDir': 'Skills 目錄({label})',
|
|
517
|
+
'modal.skills.summary.target': '安裝目標',
|
|
518
|
+
'modal.skills.summary.total': '本地總數',
|
|
519
|
+
'modal.skills.summary.withSkill': '含 SKILL.md',
|
|
520
|
+
'modal.skills.summary.missingSkill': '缺少 SKILL.md',
|
|
521
|
+
'modal.skills.summary.importable': '可匯入',
|
|
522
|
+
'modal.skills.panel.aria': 'Skills 管理面板',
|
|
523
|
+
'modal.skills.local.title': '本地 Skills',
|
|
524
|
+
'modal.skills.local.note': '可檢索、篩選與批量刪除。',
|
|
525
|
+
'modal.skills.filter.keywordAria': '按名稱或描述篩選 skill',
|
|
526
|
+
'modal.skills.filter.keywordPlaceholder': '按目錄名/顯示名/描述檢索',
|
|
527
|
+
'modal.skills.filter.statusAria': '按 SKILL.md 狀態篩選 skill',
|
|
528
|
+
'modal.skills.filter.status.all': '全部狀態',
|
|
529
|
+
'modal.skills.filter.status.withSkill': '僅含 SKILL.md',
|
|
530
|
+
'modal.skills.filter.status.missingSkill': '僅缺少 SKILL.md',
|
|
531
|
+
'modal.skills.selection.stats': '已選 {selected}(篩選命中 {filtered} / {total},篩選內已選 {visibleSelected})',
|
|
532
|
+
'modal.skills.empty.local': '暫無可管理的 skill。',
|
|
533
|
+
'modal.skills.empty.filtered': '目前篩選條件下沒有匹配的 skill。',
|
|
534
|
+
'modal.skills.pill.hasSkillFile': '含 SKILL.md',
|
|
535
|
+
'modal.skills.pill.missingSkillFile': '缺少 SKILL.md',
|
|
536
|
+
'modal.skills.pill.symlink': '符號鏈接',
|
|
537
|
+
'modal.skills.pill.dir': '目錄',
|
|
538
|
+
'modal.skills.import.title': '跨應用匯入',
|
|
539
|
+
'modal.skills.import.note': '掃描並匯入到目前 {label}。',
|
|
540
|
+
'modal.skills.import.scan': '掃描可匯入',
|
|
541
|
+
'modal.skills.import.stats': '已選 {selected} / {total},含 SKILL.md {configured},缺失 {missing}',
|
|
542
|
+
'modal.skills.import.emptyHint': '暫無可匯入 skill,點擊“掃描可匯入”。',
|
|
543
|
+
'modal.skills.bulk.title': '批量操作',
|
|
544
|
+
'modal.skills.bulk.note': '右側為匯入操作,左側為本地選擇。',
|
|
545
|
+
'modal.skills.actions.zipImport': '匯入 ZIP',
|
|
546
|
+
'modal.skills.actions.zipImporting': 'ZIP 匯入中...',
|
|
547
|
+
'modal.skills.actions.exportSelected': '匯出選中',
|
|
548
|
+
'modal.skills.actions.exporting': '匯出中...',
|
|
549
|
+
'modal.skills.actions.importSelected': '匯入選中',
|
|
550
|
+
'modal.skills.actions.importing': '匯入中...',
|
|
551
|
+
'modal.skills.actions.deleteSelected': '刪除選中',
|
|
552
|
+
'modal.skills.actions.deleting': '刪除中...',
|
|
553
|
+
|
|
554
|
+
// OpenClaw config modal (quick)
|
|
555
|
+
'placeholder.openclawConfigNameExample': '例如: 預設設定',
|
|
556
|
+
'modal.openclaw.loadCurrent': '載入目前設定',
|
|
557
|
+
'modal.openclaw.quick.title': '新手快速設定',
|
|
558
|
+
'modal.openclaw.quick.readFromEditor': '從編輯器讀取',
|
|
559
|
+
'modal.openclaw.quick.step1': '填寫 Provider 與模型',
|
|
560
|
+
'modal.openclaw.quick.step3': '保存並應用',
|
|
561
|
+
'modal.openclaw.quick.providerHint': '會拼成 provider/model 作為主模型標識。',
|
|
562
|
+
'modal.openclaw.quick.baseUrlHintDefault': '已按 OpenClaw 內建 provider 預設值回填,可直接修改。',
|
|
563
|
+
'modal.openclaw.quick.baseUrlHintReadonly': '檢測到外部引用,快速表單中只讀顯示;如需修改請使用原文編輯。',
|
|
564
|
+
'modal.openclaw.quick.apiKeyHintFromAuth': '目前值來自 OpenClaw 外部認證設定;修改後在“保存並應用”時會回寫對應 auth profile。',
|
|
565
|
+
'modal.openclaw.quick.apiKeyHintReadonly': '檢測到外部認證或引用,快速表單中只讀顯示;如需修改請使用原文編輯或對應認證設定。',
|
|
566
|
+
'modal.openclaw.quick.apiKeyHintKeep': '留空表示不覆蓋現有 key。',
|
|
567
|
+
'placeholder.apiTypeExample': '例如: openai-responses',
|
|
568
|
+
'modal.openclaw.quick.modelTitle': '模型',
|
|
569
|
+
'placeholder.modelIdExample': '例如: gpt-4.1',
|
|
570
|
+
'placeholder.modelNameOptional': '留空則使用模型 ID',
|
|
571
|
+
'field.contextWindow': '上下文長度',
|
|
572
|
+
'field.maxOutput': '最大輸出',
|
|
573
|
+
'hint.emptyNoChange': '留空表示不改動已有設定。',
|
|
574
|
+
'modal.openclaw.quick.optionsTitle': '選項',
|
|
575
|
+
'modal.openclaw.quick.setPrimary': '設為主模型',
|
|
576
|
+
'modal.openclaw.quick.overrideProvider': '覆蓋同名 Provider 基礎資訊',
|
|
577
|
+
'modal.openclaw.quick.overrideModels': '覆蓋同名模型列表',
|
|
578
|
+
'modal.openclaw.quick.optionsHint': '關閉覆蓋會只補空缺字段。',
|
|
579
|
+
'modal.openclaw.quick.writeToEditor': '寫入編輯器',
|
|
580
|
+
|
|
581
|
+
// Docs panel
|
|
582
|
+
'docs.title': 'CLI 安裝文檔',
|
|
583
|
+
'docs.subtitle': '查看 Claude Code / Gemini CLI / CodeBuddy Code / Codex CLI 命令。',
|
|
584
|
+
'docs.section.commands': '安裝命令',
|
|
585
|
+
'docs.section.commandsNote': '命令可直接複製。',
|
|
586
|
+
'docs.section.faq': '常見問題',
|
|
587
|
+
'docs.section.faqNote': '常見問題見下。',
|
|
588
|
+
'docs.command.aria': '{name} 命令',
|
|
589
|
+
'docs.registryHintPrefix': '命令將附加:',
|
|
590
|
+
'docs.registryHintCustom': '請輸入完整 URL(含 http/https),將自動附加到命令。',
|
|
591
|
+
'docs.registry.tencent': '騰訊雲',
|
|
592
|
+
'docs.meta.bin': 'bin: {bin}',
|
|
593
|
+
'docs.termuxLabel': 'Termux',
|
|
594
|
+
'docs.termuxAria': 'Termux Codex CLI command',
|
|
595
|
+
'docs.rule.1': '命令按目前包管理器、鏡像與操作生成。',
|
|
596
|
+
'docs.rule.2': '自訂鏡像僅用於安裝與升級。',
|
|
597
|
+
'docs.tip.win.1': 'PowerShell 報權限不足(EACCES/EPERM)時,請以管理員身份執行安裝命令。',
|
|
598
|
+
'docs.tip.win.2': '安裝後若仍提示找不到命令,重開終端並執行:where codex / where claude / where gemini / where codebuddy。',
|
|
599
|
+
'docs.tip.win.3': '公司網路受限時,可先切換鏡像源快捷項(npmmirror / 騰訊雲 / 自訂)。',
|
|
600
|
+
'docs.tip.unix.1': '出現 EACCES 權限錯誤時,優先修復 Node 全局目錄權限,不建議直接 sudo npm。',
|
|
601
|
+
'docs.tip.unix.2': '安裝後若命令未生效,重開終端並執行:which codex / which claude / which gemini / which codebuddy。',
|
|
602
|
+
'docs.tip.unix.3': '公司網路受限時,可先切換鏡像源快捷項(npmmirror / 騰訊雲 / 自訂)。',
|
|
603
|
+
|
|
604
|
+
// Sessions panel
|
|
605
|
+
'sessions.loading': '載入中...',
|
|
606
|
+
'sessions.sourceTitle': '會話來源',
|
|
607
|
+
'sessions.refresh': '重新整理會話',
|
|
608
|
+
'sessions.refreshing': '重新整理中...',
|
|
609
|
+
'sessions.allPaths': '全部路徑',
|
|
610
|
+
'sessions.source.codex': 'Codex',
|
|
611
|
+
'sessions.source.claudeCode': 'Claude Code',
|
|
612
|
+
'sessions.source.gemini': 'Gemini CLI',
|
|
613
|
+
'sessions.source.codebuddy': 'CodeBuddy Code',
|
|
614
|
+
'sessions.loadingList': '會話載入中...',
|
|
615
|
+
'sessions.empty': '暫無可用會話記錄',
|
|
616
|
+
'sessions.unknownTime': '未知時間',
|
|
617
|
+
|
|
618
|
+
'sessions.query.placeholder.enabled': '關鍵詞檢索(支持 Codex/Claude/Gemini/CodeBuddy,例:claude code)',
|
|
619
|
+
'sessions.query.placeholder.disabled': '目前來源暫不支持關鍵詞檢索',
|
|
620
|
+
'sessions.pin': '置頂',
|
|
621
|
+
'sessions.unpin': '取消置頂',
|
|
622
|
+
'sessions.copyResume': '複製恢復命令',
|
|
623
|
+
'sessions.preview.refresh': '重新整理內容',
|
|
624
|
+
'sessions.preview.loading': '載入中...',
|
|
625
|
+
'sessions.preview.deleteHard': '直接刪除',
|
|
626
|
+
'sessions.preview.moveToTrash': '移入回收站',
|
|
627
|
+
'sessions.preview.deleting': '刪除中...',
|
|
628
|
+
'sessions.preview.moving': '移入中...',
|
|
629
|
+
'sessions.preview.export': '匯出記錄',
|
|
630
|
+
'sessions.preview.exporting': '匯出中...',
|
|
631
|
+
'sessions.preview.convert': '生成派生會話',
|
|
632
|
+
'sessions.preview.converting': '生成中...',
|
|
633
|
+
'sessions.preview.convert.loadedOnly': '僅轉換已載入消息',
|
|
634
|
+
'sessions.preview.importNative': '匯入原生目錄',
|
|
635
|
+
'sessions.preview.importingNative': '匯入中...',
|
|
636
|
+
'sessions.preview.importNative.unsupported': '不支持此操作',
|
|
637
|
+
'sessions.preview.importNative.confirmTitle': '覆蓋原生會話文件?',
|
|
638
|
+
'sessions.preview.importNative.confirmMessage': '原生會話文件已存在,覆蓋後會取代目標工具原生目錄中的同名會話。',
|
|
639
|
+
'sessions.preview.importNative.confirmText': '覆蓋',
|
|
640
|
+
'sessions.preview.importNative.cancelled': '已取消匯入',
|
|
641
|
+
'sessions.preview.importNative.conflict': '原生會話已存在',
|
|
642
|
+
'sessions.preview.importNative.invalidSource': '會話來源無效',
|
|
643
|
+
'sessions.preview.importNative.fileNotFound': '未找到會話文件',
|
|
644
|
+
'sessions.preview.importNative.nativePathUnavailable': '無法解析原生會話路徑',
|
|
645
|
+
'sessions.preview.importNative.success': '已匯入原生目錄',
|
|
646
|
+
'sessions.preview.importNative.failed': '匯入失敗',
|
|
647
|
+
'sessions.preview.importNative.failedWithReason': '匯入原生目錄失敗:{reason}',
|
|
648
|
+
'sessions.preview.copyLink': '複製鏈接',
|
|
649
|
+
'sessions.preview.copyPath': '複製路徑',
|
|
650
|
+
'sessions.preview.openLink': '打開鏈接',
|
|
651
|
+
'sessions.preview.loadingBody': '正在載入會話內容...',
|
|
652
|
+
'sessions.preview.emptyMsgs': '目前會話暫無可展示消息',
|
|
653
|
+
'sessions.preview.rendering': '正在渲染會話內容...',
|
|
654
|
+
'sessions.preview.rerender': '重新渲染',
|
|
655
|
+
'sessions.preview.preparing': '正在準備會話內容...',
|
|
656
|
+
'sessions.preview.clipped': '僅展示最近 {count} 條消息。',
|
|
657
|
+
'sessions.preview.shownCount': '已顯示 {shown} / {total} 條',
|
|
658
|
+
'sessions.preview.loadMore': '載入更多(剩餘 {remain})',
|
|
659
|
+
'sessions.preview.loadingMore': '正在載入更早消息...',
|
|
660
|
+
'sessions.timeline.aria': '會話時間軸',
|
|
661
|
+
'sessions.selectHint': '請先在左側選擇一個會話',
|
|
662
|
+
'sessions.role.all': '全部角色',
|
|
663
|
+
'sessions.role.user': '僅 User',
|
|
664
|
+
'sessions.role.assistant': '僅 Assistant',
|
|
665
|
+
'sessions.role.system': '僅 System',
|
|
666
|
+
'sessions.time.all': '全部時間',
|
|
667
|
+
'sessions.time.7d': '近 7 天',
|
|
668
|
+
'sessions.time.30d': '近 30 天',
|
|
669
|
+
'sessions.time.90d': '近 90 天',
|
|
670
|
+
'sessions.sort.time': '按時間',
|
|
671
|
+
'sessions.sort.hot': '按熱度',
|
|
672
|
+
'sessions.sort.hotBadge': '熱',
|
|
673
|
+
'sessions.filters.copyLink': '複製篩選鏈接',
|
|
674
|
+
'sessions.filters.urlBuildFail': '無法生成鏈接',
|
|
675
|
+
'sessions.filters.source': '來源',
|
|
676
|
+
'sessions.filters.path': '路徑',
|
|
677
|
+
'sessions.filters.keyword': '關鍵詞',
|
|
678
|
+
'sessions.filters.role': '角色',
|
|
679
|
+
'sessions.filters.time': '時間',
|
|
680
|
+
'sessions.roleLabel.user': 'User',
|
|
681
|
+
'sessions.roleLabel.system': 'System',
|
|
682
|
+
'sessions.roleLabel.assistant': 'Assistant',
|
|
683
|
+
|
|
684
|
+
// Usage panel
|
|
685
|
+
'usage.overview': 'Usage 概覽',
|
|
686
|
+
'usage.range.aria': 'Usage 時間範圍',
|
|
687
|
+
'usage.range.7d': '近 7 天',
|
|
688
|
+
'usage.range.30d': '近 30 天',
|
|
689
|
+
'usage.compare.toggle': '對比上週期',
|
|
690
|
+
'usage.compare.prev': '上週期',
|
|
691
|
+
'usage.compare.delta': '變化',
|
|
692
|
+
'usage.refresh': '重新整理統計',
|
|
693
|
+
'usage.refreshing': '重新整理中...',
|
|
694
|
+
'usage.loading': '正在載入 Usage 統計...',
|
|
695
|
+
'usage.empty': '暫無可用於統計的會話資料',
|
|
696
|
+
'usage.refreshOverlay': '正在重新整理…',
|
|
697
|
+
'usage.copyTitle': '點擊複製:{value}',
|
|
698
|
+
'usage.copySuccess': '已複製:{label}',
|
|
699
|
+
'usage.copyFail': '複製失敗',
|
|
700
|
+
'usage.copyNone': '沒有可複製內容',
|
|
701
|
+
'usage.daily.title': '每天消耗',
|
|
702
|
+
'usage.daily.subtitle': '按天彙總 token 與預估費用(費用各自按最大值歸一顯示)。',
|
|
703
|
+
'usage.daily.note': '說明:預估費用預設不含 Claude;僅在可匹配模型單價且會話記錄 input/output token 時計算。',
|
|
704
|
+
'usage.heatmap.title': '活動熱力圖',
|
|
705
|
+
'usage.heatmap.subtitle': '按每天會話數聚合,支持 hover 查看詳細資料。',
|
|
706
|
+
'usage.heatmap.legend.less': '少',
|
|
707
|
+
'usage.heatmap.legend.more': '多',
|
|
708
|
+
'usage.heatmap.tooltip': '{date} · {sessions} 會話 · {messages} 消息 · {tokens} token',
|
|
709
|
+
'usage.heatmap.aria': '{date},{sessions} 會話',
|
|
710
|
+
'usage.hourlyHeatmap.title': '7×24 活躍熱力圖',
|
|
711
|
+
'usage.hourlyHeatmap.subtitle': '按星期 × 小時聚合會話分佈,深色 = 高活躍。',
|
|
712
|
+
'usage.hourlyHeatmap.tooltip': '{weekday} {hour}:00 · {sessions} 會話 · {messages} 消息 · {tokens} token',
|
|
713
|
+
'usage.hourlyHeatmap.legend.less': '少',
|
|
714
|
+
'usage.hourlyHeatmap.legend.more': '多',
|
|
715
|
+
'usage.legend.tokens': 'Token',
|
|
716
|
+
'usage.legend.cost': '預估費用',
|
|
717
|
+
'usage.table.date': '日期',
|
|
718
|
+
'usage.table.sessions': '會話',
|
|
719
|
+
'usage.table.messages': '消息',
|
|
720
|
+
'usage.table.tokens': 'Token',
|
|
721
|
+
'usage.table.cost': '預估費用',
|
|
722
|
+
'usage.trend.sessions': '會話趨勢',
|
|
723
|
+
'usage.trend.messages': '消息趨勢',
|
|
724
|
+
'usage.trend.activeHours': '活躍時段',
|
|
725
|
+
'usage.trend.sources': '來源洞察',
|
|
726
|
+
'usage.legend.codex': 'Codex',
|
|
727
|
+
'usage.legend.claude': 'Claude',
|
|
728
|
+
'usage.trend.sessions.codexTitle': 'Codex {count}',
|
|
729
|
+
'usage.trend.sessions.claudeTitle': 'Claude {count}',
|
|
730
|
+
'usage.trend.messages.barTitle': '{count} 條消息',
|
|
731
|
+
'usage.hour.title': '{hour}:00 · {count} 次會話',
|
|
732
|
+
'usage.source.row': '{sessions} 會話 · {messages} 消息 · 均值 {avg}',
|
|
733
|
+
'usage.summary.sessions': '總會話數',
|
|
734
|
+
'usage.summary.messages': '總消息數',
|
|
735
|
+
'usage.summary.tokens': '總 Token 數',
|
|
736
|
+
'usage.summary.contextWindow': '總上下文數',
|
|
737
|
+
'usage.summary.estimatedCost': '預估費用 · {range}',
|
|
738
|
+
'usage.estimatedCost.note.excludesClaudePrefix': '暫不含 Claude,',
|
|
739
|
+
'usage.estimatedCost.method.configured': '按已設定單價估算',
|
|
740
|
+
'usage.estimatedCost.method.catalog': '按公開模型目錄估算',
|
|
741
|
+
'usage.estimatedCost.method.configuredAndCatalog': '按已設定單價 + 公開模型目錄估算',
|
|
742
|
+
'usage.estimatedCost.detail.estimate': '{prefix}{method},估算 {estimate},覆蓋 {covered}/{total} 個會話,約 {percent}% token',
|
|
743
|
+
'usage.estimatedCost.detail.missing': '{prefix}缺少可匹配的模型單價或 token 拆分。請先補 models.cost,或確認會話已記錄 input/output token。',
|
|
744
|
+
'usage.summary.activeDuration': '活躍時長',
|
|
745
|
+
'usage.summary.activeDuration.title': '累計會話跨度 {value}',
|
|
746
|
+
'usage.summary.totalDuration': '總時長',
|
|
747
|
+
'usage.summary.totalDuration.title': '整體時間跨度 {value}',
|
|
748
|
+
'usage.summary.activeDays': '活躍天數',
|
|
749
|
+
'usage.summary.avgMessagesPerSession': '平均每會話消息',
|
|
750
|
+
'usage.summary.busiestDay': '最忙日',
|
|
751
|
+
'usage.summary.busiestHour': '高峰時段',
|
|
752
|
+
'usage.currentSession.title': '目前會話',
|
|
753
|
+
'usage.currentSession.apiDuration': 'API時長',
|
|
754
|
+
'usage.currentSession.totalDuration': '總時長',
|
|
755
|
+
'usage.currentSession.tokens': 'Token',
|
|
756
|
+
'usage.range.kicker.all': '全部',
|
|
757
|
+
'usage.range.kicker.30d': '近 30 天',
|
|
758
|
+
'usage.range.kicker.7d': '近 7 天',
|
|
759
|
+
'usage.copyTokenDay': '已複製:Token({day})',
|
|
760
|
+
'usage.copyCostDay': '已複製:預估費用({day})',
|
|
761
|
+
'usage.dayDetail.title': '{day} 詳情',
|
|
762
|
+
'usage.dayDetail.subtitle': '選擇日期可快速查看當天構成。',
|
|
763
|
+
'usage.dayDetail.pick': '選擇日期',
|
|
764
|
+
'usage.dayDetail.empty': '請選擇一個日期以查看當天構成。',
|
|
765
|
+
'usage.dayDetail.clear': '清除',
|
|
766
|
+
'usage.dayDetail.topSessions': 'Top 會話',
|
|
767
|
+
'usage.dayDetail.topModels': 'Top 模型',
|
|
768
|
+
'usage.models.title': '使用模型',
|
|
769
|
+
'usage.models.subtitle': '只列真實落盤的 model 名。',
|
|
770
|
+
'usage.models.kicker': '已識別 {modeled}/{total}',
|
|
771
|
+
'usage.models.count': '模型數',
|
|
772
|
+
'usage.models.coverage': '會話覆蓋率',
|
|
773
|
+
'usage.models.missing': '缺 model',
|
|
774
|
+
'usage.models.noneTitle': '目前範圍沒讀到模型名',
|
|
775
|
+
'usage.models.noneBody': '已掃描 {total} 個會話,但原始記錄裡沒有可識別的 model 字段。',
|
|
776
|
+
'usage.models.providerOnly': '其中 {count} 箇舊會話只寫了 provider。',
|
|
777
|
+
'usage.models.missingNote.providerOnly': '另有 {count} 個會話沒寫模型名,未計入列表。',
|
|
778
|
+
'usage.models.missingNote': '另有 {count} 個會話缺少 model,未計入列表。',
|
|
779
|
+
'usage.models.missingListTitle': '仍缺模型名的會話',
|
|
780
|
+
'usage.models.chipTitle': '{model} · {sessions} 會話 · {messages} 消息{tokens}',
|
|
781
|
+
'usage.models.meta': '{sessions} 會話 · {messages} 消息{tokens}',
|
|
782
|
+
'usage.weekday.title': '工作日分佈',
|
|
783
|
+
'usage.paths.title': '高頻路徑',
|
|
784
|
+
'usage.paths.empty': '暫無路徑資料',
|
|
785
|
+
'usage.paths.count': '{count} 次',
|
|
786
|
+
'usage.paths.meta': '{messages} 消息{recent}',
|
|
787
|
+
'usage.paths.recent': ' · 最近 {label}',
|
|
788
|
+
'usage.recent.title': '近期活躍會話',
|
|
789
|
+
'usage.sessions.empty': '暫無會話資料',
|
|
790
|
+
'usage.sessions.messages': '{count} 消息',
|
|
791
|
+
'usage.sessions.topDensity': '消息密度最高',
|
|
792
|
+
|
|
793
|
+
// Config panel (Codex)
|
|
794
|
+
'config.addProvider': '新增提供商',
|
|
795
|
+
'toolConfig.allow': '允許寫入',
|
|
796
|
+
'toolConfig.viewOnly': '只讀模式',
|
|
797
|
+
'toolConfig.enableWrite': '打開寫入開關',
|
|
798
|
+
'toolConfig.allowToast': '寫入開關已打開',
|
|
799
|
+
'toolConfig.viewOnlyToast': '已切回只讀模式',
|
|
800
|
+
'toolConfig.saveFailed': '保存寫入開關失敗',
|
|
801
|
+
'toolConfig.confirmTitle': '確認打開寫入權限',
|
|
802
|
+
'toolConfig.confirmAllow': '打開寫入',
|
|
803
|
+
'toolConfig.codex.title': 'Codex 提供商寫入',
|
|
804
|
+
'toolConfig.codex.desc': '預設只讀展示 Codex 提供商;打開後才允許修改 ~/.codex 設定。',
|
|
805
|
+
'toolConfig.codex.lockedTitle': 'Codex 提供商目前為只讀',
|
|
806
|
+
'toolConfig.codex.lockedDesc': '這裡不會寫入 Codex 賬號設定。要添加、切換、編輯或刪除提供商,請先打開本 tab 的寫入開關。',
|
|
807
|
+
'toolConfig.codex.confirmMessage': '打開後,Codex tab 內的提供商操作會寫入 ~/.codex/config.toml、認證或模型相關設定。',
|
|
808
|
+
'toolConfig.claude.title': 'Claude 提供商寫入',
|
|
809
|
+
'toolConfig.claude.desc': '預設只讀展示 Claude 提供商;打開後才允許寫入 Claude settings。',
|
|
810
|
+
'toolConfig.claude.lockedTitle': 'Claude 提供商目前為只讀',
|
|
811
|
+
'toolConfig.claude.lockedDesc': '這裡不會寫入 Claude 設定。要添加、應用、編輯或刪除提供商,請先打開本 tab 的寫入開關。',
|
|
812
|
+
'toolConfig.claude.confirmMessage': '打開後,Claude tab 內的應用操作會寫入 ~/.claude/settings.json 等 Claude 設定。',
|
|
813
|
+
'toolConfig.opencode.title': 'OpenCode 設定寫入',
|
|
814
|
+
'toolConfig.opencode.desc': '預設只讀;開啟後可寫入 OpenCode 設定文件。',
|
|
815
|
+
'toolConfig.opencode.lockedTitle': '只讀模式',
|
|
816
|
+
'toolConfig.opencode.lockedDesc': '開啟寫入權限後可保存、匯入或應用設定。',
|
|
817
|
+
'toolConfig.opencode.confirmMessage': '打開後,OpenCode tab 內的操作會寫入 XDG OpenCode 設定文件(如 ~/.config/opencode/opencode.jsonc)或 OPENCODE_CONFIG 指定文件。',
|
|
818
|
+
'opencode.providerModel.title': 'OpenCode provider / model',
|
|
819
|
+
'opencode.writeAria': 'OpenCode 寫入權限',
|
|
820
|
+
'opencode.applySelection': '應用到 OpenCode',
|
|
821
|
+
'opencode.targetFile': 'OpenCode 生效設定:{path} · {status}',
|
|
822
|
+
'opencode.providerStoreFile': 'Provider 草稿庫:{path}(應用時寫入 OpenCode)',
|
|
823
|
+
'opencode.field.agent': 'Agent',
|
|
824
|
+
'opencode.field.apiKeyKeep': 'API Key(留空則保留已有 key)',
|
|
825
|
+
'opencode.field.maxTokens': 'maxTokens(可選)',
|
|
826
|
+
'opencode.field.reasoningEffort': 'reasoningEffort(可選)',
|
|
827
|
+
'opencode.option.keepUnchanged': '不改動',
|
|
828
|
+
'opencode.option.reasoningLow': 'low',
|
|
829
|
+
'opencode.option.reasoningMedium': 'medium',
|
|
830
|
+
'opencode.option.reasoningHigh': 'high',
|
|
831
|
+
'opencode.applyToCoreAgents': '同步應用到所有核心 agent',
|
|
832
|
+
'opencode.enableAutoCompaction': '啟用 compaction.auto',
|
|
833
|
+
'opencode.disableProvider': '停用該 provider',
|
|
834
|
+
'opencode.configFile.title': 'OpenCode 設定文件',
|
|
835
|
+
'opencode.importParse': '匯入/解析文件',
|
|
836
|
+
'opencode.saveConfig': '保存設定',
|
|
837
|
+
'opencode.parsedFile': '已解析:{file}',
|
|
838
|
+
'opencode.textarea.placeholder': '編輯 OpenCode 設定',
|
|
839
|
+
'opencode.configFile.hint': '生效設定預覽;草稿保存在獨立 Provider 庫。',
|
|
840
|
+
'opencode.summary.title': '目前解析摘要',
|
|
841
|
+
'opencode.summary.noApiKey': '未設定 API Key',
|
|
842
|
+
'opencode.summary.noModel': '未設定 model',
|
|
843
|
+
'opencode.summary.agentType': 'agent',
|
|
844
|
+
'opencode.summary.sourceCodexMate': 'CodexMate 庫',
|
|
845
|
+
'opencode.summary.sourceOpenCode': 'OpenCode 生效',
|
|
846
|
+
'config.providerTemplate.title': '預設供應商',
|
|
847
|
+
'config.models': '模型',
|
|
848
|
+
'config.modelLoading': '載入中...',
|
|
849
|
+
'config.models.unlimited': '目前無模型列表,可手填。',
|
|
850
|
+
'config.models.error': '模型列表獲取失敗,可手填。',
|
|
851
|
+
'config.models.notInList.codex': '目前模型不在列表,可手填或改模板。',
|
|
852
|
+
'config.models.notInList.other': '目前模型不在列表,可手填。',
|
|
853
|
+
'config.template.editFirst': '先改模板,再應用。',
|
|
854
|
+
'config.template.bridgeCodexOnly': '{hint} 模板僅限 Codex 編輯。',
|
|
855
|
+
'config.localBridge.enabledCount': '已啟用 {enabled}/{total}',
|
|
856
|
+
'config.template.openEditor': '打開模板編輯器',
|
|
857
|
+
'modal.configTemplate.title': 'Config 模板編輯器(手動確認應用)',
|
|
858
|
+
'modal.configTemplate.placeholder': '在這裡編輯 config.toml 模板內容',
|
|
859
|
+
'config.serviceTier': '服務檔',
|
|
860
|
+
'config.serviceTier.fast': 'fast(預設)',
|
|
861
|
+
'config.serviceTier.standard': 'standard',
|
|
862
|
+
'config.serviceTier.hint': '僅 fast 寫入 {field}。',
|
|
863
|
+
'config.reasoningEffort': '推理強度',
|
|
864
|
+
'config.reasoningEffort.medium': 'medium(預設)',
|
|
865
|
+
'config.reasoningEffort.hint': '控制推理深度;high 更深。',
|
|
866
|
+
'config.contextBudget': '壓縮閾值',
|
|
867
|
+
'config.reset': '重置',
|
|
868
|
+
'config.example': '例如: {value}',
|
|
869
|
+
'config.contextWindow.hint': '上下文上限,預設 190000。',
|
|
870
|
+
'config.autoCompact.hint': '自動壓縮閾值,預設 185000。',
|
|
871
|
+
'config.agents.open': '打開 AGENTS.md',
|
|
872
|
+
'modal.agents.title.default': 'AGENTS.md 編輯器',
|
|
873
|
+
'modal.agents.title.claudeMd': 'CLAUDE.md 編輯器',
|
|
874
|
+
'modal.agents.title.openclaw': 'OpenClaw AGENTS.md 編輯器',
|
|
875
|
+
'modal.agents.hint.default': '保存後會寫入目標 AGENTS.md(與 config.toml 同級)。',
|
|
876
|
+
'modal.agents.hint.claudeMd': '保存後會寫入 ~/.claude/CLAUDE.md。',
|
|
877
|
+
'modal.agents.contentLabel.claudeMd': 'CLAUDE.md 內容',
|
|
878
|
+
'modal.agents.placeholder.claudeMd': '在這裡編輯 CLAUDE.md 內容',
|
|
879
|
+
'modal.agents.hint.openclaw': '保存後會寫入 OpenClaw Workspace 下的 AGENTS.md。',
|
|
880
|
+
'modal.agents.title.openclawWorkspaceFile': 'OpenClaw 工作區文件: {fileName}',
|
|
881
|
+
'modal.agents.hint.openclawWorkspaceFile': '保存後會寫入 OpenClaw Workspace 下的 {fileName}。',
|
|
882
|
+
'config.url.unset': '未設 URL',
|
|
883
|
+
'config.model.unset': '未設定模型',
|
|
884
|
+
'config.badge.system': '系統',
|
|
885
|
+
'config.availabilityTest': '可用性測試',
|
|
886
|
+
'config.availabilityTestAria': '測試 {name} 可用性',
|
|
887
|
+
'config.health.title': '設定健康檢查',
|
|
888
|
+
'config.health.run': '運行檢查',
|
|
889
|
+
'config.health.running': '檢查中...',
|
|
890
|
+
'config.health.hint': '會批量探測所有提供商可用性,並重新整理延遲顯示。',
|
|
891
|
+
'config.health.progress': '已完成 {done}/{total} · 失敗 {failed}',
|
|
892
|
+
'config.health.ok': '檢查通過',
|
|
893
|
+
'config.health.fail': '檢查未通過',
|
|
894
|
+
'config.health.issues': '{count} 項問題',
|
|
895
|
+
'config.shareCommand': '分享命令',
|
|
896
|
+
'config.shareDisabled': '不可分享',
|
|
897
|
+
'config.shareCommand.aria': '分享匯入命令',
|
|
898
|
+
'config.provider.edit.aria': '編輯提供商:{name}',
|
|
899
|
+
'config.provider.delete.aria': '刪除提供商:{name}',
|
|
900
|
+
'config.provider.clone': '克隆',
|
|
901
|
+
'config.provider.clone.aria': '克隆提供商:{name}',
|
|
902
|
+
'app.loadingConfig': '載入設定中...',
|
|
903
|
+
'common.current': '目前 {value}',
|
|
904
|
+
'common.notSelected': '未選擇',
|
|
905
|
+
'common.readFromEditor': '從編輯器讀取',
|
|
906
|
+
'common.writeToEditor': '寫入編輯器',
|
|
907
|
+
'sessions.sourceLabel': '來源:{value}',
|
|
908
|
+
'usage.rangeLabel': '範圍:{value}',
|
|
909
|
+
'sessions.source.all': '全部',
|
|
910
|
+
'usage.range.all': '全部',
|
|
911
|
+
'usage.range.7d.short': '近 7 天',
|
|
912
|
+
'usage.range.30d.short': '近 30 天',
|
|
913
|
+
'orchestration.queueStats': '隊列 {running} 運行中 · {queued} 等待中',
|
|
914
|
+
'orchestration.hero.kicker': '任務編排',
|
|
915
|
+
'orchestration.hero.title': '把需求拆成可執行步驟',
|
|
916
|
+
'orchestration.hero.subtitle': '先寫目標,再預覽計劃,再執行。',
|
|
917
|
+
'orchestration.draft.reset': '重置草稿',
|
|
918
|
+
'orchestration.summary.aria': '任務編排概覽',
|
|
919
|
+
'orchestration.summary.running': '運行中',
|
|
920
|
+
'orchestration.summary.queued': '排隊中',
|
|
921
|
+
'orchestration.summary.runs': '運行記錄',
|
|
922
|
+
'orchestration.readiness.target.label': '目標',
|
|
923
|
+
'orchestration.readiness.target.done': '已寫目標',
|
|
924
|
+
'orchestration.readiness.target.missing': '還沒寫目標',
|
|
925
|
+
'orchestration.readiness.engine.label': '執行策略',
|
|
926
|
+
'orchestration.readiness.engine.codex': '使用 Codex 規劃節點',
|
|
927
|
+
'orchestration.readiness.workflow.done': '已選 {count} 個 Workflow',
|
|
928
|
+
'orchestration.readiness.workflow.missing': '還沒選 Workflow ID',
|
|
929
|
+
'orchestration.readiness.scope.label': '邊界',
|
|
930
|
+
'orchestration.readiness.scope.done': '已補充說明',
|
|
931
|
+
'orchestration.readiness.scope.writeHint': '建議補說明後再寫入',
|
|
932
|
+
'orchestration.readiness.scope.readonlyHint': '目前是隻讀,可直接試',
|
|
933
|
+
'orchestration.readiness.preview.label': '預覽',
|
|
934
|
+
'orchestration.readiness.preview.missing': '還沒生成計劃',
|
|
935
|
+
'orchestration.readiness.preview.blocked': '有 {count} 個阻塞項',
|
|
936
|
+
'orchestration.readiness.preview.ready': '計劃可用,{count} 個節點',
|
|
937
|
+
'orchestration.readiness.empty.title': '先寫目標',
|
|
938
|
+
'orchestration.readiness.empty.summary': '先把想完成的結果寫清楚,再讓編排器拆節點。',
|
|
939
|
+
'orchestration.readiness.workflow.title': '缺少 Workflow',
|
|
940
|
+
'orchestration.readiness.workflow.summary': '你已經選了 Workflow 模式,但還沒指定可複用流程。',
|
|
941
|
+
'orchestration.readiness.preview.title': '建議先預覽',
|
|
942
|
+
'orchestration.readiness.preview.summary': '草稿已成形,先生成一次計劃,確認節點和依賴再執行。',
|
|
943
|
+
'orchestration.readiness.blocked.title': '預覽有阻塞',
|
|
944
|
+
'orchestration.readiness.blocked.summary': '目前計劃裡還有 {count} 個阻塞項,先處理它們。',
|
|
945
|
+
'orchestration.readiness.warn.title': '可以執行,但有提醒',
|
|
946
|
+
'orchestration.readiness.warn.summary': '計劃已生成,但還有 {count} 條提醒值得先看一眼。',
|
|
947
|
+
'orchestration.readiness.dryRun.title': '適合先預演',
|
|
948
|
+
'orchestration.readiness.dryRun.summary': '現在可以安全地跑一次僅預演,先看結果再決定是否真實執行。',
|
|
949
|
+
'orchestration.readiness.ready.title': '可以執行',
|
|
950
|
+
'orchestration.readiness.ready.withFollowUps': '主目標和收尾動作都已具備,可以直接執行或入隊。',
|
|
951
|
+
'orchestration.readiness.ready.summary': '主目標已經夠清楚了,可以直接執行或入隊。',
|
|
952
|
+
'orchestration.step1.title': '先把結果寫清楚',
|
|
953
|
+
'orchestration.step1.subtitle': '只寫會影響執行的內容。',
|
|
954
|
+
'orchestration.templates.title': '快捷示例',
|
|
955
|
+
'orchestration.templates.reviewFix.label': '修 review + 迴歸',
|
|
956
|
+
'orchestration.templates.reviewFix.target': '修復目前 PR review 評論,並補對應迴歸測試',
|
|
957
|
+
'orchestration.templates.reviewFix.notes': '不要改動無關模塊;需要給出驗證結果',
|
|
958
|
+
'orchestration.templates.reviewFix.followUps': '繼續處理新增 review 評論\n最後更新 PR 摘要',
|
|
959
|
+
'orchestration.templates.planOnly.label': '只做排查規劃',
|
|
960
|
+
'orchestration.templates.planOnly.target': '先排查問題根因並給出執行計劃,不直接修改代碼',
|
|
961
|
+
'orchestration.templates.planOnly.notes': '優先定位根因、影響範圍和風險點',
|
|
962
|
+
'orchestration.templates.workflowBatch.label': 'Workflow 批處理',
|
|
963
|
+
'orchestration.templates.workflowBatch.target': '用 Workflow 跑一組固定檢查並整理結果',
|
|
964
|
+
'orchestration.templates.workflowBatch.workflowIds': 'diagnose-config\nsafe-provider-switch',
|
|
965
|
+
'orchestration.templates.workflowBatch.notes': '輸出統一結論,避免重複描述',
|
|
966
|
+
'orchestration.fields.target': '目標',
|
|
967
|
+
'orchestration.fields.target.placeholder': '例如:修復目前 PR review 評論,並補對應迴歸測試;不要改無關模塊',
|
|
968
|
+
'orchestration.fields.target.hint': '一句話寫清結果、邊界和驗收標準就夠了。',
|
|
969
|
+
'orchestration.engine.codex': 'Codex',
|
|
970
|
+
'orchestration.engine.workflow': 'Workflow',
|
|
971
|
+
'orchestration.runMode.write': '寫入',
|
|
972
|
+
'orchestration.runMode.readOnly': '只讀',
|
|
973
|
+
'orchestration.runMode.dryRun': '僅預演',
|
|
974
|
+
'orchestration.pills.hasTitle': '標題已設',
|
|
975
|
+
'orchestration.pills.workflowCount': 'Workflow {count}',
|
|
976
|
+
'orchestration.pills.planNodes': '計劃 {count} 節點',
|
|
977
|
+
'orchestration.step2.title': '選擇執行方式',
|
|
978
|
+
'orchestration.step2.subtitle': '常用項預設展開,其餘放高級設定。',
|
|
979
|
+
'orchestration.fields.engine': '引擎',
|
|
980
|
+
'orchestration.fields.runMode': '運行模式',
|
|
981
|
+
'orchestration.advanced.title': '高級設定',
|
|
982
|
+
'orchestration.fields.title': '標題',
|
|
983
|
+
'orchestration.fields.title.placeholder': '可選,預設從目標自動提取',
|
|
984
|
+
'orchestration.fields.notes': '說明',
|
|
985
|
+
'orchestration.fields.notes.placeholder': '例如:不要重寫現有架構,只做增量實現',
|
|
986
|
+
'orchestration.fields.notes.hint': '補邊界、禁區、風格要求或驗證要求。',
|
|
987
|
+
'orchestration.fields.followUps': '後續動作(每行一條)',
|
|
988
|
+
'orchestration.fields.followUps.placeholder': '例如:\n繼續處理 review 評論\n最後補回歸測試',
|
|
989
|
+
'orchestration.fields.concurrency': '併發',
|
|
990
|
+
'orchestration.fields.concurrency.hint': '複雜任務先從 1~2 開始更穩。',
|
|
991
|
+
'orchestration.fields.autoFixRounds': '自動修復',
|
|
992
|
+
'orchestration.fields.autoFixRounds.hint': '失敗後自動再試幾輪。',
|
|
993
|
+
'orchestration.fields.workflowIds': 'Workflow ID(每行一條)',
|
|
994
|
+
'orchestration.fields.workflowIds.placeholder': '例如:\ndiagnose-config\nsafe-provider-switch',
|
|
995
|
+
'orchestration.fields.workflowIds.hint': '僅 Workflow 模式需要。目前本地可用 {count} 個。',
|
|
996
|
+
'orchestration.workflow.stepCount': '{count} 步',
|
|
997
|
+
'orchestration.step3.title': '先預覽,再執行',
|
|
998
|
+
'orchestration.step3.subtitle': '先確認計劃,再決定立即執行還是入隊。',
|
|
999
|
+
'orchestration.actions.planning': '規劃中...',
|
|
1000
|
+
'orchestration.actions.previewOnly': '僅預覽',
|
|
1001
|
+
'orchestration.actions.preparing': '準備中...',
|
|
1002
|
+
'orchestration.actions.generatePlan': '生成計劃',
|
|
1003
|
+
'orchestration.actions.planAndRun': '計劃並執行',
|
|
1004
|
+
'orchestration.actions.processing': '處理中...',
|
|
1005
|
+
'orchestration.actions.queueAndStart': '入隊並開始',
|
|
1006
|
+
'orchestration.actions.caption': '“計劃並執行”會在必要時自動重新整理計劃;批量任務用“入隊並開始”。',
|
|
1007
|
+
'orchestration.stage.title': '有內容時再展開工作區',
|
|
1008
|
+
'orchestration.stage.subtitle': '先寫目標,再預覽計劃。',
|
|
1009
|
+
'orchestration.stage.pill.target': '寫目標',
|
|
1010
|
+
'orchestration.stage.pill.preview': '預覽',
|
|
1011
|
+
'orchestration.stage.pill.run': '執行或入隊',
|
|
1012
|
+
'orchestration.plan.title': '計劃預覽',
|
|
1013
|
+
'orchestration.plan.subtitle': '先確認節點、波次和依賴。',
|
|
1014
|
+
'orchestration.plan.summary.nodes': '節點數',
|
|
1015
|
+
'orchestration.plan.summary.waves': '波次',
|
|
1016
|
+
'orchestration.plan.summary.engine': '引擎',
|
|
1017
|
+
'orchestration.plan.node.write': 'write',
|
|
1018
|
+
'orchestration.plan.node.readOnly': 'read-only',
|
|
1019
|
+
'orchestration.labels.dependencies': '依賴:',
|
|
1020
|
+
'orchestration.labels.error': '錯誤:',
|
|
1021
|
+
'orchestration.workbench.title': '執行工作臺',
|
|
1022
|
+
'orchestration.workbench.subtitle': '有內容時才展開。',
|
|
1023
|
+
'orchestration.queue.start': '開始隊列',
|
|
1024
|
+
'orchestration.queue.starting': '啟動中...',
|
|
1025
|
+
'orchestration.workbench.tabs.aria': '任務編排工作臺視圖',
|
|
1026
|
+
'orchestration.workbench.tabs.queue': '隊列 {count}',
|
|
1027
|
+
'orchestration.workbench.tabs.runs': '運行記錄 {count}',
|
|
1028
|
+
'orchestration.workbench.tabs.detail': '運行詳情',
|
|
1029
|
+
'orchestration.queue.empty.title': '目前沒有排隊任務',
|
|
1030
|
+
'orchestration.queue.empty.subtitle': '批量任務可先入隊,再啟動隊列。',
|
|
1031
|
+
'orchestration.runs.empty.title': '還沒有運行記錄',
|
|
1032
|
+
'orchestration.runs.empty.subtitle': '執行後會顯示最近運行記錄。',
|
|
1033
|
+
'orchestration.detail.refresh': '重新整理詳情',
|
|
1034
|
+
'orchestration.detail.retry': '重試',
|
|
1035
|
+
'orchestration.detail.retrying': '重試中...',
|
|
1036
|
+
'orchestration.detail.empty.title': '選擇一條運行記錄查看詳情',
|
|
1037
|
+
'orchestration.detail.empty.subtitle': '這裡會顯示節點狀態、摘要和日誌。',
|
|
1038
|
+
'orchestration.detail.summary.status': '狀態',
|
|
1039
|
+
'orchestration.detail.summary.duration': '耗時',
|
|
1040
|
+
'orchestration.detail.summary.nodes': '節點數',
|
|
1041
|
+
'orchestration.detail.summary.summary': '摘要',
|
|
1042
|
+
'orchestration.detail.node.meta': '{id} · attempts {attempts} · auto-fix {autoFix}',
|
|
1043
|
+
'skills.localLabel': '{target} / 本地 Skills',
|
|
1044
|
+
'skills.counts': '已裝 {installed} · 可匯入 {importable}',
|
|
1045
|
+
|
|
1046
|
+
// Sidebar status labels (compact)
|
|
1047
|
+
'status.currentSource': '目前來源',
|
|
1048
|
+
'status.sessionCount': '會話數',
|
|
1049
|
+
'status.range': '統計範圍',
|
|
1050
|
+
'status.totalSessions': '總會話數',
|
|
1051
|
+
'status.totalMessages': '總消息數',
|
|
1052
|
+
'status.engine': '引擎',
|
|
1053
|
+
'status.concurrency': '併發度',
|
|
1054
|
+
'status.running': '運行中',
|
|
1055
|
+
'status.queued': '排隊中',
|
|
1056
|
+
'status.runs': '歷史 Runs',
|
|
1057
|
+
'status.currentTarget': '目前目標',
|
|
1058
|
+
'status.localSkills': '本地 Skills',
|
|
1059
|
+
'status.importable': '可匯入',
|
|
1060
|
+
'status.importableDirect': '可直接匯入',
|
|
1061
|
+
'status.pm': '包管理器',
|
|
1062
|
+
'status.action': '目前操作',
|
|
1063
|
+
'status.registry': '鏡像',
|
|
1064
|
+
'status.claudeConfig': 'Claude 設定',
|
|
1065
|
+
'status.claudeModel': 'Claude 模型',
|
|
1066
|
+
'status.openclawConfig': 'OpenClaw 設定',
|
|
1067
|
+
'status.opencodeProvider': 'OpenCode Provider',
|
|
1068
|
+
'status.opencodeModel': 'OpenCode 模型',
|
|
1069
|
+
'status.opencodeConfig': 'OpenCode 設定',
|
|
1070
|
+
'status.workspaceFile': '工作區文件',
|
|
1071
|
+
'status.configMode': '設定模式',
|
|
1072
|
+
'status.currentProvider': '目前 Provider',
|
|
1073
|
+
'status.currentModel': '目前模型',
|
|
1074
|
+
'status.quickSwitchProvider': '快速切換提供商',
|
|
1075
|
+
'side.usage.meta': '本地統計 / 趨勢',
|
|
1076
|
+
'side.orchestration.meta': '計劃 / 隊列 / Runs',
|
|
1077
|
+
|
|
1078
|
+
// Settings panel
|
|
1079
|
+
'settings.tab.general': '通用',
|
|
1080
|
+
'settings.tab.data': '資料',
|
|
1081
|
+
'settings.tabs.aria': '設定分類',
|
|
1082
|
+
'settings.quickSettings.title': '快捷設定',
|
|
1083
|
+
'settings.language.sideLabel': '語言:{language}',
|
|
1084
|
+
'settings.language.title': '語言',
|
|
1085
|
+
'settings.language.meta': '選擇 Web UI 的顯示語言',
|
|
1086
|
+
'settings.language.label': '界面語言',
|
|
1087
|
+
'settings.language.hint': '語言偏好會保存在目前瀏覽器。',
|
|
1088
|
+
'settings.sharePrefix.title': '分享命令前綴',
|
|
1089
|
+
'settings.sharePrefix.meta': '影響 Web UI 裡“複製分享命令”的前綴',
|
|
1090
|
+
'settings.sharePrefix.label': '前綴',
|
|
1091
|
+
'settings.sharePrefix.hint': '預設走項目內 npm start,也可切到全局 codexmate。該設定會緩存到瀏覽器本地。',
|
|
1092
|
+
'settings.backup.title': '資料備份',
|
|
1093
|
+
'settings.backup.meta': '匯出 / 匯入 Claude 與 Codex 設定',
|
|
1094
|
+
'settings.claude.title': 'Claude 設定',
|
|
1095
|
+
'settings.claude.meta': '備份 / 匯入 ~/.claude',
|
|
1096
|
+
'settings.codex.title': 'Codex 設定',
|
|
1097
|
+
'settings.codex.meta': '備份 / 匯入 ~/.codex',
|
|
1098
|
+
'settings.backup.progress': '備份中 {percent}%',
|
|
1099
|
+
'settings.backup.oneClickClaude': '一鍵備份 ~/.claude',
|
|
1100
|
+
'settings.backup.importClaude': '匯入 ~/.claude 備份',
|
|
1101
|
+
'settings.backup.oneClickCodex': '一鍵備份 ~/.codex',
|
|
1102
|
+
'settings.backup.importCodex': '匯入 ~/.codex 備份',
|
|
1103
|
+
'settings.importing': '匯入中...',
|
|
1104
|
+
|
|
1105
|
+
'settings.trashConfig.title': '回收站設定',
|
|
1106
|
+
'settings.trashConfig.meta': '回收站開關與自動清理天數',
|
|
1107
|
+
'settings.deleteBehavior.title': '會話刪除行為',
|
|
1108
|
+
'settings.deleteBehavior.meta': '決定“刪除”是否先進入回收站',
|
|
1109
|
+
'settings.deleteBehavior.toggle': '刪除會話時先移入回收站',
|
|
1110
|
+
'settings.deleteBehavior.hint': '預設開啟。關閉後,會話瀏覽裡的刪除會直接永久刪除,不再進入回收站。',
|
|
1111
|
+
|
|
1112
|
+
'settings.trash.title': '回收站',
|
|
1113
|
+
'settings.trash.meta': '已刪除會話(可恢復/徹底刪除)',
|
|
1114
|
+
'settings.trash.refresh': '重新整理列表',
|
|
1115
|
+
'settings.trash.refreshing': '重新整理中...',
|
|
1116
|
+
'settings.trash.clear': '清空回收站',
|
|
1117
|
+
'settings.trash.clearing': '清空中...',
|
|
1118
|
+
'settings.trash.loading': '正在載入回收站...',
|
|
1119
|
+
'settings.trash.empty': '回收站為空',
|
|
1120
|
+
'settings.trash.emptyHint': '保留期 {days} 天內沒有已刪除會話。',
|
|
1121
|
+
'settings.trash.retry': '回收站列表載入失敗,請重新整理重試',
|
|
1122
|
+
'settings.trash.restore': '恢復',
|
|
1123
|
+
'settings.trash.restoring': '恢復中...',
|
|
1124
|
+
'settings.trash.purge': '徹底刪除',
|
|
1125
|
+
'settings.trash.purging': '刪除中...',
|
|
1126
|
+
'settings.trash.workspace': '工作區',
|
|
1127
|
+
'settings.trash.originalFile': '原文件',
|
|
1128
|
+
'settings.trash.loadMore': '載入更多(剩餘 {count} 項)',
|
|
1129
|
+
'settings.trash.retention': '自動清理',
|
|
1130
|
+
'settings.trash.retentionMeta': '超過保留天數的回收站記錄將自動清除',
|
|
1131
|
+
'settings.trash.retentionLabel': '保留天數',
|
|
1132
|
+
'settings.trash.retentionUnit': '天',
|
|
1133
|
+
'settings.trash.retentionHint': '範圍 1-365 天,預設 30 天。每次載入回收站時自動清理過期記錄。',
|
|
1134
|
+
|
|
1135
|
+
'settings.webhook.title': 'Webhook',
|
|
1136
|
+
'settings.webhook.meta': '發送事件通知到外部服務',
|
|
1137
|
+
'settings.webhook.enabled': '已啟用',
|
|
1138
|
+
'settings.webhook.disabled': '未啟用',
|
|
1139
|
+
'settings.webhook.enable': '啟用',
|
|
1140
|
+
'settings.webhook.edit': '編輯',
|
|
1141
|
+
'settings.webhook.configure': '設定',
|
|
1142
|
+
'settings.webhook.modalTitle': 'Webhook 設定',
|
|
1143
|
+
'settings.webhook.enabledLabel': '狀態',
|
|
1144
|
+
'settings.webhook.enableToggle': '啟用 Webhook',
|
|
1145
|
+
'settings.webhook.urlLabel': 'Webhook URL',
|
|
1146
|
+
'settings.webhook.eventsLabel': '事件',
|
|
1147
|
+
'settings.templateConfirm.title': '設定模板二次確認',
|
|
1148
|
+
'settings.templateConfirm.meta': '降低誤寫入風險',
|
|
1149
|
+
'settings.templateConfirm.toggle': '應用模板前先預覽差異(兩步:確認 → 應用)',
|
|
1150
|
+
'settings.templateConfirm.hint': '開啟後:先展示差異預覽,再確認寫入。',
|
|
1151
|
+
|
|
1152
|
+
'settings.reset.title': '設定重置',
|
|
1153
|
+
'settings.reset.meta': '謹慎操作',
|
|
1154
|
+
'settings.reset.hint': '會先備份 config.toml,再寫入預設設定。',
|
|
1155
|
+
'settings.reset.button': '重裝設定',
|
|
1156
|
+
'settings.reset.loading': '重裝中...',
|
|
1157
|
+
|
|
1158
|
+
// Market (Skills)
|
|
1159
|
+
'market.title': 'Skills 概覽',
|
|
1160
|
+
'market.subtitle': '切換目標並查看本地 Skills。',
|
|
1161
|
+
'market.refresh': '重新整理概覽',
|
|
1162
|
+
'market.refreshing': '重新整理中...',
|
|
1163
|
+
'market.openManager': '打開 Skills 管理',
|
|
1164
|
+
'market.target.aria': '選擇 Skills 安裝目標',
|
|
1165
|
+
'market.summary.target': '安裝目標',
|
|
1166
|
+
'market.summary.total': '本地總數',
|
|
1167
|
+
'market.summary.configured': '含 SKILL.md',
|
|
1168
|
+
'market.summary.missing': '缺少 SKILL.md',
|
|
1169
|
+
'market.summary.importable': '可匯入',
|
|
1170
|
+
'market.summary.importableDirect': '可直接匯入',
|
|
1171
|
+
'market.root.fallback': '預設目錄',
|
|
1172
|
+
|
|
1173
|
+
'market.installed.title': '已安裝 Skills',
|
|
1174
|
+
'market.installed.note': '僅顯示前 6 項。',
|
|
1175
|
+
'market.local.refresh': '重新整理本地',
|
|
1176
|
+
'market.local.refreshing': '重新整理中...',
|
|
1177
|
+
'market.local.loading': '正在載入本地 Skills...',
|
|
1178
|
+
'market.local.empty': '目前暫無已安裝 skill。',
|
|
1179
|
+
'market.pill.verified': '已驗證',
|
|
1180
|
+
'market.pill.missingSkill': '待補 SKILL.md',
|
|
1181
|
+
|
|
1182
|
+
'market.import.title': '可匯入來源',
|
|
1183
|
+
'market.import.note': '掃描並匯入到目前 {target}。',
|
|
1184
|
+
'market.import.scan': '掃描來源',
|
|
1185
|
+
'market.import.scanning': '掃描中...',
|
|
1186
|
+
'market.import.loading': '正在掃描可匯入 skill...',
|
|
1187
|
+
'market.import.empty': '暫未掃描到可匯入 skill。',
|
|
1188
|
+
'market.pill.importableDirect': '可直接匯入',
|
|
1189
|
+
'market.pill.importMissing': '缺少 SKILL.md',
|
|
1190
|
+
|
|
1191
|
+
'market.actions.title': '分發入口',
|
|
1192
|
+
'market.actions.note': '操作均作用於目前安裝目標。',
|
|
1193
|
+
'market.action.manage.title': '本地 Skills 管理',
|
|
1194
|
+
'market.action.manage.copy': '管理目前 {target} 的已裝 skills',
|
|
1195
|
+
'market.action.crossImport.title': '跨應用匯入',
|
|
1196
|
+
'market.action.crossImport.copy': '匯入到目前 {target}',
|
|
1197
|
+
'market.action.zipImport.title': 'ZIP 匯入',
|
|
1198
|
+
'market.action.zipImport.copy': '從 ZIP 匯入到目前目標',
|
|
1199
|
+
|
|
1200
|
+
'market.help.title': '操作說明',
|
|
1201
|
+
'market.help.target.title': '目標切換',
|
|
1202
|
+
'market.help.target.copy': '目前操作寫入 {target} 目錄。',
|
|
1203
|
+
'market.help.crossImport.title': '跨應用匯入',
|
|
1204
|
+
'market.help.crossImport.copy': '從其他宿主匯入未託管 skill。',
|
|
1205
|
+
'market.help.zipImport.title': 'ZIP 匯入',
|
|
1206
|
+
'market.help.zipImport.copy': '從 ZIP 匯入本地 skill。',
|
|
1207
|
+
|
|
1208
|
+
// Claude config panel
|
|
1209
|
+
'claude.addProvider': '添加提供商',
|
|
1210
|
+
'claude.applyDefault': '預設應用到 ~/.claude/settings.json。',
|
|
1211
|
+
'claude.presetProviders': '預設供應商',
|
|
1212
|
+
'claude.customConfig': '自訂設定',
|
|
1213
|
+
'claude.model': '模型',
|
|
1214
|
+
'claude.model.placeholder': '例如: claude-3-7-sonnet',
|
|
1215
|
+
'claude.model.hint': '模型修改後會自動保存並應用到目前設定。',
|
|
1216
|
+
'claude.targetApi.label': '目標 API',
|
|
1217
|
+
'claude.targetApi.responses': 'Anthropic',
|
|
1218
|
+
'claude.targetApi.chatCompletions': 'OpenAI Chat Completions (/v1/chat/completions)',
|
|
1219
|
+
'claude.targetApi.ollama': 'Ollama Chat (/api/chat)',
|
|
1220
|
+
'claude.targetApi.chatCompletionsBadge': 'OpenAI Chat Completions',
|
|
1221
|
+
'claude.targetApi.ollamaBadge': 'Ollama',
|
|
1222
|
+
'claude.targetApi.hint': '選擇 Chat Completions 或 Ollama 時由 Claude 兼容代理內建轉換,不修改 Codex provider 的 wire_api;Ollama 可不填 API Key。',
|
|
1223
|
+
'claude.health.title': '設定健康檢查',
|
|
1224
|
+
'claude.health.run': '運行檢查',
|
|
1225
|
+
'claude.health.running': '檢查中...',
|
|
1226
|
+
'claude.health.hint': '會批量探測所有 Claude 設定可用性,並重新整理延遲顯示。',
|
|
1227
|
+
'claude.health.progress': '已完成 {done}/{total} · 失敗 {failed}',
|
|
1228
|
+
'claude.md.title': 'CLAUDE.md',
|
|
1229
|
+
'claude.md.open': '打開 CLAUDE.md',
|
|
1230
|
+
'claude.md.hint': '讀寫 ~/.claude/CLAUDE.md。',
|
|
1231
|
+
'claude.model.unset': '未設定模型',
|
|
1232
|
+
'claude.configured': '已設定',
|
|
1233
|
+
'claude.notConfigured': '未設定',
|
|
1234
|
+
'claude.action.edit': '編輯',
|
|
1235
|
+
'claude.action.delete': '刪除',
|
|
1236
|
+
'claude.action.shareDisabled': '分享匯入命令',
|
|
1237
|
+
'claude.action.editAria': '編輯 Claude 設定:{name}',
|
|
1238
|
+
'claude.action.deleteAria': '刪除 Claude 設定:{name}',
|
|
1239
|
+
'claude.action.clone': '克隆',
|
|
1240
|
+
'claude.action.cloneAria': '克隆 Claude 設定:{name}',
|
|
1241
|
+
'claude.localBridge.poolTitle': '輪詢池',
|
|
1242
|
+
'claude.localBridge.poolHint': '勾選參與負載均衡的提供商',
|
|
1243
|
+
'claude.localBridge.noProviders': '暫無可用提供商,請先添加直連提供商',
|
|
1244
|
+
'claude.localBridge.disabled': '未啟用',
|
|
1245
|
+
'claude.localBridge.enabled': '已啟用',
|
|
1246
|
+
|
|
1247
|
+
// OpenClaw config panel
|
|
1248
|
+
'openclaw.applyHint': '寫入 ~/.openclaw/openclaw.json,支持 JSON5。',
|
|
1249
|
+
'openclaw.workspace.title': 'OpenClaw 工作區',
|
|
1250
|
+
'openclaw.configs.hint': '選擇常用設定,或進入編輯器維護完整 JSON5。',
|
|
1251
|
+
'openclaw.agents.hint': '讀寫 Workspace 的 AGENTS.md,預設路徑 ~/.openclaw/workspace/AGENTS.md。',
|
|
1252
|
+
'openclaw.agents.open': '打開 AGENTS.md',
|
|
1253
|
+
'openclaw.workspaceFile': '工作區文件',
|
|
1254
|
+
'openclaw.workspace.placeholder': '例如: SOUL.md',
|
|
1255
|
+
'openclaw.workspace.hint': '僅限 Workspace 內的 .md 文件。',
|
|
1256
|
+
'openclaw.workspace.open': '打開工作區文件',
|
|
1257
|
+
'openclaw.configured': '已設定',
|
|
1258
|
+
'openclaw.notConfigured': '未設定',
|
|
1259
|
+
'openclaw.action.edit': '編輯',
|
|
1260
|
+
'openclaw.action.delete': '刪除',
|
|
1261
|
+
'modal.openclaw.quick.subtitle': '按 3 步完成:填 Provider 和模型,寫入編輯器,保存並應用。',
|
|
1262
|
+
'modal.openclaw.quick.step2': '點擊寫入編輯器',
|
|
1263
|
+
'modal.openclaw.structured.writeHint': '寫入編輯器會重排 JSON,註釋可能丟失。',
|
|
1264
|
+
'openclaw.action.applyAria': '應用 OpenClaw 設定:{name}',
|
|
1265
|
+
'openclaw.action.editAria': '編輯 OpenClaw 設定:{name}',
|
|
1266
|
+
'openclaw.action.deleteAria': '刪除 OpenClaw 設定:{name}'
|
|
1267
|
+
});
|
|
1268
|
+
|
|
1269
|
+
export { zhTw };
|