dsh-oc-tui 0.2.0-pre.13 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -6
- package/docs//347/224/250/346/210/267/346/211/213/345/206/214.md +39 -6
- package/dsh-plugin.json +5 -1
- package/lib/diagnostics.js +120 -0
- package/lib/git-branch.js +157 -0
- package/lib/image.js +5 -1
- package/lib/index.js +904 -19
- package/lib/locales/ar.js +637 -560
- package/lib/locales/de.js +606 -529
- package/lib/locales/en.js +79 -0
- package/lib/locales/es.js +606 -529
- package/lib/locales/fr.js +606 -529
- package/lib/locales/id.js +608 -531
- package/lib/locales/it.js +606 -529
- package/lib/locales/ja.js +606 -529
- package/lib/locales/ko.js +606 -529
- package/lib/locales/nl.js +606 -529
- package/lib/locales/pl.js +620 -543
- package/lib/locales/pt-BR.js +606 -529
- package/lib/locales/ru.js +620 -543
- package/lib/locales/tr.js +606 -529
- package/lib/locales/vi.js +608 -531
- package/lib/locales/zh-CN.js +607 -530
- package/lib/locales/zh-TW.js +607 -530
- package/lib/mermaid-ascii.js +20 -1
- package/lib/mermaid.js +39 -20
- package/lib/providers.js +712 -0
- package/lib/splash-opencode.js +27 -9
- package/lib/std/command-list.js +2 -1
- package/lib/term.js +13 -1
- package/lib/ui.js +326 -20
- package/lib/util.js +49 -0
- package/lib/web-settings.js +182 -142
- package/package.json +5 -4
package/lib/locales/zh-TW.js
CHANGED
|
@@ -1,531 +1,608 @@
|
|
|
1
|
-
// 繁體中文(台灣)訊息目錄。鍵與英文來源目錄 lib/locales/en.js 完全一致,順序也一致;
|
|
2
|
-
// 預留位置 `{name}` 原樣保留,前導/尾隨空格同樣保留(相鄰字串會拼接)。
|
|
3
|
-
export default {
|
|
4
|
-
// ---- shared chrome ------------------------------------------------------
|
|
5
|
-
'common.selectBack': 'Enter 選擇 · Esc 返回',
|
|
6
|
-
'common.selectConfirmBack': '↑/↓ 選擇 · Enter 確認 · Esc 返回',
|
|
7
|
-
'common.selectContinueExit': '↑/↓ 選擇 · Enter 繼續 · Esc 結束',
|
|
8
|
-
'common.escBack': 'Esc 返回',
|
|
9
|
-
'common.escClose': 'Esc 關閉',
|
|
10
|
-
'common.escCancel': 'Esc 取消',
|
|
11
|
-
'common.working': '處理中…',
|
|
12
|
-
'common.pleaseWait': '請稍候',
|
|
13
|
-
'common.on': '開',
|
|
14
|
-
'common.off': '關',
|
|
15
|
-
'common.unavailable': '無法使用',
|
|
16
|
-
'common.selected': '已選',
|
|
17
|
-
'common.default': '預設',
|
|
18
|
-
'common.system': '系統',
|
|
19
|
-
'common.installed': '(已安裝)',
|
|
20
|
-
'common.more': '… 還有 {count} 項',
|
|
21
|
-
'common.moreLines': '… 還有 {count} 行',
|
|
22
|
-
'common.clickExpand': ' · 點擊展開',
|
|
23
|
-
'common.clickCollapse': ' · 點擊收合',
|
|
24
|
-
'common.unknown': '未知',
|
|
25
|
-
'common.emptyMessage': '[空白訊息]',
|
|
26
|
-
'value.queue': '排隊',
|
|
27
|
-
'value.steer': '引導',
|
|
28
|
-
'value.auto': '自動',
|
|
29
|
-
'value.local': '本機',
|
|
30
|
-
'value.textOnly': '僅文字',
|
|
31
|
-
'value.textImage': '文字 + 圖像',
|
|
1
|
+
// 繁體中文(台灣)訊息目錄。鍵與英文來源目錄 lib/locales/en.js 完全一致,順序也一致;
|
|
2
|
+
// 預留位置 `{name}` 原樣保留,前導/尾隨空格同樣保留(相鄰字串會拼接)。
|
|
3
|
+
export default {
|
|
4
|
+
// ---- shared chrome ------------------------------------------------------
|
|
5
|
+
'common.selectBack': 'Enter 選擇 · Esc 返回',
|
|
6
|
+
'common.selectConfirmBack': '↑/↓ 選擇 · Enter 確認 · Esc 返回',
|
|
7
|
+
'common.selectContinueExit': '↑/↓ 選擇 · Enter 繼續 · Esc 結束',
|
|
8
|
+
'common.escBack': 'Esc 返回',
|
|
9
|
+
'common.escClose': 'Esc 關閉',
|
|
10
|
+
'common.escCancel': 'Esc 取消',
|
|
11
|
+
'common.working': '處理中…',
|
|
12
|
+
'common.pleaseWait': '請稍候',
|
|
13
|
+
'common.on': '開',
|
|
14
|
+
'common.off': '關',
|
|
15
|
+
'common.unavailable': '無法使用',
|
|
16
|
+
'common.selected': '已選',
|
|
17
|
+
'common.default': '預設',
|
|
18
|
+
'common.system': '系統',
|
|
19
|
+
'common.installed': '(已安裝)',
|
|
20
|
+
'common.more': '… 還有 {count} 項',
|
|
21
|
+
'common.moreLines': '… 還有 {count} 行',
|
|
22
|
+
'common.clickExpand': ' · 點擊展開',
|
|
23
|
+
'common.clickCollapse': ' · 點擊收合',
|
|
24
|
+
'common.unknown': '未知',
|
|
25
|
+
'common.emptyMessage': '[空白訊息]',
|
|
26
|
+
'value.queue': '排隊',
|
|
27
|
+
'value.steer': '引導',
|
|
28
|
+
'value.auto': '自動',
|
|
29
|
+
'value.local': '本機',
|
|
30
|
+
'value.textOnly': '僅文字',
|
|
31
|
+
'value.textImage': '文字 + 圖像',
|
|
32
|
+
|
|
33
|
+
// ---- title screen -------------------------------------------------------
|
|
34
|
+
'splash.hint': '隨便問點什麼…「修正失敗的測試」',
|
|
35
|
+
'splash.shortcutSettings': '設定',
|
|
36
|
+
'splash.shortcutThinking': '思考',
|
|
37
|
+
'splash.shortcutBranches': '分支',
|
|
38
|
+
|
|
39
|
+
// ---- header / sidebar / status row -------------------------------------
|
|
40
|
+
// ---- command-line help (dsh --profile tui --help) -----------------------
|
|
41
|
+
'startup.description': '啟動 DeepSeek Harness 終端介面。',
|
|
42
|
+
'startup.helpOption': '顯示此說明',
|
|
43
|
+
'startup.resume': '依 id 恢復既有的持久化工作階段',
|
|
44
|
+
'startup.model': '新工作階段的預設模型 id',
|
|
45
|
+
'startup.provider': '新工作階段的預設供應商路由',
|
|
46
|
+
'startup.sidebar': '顯示工作階段側邊欄(預設)',
|
|
47
|
+
'startup.noSidebar': '啟動時不顯示側邊欄',
|
|
48
|
+
'startup.examples': '範例:',
|
|
49
|
+
'startup.exampleFresh': '啟動新的工作階段',
|
|
50
|
+
'startup.exampleResume': '恢復持久化的工作階段',
|
|
51
|
+
|
|
52
|
+
'header.workspace': '工作區',
|
|
53
|
+
'sidebar.sessions': '工作階段',
|
|
54
|
+
'sidebar.recent': '最近',
|
|
55
|
+
'sidebar.newSession': '+ 新增工作階段',
|
|
56
|
+
'status.model': '模型',
|
|
57
|
+
'status.draftTokens': '{count} 草稿 token',
|
|
58
|
+
'status.ctrlP': 'ctrl+p 指令',
|
|
59
|
+
'status.interrupt': '中斷:ctrl+c',
|
|
60
|
+
|
|
61
|
+
// ---- composer command hints --------------------------------------------
|
|
62
|
+
'hint.help': '顯示說明',
|
|
63
|
+
'hint.settings': '開啟設定',
|
|
64
|
+
'hint.new': '新增工作階段',
|
|
65
|
+
'hint.resume': '恢復工作階段',
|
|
66
|
+
'hint.model': '選擇模型',
|
|
67
|
+
'hint.provider': '選擇供應商',
|
|
68
|
+
'hint.rewind': '回退選擇器',
|
|
69
|
+
'hint.branch': '切換 git 分支',
|
|
70
|
+
'hint.stats': '工作階段統計與 token 用量',
|
|
71
|
+
'hint.clear': '清除檢視',
|
|
72
|
+
'hint.cancel': '取消執行中的回合',
|
|
73
|
+
'hint.quit': '結束',
|
|
74
|
+
'hint.compact': '壓縮上下文',
|
|
75
|
+
'hint.goal': '管理目標',
|
|
76
|
+
|
|
77
|
+
// ---- transcript blocks --------------------------------------------------
|
|
78
|
+
'transcript.turns.one': '{count} 輪',
|
|
79
|
+
'transcript.turns.other': '{count} 輪',
|
|
80
|
+
'transcript.steps.one': '{count} 步',
|
|
81
|
+
'transcript.steps.other': '{count} 步',
|
|
82
|
+
'transcript.thinking': ' 思考',
|
|
83
|
+
'transcript.streaming': ' · 串流中…',
|
|
84
|
+
'transcript.steeringBadge': ' ⟲ 引導中',
|
|
85
|
+
'transcript.tasks': '任務',
|
|
86
|
+
'transcript.systemPrompt': ' 系統提示詞',
|
|
87
|
+
'transcript.pendingInput': ' 待送輸入 · ',
|
|
88
|
+
'transcript.steering': ' 引導',
|
|
89
|
+
'transcript.queued': ' 已排隊',
|
|
90
|
+
'note.systemReminder': '系統提醒',
|
|
91
|
+
'note.compaction': '壓縮',
|
|
92
|
+
|
|
93
|
+
// ---- images and mermaid -------------------------------------------------
|
|
94
|
+
'image.attachment': '🖼 圖片附件',
|
|
95
|
+
'image.rendering': '⏳ 正在轉譯圖片…',
|
|
96
|
+
'image.renderFailed': '⚠ 圖片轉譯失敗 · {error}',
|
|
97
|
+
'image.mermaidRendering': '⏳ 正在轉譯 mermaid 圖…',
|
|
98
|
+
'image.mermaidTooWide': '↔ mermaid 圖需要 {width} 欄,目前面板只有 {budget}',
|
|
99
|
+
'image.altFallback': '圖片',
|
|
100
|
+
|
|
101
|
+
// ---- composer / approval prompt ----------------------------------------
|
|
102
|
+
'composer.imageHint': '貼上的圖片:請使用多模態模型/外掛或 deepseek-v4-flash-vision-exp,否則無法讀取該圖片',
|
|
103
|
+
'composer.approval': '核准 · ',
|
|
104
|
+
'composer.summary': '摘要 · ',
|
|
105
|
+
'composer.origin': '來源 · ',
|
|
106
|
+
'composer.risk': '風險 · ',
|
|
107
|
+
'composer.approvalHint': 'y 允許 · n 拒絕 · Esc 取消',
|
|
108
|
+
'risk.low': '低',
|
|
109
|
+
'risk.medium': '中',
|
|
110
|
+
'risk.high': '高',
|
|
111
|
+
'composer.effortHint': 'Tab / ←/→ 調整 · Esc 關閉',
|
|
112
|
+
|
|
113
|
+
// ---- right status rail --------------------------------------------------
|
|
114
|
+
'rail.model': '模型',
|
|
115
|
+
'rail.thinking': '思考',
|
|
116
|
+
'rail.context': '上下文',
|
|
117
|
+
'rail.session': '工作階段',
|
|
118
|
+
'rail.goal': '目標',
|
|
119
|
+
'rail.subagents': '子代理程式',
|
|
120
|
+
'rail.noData': '—',
|
|
121
|
+
'rail.percentUsed': '已用 {percent}%',
|
|
122
|
+
'rail.tokens': '~{used} / {window} token',
|
|
123
|
+
'rail.cacheHit': '快取命中 {percent}%',
|
|
124
|
+
'rail.breakdown': '系統 {system} · 工具 {tools} · 訊息 {messages}',
|
|
125
|
+
'rail.contextPending': '上報用量後顯示',
|
|
126
|
+
'rail.subagentCounts': '{running} 執行中 · {total} 總計',
|
|
127
|
+
'rail.unreadable': '{label}(無法讀取)',
|
|
128
|
+
'rail.more': '… 還有 {count} 項',
|
|
129
|
+
'rail.round': ' · 第 {started}/{max} 輪',
|
|
130
|
+
'goal.active': '進行中',
|
|
131
|
+
'goal.paused': '已暫停',
|
|
132
|
+
'goal.blocked': '受阻',
|
|
133
|
+
'goal.complete': '已完成',
|
|
134
|
+
|
|
135
|
+
// ---- session stats window ----------------------------------------------
|
|
136
|
+
'stats.title': '工作階段統計',
|
|
137
|
+
'stats.hint': '點擊統計列或輸入 /stats',
|
|
138
|
+
'stats.usage': '用量',
|
|
139
|
+
'stats.duration': '耗時',
|
|
140
|
+
'stats.speed': '速度',
|
|
141
|
+
'stats.tokens': 'tokens',
|
|
142
|
+
'stats.cache': '快取',
|
|
143
|
+
'stats.context': '上下文',
|
|
144
|
+
'stats.noSteps': '尚無已完成的步驟',
|
|
145
|
+
'stats.llmTime': 'LLM {value}',
|
|
146
|
+
'stats.toolTime': '工具 {value}',
|
|
147
|
+
'stats.ttft': 'TTFT 平均 {value}',
|
|
148
|
+
'stats.tokensPerSecond': '{value} tok/s',
|
|
149
|
+
'stats.cacheRate': '快取 {percent}%',
|
|
150
|
+
'stats.inOut': '輸入 {input} · 輸出 {output}',
|
|
151
|
+
'stats.cacheDetail': '命中 {percent}% · 讀取 {read} · 寫入 {write} · 未命中 {miss}',
|
|
152
|
+
'stats.contextUsed': '已用 {percent}% ~{used} / {window}',
|
|
153
|
+
'stats.systemPrompt': '系統提示詞',
|
|
154
|
+
'stats.tools': '工具',
|
|
155
|
+
'stats.messages': '訊息',
|
|
156
|
+
'stats.compositionUnavailable': '無法取得組成',
|
|
157
|
+
'stats.contextPending': '請求上報用量後顯示上下文佔用',
|
|
158
|
+
|
|
159
|
+
// ---- questions modal ----------------------------------------------------
|
|
160
|
+
'questions.title': '問題',
|
|
161
|
+
'questions.titleOf': '問題 {index}/{total}',
|
|
162
|
+
'questions.defer': 'Esc 稍後處理',
|
|
163
|
+
'questions.range': '{from}-{to} / {total} PgUp/PgDn',
|
|
164
|
+
'questions.other': '其他: ',
|
|
165
|
+
'questions.answer': '回答: ',
|
|
166
|
+
'questions.placeholder': '輸入你自己的答案',
|
|
167
|
+
'questions.hintCustom': 'Enter 確認 · Esc 返回',
|
|
168
|
+
'questions.hintMulti': 'Space 切換 · Enter 繼續 · ↑/↓ 移動',
|
|
169
|
+
'questions.hintSingle': 'Enter 選擇 · ↑/↓ 移動',
|
|
170
|
+
|
|
171
|
+
// ---- secret prompt ------------------------------------------------------
|
|
172
|
+
'secret.hint': 'Enter 送出 · Esc 取消',
|
|
173
|
+
|
|
174
|
+
// ---- settings dialog chrome --------------------------------------------
|
|
175
|
+
'settings.title': '設定',
|
|
176
|
+
'settings.menu': '選單',
|
|
177
|
+
'settings.shared': '與 DeepSeek Harness WebUI 共用',
|
|
178
|
+
'settings.footerEdit': 'Enter 儲存 · Esc 取消',
|
|
179
|
+
'settings.footerMenu': '↑/↓ 移動 · Tab 選單 · Enter 選擇 · Esc 返回',
|
|
180
|
+
'settings.footerPlain': '↑/↓ 移動 · Enter 選擇 · Esc 返回',
|
|
181
|
+
'settings.confirmHint': '{text} · Y / N',
|
|
182
|
+
'settings.confirmDefault': 'Y 確認 · N 取消',
|
|
183
|
+
'settings.confirmDeleteSession': '再按一次 Ctrl+D 刪除',
|
|
184
|
+
'settings.confirmChange': '確認這項變更?',
|
|
185
|
+
'settings.deleteTwice': '再按一次 Ctrl+D 刪除 ',
|
|
186
|
+
'settings.deleteMcpTwice': '再按一次 Delete 移除 ',
|
|
187
|
+
'settings.noSession': '未選擇工作階段',
|
|
188
|
+
'settings.noSessions': '沒有可用的工作階段',
|
|
189
|
+
'settings.noMcp': '未選擇 MCP 伺服器',
|
|
190
|
+
'settings.noOptions': '{label} 沒有可用選項',
|
|
191
|
+
'settings.saved': '已儲存到 DSH 設定',
|
|
192
|
+
'settings.providerRemoved': '供應商已移除',
|
|
193
|
+
'settings.conflict': '設定已在其他地方變更,已重新載入',
|
|
194
|
+
'settings.error': '設定:{error}',
|
|
195
|
+
'settings.dshSettings': 'DSH 設定',
|
|
196
|
+
'settings.optionList': 'Enter 選擇 · Esc 返回',
|
|
197
|
+
|
|
198
|
+
// ---- settings left menu -------------------------------------------------
|
|
199
|
+
'menu.main': '主選單',
|
|
200
|
+
'menu.model': '模型',
|
|
201
|
+
'menu.update': '更新',
|
|
202
|
+
'menu.mcp': 'MCP',
|
|
203
|
+
|
|
204
|
+
// ---- settings rows: main tab -------------------------------------------
|
|
205
|
+
'settings.general': '一般',
|
|
206
|
+
'settings.graphics': '圖形',
|
|
207
|
+
'settings.sessions': '工作階段',
|
|
208
|
+
'settings.system': '系統',
|
|
209
|
+
'settings.busyEnter': '忙碌時 Enter',
|
|
210
|
+
'settings.defaultPreset': '預設預設集',
|
|
211
|
+
'settings.permissionPreset': '權限預設集',
|
|
212
|
+
'settings.permissionDangerConfirm': '啟用不受限制的工具與檔案存取?',
|
|
213
|
+
'settings.graphicsRendering': '圖形轉譯',
|
|
214
|
+
'settings.noProtocolFallback': '無協定回退',
|
|
215
|
+
'settings.imageHeightCap': '圖片高度上限(列)',
|
|
216
|
+
'settings.mermaidRendering': 'Mermaid 轉譯',
|
|
217
|
+
'settings.newSession': '新增工作階段',
|
|
218
|
+
'settings.manageSessions': '管理工作階段',
|
|
219
|
+
'settings.providerConfig': '供應商 API 設定',
|
|
220
|
+
'settings.updateManager': '更新管理',
|
|
221
|
+
'settings.settingsFile': '設定檔',
|
|
222
|
+
'settings.language': '語言',
|
|
223
|
+
'settings.languageSystem': '跟隨系統({language})',
|
|
224
|
+
'settings.languageSaved': '語言:{language}',
|
|
225
|
+
|
|
226
|
+
// ---- model tab ----------------------------------------------------------
|
|
227
|
+
'model.title': '模型',
|
|
228
|
+
'model.subtitle': 'Enter 將清單中的模型設為預設',
|
|
229
|
+
'model.defaultSection': '預設',
|
|
230
|
+
'model.defaultProvider': '預設供應商',
|
|
231
|
+
'model.defaultModel': '預設模型',
|
|
232
|
+
'model.reasoning': '推理',
|
|
233
|
+
'model.providerUrl': '供應商 URL',
|
|
234
|
+
'model.providerApiKey': '供應商 API 金鑰',
|
|
235
|
+
'model.displayName': '顯示名稱',
|
|
236
|
+
'model.wireProtocol': '傳輸協定',
|
|
237
|
+
'model.defaultImageInput': '預設圖片輸入',
|
|
238
|
+
'model.models': '模型',
|
|
239
|
+
'model.fetch': '取得…',
|
|
240
|
+
'model.selectedCount': '已選 {count} 項',
|
|
241
|
+
'model.removeProvider': '移除供應商',
|
|
242
|
+
'model.removeProviderConfirm': '移除 {name} 及其託管的憑證?',
|
|
243
|
+
'model.noModels': '沒有可用的模型',
|
|
244
|
+
'model.noModelsReturned': '供應商未傳回任何模型',
|
|
245
|
+
'model.fetchUnavailable': '無法自動取得 — 已儲存的模型 · Enter 切換',
|
|
246
|
+
'model.fetchOk': '已自動取得 · Enter 切換 · Esc 返回',
|
|
247
|
+
'model.fetching': '正在取得模型…',
|
|
248
|
+
'model.autoFetching': '自動取得中…',
|
|
249
|
+
'model.credentialConfigured': '已設定({source})',
|
|
250
|
+
'model.credentialMissing': '未設定',
|
|
251
|
+
'model.defaultTag': '預設',
|
|
252
|
+
'model.providerUnavailable': '供應商已無法使用',
|
|
253
|
+
'model.namespaceUnavailable': '供應商設定命名空間無法使用',
|
|
254
|
+
'model.apiKeyEmpty': 'API 金鑰不能為空',
|
|
255
|
+
'model.credentialsUnavailable': '憑證服務無法使用',
|
|
256
|
+
'model.noProviderModels': '所選供應商沒有可用的模型',
|
|
257
|
+
'model.addCount.one': '{count} 個可新增',
|
|
258
|
+
'model.addCount.other': '{count} 個可新增',
|
|
259
|
+
|
|
260
|
+
// ---- add-provider flow --------------------------------------------------
|
|
261
|
+
'provider.add': '新增供應商',
|
|
262
|
+
'provider.empty': '還沒有設定任何供應商',
|
|
263
|
+
'provider.pickSubtitle': 'Enter 選擇 · Esc 返回',
|
|
264
|
+
'provider.catalog': '已安裝的供應商',
|
|
265
|
+
'provider.catalogEmpty': '所有已安裝的供應商都已設定',
|
|
266
|
+
'provider.custom': '自訂 API — 手動宣告端點',
|
|
267
|
+
'provider.form.catalog': '啟用已安裝的供應商',
|
|
268
|
+
'provider.form.custom': '宣告自訂供應商',
|
|
269
|
+
'provider.formSubtitle': 'Enter 編輯 · Esc 返回',
|
|
270
|
+
'provider.field.route': '路由 ID',
|
|
271
|
+
'provider.field.addModel': '手動新增模型 ID',
|
|
272
|
+
'provider.field.save': '儲存供應商',
|
|
273
|
+
'provider.hint.route': '小寫字母、數字與連字號 · 金鑰儲存為 {ref}',
|
|
274
|
+
'provider.error.route': '路由 ID 必須以字母開頭,只含小寫字母、數字與連字號',
|
|
275
|
+
'provider.error.routeNeeded': '請先選擇一個供應商',
|
|
276
|
+
'provider.error.taken': '此路由 ID 已被其他供應商使用',
|
|
277
|
+
'provider.error.baseUrl': '端點必須是 http 或 https URL',
|
|
278
|
+
'provider.error.baseUrlNeeded': '自訂供應商必須填寫端點',
|
|
279
|
+
'provider.error.apiNeeded': '請選擇此端點使用的協定',
|
|
280
|
+
'provider.error.modelsNeeded': '自訂供應商至少需要一個模型',
|
|
281
|
+
'provider.error.modelId': '第 {index} 個模型缺少 ID',
|
|
282
|
+
'provider.error.modelDuplicate': '模型 "{id}" 重複出現',
|
|
283
|
+
'provider.added': '供應商已新增',
|
|
284
|
+
'provider.accountManaged': '已透過 DeepSeek 帳號登入',
|
|
285
|
+
'provider.search': '搜尋',
|
|
286
|
+
'provider.searchPlaceholder': '輸入以篩選',
|
|
287
|
+
'provider.searchEmpty': '沒有符合 "{query}" 的供應商',
|
|
288
|
+
|
|
289
|
+
// ---- 單一模型項目 --------------------------------------------------------
|
|
290
|
+
'model.edit': '編輯模型',
|
|
291
|
+
'model.editHint': 'e 編輯 · Del 刪除',
|
|
292
|
+
'model.refresh': '重新取得目錄',
|
|
293
|
+
'model.selectAll': '全選',
|
|
294
|
+
'model.fetchRefused': '端點沒有傳回任何模型清單',
|
|
295
|
+
'model.notSaved': '此模型尚未儲存',
|
|
296
|
+
'model.removed': '模型已刪除',
|
|
297
|
+
'model.form.add': '新增模型',
|
|
298
|
+
'model.form.edit': '模型 · {id}',
|
|
299
|
+
'model.form.save': '儲存模型',
|
|
300
|
+
'model.form.remove': '從供應商移除',
|
|
301
|
+
'model.form.removeConfirm': '要把這個模型從該供應商移除嗎?',
|
|
302
|
+
'model.field.id': '模型 ID',
|
|
303
|
+
'model.field.name': '顯示名稱',
|
|
304
|
+
'model.field.contextWindow': '上下文視窗',
|
|
305
|
+
'model.field.maxTokens': '最大輸出 tokens',
|
|
306
|
+
'model.field.input': '輸入類型',
|
|
307
|
+
'model.error.idNeeded': '模型必須有 ID',
|
|
308
|
+
'model.error.idDuplicate': '模型 "{id}" 已在清單中',
|
|
309
|
+
'model.error.capacity': '上下文視窗與最大 tokens 必須是整數(可寫 256K、1M)',
|
|
310
|
+
|
|
311
|
+
// ---- MCP tab ------------------------------------------------------------
|
|
312
|
+
'mcp.title': 'MCP',
|
|
313
|
+
'mcp.subtitle': 'Enter 編輯 · Del 移除 · Esc 返回',
|
|
314
|
+
'mcp.editSubtitle': 'Enter 編輯 · Esc 返回',
|
|
315
|
+
'mcp.servers': 'MCP 伺服器',
|
|
316
|
+
'mcp.empty': '尚未設定 MCP 伺服器',
|
|
317
|
+
'mcp.add': '新增 MCP 伺服器',
|
|
318
|
+
'mcp.scope': '範圍',
|
|
319
|
+
'mcp.scopeUserPrefix': '使用者 · {path}',
|
|
320
|
+
'mcp.scopePathPrefix': '路徑 · {path}',
|
|
321
|
+
'mcp.configFiles': '設定檔',
|
|
322
|
+
'mcp.userScope': '使用者(所有工作階段)',
|
|
323
|
+
'mcp.secrets': '密鑰',
|
|
324
|
+
'mcp.secretsPlain': '在設定檔中以明文儲存',
|
|
325
|
+
'mcp.loaded': '已載入',
|
|
326
|
+
'mcp.notCreated': '尚未建立',
|
|
327
|
+
'mcp.type.stdio': '本機指令',
|
|
328
|
+
'mcp.type.http': 'HTTP',
|
|
329
|
+
'mcp.type.sse': 'SSE',
|
|
330
|
+
'mcp.state.connected': '● 已連線',
|
|
331
|
+
'mcp.state.tools.one': '● {count} 個工具',
|
|
332
|
+
'mcp.state.tools.other': '● {count} 個工具',
|
|
333
|
+
'mcp.state.pending': '… 連線中',
|
|
334
|
+
'mcp.state.disabled': '○ 已停用',
|
|
335
|
+
'mcp.state.idle': '○ 未連線',
|
|
336
|
+
'mcp.form.add': '新增 MCP 伺服器',
|
|
337
|
+
'mcp.form.edit': '編輯 MCP 伺服器 · {name}',
|
|
338
|
+
'mcp.titleAdd': 'MCP · 新增',
|
|
339
|
+
'mcp.titleEdit': 'MCP · 編輯',
|
|
340
|
+
'mcp.field.name': '名稱',
|
|
341
|
+
'mcp.field.type': '類型',
|
|
342
|
+
'mcp.field.timeout': '逾時(毫秒)',
|
|
343
|
+
'mcp.field.command': '指令',
|
|
344
|
+
'mcp.field.args': '參數',
|
|
345
|
+
'mcp.field.env': '環境變數(JSON)',
|
|
346
|
+
'mcp.field.url': 'URL',
|
|
347
|
+
'mcp.field.headers': '標頭(JSON)',
|
|
348
|
+
'mcp.field.scope': '範圍',
|
|
349
|
+
'mcp.field.path': '路徑',
|
|
350
|
+
'mcp.field.enabled': '啟用',
|
|
351
|
+
'mcp.field.save': '儲存',
|
|
352
|
+
'mcp.field.remove': '移除',
|
|
353
|
+
'mcp.choice.stdio': '本機指令(stdio)',
|
|
354
|
+
'mcp.choice.http': 'HTTP(串流)',
|
|
355
|
+
'mcp.choice.sse': 'SSE(舊版 HTTP+SSE)',
|
|
356
|
+
'mcp.choice.scopeUser': '使用者 — 所有工作階段',
|
|
357
|
+
'mcp.choice.scopePath': '路徑 — 某個目錄下的工作階段',
|
|
358
|
+
'mcp.removeConfirm': '移除此 MCP 伺服器並中斷連線?',
|
|
359
|
+
'mcp.saved': 'MCP 伺服器已儲存',
|
|
360
|
+
'mcp.added': 'MCP 伺服器已新增',
|
|
361
|
+
'mcp.removed': 'MCP 伺服器已移除',
|
|
362
|
+
'mcp.error.name': '名稱必須為 1-32 個字元,只能包含字母、數字、「-」或「_」',
|
|
363
|
+
'mcp.error.duplicate': '已設定名為「{name}」的 MCP 伺服器',
|
|
364
|
+
'mcp.error.timeout': 'timeoutMs 必須是 1 到 {max} 之間的整數',
|
|
365
|
+
'mcp.error.pathNeeded': '路徑範圍的伺服器需要指定目錄',
|
|
366
|
+
'mcp.error.pathAbsolute': '路徑範圍必須是絕對目錄',
|
|
367
|
+
'mcp.error.commandNeeded': 'stdio 伺服器需要指定指令',
|
|
368
|
+
'mcp.error.urlParse': 'URL 無法解析',
|
|
369
|
+
'mcp.error.urlScheme': 'URL 必須使用 http 或 https',
|
|
370
|
+
'mcp.error.pathNotDir': '路徑範圍不是目錄:{path}',
|
|
371
|
+
'mcp.error.configIsDir': '設定檔路徑是目錄:{path}',
|
|
372
|
+
'mcp.error.notFound': '未設定名為「{name}」的 MCP 伺服器',
|
|
373
|
+
'mcp.error.documentGone': '定義「{name}」的文件已不存在:{error}',
|
|
374
|
+
'mcp.error.noClient': '主機未提供 MCP 用戶端',
|
|
375
|
+
'mcp.error.connectTimeout': '連線到 {name} 逾時',
|
|
376
|
+
'mcp.error.json': '文件不是有效的 JSON:{error}',
|
|
377
|
+
'mcp.error.jsonObject': '文件必須是 JSON 物件',
|
|
378
|
+
'mcp.error.serversObject': '「servers」必須是 JSON 物件',
|
|
379
|
+
'mcp.error.argsArray': '參數必須是字串組成的 JSON 陣列',
|
|
380
|
+
'mcp.error.argsTypes': '參數必須是字串或數字',
|
|
381
|
+
'mcp.error.argsUnclosed': '參數中有未閉合的引號',
|
|
382
|
+
'mcp.error.envObject': '{label} 必須是 JSON 物件',
|
|
383
|
+
'mcp.error.envValue': '{label} 的值「{name}」必須是字串、數字或布林值',
|
|
384
|
+
'mcp.error.header': '無效的 HTTP 標頭「{name}」',
|
|
385
|
+
'mcp.error.envName': '無效的環境變數名稱「{name}」',
|
|
386
|
+
|
|
387
|
+
// ---- rewind -------------------------------------------------------------
|
|
388
|
+
'rewind.title': '回退',
|
|
389
|
+
'rewind.restoreTo': '還原到此前的時間點:{label}',
|
|
390
|
+
'rewind.restorePrompt': '將工作階段還原到此前的時間點…',
|
|
391
|
+
'rewind.empty': '尚無可回退的位置。',
|
|
392
|
+
'rewind.option.conversation': '還原對話',
|
|
393
|
+
'rewind.option.both': '還原對話與檔案',
|
|
394
|
+
'rewind.option.code': '還原檔案',
|
|
395
|
+
'rewind.option.cancel': '取消',
|
|
396
|
+
'rewind.current': '(目前)',
|
|
397
|
+
'rewind.noPoints': '沒有可回退的使用者訊息',
|
|
398
|
+
'rewind.unknownPoint': '未知的回退點「{selector}」 — 請使用數字或 last',
|
|
399
|
+
'rewind.noPoint': '沒有回退點 {n} — 1..{count}',
|
|
400
|
+
'rewind.notGit': '不是 git 工作樹',
|
|
401
|
+
'rewind.noBackup': '沒有備份位置',
|
|
402
|
+
'rewind.filesNotRestored': '檔案未還原',
|
|
403
|
+
'rewind.filesNotRestoredReason': '檔案未還原({reason})',
|
|
404
|
+
'rewind.restored.one': '已從 HEAD 還原 {count} 個受追蹤檔案',
|
|
405
|
+
'rewind.restored.other': '已從 HEAD 還原 {count} 個受追蹤檔案',
|
|
406
|
+
'rewind.removed.one': '已刪除 {count} 個新增檔案',
|
|
407
|
+
'rewind.removed.other': '已刪除 {count} 個新增檔案',
|
|
408
|
+
'rewind.skipped': '略過 {count} 個',
|
|
409
|
+
'rewind.previousSaved': '原內容已儲存至 {path}',
|
|
410
|
+
'rewind.noChanges': '此位置之後沒有檔案變更',
|
|
411
|
+
'rewind.image': '[圖片]',
|
|
412
|
+
'rewind.images': '[{count} 張圖片]',
|
|
413
|
+
'rewind.emptyMessage': '(空)',
|
|
414
|
+
'git.title': 'Git 分支',
|
|
415
|
+
'git.subtitle': '目前:{branch} · {path}',
|
|
416
|
+
'git.local': '本機分支',
|
|
417
|
+
'git.remote': '遠端分支',
|
|
418
|
+
'git.empty': '此存放庫沒有任何分支。',
|
|
419
|
+
'git.detached': '(偵測 HEAD)',
|
|
420
|
+
'git.switched': '已切換到分支 {branch}',
|
|
421
|
+
'git.switchFailed': '無法切換到 {branch}:{error}',
|
|
422
|
+
'git.pullDone': '已拉取更新',
|
|
423
|
+
'git.pullFailed': '無法拉取更新:{error}',
|
|
424
|
+
'git.listFailed': '無法列出分支:{error}',
|
|
425
|
+
'git.notRepo': '不是 git 工作樹',
|
|
426
|
+
'git.gitMissing': 'PATH 中找不到 git',
|
|
427
|
+
'git.timedOut': 'git 執行逾時',
|
|
428
|
+
'git.onlyTitleScreen': '分支切換僅在空頁面可用 — 請先輸入 /new 離開工作階段',
|
|
429
|
+
'git.footer': '↑/↓ 選擇 · Enter 切換 · P 拉取 · R 重新整理 · Esc 關閉',
|
|
430
|
+
|
|
431
|
+
// ---- update tab ---------------------------------------------------------
|
|
432
|
+
'update.title': '更新',
|
|
433
|
+
'update.checking': '正在檢查版本…',
|
|
434
|
+
'update.fetching': '正在從 npm registry 取得…',
|
|
435
|
+
'update.fetchingVersions': '正在取得版本…',
|
|
436
|
+
'update.versionsSubtitle': 'Enter 下載 · Esc 返回',
|
|
437
|
+
'update.installed': '已安裝',
|
|
438
|
+
'update.latest': '最新(npm 標籤)',
|
|
439
|
+
'update.status': '狀態',
|
|
440
|
+
'update.versions': '版本',
|
|
441
|
+
'update.selectVersion': '選擇版本…',
|
|
442
|
+
'update.restartApply': '重新啟動以套用 {version}',
|
|
443
|
+
'update.enterRestart': 'Enter 重新啟動',
|
|
444
|
+
'update.discard': '捨棄已下載的 {version}',
|
|
445
|
+
'update.actions': '動作',
|
|
446
|
+
'update.checkNow': '立即檢查',
|
|
447
|
+
'update.checkingShort': '檢查中…',
|
|
448
|
+
'update.startupCheck': '啟動時檢查',
|
|
449
|
+
'update.profile': 'profile',
|
|
450
|
+
'update.dshPackage': 'dsh (@deepseek-ai/dsh)',
|
|
451
|
+
'update.statusCorrupt': '安裝已損毀 — 請在下方重新安裝',
|
|
452
|
+
'update.statusError': 'registry 檢查失敗:{error}',
|
|
453
|
+
'update.statusAvailable': '有可用更新 → {version}',
|
|
454
|
+
'update.statusUpToDate': '已是最新',
|
|
455
|
+
'update.statusNoStable': '沒有穩定版本 — 請從「版本」中選擇',
|
|
456
|
+
'update.notOnPath': '在 PATH 中找不到',
|
|
457
|
+
'update.subtitleStaged': '{package} {version} 已下載 — 重新啟動後套用',
|
|
458
|
+
'update.subtitleIdle': 'Enter 選擇 · 下載後重新啟動以套用',
|
|
459
|
+
'update.download': '下載',
|
|
460
|
+
'update.contacting': '正在連線到 registry…',
|
|
461
|
+
'update.version': '版本',
|
|
462
|
+
'update.savingTo': '儲存到',
|
|
463
|
+
'update.escCancels': 'Esc 取消',
|
|
464
|
+
'update.restartApplyQ': '重新啟動以套用 {label} {version}?(已下載)',
|
|
465
|
+
'update.downloadQ': '下載 {label} {version} 並重新啟動以套用?',
|
|
466
|
+
'update.localSwitch': ' — 將本機安裝切換為 registry 版本',
|
|
467
|
+
'update.downloaded': '已下載 · 重新啟動後套用',
|
|
468
|
+
'update.downloadedToast': '{label} {version} 已下載 · 可在「更新」分頁套用',
|
|
469
|
+
'update.downloadedConfirm': '已下載 重新啟動以套用 {label} {version}?(y/n)',
|
|
470
|
+
'update.alreadyDownloadedConfirm': '已下載 · 重新啟動以套用 {label} {version}?(y/n)',
|
|
471
|
+
'update.downloadCancelled': '下載已取消',
|
|
472
|
+
'update.downloadFailed': '下載失敗:{error}',
|
|
473
|
+
'update.stagedGone': '已下載的暫存檔案不存在 — 請重新選擇版本',
|
|
474
|
+
'update.locks.one': 'dsh 仍在另外 {count} 個處理程序中執行,無法套用 — 請關閉後重試',
|
|
475
|
+
'update.locks.other': 'dsh 仍在另外 {count} 個處理程序中執行,無法套用 — 請關閉後重試',
|
|
476
|
+
'update.noNpm': '無法套用:找不到 npm',
|
|
477
|
+
'update.noDshCli': '無法套用:找不到 dsh CLI',
|
|
478
|
+
'update.installerFailed': '無法啟動安裝程式 — 請重新啟動 dsh 以套用 {label}',
|
|
479
|
+
'update.applying': '正在套用 {label} · 即將結束並重新啟動…',
|
|
480
|
+
'update.stagedDiscarded': '已捨棄暫存的下載',
|
|
481
|
+
'update.tagCached': '已快取',
|
|
482
|
+
'update.tagStaged': '已暫存',
|
|
483
|
+
'update.installFailed': '安裝失敗(結束碼 {code})— 請從「版本」重試',
|
|
484
|
+
'update.installFailedRetry': '開啟「更新」→「dsh-oc-tui」→「版本」,然後選擇版本重新下載',
|
|
485
|
+
'update.installUnreadable': '安裝回報成功,但已安裝版本為 {installed}(預期 {expected})— 修復:{repair}',
|
|
486
|
+
'update.registryUnreachable': 'registry 無法連線:{error}',
|
|
487
|
+
'update.notOnRegistry': '{package} 不在 registry 中',
|
|
488
|
+
'update.registryHttp': 'registry 對 {package} 傳回 HTTP {status}',
|
|
489
|
+
'update.noTarballUrl': 'registry 回應中沒有 tarball URL',
|
|
490
|
+
'update.downloadHttp': '下載失敗:{url} 傳回 HTTP {status}',
|
|
491
|
+
'update.downloadEmpty': '下載失敗:回應內容為空',
|
|
492
|
+
'update.integrityFailed': '{file} 完整性檢查失敗 — 已捨棄該下載',
|
|
493
|
+
'update.npmMissing': '在 PATH 中找不到 npm',
|
|
494
|
+
'update.npmViewFailed': 'npm view {package} 結束碼 {code}',
|
|
495
|
+
'update.timedOut': '\n({ms}ms 後逾時)',
|
|
496
|
+
'update.noOutput': '(無輸出)',
|
|
497
|
+
|
|
498
|
+
// ---- commands -----------------------------------------------------------
|
|
499
|
+
'command.settings': '開啟 TUI 設定頁面',
|
|
500
|
+
'command.help': '顯示 TUI 快速鍵與指令參考',
|
|
501
|
+
'command.stats': '顯示工作階段 token 與快取統計',
|
|
502
|
+
'command.new': '開始新的工作階段',
|
|
503
|
+
'command.resume': '恢復已儲存的工作階段',
|
|
504
|
+
'command.clear': '清除對話記錄',
|
|
505
|
+
'command.cancel': '取消執行中的回合',
|
|
506
|
+
'command.rewind': '將工作階段回退到較早的位置',
|
|
507
|
+
'command.branch': '在空頁面切換 git 分支',
|
|
508
|
+
'command.quit': '離開 TUI',
|
|
509
|
+
|
|
510
|
+
// ---- help overlay -------------------------------------------------------
|
|
511
|
+
'help.title': 'DeepSeek Harness TUI — 說明',
|
|
512
|
+
'help.enter': 'Enter',
|
|
513
|
+
'help.enterDesc': '送出訊息',
|
|
514
|
+
'help.ctrlEnter': 'Ctrl+Enter',
|
|
515
|
+
'help.ctrlEnterDesc': '插入換行',
|
|
516
|
+
'help.ctrlC': 'Ctrl+C',
|
|
517
|
+
'help.ctrlCDesc': '取消執行中的回合;再按一次結束',
|
|
518
|
+
'help.ctrlP': 'Ctrl+P',
|
|
519
|
+
'help.ctrlPDesc': '開啟設定',
|
|
520
|
+
'help.ctrlE': 'Ctrl+E',
|
|
521
|
+
'help.ctrlEDesc': '切換思考滑桿',
|
|
522
|
+
'help.tab': 'Tab',
|
|
523
|
+
'help.tabDesc': '切換思考強度',
|
|
524
|
+
'help.ctrlN': 'Ctrl+N',
|
|
525
|
+
'help.ctrlNDesc': '新增工作階段',
|
|
526
|
+
'help.ctrlG': 'Ctrl+G',
|
|
527
|
+
'help.ctrlGDesc': '切換 git 分支(空頁面)',
|
|
528
|
+
'help.ctrlD': 'Ctrl+D',
|
|
529
|
+
'help.ctrlDDesc': '在「管理工作階段」中刪除工作階段(按兩次)',
|
|
530
|
+
'help.pg': 'PgUp / PgDn',
|
|
531
|
+
'help.pgDesc': '捲動對話記錄',
|
|
532
|
+
'help.shiftArrows': 'Shift+↑/↓',
|
|
533
|
+
'help.shiftArrowsDesc': '捲動狀態列(寬視窗)',
|
|
534
|
+
'help.upDown': 'Up / Down',
|
|
535
|
+
'help.upDownDesc': '游標上/下移;到邊界時翻閱歷史',
|
|
536
|
+
'help.mouse': '拖曳滑鼠',
|
|
537
|
+
'help.mouseDesc': '選取文字;按右鍵複製',
|
|
538
|
+
'help.wheel': '滾輪',
|
|
539
|
+
'help.wheelDesc': '捲動對話記錄 / 設定',
|
|
540
|
+
'help.escEsc': 'Esc Esc',
|
|
541
|
+
'help.escEscDesc': '回退選擇器',
|
|
542
|
+
'help.esc': 'Esc',
|
|
543
|
+
'help.escDesc': '關閉浮層 · 取消回合 · 清除輸入',
|
|
544
|
+
'help.commands': '指令:',
|
|
545
|
+
|
|
546
|
+
// ---- session manager / toasts ------------------------------------------
|
|
547
|
+
'session.newTitle': '新工作階段',
|
|
548
|
+
'session.noSaved': '沒有已儲存的工作階段',
|
|
549
|
+
'session.manageTitle': '管理工作階段',
|
|
550
|
+
'session.manageSubtitle': 'Enter 開啟 · Ctrl+D 兩次刪除 · Esc 返回',
|
|
551
|
+
'session.loading': '正在載入工作階段…',
|
|
552
|
+
'session.deleted': '已刪除工作階段 {label}',
|
|
553
|
+
'session.deleteFailed': '刪除工作階段:{error}',
|
|
554
|
+
'session.deleteNotFound': '找不到已儲存的工作階段目錄',
|
|
555
|
+
'session.deleteCancelled': '刪除已取消',
|
|
556
|
+
'session.resumed': '已恢復工作階段 {id}',
|
|
557
|
+
'session.started': '已開始工作階段 {id}',
|
|
558
|
+
'session.openFailed': '開啟工作階段失敗:{error}',
|
|
559
|
+
'session.forkSummary': '{label}(來自 {parent})· {files}',
|
|
560
|
+
'session.forkDropped': ' · 捨棄了 {count} 筆繼承的待送輸入',
|
|
561
|
+
'session.conversationOnly': '僅對話',
|
|
562
|
+
'session.rewindLabel': '回退 #{n}',
|
|
563
|
+
'session.files': '檔案:{summary}',
|
|
564
|
+
'session.error': '錯誤:{error}',
|
|
565
|
+
'session.interruptFirst': '請先中斷執行中的回合(/cancel)',
|
|
566
|
+
'session.interruptFirstEsc': '請先中斷執行中的回合(Esc 或 /cancel)',
|
|
567
|
+
'session.startFirst': '請先開始一個工作階段',
|
|
568
|
+
'session.noReasoningLevels': '目前模型沒有可用的推理等級',
|
|
569
|
+
'session.settingsUnavailable': '設定無法使用',
|
|
570
|
+
'session.interruptRequested': '已要求中斷',
|
|
571
|
+
'session.nothingToInterrupt': '沒有可中斷的內容',
|
|
572
|
+
'session.noSessionRunning': '沒有執行中的工作階段',
|
|
573
|
+
'session.promptCleared': '輸入已清除',
|
|
574
|
+
'session.exitAgain': '再按一次 Ctrl+C 結束',
|
|
575
|
+
'session.usageResume': '用法:/resume <sessionId>',
|
|
576
|
+
'session.currentModel': '目前模型:{model}',
|
|
577
|
+
'session.modelSet': '模型已設為 {model}(對下一次請求生效)',
|
|
578
|
+
'session.currentProvider': '目前供應商:{provider}',
|
|
579
|
+
'session.providerSet': '供應商已設為 {provider}(對下一次請求生效)',
|
|
580
|
+
'session.unknownCommand': '未知指令 /{name} — 試試 /help',
|
|
581
|
+
'session.queryMissing': '目前 profile 未掛載工作階段查詢服務',
|
|
582
|
+
'session.listHeader': '工作階段:',
|
|
583
|
+
'session.noPersisted': '沒有持久化的工作階段',
|
|
584
|
+
'session.listFailed': '列出工作階段失敗:{error}',
|
|
585
|
+
'session.modelNoImages': '模型「{model}」不支援圖片輸入',
|
|
586
|
+
'session.imageAttachFailed': '附加圖片失敗:{error}',
|
|
587
|
+
'session.attachmentsUnavailable': '附件服務無法使用,無法讀取圖片',
|
|
588
|
+
'session.copied.one': '已複製 {count} 行到剪貼簿',
|
|
589
|
+
'session.copied.other': '已複製 {count} 行到剪貼簿',
|
|
590
|
+
'session.valueRequired': '需要填寫值',
|
|
591
|
+
'session.minChars': '至少 {count} 個字元',
|
|
592
|
+
'session.maxChars': '最多 {count} 個字元',
|
|
593
|
+
'session.answerRequired': '請選擇選項或輸入答案',
|
|
594
|
+
'session.typeAnswer': '請輸入答案或按 Esc',
|
|
595
|
+
'session.updatesAvailable': '更新:{list} — Ctrl+P → 更新',
|
|
596
|
+
'session.versionsError': '版本:{error}',
|
|
597
|
+
'session.mcpError': 'MCP:{error}',
|
|
598
|
+
'session.noClipboard': '沒有可用的剪貼簿通道',
|
|
599
|
+
'session.unsupportedInteraction': '不支援的互動類型:{kind}',
|
|
600
|
+
|
|
601
|
+
// ---- tool activity summaries -------------------------------------------
|
|
602
|
+
'tool.run': '執行 {command}',
|
|
603
|
+
'tool.askUser': '詢問使用者',
|
|
604
|
+
'tool.askQuestions': '詢問 {count} 個問題',
|
|
32
605
|
|
|
33
|
-
// ----
|
|
34
|
-
'
|
|
35
|
-
|
|
36
|
-
'splash.shortcutThinking': '思考',
|
|
37
|
-
|
|
38
|
-
// ---- header / sidebar / status row -------------------------------------
|
|
39
|
-
// ---- command-line help (dsh --profile tui --help) -----------------------
|
|
40
|
-
'startup.description': '啟動 DeepSeek Harness 終端介面。',
|
|
41
|
-
'startup.helpOption': '顯示此說明',
|
|
42
|
-
'startup.resume': '依 id 恢復既有的持久化工作階段',
|
|
43
|
-
'startup.model': '新工作階段的預設模型 id',
|
|
44
|
-
'startup.provider': '新工作階段的預設供應商路由',
|
|
45
|
-
'startup.sidebar': '顯示工作階段側邊欄(預設)',
|
|
46
|
-
'startup.noSidebar': '啟動時不顯示側邊欄',
|
|
47
|
-
'startup.examples': '範例:',
|
|
48
|
-
'startup.exampleFresh': '啟動新的工作階段',
|
|
49
|
-
'startup.exampleResume': '恢復持久化的工作階段',
|
|
50
|
-
|
|
51
|
-
'header.workspace': '工作區',
|
|
52
|
-
'sidebar.sessions': '工作階段',
|
|
53
|
-
'sidebar.recent': '最近',
|
|
54
|
-
'sidebar.newSession': '+ 新增工作階段',
|
|
55
|
-
'status.model': '模型',
|
|
56
|
-
'status.draftTokens': '{count} 草稿 token',
|
|
57
|
-
'status.ctrlP': 'ctrl+p 指令',
|
|
58
|
-
'status.interrupt': '中斷:ctrl+c',
|
|
59
|
-
|
|
60
|
-
// ---- composer command hints --------------------------------------------
|
|
61
|
-
'hint.help': '顯示說明',
|
|
62
|
-
'hint.settings': '開啟設定',
|
|
63
|
-
'hint.new': '新增工作階段',
|
|
64
|
-
'hint.resume': '恢復工作階段',
|
|
65
|
-
'hint.model': '選擇模型',
|
|
66
|
-
'hint.provider': '選擇供應商',
|
|
67
|
-
'hint.rewind': '回退選擇器',
|
|
68
|
-
'hint.stats': '工作階段統計與 token 用量',
|
|
69
|
-
'hint.clear': '清除檢視',
|
|
70
|
-
'hint.cancel': '取消執行中的回合',
|
|
71
|
-
'hint.quit': '結束',
|
|
72
|
-
'hint.compact': '壓縮上下文',
|
|
73
|
-
'hint.goal': '管理目標',
|
|
74
|
-
|
|
75
|
-
// ---- transcript blocks --------------------------------------------------
|
|
76
|
-
'transcript.turns.one': '{count} 輪',
|
|
77
|
-
'transcript.turns.other': '{count} 輪',
|
|
78
|
-
'transcript.steps.one': '{count} 步',
|
|
79
|
-
'transcript.steps.other': '{count} 步',
|
|
80
|
-
'transcript.thinking': ' 思考',
|
|
81
|
-
'transcript.streaming': ' · 串流中…',
|
|
82
|
-
'transcript.steeringBadge': ' ⟲ 引導中',
|
|
83
|
-
'transcript.tasks': '任務',
|
|
84
|
-
'transcript.systemPrompt': ' 系統提示詞',
|
|
85
|
-
'transcript.pendingInput': ' 待送輸入 · ',
|
|
86
|
-
'transcript.steering': ' 引導',
|
|
87
|
-
'transcript.queued': ' 已排隊',
|
|
88
|
-
'note.systemReminder': '系統提醒',
|
|
89
|
-
'note.compaction': '壓縮',
|
|
90
|
-
|
|
91
|
-
// ---- images and mermaid -------------------------------------------------
|
|
92
|
-
'image.attachment': '🖼 圖片附件',
|
|
93
|
-
'image.rendering': '⏳ 正在轉譯圖片…',
|
|
94
|
-
'image.renderFailed': '⚠ 圖片轉譯失敗 · {error}',
|
|
95
|
-
'image.mermaidRendering': '⏳ 正在轉譯 mermaid 圖…',
|
|
96
|
-
'image.mermaidTooWide': '↔ mermaid 圖需要 {width} 欄,目前面板只有 {budget}',
|
|
97
|
-
'image.altFallback': '圖片',
|
|
98
|
-
|
|
99
|
-
// ---- composer / approval prompt ----------------------------------------
|
|
100
|
-
'composer.imageHint': '貼上的圖片:請使用多模態模型/外掛或 deepseek-v4-flash-vision-exp,否則無法讀取該圖片',
|
|
101
|
-
'composer.approval': '核准 · ',
|
|
102
|
-
'composer.summary': '摘要 · ',
|
|
103
|
-
'composer.origin': '來源 · ',
|
|
104
|
-
'composer.risk': '風險 · ',
|
|
105
|
-
'composer.approvalHint': 'y 允許 · n 拒絕 · Esc 取消',
|
|
106
|
-
'risk.low': '低',
|
|
107
|
-
'risk.medium': '中',
|
|
108
|
-
'risk.high': '高',
|
|
109
|
-
'composer.effortHint': 'Tab / ←/→ 調整 · Esc 關閉',
|
|
110
|
-
|
|
111
|
-
// ---- right status rail --------------------------------------------------
|
|
112
|
-
'rail.model': '模型',
|
|
113
|
-
'rail.thinking': '思考',
|
|
114
|
-
'rail.context': '上下文',
|
|
115
|
-
'rail.session': '工作階段',
|
|
116
|
-
'rail.goal': '目標',
|
|
117
|
-
'rail.subagents': '子代理程式',
|
|
118
|
-
'rail.noData': '—',
|
|
119
|
-
'rail.percentUsed': '已用 {percent}%',
|
|
120
|
-
'rail.tokens': '~{used} / {window} token',
|
|
121
|
-
'rail.cacheHit': '快取命中 {percent}%',
|
|
122
|
-
'rail.breakdown': '系統 {system} · 工具 {tools} · 訊息 {messages}',
|
|
123
|
-
'rail.contextPending': '上報用量後顯示',
|
|
124
|
-
'rail.subagentCounts': '{running} 執行中 · {total} 總計',
|
|
125
|
-
'rail.unreadable': '{label}(無法讀取)',
|
|
126
|
-
'rail.more': '… 還有 {count} 項',
|
|
127
|
-
'rail.round': ' · 第 {started}/{max} 輪',
|
|
128
|
-
'goal.active': '進行中',
|
|
129
|
-
'goal.paused': '已暫停',
|
|
130
|
-
'goal.blocked': '受阻',
|
|
131
|
-
'goal.complete': '已完成',
|
|
132
|
-
|
|
133
|
-
// ---- session stats window ----------------------------------------------
|
|
134
|
-
'stats.title': '工作階段統計',
|
|
135
|
-
'stats.hint': '點擊統計列或輸入 /stats',
|
|
136
|
-
'stats.usage': '用量',
|
|
137
|
-
'stats.duration': '耗時',
|
|
138
|
-
'stats.speed': '速度',
|
|
139
|
-
'stats.tokens': 'tokens',
|
|
140
|
-
'stats.cache': '快取',
|
|
141
|
-
'stats.context': '上下文',
|
|
142
|
-
'stats.noSteps': '尚無已完成的步驟',
|
|
143
|
-
'stats.llmTime': 'LLM {value}',
|
|
144
|
-
'stats.toolTime': '工具 {value}',
|
|
145
|
-
'stats.ttft': 'TTFT 平均 {value}',
|
|
146
|
-
'stats.tokensPerSecond': '{value} tok/s',
|
|
147
|
-
'stats.cacheRate': '快取 {percent}%',
|
|
148
|
-
'stats.inOut': '輸入 {input} · 輸出 {output}',
|
|
149
|
-
'stats.cacheDetail': '命中 {percent}% · 讀取 {read} · 寫入 {write} · 未命中 {miss}',
|
|
150
|
-
'stats.contextUsed': '已用 {percent}% ~{used} / {window}',
|
|
151
|
-
'stats.systemPrompt': '系統提示詞',
|
|
152
|
-
'stats.tools': '工具',
|
|
153
|
-
'stats.messages': '訊息',
|
|
154
|
-
'stats.compositionUnavailable': '無法取得組成',
|
|
155
|
-
'stats.contextPending': '請求上報用量後顯示上下文佔用',
|
|
156
|
-
|
|
157
|
-
// ---- questions modal ----------------------------------------------------
|
|
158
|
-
'questions.title': '問題',
|
|
159
|
-
'questions.titleOf': '問題 {index}/{total}',
|
|
160
|
-
'questions.defer': 'Esc 稍後處理',
|
|
161
|
-
'questions.range': '{from}-{to} / {total} PgUp/PgDn',
|
|
162
|
-
'questions.other': '其他: ',
|
|
163
|
-
'questions.answer': '回答: ',
|
|
164
|
-
'questions.placeholder': '輸入你自己的答案',
|
|
165
|
-
'questions.hintCustom': 'Enter 確認 · Esc 返回',
|
|
166
|
-
'questions.hintMulti': 'Space 切換 · Enter 繼續 · ↑/↓ 移動',
|
|
167
|
-
'questions.hintSingle': 'Enter 選擇 · ↑/↓ 移動',
|
|
168
|
-
|
|
169
|
-
// ---- secret prompt ------------------------------------------------------
|
|
170
|
-
'secret.hint': 'Enter 送出 · Esc 取消',
|
|
171
|
-
|
|
172
|
-
// ---- settings dialog chrome --------------------------------------------
|
|
173
|
-
'settings.title': '設定',
|
|
174
|
-
'settings.menu': '選單',
|
|
175
|
-
'settings.shared': '與 DeepSeek Harness WebUI 共用',
|
|
176
|
-
'settings.footerEdit': 'Enter 儲存 · Esc 取消',
|
|
177
|
-
'settings.footerMenu': '↑/↓ 移動 · Tab 選單 · Enter 選擇 · Esc 返回',
|
|
178
|
-
'settings.footerPlain': '↑/↓ 移動 · Enter 選擇 · Esc 返回',
|
|
179
|
-
'settings.confirmHint': '{text} · Y / N',
|
|
180
|
-
'settings.confirmDefault': 'Y 確認 · N 取消',
|
|
181
|
-
'settings.confirmDeleteSession': '再按一次 Ctrl+D 刪除',
|
|
182
|
-
'settings.confirmChange': '確認這項變更?',
|
|
183
|
-
'settings.deleteTwice': '再按一次 Ctrl+D 刪除 ',
|
|
184
|
-
'settings.deleteMcpTwice': '再按一次 Delete 移除 ',
|
|
185
|
-
'settings.noSession': '未選擇工作階段',
|
|
186
|
-
'settings.noSessions': '沒有可用的工作階段',
|
|
187
|
-
'settings.noMcp': '未選擇 MCP 伺服器',
|
|
188
|
-
'settings.noOptions': '{label} 沒有可用選項',
|
|
189
|
-
'settings.saved': '已儲存到 DSH 設定',
|
|
190
|
-
'settings.providerRemoved': '供應商已移除',
|
|
191
|
-
'settings.conflict': '設定已在其他地方變更,已重新載入',
|
|
192
|
-
'settings.error': '設定:{error}',
|
|
193
|
-
'settings.dshSettings': 'DSH 設定',
|
|
194
|
-
'settings.optionList': 'Enter 選擇 · Esc 返回',
|
|
195
|
-
|
|
196
|
-
// ---- settings left menu -------------------------------------------------
|
|
197
|
-
'menu.main': '主選單',
|
|
198
|
-
'menu.model': '模型',
|
|
199
|
-
'menu.update': '更新',
|
|
200
|
-
'menu.mcp': 'MCP',
|
|
201
|
-
|
|
202
|
-
// ---- settings rows: main tab -------------------------------------------
|
|
203
|
-
'settings.general': '一般',
|
|
204
|
-
'settings.graphics': '圖形',
|
|
205
|
-
'settings.sessions': '工作階段',
|
|
206
|
-
'settings.system': '系統',
|
|
207
|
-
'settings.busyEnter': '忙碌時 Enter',
|
|
208
|
-
'settings.defaultPreset': '預設預設集',
|
|
209
|
-
'settings.permissionPreset': '權限預設集',
|
|
210
|
-
'settings.permissionDangerConfirm': '啟用不受限制的工具與檔案存取?',
|
|
211
|
-
'settings.graphicsRendering': '圖形轉譯',
|
|
212
|
-
'settings.noProtocolFallback': '無協定回退',
|
|
213
|
-
'settings.imageHeightCap': '圖片高度上限(列)',
|
|
214
|
-
'settings.mermaidRendering': 'Mermaid 轉譯',
|
|
215
|
-
'settings.newSession': '新增工作階段',
|
|
216
|
-
'settings.manageSessions': '管理工作階段',
|
|
217
|
-
'settings.providerConfig': '供應商 API 設定',
|
|
218
|
-
'settings.updateManager': '更新管理',
|
|
219
|
-
'settings.settingsFile': '設定檔',
|
|
220
|
-
'settings.language': '語言',
|
|
221
|
-
'settings.languageSystem': '跟隨系統({language})',
|
|
222
|
-
'settings.languageSaved': '語言:{language}',
|
|
223
|
-
|
|
224
|
-
// ---- model tab ----------------------------------------------------------
|
|
225
|
-
'model.title': '模型',
|
|
226
|
-
'model.subtitle': 'Enter 將清單中的模型設為預設',
|
|
227
|
-
'model.defaultSection': '預設',
|
|
228
|
-
'model.defaultProvider': '預設供應商',
|
|
229
|
-
'model.defaultModel': '預設模型',
|
|
230
|
-
'model.reasoning': '推理',
|
|
231
|
-
'model.providerUrl': '供應商 URL',
|
|
232
|
-
'model.providerApiKey': '供應商 API 金鑰',
|
|
233
|
-
'model.displayName': '顯示名稱',
|
|
234
|
-
'model.wireProtocol': '傳輸協定',
|
|
235
|
-
'model.defaultImageInput': '預設圖片輸入',
|
|
236
|
-
'model.models': '模型',
|
|
237
|
-
'model.fetch': '取得…',
|
|
238
|
-
'model.selectedCount': '已選 {count} 項',
|
|
239
|
-
'model.removeProvider': '移除供應商',
|
|
240
|
-
'model.removeProviderConfirm': '移除 {name} 及其託管的憑證?',
|
|
241
|
-
'model.noModels': '沒有可用的模型',
|
|
242
|
-
'model.noModelsReturned': '供應商未傳回任何模型',
|
|
243
|
-
'model.fetchUnavailable': '無法自動取得 — 已儲存的模型 · Enter 切換',
|
|
244
|
-
'model.fetchOk': '已自動取得 · Enter 切換 · Esc 返回',
|
|
245
|
-
'model.fetching': '正在取得模型…',
|
|
246
|
-
'model.autoFetching': '自動取得中…',
|
|
247
|
-
'model.credentialConfigured': '已設定({source})',
|
|
248
|
-
'model.credentialMissing': '未設定',
|
|
249
|
-
'model.defaultTag': '預設',
|
|
250
|
-
'model.providerUnavailable': '供應商已無法使用',
|
|
251
|
-
'model.namespaceUnavailable': '供應商設定命名空間無法使用',
|
|
252
|
-
'model.apiKeyEmpty': 'API 金鑰不能為空',
|
|
253
|
-
'model.credentialsUnavailable': '憑證服務無法使用',
|
|
254
|
-
'model.noProviderModels': '所選供應商沒有可用的模型',
|
|
255
|
-
|
|
256
|
-
// ---- MCP tab ------------------------------------------------------------
|
|
257
|
-
'mcp.title': 'MCP',
|
|
258
|
-
'mcp.subtitle': 'Enter 編輯 · Del 移除 · Esc 返回',
|
|
259
|
-
'mcp.editSubtitle': 'Enter 編輯 · Esc 返回',
|
|
260
|
-
'mcp.servers': 'MCP 伺服器',
|
|
261
|
-
'mcp.empty': '尚未設定 MCP 伺服器',
|
|
262
|
-
'mcp.add': '新增 MCP 伺服器',
|
|
263
|
-
'mcp.scope': '範圍',
|
|
264
|
-
'mcp.scopeUserPrefix': '使用者 · {path}',
|
|
265
|
-
'mcp.scopePathPrefix': '路徑 · {path}',
|
|
266
|
-
'mcp.configFiles': '設定檔',
|
|
267
|
-
'mcp.userScope': '使用者(所有工作階段)',
|
|
268
|
-
'mcp.secrets': '密鑰',
|
|
269
|
-
'mcp.secretsPlain': '在設定檔中以明文儲存',
|
|
270
|
-
'mcp.loaded': '已載入',
|
|
271
|
-
'mcp.notCreated': '尚未建立',
|
|
272
|
-
'mcp.type.stdio': '本機指令',
|
|
273
|
-
'mcp.type.http': 'HTTP',
|
|
274
|
-
'mcp.type.sse': 'SSE',
|
|
275
|
-
'mcp.state.connected': '● 已連線',
|
|
276
|
-
'mcp.state.tools.one': '● {count} 個工具',
|
|
277
|
-
'mcp.state.tools.other': '● {count} 個工具',
|
|
278
|
-
'mcp.state.pending': '… 連線中',
|
|
279
|
-
'mcp.state.disabled': '○ 已停用',
|
|
280
|
-
'mcp.state.idle': '○ 未連線',
|
|
281
|
-
'mcp.form.add': '新增 MCP 伺服器',
|
|
282
|
-
'mcp.form.edit': '編輯 MCP 伺服器 · {name}',
|
|
283
|
-
'mcp.titleAdd': 'MCP · 新增',
|
|
284
|
-
'mcp.titleEdit': 'MCP · 編輯',
|
|
285
|
-
'mcp.field.name': '名稱',
|
|
286
|
-
'mcp.field.type': '類型',
|
|
287
|
-
'mcp.field.timeout': '逾時(毫秒)',
|
|
288
|
-
'mcp.field.command': '指令',
|
|
289
|
-
'mcp.field.args': '參數',
|
|
290
|
-
'mcp.field.env': '環境變數(JSON)',
|
|
291
|
-
'mcp.field.url': 'URL',
|
|
292
|
-
'mcp.field.headers': '標頭(JSON)',
|
|
293
|
-
'mcp.field.scope': '範圍',
|
|
294
|
-
'mcp.field.path': '路徑',
|
|
295
|
-
'mcp.field.enabled': '啟用',
|
|
296
|
-
'mcp.field.save': '儲存',
|
|
297
|
-
'mcp.field.remove': '移除',
|
|
298
|
-
'mcp.choice.stdio': '本機指令(stdio)',
|
|
299
|
-
'mcp.choice.http': 'HTTP(串流)',
|
|
300
|
-
'mcp.choice.sse': 'SSE(舊版 HTTP+SSE)',
|
|
301
|
-
'mcp.choice.scopeUser': '使用者 — 所有工作階段',
|
|
302
|
-
'mcp.choice.scopePath': '路徑 — 某個目錄下的工作階段',
|
|
303
|
-
'mcp.removeConfirm': '移除此 MCP 伺服器並中斷連線?',
|
|
304
|
-
'mcp.saved': 'MCP 伺服器已儲存',
|
|
305
|
-
'mcp.added': 'MCP 伺服器已新增',
|
|
306
|
-
'mcp.removed': 'MCP 伺服器已移除',
|
|
307
|
-
'mcp.error.name': '名稱必須為 1-32 個字元,只能包含字母、數字、「-」或「_」',
|
|
308
|
-
'mcp.error.duplicate': '已設定名為「{name}」的 MCP 伺服器',
|
|
309
|
-
'mcp.error.timeout': 'timeoutMs 必須是 1 到 {max} 之間的整數',
|
|
310
|
-
'mcp.error.pathNeeded': '路徑範圍的伺服器需要指定目錄',
|
|
311
|
-
'mcp.error.pathAbsolute': '路徑範圍必須是絕對目錄',
|
|
312
|
-
'mcp.error.commandNeeded': 'stdio 伺服器需要指定指令',
|
|
313
|
-
'mcp.error.urlParse': 'URL 無法解析',
|
|
314
|
-
'mcp.error.urlScheme': 'URL 必須使用 http 或 https',
|
|
315
|
-
'mcp.error.pathNotDir': '路徑範圍不是目錄:{path}',
|
|
316
|
-
'mcp.error.configIsDir': '設定檔路徑是目錄:{path}',
|
|
317
|
-
'mcp.error.notFound': '未設定名為「{name}」的 MCP 伺服器',
|
|
318
|
-
'mcp.error.documentGone': '定義「{name}」的文件已不存在:{error}',
|
|
319
|
-
'mcp.error.noClient': '主機未提供 MCP 用戶端',
|
|
320
|
-
'mcp.error.connectTimeout': '連線到 {name} 逾時',
|
|
321
|
-
'mcp.error.json': '文件不是有效的 JSON:{error}',
|
|
322
|
-
'mcp.error.jsonObject': '文件必須是 JSON 物件',
|
|
323
|
-
'mcp.error.serversObject': '「servers」必須是 JSON 物件',
|
|
324
|
-
'mcp.error.argsArray': '參數必須是字串組成的 JSON 陣列',
|
|
325
|
-
'mcp.error.argsTypes': '參數必須是字串或數字',
|
|
326
|
-
'mcp.error.argsUnclosed': '參數中有未閉合的引號',
|
|
327
|
-
'mcp.error.envObject': '{label} 必須是 JSON 物件',
|
|
328
|
-
'mcp.error.envValue': '{label} 的值「{name}」必須是字串、數字或布林值',
|
|
329
|
-
'mcp.error.header': '無效的 HTTP 標頭「{name}」',
|
|
330
|
-
'mcp.error.envName': '無效的環境變數名稱「{name}」',
|
|
331
|
-
|
|
332
|
-
// ---- rewind -------------------------------------------------------------
|
|
333
|
-
'rewind.title': '回退',
|
|
334
|
-
'rewind.restoreTo': '還原到此前的時間點:{label}',
|
|
335
|
-
'rewind.restorePrompt': '將工作階段還原到此前的時間點…',
|
|
336
|
-
'rewind.empty': '尚無可回退的位置。',
|
|
337
|
-
'rewind.option.conversation': '還原對話',
|
|
338
|
-
'rewind.option.both': '還原對話與檔案',
|
|
339
|
-
'rewind.option.code': '還原檔案',
|
|
340
|
-
'rewind.option.cancel': '取消',
|
|
341
|
-
'rewind.current': '(目前)',
|
|
342
|
-
'rewind.noPoints': '沒有可回退的使用者訊息',
|
|
343
|
-
'rewind.unknownPoint': '未知的回退點「{selector}」 — 請使用數字或 last',
|
|
344
|
-
'rewind.noPoint': '沒有回退點 {n} — 1..{count}',
|
|
345
|
-
'rewind.notGit': '不是 git 工作樹',
|
|
346
|
-
'rewind.noBackup': '沒有備份位置',
|
|
347
|
-
'rewind.filesNotRestored': '檔案未還原',
|
|
348
|
-
'rewind.filesNotRestoredReason': '檔案未還原({reason})',
|
|
349
|
-
'rewind.restored.one': '已從 HEAD 還原 {count} 個受追蹤檔案',
|
|
350
|
-
'rewind.restored.other': '已從 HEAD 還原 {count} 個受追蹤檔案',
|
|
351
|
-
'rewind.removed.one': '已刪除 {count} 個新增檔案',
|
|
352
|
-
'rewind.removed.other': '已刪除 {count} 個新增檔案',
|
|
353
|
-
'rewind.skipped': '略過 {count} 個',
|
|
354
|
-
'rewind.previousSaved': '原內容已儲存至 {path}',
|
|
355
|
-
'rewind.noChanges': '此位置之後沒有檔案變更',
|
|
356
|
-
'rewind.image': '[圖片]',
|
|
357
|
-
'rewind.images': '[{count} 張圖片]',
|
|
358
|
-
'rewind.emptyMessage': '(空)',
|
|
359
|
-
|
|
360
|
-
// ---- update tab ---------------------------------------------------------
|
|
361
|
-
'update.title': '更新',
|
|
362
|
-
'update.checking': '正在檢查版本…',
|
|
363
|
-
'update.fetching': '正在從 npm registry 取得…',
|
|
364
|
-
'update.fetchingVersions': '正在取得版本…',
|
|
365
|
-
'update.versionsSubtitle': 'Enter 下載 · Esc 返回',
|
|
366
|
-
'update.installed': '已安裝',
|
|
367
|
-
'update.latest': '最新(npm 標籤)',
|
|
368
|
-
'update.status': '狀態',
|
|
369
|
-
'update.versions': '版本',
|
|
370
|
-
'update.selectVersion': '選擇版本…',
|
|
371
|
-
'update.restartApply': '重新啟動以套用 {version}',
|
|
372
|
-
'update.enterRestart': 'Enter 重新啟動',
|
|
373
|
-
'update.discard': '捨棄已下載的 {version}',
|
|
374
|
-
'update.actions': '動作',
|
|
375
|
-
'update.checkNow': '立即檢查',
|
|
376
|
-
'update.checkingShort': '檢查中…',
|
|
377
|
-
'update.startupCheck': '啟動時檢查',
|
|
378
|
-
'update.profile': 'profile',
|
|
379
|
-
'update.dshPackage': 'dsh (@deepseek-ai/dsh)',
|
|
380
|
-
'update.statusCorrupt': '安裝已損毀 — 請在下方重新安裝',
|
|
381
|
-
'update.statusError': 'registry 檢查失敗:{error}',
|
|
382
|
-
'update.statusAvailable': '有可用更新 → {version}',
|
|
383
|
-
'update.statusUpToDate': '已是最新',
|
|
384
|
-
'update.statusNoStable': '沒有穩定版本 — 請從「版本」中選擇',
|
|
385
|
-
'update.notOnPath': '在 PATH 中找不到',
|
|
386
|
-
'update.subtitleStaged': '{package} {version} 已下載 — 重新啟動後套用',
|
|
387
|
-
'update.subtitleIdle': 'Enter 選擇 · 下載後重新啟動以套用',
|
|
388
|
-
'update.download': '下載',
|
|
389
|
-
'update.contacting': '正在連線到 registry…',
|
|
390
|
-
'update.version': '版本',
|
|
391
|
-
'update.savingTo': '儲存到',
|
|
392
|
-
'update.escCancels': 'Esc 取消',
|
|
393
|
-
'update.restartApplyQ': '重新啟動以套用 {label} {version}?(已下載)',
|
|
394
|
-
'update.downloadQ': '下載 {label} {version} 並重新啟動以套用?',
|
|
395
|
-
'update.localSwitch': ' — 將本機安裝切換為 registry 版本',
|
|
396
|
-
'update.downloaded': '已下載 · 重新啟動後套用',
|
|
397
|
-
'update.downloadedToast': '{label} {version} 已下載 · 可在「更新」分頁套用',
|
|
398
|
-
'update.downloadedConfirm': '已下載 重新啟動以套用 {label} {version}?(y/n)',
|
|
399
|
-
'update.alreadyDownloadedConfirm': '已下載 · 重新啟動以套用 {label} {version}?(y/n)',
|
|
400
|
-
'update.downloadCancelled': '下載已取消',
|
|
401
|
-
'update.downloadFailed': '下載失敗:{error}',
|
|
402
|
-
'update.stagedGone': '已下載的暫存檔案不存在 — 請重新選擇版本',
|
|
403
|
-
'update.locks.one': 'dsh 仍在另外 {count} 個處理程序中執行,無法套用 — 請關閉後重試',
|
|
404
|
-
'update.locks.other': 'dsh 仍在另外 {count} 個處理程序中執行,無法套用 — 請關閉後重試',
|
|
405
|
-
'update.noNpm': '無法套用:找不到 npm',
|
|
406
|
-
'update.noDshCli': '無法套用:找不到 dsh CLI',
|
|
407
|
-
'update.installerFailed': '無法啟動安裝程式 — 請重新啟動 dsh 以套用 {label}',
|
|
408
|
-
'update.applying': '正在套用 {label} · 即將結束並重新啟動…',
|
|
409
|
-
'update.stagedDiscarded': '已捨棄暫存的下載',
|
|
410
|
-
'update.tagCached': '已快取',
|
|
411
|
-
'update.tagStaged': '已暫存',
|
|
412
|
-
'update.installFailed': '安裝失敗(結束碼 {code})— 請從「版本」重試',
|
|
413
|
-
'update.installFailedRetry': '開啟「更新」→「dsh-oc-tui」→「版本」,然後選擇版本重新下載',
|
|
414
|
-
'update.installUnreadable': '安裝回報成功,但已安裝版本為 {installed}(預期 {expected})— 修復:{repair}',
|
|
415
|
-
'update.registryUnreachable': 'registry 無法連線:{error}',
|
|
416
|
-
'update.notOnRegistry': '{package} 不在 registry 中',
|
|
417
|
-
'update.registryHttp': 'registry 對 {package} 傳回 HTTP {status}',
|
|
418
|
-
'update.noTarballUrl': 'registry 回應中沒有 tarball URL',
|
|
419
|
-
'update.downloadHttp': '下載失敗:{url} 傳回 HTTP {status}',
|
|
420
|
-
'update.downloadEmpty': '下載失敗:回應內容為空',
|
|
421
|
-
'update.integrityFailed': '{file} 完整性檢查失敗 — 已捨棄該下載',
|
|
422
|
-
'update.npmMissing': '在 PATH 中找不到 npm',
|
|
423
|
-
'update.npmViewFailed': 'npm view {package} 結束碼 {code}',
|
|
424
|
-
'update.timedOut': '\n({ms}ms 後逾時)',
|
|
425
|
-
'update.noOutput': '(無輸出)',
|
|
426
|
-
|
|
427
|
-
// ---- commands -----------------------------------------------------------
|
|
428
|
-
'command.settings': '開啟 TUI 設定頁面',
|
|
429
|
-
'command.help': '顯示 TUI 快速鍵與指令參考',
|
|
430
|
-
'command.stats': '顯示工作階段 token 與快取統計',
|
|
431
|
-
'command.new': '開始新的工作階段',
|
|
432
|
-
'command.resume': '恢復已儲存的工作階段',
|
|
433
|
-
'command.clear': '清除對話記錄',
|
|
434
|
-
'command.cancel': '取消執行中的回合',
|
|
435
|
-
'command.rewind': '將工作階段回退到較早的位置',
|
|
436
|
-
'command.quit': '離開 TUI',
|
|
437
|
-
|
|
438
|
-
// ---- help overlay -------------------------------------------------------
|
|
439
|
-
'help.title': 'DeepSeek Harness TUI — 說明',
|
|
440
|
-
'help.enter': 'Enter',
|
|
441
|
-
'help.enterDesc': '送出訊息',
|
|
442
|
-
'help.ctrlEnter': 'Ctrl+Enter',
|
|
443
|
-
'help.ctrlEnterDesc': '插入換行',
|
|
444
|
-
'help.ctrlC': 'Ctrl+C',
|
|
445
|
-
'help.ctrlCDesc': '取消執行中的回合;再按一次結束',
|
|
446
|
-
'help.ctrlP': 'Ctrl+P',
|
|
447
|
-
'help.ctrlPDesc': '開啟設定',
|
|
448
|
-
'help.ctrlE': 'Ctrl+E',
|
|
449
|
-
'help.ctrlEDesc': '切換思考滑桿',
|
|
450
|
-
'help.tab': 'Tab',
|
|
451
|
-
'help.tabDesc': '切換思考強度',
|
|
452
|
-
'help.ctrlN': 'Ctrl+N',
|
|
453
|
-
'help.ctrlNDesc': '新增工作階段',
|
|
454
|
-
'help.ctrlD': 'Ctrl+D',
|
|
455
|
-
'help.ctrlDDesc': '在「管理工作階段」中刪除工作階段(按兩次)',
|
|
456
|
-
'help.pg': 'PgUp / PgDn',
|
|
457
|
-
'help.pgDesc': '捲動對話記錄',
|
|
458
|
-
'help.shiftArrows': 'Shift+↑/↓',
|
|
459
|
-
'help.shiftArrowsDesc': '捲動狀態列(寬視窗)',
|
|
460
|
-
'help.upDown': 'Up / Down',
|
|
461
|
-
'help.upDownDesc': '游標上/下移;到邊界時翻閱歷史',
|
|
462
|
-
'help.mouse': '拖曳滑鼠',
|
|
463
|
-
'help.mouseDesc': '選取文字;按右鍵複製',
|
|
464
|
-
'help.wheel': '滾輪',
|
|
465
|
-
'help.wheelDesc': '捲動對話記錄 / 設定',
|
|
466
|
-
'help.escEsc': 'Esc Esc',
|
|
467
|
-
'help.escEscDesc': '回退選擇器',
|
|
468
|
-
'help.esc': 'Esc',
|
|
469
|
-
'help.escDesc': '關閉浮層 · 取消回合 · 清除輸入',
|
|
470
|
-
'help.commands': '指令:',
|
|
471
|
-
|
|
472
|
-
// ---- session manager / toasts ------------------------------------------
|
|
473
|
-
'session.newTitle': '新工作階段',
|
|
474
|
-
'session.noSaved': '沒有已儲存的工作階段',
|
|
475
|
-
'session.manageTitle': '管理工作階段',
|
|
476
|
-
'session.manageSubtitle': 'Enter 開啟 · Ctrl+D 兩次刪除 · Esc 返回',
|
|
477
|
-
'session.loading': '正在載入工作階段…',
|
|
478
|
-
'session.deleted': '已刪除工作階段 {label}',
|
|
479
|
-
'session.deleteFailed': '刪除工作階段:{error}',
|
|
480
|
-
'session.deleteNotFound': '找不到已儲存的工作階段目錄',
|
|
481
|
-
'session.deleteCancelled': '刪除已取消',
|
|
482
|
-
'session.resumed': '已恢復工作階段 {id}',
|
|
483
|
-
'session.started': '已開始工作階段 {id}',
|
|
484
|
-
'session.openFailed': '開啟工作階段失敗:{error}',
|
|
485
|
-
'session.forkSummary': '{label}(來自 {parent})· {files}',
|
|
486
|
-
'session.forkDropped': ' · 捨棄了 {count} 筆繼承的待送輸入',
|
|
487
|
-
'session.conversationOnly': '僅對話',
|
|
488
|
-
'session.rewindLabel': '回退 #{n}',
|
|
489
|
-
'session.files': '檔案:{summary}',
|
|
490
|
-
'session.error': '錯誤:{error}',
|
|
491
|
-
'session.interruptFirst': '請先中斷執行中的回合(/cancel)',
|
|
492
|
-
'session.interruptFirstEsc': '請先中斷執行中的回合(Esc 或 /cancel)',
|
|
493
|
-
'session.startFirst': '請先開始一個工作階段',
|
|
494
|
-
'session.noReasoningLevels': '目前模型沒有可用的推理等級',
|
|
495
|
-
'session.settingsUnavailable': '設定無法使用',
|
|
496
|
-
'session.interruptRequested': '已要求中斷',
|
|
497
|
-
'session.nothingToInterrupt': '沒有可中斷的內容',
|
|
498
|
-
'session.noSessionRunning': '沒有執行中的工作階段',
|
|
499
|
-
'session.promptCleared': '輸入已清除',
|
|
500
|
-
'session.exitAgain': '再按一次 Ctrl+C 結束',
|
|
501
|
-
'session.usageResume': '用法:/resume <sessionId>',
|
|
502
|
-
'session.currentModel': '目前模型:{model}',
|
|
503
|
-
'session.modelSet': '模型已設為 {model}(對下一次請求生效)',
|
|
504
|
-
'session.currentProvider': '目前供應商:{provider}',
|
|
505
|
-
'session.providerSet': '供應商已設為 {provider}(對下一次請求生效)',
|
|
506
|
-
'session.unknownCommand': '未知指令 /{name} — 試試 /help',
|
|
507
|
-
'session.queryMissing': '目前 profile 未掛載工作階段查詢服務',
|
|
508
|
-
'session.listHeader': '工作階段:',
|
|
509
|
-
'session.noPersisted': '沒有持久化的工作階段',
|
|
510
|
-
'session.listFailed': '列出工作階段失敗:{error}',
|
|
511
|
-
'session.modelNoImages': '模型「{model}」不支援圖片輸入',
|
|
512
|
-
'session.imageAttachFailed': '附加圖片失敗:{error}',
|
|
513
|
-
'session.attachmentsUnavailable': '附件服務無法使用,無法讀取圖片',
|
|
514
|
-
'session.copied.one': '已複製 {count} 行到剪貼簿',
|
|
515
|
-
'session.copied.other': '已複製 {count} 行到剪貼簿',
|
|
516
|
-
'session.valueRequired': '需要填寫值',
|
|
517
|
-
'session.minChars': '至少 {count} 個字元',
|
|
518
|
-
'session.maxChars': '最多 {count} 個字元',
|
|
519
|
-
'session.answerRequired': '請選擇選項或輸入答案',
|
|
520
|
-
'session.typeAnswer': '請輸入答案或按 Esc',
|
|
521
|
-
'session.updatesAvailable': '更新:{list} — Ctrl+P → 更新',
|
|
522
|
-
'session.versionsError': '版本:{error}',
|
|
523
|
-
'session.mcpError': 'MCP:{error}',
|
|
524
|
-
'session.noClipboard': '沒有可用的剪貼簿通道',
|
|
525
|
-
'session.unsupportedInteraction': '不支援的互動類型:{kind}',
|
|
526
|
-
|
|
527
|
-
// ---- tool activity summaries -------------------------------------------
|
|
528
|
-
'tool.run': '執行 {command}',
|
|
529
|
-
'tool.askUser': '詢問使用者',
|
|
530
|
-
'tool.askQuestions': '詢問 {count} 個問題',
|
|
531
|
-
}
|
|
606
|
+
// ---- host diagnostics ----------------------------------------------------
|
|
607
|
+
'diagnostics.notice': '宿主診斷已寫入 {path}',
|
|
608
|
+
}
|