dsh-oc-tui 0.2.0 → 0.3.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 +21 -563
- package/bin/mcp-sse-bridge.mjs +499 -499
- package/docs/assets/conversation.png +0 -0
- package/docs/assets/cover.png +0 -0
- package/docs/assets/home.png +0 -0
- package/docs/assets/settings.png +0 -0
- package/docs/dsh-std-/346/216/245/345/205/245/350/257/264/346/230/216.md +566 -0
- package/docs/user-guide.md +616 -0
- package/docs//347/224/250/346/210/267/346/211/213/345/206/214.md +607 -593
- package/dsh-plugin.json +69 -69
- package/lib/boot-block.js +129 -0
- package/lib/diagnostics.js +162 -120
- package/lib/dsh-version.js +161 -0
- package/lib/git-branch.js +157 -157
- package/lib/i18n.js +283 -283
- package/lib/image.js +2 -1
- package/lib/index.js +5183 -4812
- package/lib/locales/ar.js +670 -635
- package/lib/locales/de.js +639 -604
- package/lib/locales/en.js +35 -0
- package/lib/locales/es.js +639 -604
- package/lib/locales/fr.js +639 -604
- package/lib/locales/id.js +641 -606
- package/lib/locales/it.js +639 -604
- package/lib/locales/ja.js +639 -604
- package/lib/locales/ko.js +639 -604
- package/lib/locales/nl.js +639 -604
- package/lib/locales/pl.js +653 -618
- package/lib/locales/pt-BR.js +639 -604
- package/lib/locales/ru.js +653 -618
- package/lib/locales/tr.js +639 -604
- package/lib/locales/vi.js +641 -606
- package/lib/locales/zh-CN.js +640 -605
- package/lib/locales/zh-TW.js +640 -605
- package/lib/markdown.js +101 -27
- package/lib/mcp-monitor.js +189 -0
- package/lib/mcp-skill.js +93 -93
- package/lib/mcp.js +865 -838
- package/lib/model-route.js +66 -0
- package/lib/providers.js +712 -712
- package/lib/screenshot.js +140 -0
- package/lib/splash-opencode.js +29 -26
- package/lib/startup.js +66 -48
- package/lib/term.js +53 -11
- package/lib/themes.js +101 -0
- package/lib/ui.js +685 -443
- package/lib/updates.js +5 -2
- package/lib/web-settings.js +52 -21
- package/package.json +160 -146
- package/skills/mcp-import/SKILL.md +216 -216
package/lib/locales/es.js
CHANGED
|
@@ -1,607 +1,642 @@
|
|
|
1
|
-
// Spanish catalog. Keys, order and placeholders mirror `en.js`, the source.
|
|
2
|
-
export default {
|
|
3
|
-
// ---- shared chrome ------------------------------------------------------
|
|
4
|
-
'common.selectBack': 'Enter seleccionar · Esc volver',
|
|
5
|
-
'common.selectConfirmBack': '↑/↓ seleccionar · Enter confirmar · Esc volver',
|
|
6
|
-
'common.selectContinueExit': '↑/↓ seleccionar · Enter continuar · Esc salir',
|
|
7
|
-
'common.escBack': 'Esc volver',
|
|
8
|
-
'common.escClose': 'Esc cerrar',
|
|
9
|
-
'common.escCancel': 'Esc cancelar',
|
|
10
|
-
'common.working': 'Trabajando…',
|
|
11
|
-
'common.pleaseWait': 'esperar',
|
|
12
|
-
'common.on': 'activado',
|
|
13
|
-
'common.off': 'desactivado',
|
|
14
|
-
'common.unavailable': 'no disponible',
|
|
15
|
-
'common.selected': 'seleccionado',
|
|
16
|
-
'common.default': 'predeterminado',
|
|
17
|
-
'common.system': 'sistema',
|
|
18
|
-
'common.installed': '(instalado)',
|
|
19
|
-
'common.more': '… {count} más',
|
|
20
|
-
'common.moreLines': '… {count} líneas más',
|
|
21
|
-
'common.clickExpand': ' · clic para expandir',
|
|
22
|
-
'common.clickCollapse': ' · clic para contraer',
|
|
23
|
-
'common.unknown': 'desconocido',
|
|
24
|
-
'common.emptyMessage': '[mensaje vacío]',
|
|
25
|
-
'value.queue': 'cola',
|
|
26
|
-
'value.steer': 'dirigir',
|
|
27
|
-
'value.auto': 'automático',
|
|
28
|
-
'value.local': 'local',
|
|
29
|
-
'value.textOnly': 'solo texto',
|
|
30
|
-
'value.textImage': 'texto + imagen',
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
'splash.
|
|
36
|
-
'splash.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
'startup.
|
|
43
|
-
'startup.
|
|
44
|
-
'startup.
|
|
45
|
-
'startup.
|
|
46
|
-
'startup.
|
|
47
|
-
'startup.
|
|
48
|
-
'startup.
|
|
49
|
-
'startup.
|
|
50
|
-
|
|
51
|
-
'
|
|
52
|
-
|
|
53
|
-
'
|
|
54
|
-
'sidebar.
|
|
55
|
-
'
|
|
56
|
-
'
|
|
57
|
-
'status.
|
|
58
|
-
'status.
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
'hint.
|
|
64
|
-
'hint.
|
|
65
|
-
'hint.
|
|
66
|
-
'hint.
|
|
67
|
-
'hint.
|
|
68
|
-
'hint.
|
|
69
|
-
'hint.
|
|
70
|
-
'hint.
|
|
71
|
-
'hint.
|
|
72
|
-
'hint.
|
|
73
|
-
'hint.
|
|
74
|
-
'hint.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
'transcript.
|
|
80
|
-
'transcript.
|
|
81
|
-
'transcript.
|
|
82
|
-
'transcript.
|
|
83
|
-
'transcript.
|
|
84
|
-
'transcript.
|
|
85
|
-
'transcript.
|
|
86
|
-
'transcript.
|
|
87
|
-
'transcript.
|
|
88
|
-
'transcript.
|
|
89
|
-
'
|
|
90
|
-
'
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
'
|
|
94
|
-
'
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
'image.
|
|
98
|
-
'image.
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
'
|
|
102
|
-
'
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
'composer.
|
|
106
|
-
'composer.
|
|
107
|
-
'
|
|
108
|
-
'
|
|
109
|
-
'
|
|
110
|
-
'composer.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
'
|
|
114
|
-
'
|
|
115
|
-
'
|
|
116
|
-
'
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
'rail.
|
|
120
|
-
'rail.
|
|
121
|
-
'rail.
|
|
122
|
-
'rail.
|
|
123
|
-
'rail.
|
|
124
|
-
'rail.
|
|
125
|
-
'rail.
|
|
126
|
-
'rail.
|
|
127
|
-
'rail.
|
|
128
|
-
'rail.
|
|
129
|
-
'
|
|
130
|
-
'
|
|
131
|
-
'
|
|
132
|
-
'
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
'
|
|
136
|
-
'
|
|
137
|
-
'
|
|
138
|
-
'
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
'stats.
|
|
142
|
-
'stats.
|
|
143
|
-
'stats.
|
|
144
|
-
'stats.
|
|
145
|
-
'stats.
|
|
146
|
-
'stats.
|
|
147
|
-
'stats.
|
|
148
|
-
'stats.
|
|
149
|
-
'stats.
|
|
150
|
-
'stats.
|
|
151
|
-
'stats.
|
|
152
|
-
'stats.
|
|
153
|
-
'stats.
|
|
154
|
-
'stats.
|
|
155
|
-
'stats.
|
|
156
|
-
'stats.
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
'
|
|
160
|
-
'
|
|
161
|
-
'
|
|
162
|
-
'
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
'questions.
|
|
166
|
-
'questions.
|
|
167
|
-
'questions.
|
|
168
|
-
'questions.
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
'
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
'
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
'
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
'
|
|
181
|
-
'
|
|
182
|
-
'
|
|
183
|
-
'
|
|
184
|
-
'
|
|
185
|
-
'
|
|
186
|
-
'
|
|
187
|
-
'
|
|
188
|
-
'
|
|
189
|
-
'
|
|
190
|
-
'
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
'settings.
|
|
194
|
-
'settings.
|
|
195
|
-
'settings.
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
'
|
|
199
|
-
'
|
|
200
|
-
'
|
|
201
|
-
'
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
'settings.
|
|
205
|
-
'settings.
|
|
206
|
-
'settings.
|
|
207
|
-
'settings.
|
|
208
|
-
'settings.
|
|
209
|
-
'settings.
|
|
210
|
-
'settings.
|
|
211
|
-
'settings.
|
|
212
|
-
'settings.
|
|
213
|
-
'settings.
|
|
214
|
-
'settings.
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
'
|
|
218
|
-
'
|
|
219
|
-
'
|
|
220
|
-
'
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
'settings.
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
'
|
|
227
|
-
'
|
|
228
|
-
'
|
|
229
|
-
'
|
|
230
|
-
'
|
|
231
|
-
'
|
|
232
|
-
'
|
|
233
|
-
'
|
|
234
|
-
'
|
|
235
|
-
'
|
|
236
|
-
'
|
|
237
|
-
'
|
|
238
|
-
'
|
|
239
|
-
'
|
|
240
|
-
'
|
|
241
|
-
'
|
|
242
|
-
'
|
|
243
|
-
'
|
|
244
|
-
'
|
|
245
|
-
'
|
|
246
|
-
'
|
|
247
|
-
'
|
|
248
|
-
'
|
|
249
|
-
'
|
|
250
|
-
'
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
'model.
|
|
254
|
-
'model.
|
|
255
|
-
'model.
|
|
256
|
-
'model.
|
|
257
|
-
'model.
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
'
|
|
261
|
-
'
|
|
262
|
-
'
|
|
263
|
-
'
|
|
264
|
-
'
|
|
265
|
-
'
|
|
266
|
-
'
|
|
267
|
-
'
|
|
268
|
-
'
|
|
269
|
-
'
|
|
270
|
-
'
|
|
271
|
-
'
|
|
272
|
-
'
|
|
273
|
-
'
|
|
274
|
-
'
|
|
275
|
-
'
|
|
276
|
-
'
|
|
277
|
-
'
|
|
278
|
-
'
|
|
279
|
-
'
|
|
280
|
-
'
|
|
281
|
-
'
|
|
282
|
-
'
|
|
283
|
-
'
|
|
284
|
-
'
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
'
|
|
290
|
-
'
|
|
291
|
-
'
|
|
292
|
-
'
|
|
293
|
-
'
|
|
294
|
-
'
|
|
295
|
-
'
|
|
296
|
-
'
|
|
297
|
-
'
|
|
298
|
-
'
|
|
299
|
-
'
|
|
300
|
-
'
|
|
301
|
-
'
|
|
302
|
-
'
|
|
303
|
-
'
|
|
304
|
-
'
|
|
305
|
-
'
|
|
306
|
-
'
|
|
307
|
-
'
|
|
308
|
-
'
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
'
|
|
312
|
-
'
|
|
313
|
-
'
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
'
|
|
317
|
-
'
|
|
318
|
-
'
|
|
319
|
-
'
|
|
320
|
-
'
|
|
321
|
-
'
|
|
322
|
-
'
|
|
323
|
-
'
|
|
324
|
-
'
|
|
325
|
-
'
|
|
326
|
-
'
|
|
327
|
-
'
|
|
328
|
-
'
|
|
329
|
-
'
|
|
330
|
-
'
|
|
331
|
-
'
|
|
332
|
-
'
|
|
333
|
-
'
|
|
334
|
-
'
|
|
335
|
-
'
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
'mcp.
|
|
339
|
-
'mcp.
|
|
340
|
-
'mcp.
|
|
341
|
-
'mcp.
|
|
342
|
-
'mcp.
|
|
343
|
-
'mcp.
|
|
344
|
-
'mcp.
|
|
345
|
-
'mcp.
|
|
346
|
-
'mcp.
|
|
347
|
-
'mcp.
|
|
348
|
-
'mcp.
|
|
349
|
-
'mcp.
|
|
350
|
-
'mcp.
|
|
351
|
-
'mcp.
|
|
352
|
-
'mcp.
|
|
353
|
-
'mcp.
|
|
354
|
-
'mcp.
|
|
355
|
-
'mcp.
|
|
356
|
-
'mcp.
|
|
357
|
-
'mcp.
|
|
358
|
-
'mcp.
|
|
359
|
-
'mcp.
|
|
360
|
-
'mcp.
|
|
361
|
-
'mcp.
|
|
362
|
-
'mcp.
|
|
363
|
-
'mcp.
|
|
364
|
-
'mcp.
|
|
365
|
-
'mcp.
|
|
366
|
-
'mcp.
|
|
367
|
-
'mcp.
|
|
368
|
-
'mcp.
|
|
369
|
-
'mcp.
|
|
370
|
-
'mcp.
|
|
371
|
-
'mcp.
|
|
372
|
-
'mcp.
|
|
373
|
-
'mcp.
|
|
374
|
-
'mcp.
|
|
375
|
-
'mcp.
|
|
376
|
-
'mcp.
|
|
377
|
-
'mcp.
|
|
378
|
-
'mcp.
|
|
379
|
-
'mcp.
|
|
380
|
-
'mcp.
|
|
381
|
-
'mcp.
|
|
382
|
-
'mcp.
|
|
383
|
-
'mcp.
|
|
384
|
-
'mcp.
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
'
|
|
388
|
-
'
|
|
389
|
-
'
|
|
390
|
-
'
|
|
391
|
-
'
|
|
392
|
-
'
|
|
393
|
-
'
|
|
394
|
-
'
|
|
395
|
-
'
|
|
396
|
-
'
|
|
397
|
-
'
|
|
398
|
-
'
|
|
399
|
-
'
|
|
400
|
-
'
|
|
401
|
-
'
|
|
402
|
-
'
|
|
403
|
-
'
|
|
404
|
-
'
|
|
405
|
-
'
|
|
406
|
-
'
|
|
407
|
-
'
|
|
408
|
-
'
|
|
409
|
-
'
|
|
410
|
-
'
|
|
411
|
-
'
|
|
412
|
-
'
|
|
413
|
-
'
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
'
|
|
417
|
-
'
|
|
418
|
-
'
|
|
419
|
-
'
|
|
420
|
-
'
|
|
421
|
-
'
|
|
422
|
-
'
|
|
423
|
-
'
|
|
424
|
-
'
|
|
425
|
-
'
|
|
426
|
-
'
|
|
427
|
-
'
|
|
428
|
-
'
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
'
|
|
432
|
-
'
|
|
433
|
-
'
|
|
434
|
-
'
|
|
435
|
-
'
|
|
436
|
-
'
|
|
437
|
-
'
|
|
438
|
-
'
|
|
439
|
-
'
|
|
440
|
-
'
|
|
441
|
-
'
|
|
442
|
-
'
|
|
443
|
-
'
|
|
444
|
-
'
|
|
445
|
-
'
|
|
446
|
-
'
|
|
447
|
-
'
|
|
448
|
-
'
|
|
449
|
-
'
|
|
450
|
-
'
|
|
451
|
-
'
|
|
452
|
-
'
|
|
453
|
-
'
|
|
454
|
-
'
|
|
455
|
-
'
|
|
456
|
-
'
|
|
457
|
-
'
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
'update.
|
|
461
|
-
'update.
|
|
462
|
-
'update.
|
|
463
|
-
'update.
|
|
464
|
-
'update.
|
|
465
|
-
'update.
|
|
466
|
-
'update.
|
|
467
|
-
'update.
|
|
468
|
-
'update.
|
|
469
|
-
'update.
|
|
470
|
-
'update.
|
|
471
|
-
'update.
|
|
472
|
-
'update.
|
|
473
|
-
'update.
|
|
474
|
-
'update.
|
|
475
|
-
'update.
|
|
476
|
-
'update.
|
|
477
|
-
'update.
|
|
478
|
-
'update.
|
|
479
|
-
'update.
|
|
480
|
-
'update.
|
|
481
|
-
'update.
|
|
482
|
-
'update.
|
|
483
|
-
'update.
|
|
484
|
-
'update.
|
|
485
|
-
'update.
|
|
486
|
-
'update.
|
|
487
|
-
'update.
|
|
488
|
-
'update.
|
|
489
|
-
'update.
|
|
490
|
-
'update.
|
|
491
|
-
'update.
|
|
492
|
-
'update.
|
|
493
|
-
'update.
|
|
494
|
-
'update.
|
|
495
|
-
'update.
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
'
|
|
499
|
-
'
|
|
500
|
-
'
|
|
501
|
-
'
|
|
502
|
-
'
|
|
503
|
-
'
|
|
504
|
-
'
|
|
505
|
-
'
|
|
506
|
-
'
|
|
507
|
-
'
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
'
|
|
511
|
-
'
|
|
512
|
-
'
|
|
513
|
-
'
|
|
514
|
-
'
|
|
515
|
-
'
|
|
516
|
-
'
|
|
517
|
-
'
|
|
518
|
-
'
|
|
519
|
-
'
|
|
520
|
-
'
|
|
521
|
-
'
|
|
522
|
-
'
|
|
523
|
-
'
|
|
524
|
-
'
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
'
|
|
528
|
-
'help
|
|
529
|
-
'
|
|
530
|
-
'
|
|
531
|
-
'
|
|
532
|
-
'
|
|
533
|
-
'
|
|
534
|
-
'
|
|
535
|
-
'
|
|
536
|
-
'
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
'help.
|
|
540
|
-
'help.
|
|
541
|
-
'help.
|
|
542
|
-
'help.
|
|
543
|
-
'help.
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
'
|
|
547
|
-
'
|
|
548
|
-
'
|
|
549
|
-
'
|
|
550
|
-
'
|
|
551
|
-
'
|
|
552
|
-
'
|
|
553
|
-
'
|
|
554
|
-
'
|
|
555
|
-
'
|
|
556
|
-
'
|
|
557
|
-
'
|
|
558
|
-
'
|
|
559
|
-
'
|
|
560
|
-
'
|
|
561
|
-
'
|
|
562
|
-
'
|
|
563
|
-
'
|
|
564
|
-
'
|
|
565
|
-
'
|
|
566
|
-
'
|
|
567
|
-
'
|
|
568
|
-
'
|
|
569
|
-
'
|
|
570
|
-
'
|
|
571
|
-
'
|
|
572
|
-
'
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
'session.
|
|
576
|
-
'session.
|
|
577
|
-
'session.
|
|
578
|
-
'session.
|
|
579
|
-
'session.
|
|
580
|
-
'session.
|
|
581
|
-
'session.
|
|
582
|
-
'session.
|
|
583
|
-
'session.
|
|
584
|
-
'session.
|
|
585
|
-
'session.
|
|
586
|
-
'session.
|
|
587
|
-
'session.
|
|
588
|
-
'session.
|
|
589
|
-
'session.
|
|
590
|
-
'session.
|
|
591
|
-
'session.
|
|
592
|
-
'session.
|
|
593
|
-
'session.
|
|
594
|
-
'session.
|
|
595
|
-
'session.
|
|
596
|
-
'session.
|
|
597
|
-
'session.
|
|
598
|
-
'session.
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
'
|
|
602
|
-
'
|
|
603
|
-
'
|
|
1
|
+
// Spanish catalog. Keys, order and placeholders mirror `en.js`, the source.
|
|
2
|
+
export default {
|
|
3
|
+
// ---- shared chrome ------------------------------------------------------
|
|
4
|
+
'common.selectBack': 'Enter seleccionar · Esc volver',
|
|
5
|
+
'common.selectConfirmBack': '↑/↓ seleccionar · Enter confirmar · Esc volver',
|
|
6
|
+
'common.selectContinueExit': '↑/↓ seleccionar · Enter continuar · Esc salir',
|
|
7
|
+
'common.escBack': 'Esc volver',
|
|
8
|
+
'common.escClose': 'Esc cerrar',
|
|
9
|
+
'common.escCancel': 'Esc cancelar',
|
|
10
|
+
'common.working': 'Trabajando…',
|
|
11
|
+
'common.pleaseWait': 'esperar',
|
|
12
|
+
'common.on': 'activado',
|
|
13
|
+
'common.off': 'desactivado',
|
|
14
|
+
'common.unavailable': 'no disponible',
|
|
15
|
+
'common.selected': 'seleccionado',
|
|
16
|
+
'common.default': 'predeterminado',
|
|
17
|
+
'common.system': 'sistema',
|
|
18
|
+
'common.installed': '(instalado)',
|
|
19
|
+
'common.more': '… {count} más',
|
|
20
|
+
'common.moreLines': '… {count} líneas más',
|
|
21
|
+
'common.clickExpand': ' · clic para expandir',
|
|
22
|
+
'common.clickCollapse': ' · clic para contraer',
|
|
23
|
+
'common.unknown': 'desconocido',
|
|
24
|
+
'common.emptyMessage': '[mensaje vacío]',
|
|
25
|
+
'value.queue': 'cola',
|
|
26
|
+
'value.steer': 'dirigir',
|
|
27
|
+
'value.auto': 'automático',
|
|
28
|
+
'value.local': 'local',
|
|
29
|
+
'value.textOnly': 'solo texto',
|
|
30
|
+
'value.textImage': 'texto + imagen',
|
|
31
|
+
'value.show': 'mostrar',
|
|
32
|
+
'value.hide': 'ocultar',
|
|
33
|
+
|
|
34
|
+
// ---- title screen -------------------------------------------------------
|
|
35
|
+
'splash.hint': 'Preguntar cualquier cosa... "Arreglar tests rotos"',
|
|
36
|
+
'splash.shortcutSettings': 'ajustes',
|
|
37
|
+
'splash.shortcutThinking': 'pensamiento',
|
|
38
|
+
'splash.shortcutBranches': 'ramas',
|
|
39
|
+
|
|
40
|
+
// ---- header / sidebar / status row -------------------------------------
|
|
41
|
+
// ---- command-line help (dsh --profile tui --help) -----------------------
|
|
42
|
+
'startup.description': 'Inicia la interfaz de terminal de DeepSeek Harness.',
|
|
43
|
+
'startup.helpOption': 'mostrar esta ayuda',
|
|
44
|
+
'startup.resume': 'reanudar una sesión persistida existente por id',
|
|
45
|
+
'startup.model': 'id de modelo predeterminado para sesiones nuevas',
|
|
46
|
+
'startup.provider': 'ruta de proveedor predeterminada para sesiones nuevas',
|
|
47
|
+
'startup.sidebar': 'mostrar la barra lateral de sesiones (predeterminado)',
|
|
48
|
+
'startup.noSidebar': 'iniciar sin la barra lateral',
|
|
49
|
+
'startup.examples': 'Ejemplos:',
|
|
50
|
+
'startup.exampleFresh': 'iniciar una sesión nueva',
|
|
51
|
+
'startup.exampleResume': 'reanudar una sesión persistida',
|
|
52
|
+
|
|
53
|
+
'header.workspace': 'ESPACIO DE TRABAJO',
|
|
54
|
+
'sidebar.sessions': 'SESIONES',
|
|
55
|
+
'sidebar.recent': 'RECIENTES',
|
|
56
|
+
'sidebar.newSession': '+ Nueva sesión',
|
|
57
|
+
'status.model': 'modelo',
|
|
58
|
+
'status.draftTokens': '{count} tok borrador',
|
|
59
|
+
'status.ctrlP': 'ctrl+p comandos',
|
|
60
|
+
'status.interrupt': 'interrumpir: ctrl+c',
|
|
61
|
+
|
|
62
|
+
// ---- composer command hints --------------------------------------------
|
|
63
|
+
'hint.help': 'mostrar ayuda',
|
|
64
|
+
'hint.settings': 'abrir ajustes',
|
|
65
|
+
'hint.new': 'nueva sesión',
|
|
66
|
+
'hint.resume': 'reanudar sesión',
|
|
67
|
+
'hint.model': 'elegir modelo',
|
|
68
|
+
'hint.provider': 'elegir proveedor',
|
|
69
|
+
'hint.rewind': 'retroceder',
|
|
70
|
+
'hint.branch': 'cambiar de rama de git',
|
|
71
|
+
'hint.stats': 'estadísticas y uso de tokens',
|
|
72
|
+
'hint.clear': 'limpiar vista',
|
|
73
|
+
'hint.cancel': 'cancelar el turno en curso',
|
|
74
|
+
'hint.quit': 'salir',
|
|
75
|
+
'hint.compact': 'compactar contexto',
|
|
76
|
+
'hint.goal': 'gestionar objetivo',
|
|
77
|
+
|
|
78
|
+
// ---- transcript blocks --------------------------------------------------
|
|
79
|
+
'transcript.turns.one': '{count} turno',
|
|
80
|
+
'transcript.turns.other': '{count} turnos',
|
|
81
|
+
'transcript.steps.one': '{count} paso',
|
|
82
|
+
'transcript.steps.other': '{count} pasos',
|
|
83
|
+
'transcript.modelChanged': 'Modelo cambiado de {from} a {to}',
|
|
84
|
+
'transcript.thinking': ' pensamiento',
|
|
85
|
+
'transcript.streaming': ' · en streaming…',
|
|
86
|
+
'transcript.steeringBadge': ' ⟲ intervención',
|
|
87
|
+
'transcript.tasks': 'tareas',
|
|
88
|
+
'transcript.systemPrompt': ' prompt del sistema',
|
|
89
|
+
'transcript.pendingInput': ' entrada pendiente · ',
|
|
90
|
+
'transcript.steering': ' intervención',
|
|
91
|
+
'transcript.queued': ' en cola',
|
|
92
|
+
'note.systemReminder': 'system-reminder',
|
|
93
|
+
'note.compaction': 'compactación',
|
|
94
|
+
'note.runtimeContext': 'contexto de ejecución',
|
|
95
|
+
|
|
96
|
+
// ---- images and mermaid -------------------------------------------------
|
|
97
|
+
'image.attachment': '🖼 imagen adjunta',
|
|
98
|
+
'image.rendering': '⏳ renderizando imagen…',
|
|
99
|
+
'image.renderFailed': '⚠ fallo al renderizar la imagen · {error}',
|
|
100
|
+
'image.mermaidRendering': '⏳ renderizando diagrama mermaid…',
|
|
101
|
+
'image.mermaidTooWide': '↔ el diagrama mermaid necesita {width} columnas, este panel tiene {budget}',
|
|
102
|
+
'image.altFallback': 'imagen',
|
|
103
|
+
|
|
104
|
+
// ---- composer / approval prompt ----------------------------------------
|
|
105
|
+
'composer.keys': "Enter enviar · Ctrl+Enter nueva línea · Ctrl+P ajustes",
|
|
106
|
+
'composer.commandKeys': "↑/↓ elegir · Tab completar · Esc cerrar",
|
|
107
|
+
'composer.imageHint': 'Imagen pegada: se necesita un modelo/plugin multimodal o deepseek-v4-flash-vision-exp; de lo contrario la imagen no se puede leer',
|
|
108
|
+
'composer.approval': 'Aprobación · ',
|
|
109
|
+
'composer.summary': 'Resumen · ',
|
|
110
|
+
'composer.origin': 'Origen · ',
|
|
111
|
+
'composer.risk': 'Riesgo · ',
|
|
112
|
+
'composer.approvalHint': 'y permitir · n denegar · Esc cancelar',
|
|
113
|
+
'risk.low': 'bajo',
|
|
114
|
+
'risk.medium': 'medio',
|
|
115
|
+
'risk.high': 'alto',
|
|
116
|
+
'composer.effortHint': 'Tab / ←/→ ajustar · Esc cerrar',
|
|
117
|
+
|
|
118
|
+
// ---- right status rail --------------------------------------------------
|
|
119
|
+
'rail.model': 'MODELO',
|
|
120
|
+
'rail.thinking': 'PENSAMIENTO',
|
|
121
|
+
'rail.context': 'CONTEXTO',
|
|
122
|
+
'rail.session': 'SESIÓN',
|
|
123
|
+
'rail.goal': 'OBJETIVO',
|
|
124
|
+
'rail.subagents': 'SUBAGENTES',
|
|
125
|
+
'rail.noData': '—',
|
|
126
|
+
'rail.percentUsed': '{percent}% usado',
|
|
127
|
+
'rail.tokens': '~{used} / {window} tokens',
|
|
128
|
+
'rail.cacheHit': 'caché {percent}% aciertos',
|
|
129
|
+
'rail.breakdown': 'sistema {system} · herramientas {tools} · mensajes {messages}',
|
|
130
|
+
'rail.contextPending': 'se muestra cuando se informe del uso',
|
|
131
|
+
'rail.subagentCounts': '{running} activos · {total} en total',
|
|
132
|
+
'rail.unreadable': '{label} (ilegible)',
|
|
133
|
+
'rail.more': '… +{count} más',
|
|
134
|
+
'rail.round': ' · ronda {started}/{max}',
|
|
135
|
+
'goal.active': 'activo',
|
|
136
|
+
'goal.paused': 'en pausa',
|
|
137
|
+
'goal.blocked': 'bloqueado',
|
|
138
|
+
'goal.complete': 'completado',
|
|
139
|
+
|
|
140
|
+
// ---- session stats window ----------------------------------------------
|
|
141
|
+
'stats.title': 'estadísticas de sesión',
|
|
142
|
+
'stats.hint': 'clic en la franja o /stats',
|
|
143
|
+
'stats.usage': 'uso',
|
|
144
|
+
'stats.duration': 'duración',
|
|
145
|
+
'stats.speed': 'velocidad',
|
|
146
|
+
'stats.tokens': 'tokens',
|
|
147
|
+
'stats.cache': 'caché',
|
|
148
|
+
'stats.context': 'contexto',
|
|
149
|
+
'stats.noSteps': 'aún no hay pasos completados',
|
|
150
|
+
'stats.llmTime': 'LLM {value}',
|
|
151
|
+
'stats.toolTime': 'herramientas {value}',
|
|
152
|
+
'stats.ttft': 'TTFT med. {value}',
|
|
153
|
+
'stats.tokensPerSecond': '{value} tok/s',
|
|
154
|
+
'stats.cacheRate': 'caché {percent}%',
|
|
155
|
+
'stats.inOut': 'entrada {input} · salida {output}',
|
|
156
|
+
'stats.cacheDetail': '{percent}% aciertos · leídos {read} · escritos {write} · fallos {miss}',
|
|
157
|
+
'stats.contextUsed': 'usado {percent}% ~{used} / {window}',
|
|
158
|
+
'stats.systemPrompt': 'prompt del sistema',
|
|
159
|
+
'stats.tools': 'herramientas',
|
|
160
|
+
'stats.messages': 'mensajes',
|
|
161
|
+
'stats.compositionUnavailable': 'composición no disponible',
|
|
162
|
+
'stats.contextPending': 'la ocupación del contexto aparece cuando una petición informe del uso',
|
|
163
|
+
|
|
164
|
+
// ---- questions modal ----------------------------------------------------
|
|
165
|
+
'questions.title': 'Pregunta',
|
|
166
|
+
'questions.titleOf': 'Pregunta {index} de {total}',
|
|
167
|
+
'questions.defer': 'Esc aplazar',
|
|
168
|
+
'questions.range': '{from}-{to} de {total} PgUp/PgDn',
|
|
169
|
+
'questions.other': 'Otra: ',
|
|
170
|
+
'questions.answer': 'Respuesta: ',
|
|
171
|
+
'questions.placeholder': 'escribir una respuesta propia',
|
|
172
|
+
'questions.hintCustom': 'Enter confirmar · Esc volver',
|
|
173
|
+
'questions.hintMulti': 'Espacio alternar · Enter continuar · Arriba/Abajo mover',
|
|
174
|
+
'questions.hintSingle': 'Enter seleccionar · Arriba/Abajo mover',
|
|
175
|
+
|
|
176
|
+
// ---- secret prompt ------------------------------------------------------
|
|
177
|
+
'secret.hint': 'Enter enviar · Esc cancelar',
|
|
178
|
+
|
|
179
|
+
// ---- boot gate: the dsh version this build may run on ----
|
|
180
|
+
'boot.unsupportedTitle': 'Versión de dsh no compatible',
|
|
181
|
+
'boot.unverifiedTitle': 'Versión de dsh sin verificar',
|
|
182
|
+
'boot.runningLabel': 'dsh en ejecución',
|
|
183
|
+
'boot.supportedLabel': 'compatible',
|
|
184
|
+
'boot.recommendedLabel': 'recomendada',
|
|
185
|
+
'boot.verifiedLabel': 'verificada',
|
|
186
|
+
'boot.unsupportedBody': 'Esta versión de dsh-oc-tui solo admite {range}, y {version} queda fuera. Las sesiones no pueden ejecutarse hasta que dsh esté en una versión admitida.',
|
|
187
|
+
'boot.unverifiedBody': 'Esta versión de dsh-oc-tui se verificó con {verified}, no con {version}. Instala {recommended} para asegurarte de que funciona.',
|
|
188
|
+
'boot.installHint': 'Instala la versión recomendada de dsh y vuelve a iniciar este perfil:',
|
|
189
|
+
'boot.updatePluginHint': 'Si una versión más reciente de dsh-oc-tui ya admite este dsh, actualiza el plugin en su lugar:',
|
|
190
|
+
'boot.exitHint': 'Esc o Ctrl+C para salir',
|
|
191
|
+
|
|
192
|
+
// ---- settings dialog chrome --------------------------------------------
|
|
193
|
+
'settings.title': 'Ajustes',
|
|
194
|
+
'settings.menu': 'MENÚ',
|
|
195
|
+
'settings.shared': 'Compartido con DeepSeek Harness WebUI',
|
|
196
|
+
'settings.footerEdit': 'Enter guardar · Esc cancelar',
|
|
197
|
+
'settings.footerMenu': '↑/↓ mover · Tab menú · Enter seleccionar · Esc volver',
|
|
198
|
+
'settings.footerPlain': '↑/↓ mover · Enter seleccionar · Esc volver',
|
|
199
|
+
'settings.confirmHint': '{text} · Y / N',
|
|
200
|
+
'settings.confirmDefault': 'Y confirmar · N cancelar',
|
|
201
|
+
'settings.confirmDeleteSession': 'Ctrl+D otra vez para borrar',
|
|
202
|
+
'settings.confirmChange': '¿Confirmar este cambio?',
|
|
203
|
+
'settings.deleteTwice': 'Ctrl+D otra vez para borrar ',
|
|
204
|
+
'settings.deleteMcpTwice': 'Supr otra vez para quitar ',
|
|
205
|
+
'settings.noSession': 'ninguna sesión seleccionada',
|
|
206
|
+
'settings.noSessions': 'no hay sesiones disponibles',
|
|
207
|
+
'settings.noMcp': 'ningún servidor MCP seleccionado',
|
|
208
|
+
'settings.noOptions': 'no hay opciones para {label}',
|
|
209
|
+
'settings.saved': 'guardado en los ajustes de DSH',
|
|
210
|
+
'settings.providerRemoved': 'proveedor eliminado',
|
|
211
|
+
'settings.conflict': 'ajustes cambiados en otro sitio; recargados',
|
|
212
|
+
'settings.error': 'ajustes: {error}',
|
|
213
|
+
'settings.dshSettings': 'Ajustes de DSH',
|
|
214
|
+
'settings.optionList': 'Enter seleccionar · Esc volver',
|
|
215
|
+
|
|
216
|
+
// ---- settings left menu -------------------------------------------------
|
|
217
|
+
'menu.main': 'Principal',
|
|
218
|
+
'menu.model': 'Modelo',
|
|
219
|
+
'menu.update': 'Actualización',
|
|
220
|
+
'menu.mcp': 'MCP',
|
|
221
|
+
|
|
222
|
+
// ---- settings rows: main tab -------------------------------------------
|
|
223
|
+
'settings.general': 'General',
|
|
224
|
+
'settings.graphics': 'Gráficos',
|
|
225
|
+
'settings.sessions': 'Sesiones',
|
|
226
|
+
'settings.system': 'Sistema',
|
|
227
|
+
'settings.developer': 'Desarrollador',
|
|
228
|
+
'settings.contextDetails': 'Detalles del contexto',
|
|
229
|
+
'settings.busyEnter': 'Enter ocupado',
|
|
230
|
+
'settings.defaultPreset': 'Preajuste predeterminado',
|
|
231
|
+
'settings.permissionPreset': 'Preajuste de permisos',
|
|
232
|
+
'settings.permissionDangerConfirm': '¿Activar acceso ilimitado a herramientas y archivos?',
|
|
233
|
+
'settings.graphicsRendering': 'Renderizado gráfico',
|
|
234
|
+
'settings.noProtocolFallback': 'Alternativa sin protocolo',
|
|
235
|
+
'settings.imageHeightCap': 'Altura máx. de imagen (filas)',
|
|
236
|
+
'settings.mermaidRendering': 'Renderizado de Mermaid',
|
|
237
|
+
'settings.newSession': 'Nueva sesión',
|
|
238
|
+
'settings.manageSessions': 'Gestionar sesiones',
|
|
239
|
+
'settings.providerConfig': 'Config. de API del proveedor',
|
|
240
|
+
'settings.updateManager': 'Gestor de actualizaciones',
|
|
241
|
+
'settings.settingsFile': 'Archivo de ajustes',
|
|
242
|
+
'settings.language': 'Idioma',
|
|
243
|
+
'settings.theme': 'Tema',
|
|
244
|
+
'theme.deepseek': 'DeepSeek Standard',
|
|
245
|
+
'theme.github-dark': 'GitHub Dark',
|
|
246
|
+
'theme.dracula': 'Dracula',
|
|
247
|
+
'theme.vscode-dark': 'VS Code Dark+',
|
|
248
|
+
'theme.nord': 'Nord',
|
|
249
|
+
'settings.languageSystem': 'Sistema ({language})',
|
|
250
|
+
'settings.languageSaved': 'idioma: {language}',
|
|
251
|
+
|
|
252
|
+
// ---- model tab ----------------------------------------------------------
|
|
253
|
+
'model.title': 'Modelo',
|
|
254
|
+
'model.subtitle': 'Enter elige un modelo de la lista como predeterminado',
|
|
255
|
+
'model.defaultSection': 'Predeterminado',
|
|
256
|
+
'model.defaultProvider': 'Proveedor predeterminado',
|
|
257
|
+
'model.defaultModel': 'Modelo predeterminado',
|
|
258
|
+
'model.reasoning': 'Razonamiento',
|
|
259
|
+
'model.providerUrl': 'URL del proveedor',
|
|
260
|
+
'model.providerApiKey': 'Clave de API del proveedor',
|
|
261
|
+
'model.displayName': 'Nombre visible',
|
|
262
|
+
'model.wireProtocol': 'Protocolo de transporte',
|
|
263
|
+
'model.defaultImageInput': 'Entrada de imagen predeterminada',
|
|
264
|
+
'model.models': 'Modelos',
|
|
265
|
+
'model.fetch': 'obtener…',
|
|
266
|
+
'model.selectedCount': '{count} seleccionados',
|
|
267
|
+
'model.removeProvider': 'Quitar proveedor',
|
|
268
|
+
'model.removeProviderConfirm': '¿Quitar {name} y su credencial gestionada?',
|
|
269
|
+
'model.noModels': 'no hay modelos disponibles',
|
|
270
|
+
'model.noModelsReturned': 'el proveedor no devolvió modelos',
|
|
271
|
+
'model.fetchUnavailable': 'obtención automática no disponible — modelos guardados · Enter alternar',
|
|
272
|
+
'model.fetchOk': 'obtenido automáticamente · Enter alternar · Esc volver',
|
|
273
|
+
'model.fetching': 'Obteniendo modelos…',
|
|
274
|
+
'model.autoFetching': 'obtención automática…',
|
|
275
|
+
'model.credentialConfigured': 'configurada ({source})',
|
|
276
|
+
'model.credentialMissing': 'no configurada',
|
|
277
|
+
'model.defaultTag': 'predeterminado',
|
|
278
|
+
'model.providerUnavailable': 'el proveedor ya no está disponible',
|
|
279
|
+
'model.namespaceUnavailable': 'el espacio de nombres de ajustes del proveedor no está disponible',
|
|
280
|
+
'model.apiKeyEmpty': 'la clave de API no puede estar vacía',
|
|
281
|
+
'model.credentialsUnavailable': 'el servicio de credenciales no está disponible',
|
|
282
|
+
'model.noProviderModels': 'el proveedor seleccionado no tiene modelos disponibles',
|
|
283
|
+
'model.addCount.one': '{count} disponible',
|
|
284
|
+
'model.addCount.other': '{count} disponibles',
|
|
285
|
+
|
|
286
|
+
// ---- add-provider flow --------------------------------------------------
|
|
287
|
+
'provider.add': 'Añadir proveedor',
|
|
288
|
+
'provider.empty': 'aún no hay ningún proveedor configurado',
|
|
289
|
+
'provider.pickSubtitle': 'Intro elegir · Esc volver',
|
|
290
|
+
'provider.catalog': 'Proveedores instalados',
|
|
291
|
+
'provider.catalogEmpty': 'todos los proveedores instalados ya están configurados',
|
|
292
|
+
'provider.custom': 'API personalizada — declarar un endpoint',
|
|
293
|
+
'provider.form.catalog': 'Adoptar un proveedor instalado',
|
|
294
|
+
'provider.form.custom': 'Declarar un proveedor personalizado',
|
|
295
|
+
'provider.formSubtitle': 'Intro editar · Esc volver',
|
|
296
|
+
'provider.field.route': 'ID de ruta',
|
|
297
|
+
'provider.field.addModel': 'Añadir ID de modelo',
|
|
298
|
+
'provider.field.save': 'Guardar proveedor',
|
|
299
|
+
'provider.hint.route': 'minúsculas, dígitos y guiones · clave guardada como {ref}',
|
|
300
|
+
'provider.error.route': 'el ID de ruta debe empezar por una letra y usar solo minúsculas, dígitos y guiones',
|
|
301
|
+
'provider.error.routeNeeded': 'elige un proveedor',
|
|
302
|
+
'provider.error.taken': 'ya hay un proveedor con este ID de ruta',
|
|
303
|
+
'provider.error.baseUrl': 'el endpoint debe ser una URL http o https',
|
|
304
|
+
'provider.error.baseUrlNeeded': 'un proveedor personalizado necesita un endpoint',
|
|
305
|
+
'provider.error.apiNeeded': 'elige el protocolo que habla este endpoint',
|
|
306
|
+
'provider.error.modelsNeeded': 'un proveedor personalizado necesita al menos un modelo',
|
|
307
|
+
'provider.error.modelId': 'el modelo {index} necesita un ID',
|
|
308
|
+
'provider.error.modelDuplicate': 'el modelo "{id}" aparece dos veces',
|
|
309
|
+
'provider.added': 'proveedor añadido',
|
|
310
|
+
'provider.accountManaged': 'sesión iniciada con tu cuenta de DeepSeek',
|
|
311
|
+
'provider.search': 'Buscar',
|
|
312
|
+
'provider.searchPlaceholder': 'escribe para filtrar',
|
|
313
|
+
'provider.searchEmpty': 'ningún proveedor coincide con "{query}"',
|
|
314
|
+
|
|
315
|
+
// ---- una entrada de modelo -----------------------------------------------
|
|
316
|
+
'model.edit': 'Editar modelo',
|
|
317
|
+
'model.editHint': 'e editar · Supr quitar',
|
|
318
|
+
'model.refresh': 'Actualizar catálogo',
|
|
319
|
+
'model.selectAll': 'Seleccionar todo',
|
|
320
|
+
'model.fetchRefused': 'el endpoint no devolvió ninguna lista de modelos',
|
|
321
|
+
'model.notSaved': 'este modelo aún no está guardado',
|
|
322
|
+
'model.removed': 'modelo eliminado',
|
|
323
|
+
'model.form.add': 'Añadir modelo',
|
|
324
|
+
'model.form.edit': 'Modelo · {id}',
|
|
325
|
+
'model.form.save': 'Guardar modelo',
|
|
326
|
+
'model.form.remove': 'Quitar del proveedor',
|
|
327
|
+
'model.form.removeConfirm': '¿Quitar este modelo del proveedor?',
|
|
328
|
+
'model.field.id': 'ID del modelo',
|
|
329
|
+
'model.field.name': 'Nombre visible',
|
|
330
|
+
'model.field.contextWindow': 'Ventana de contexto',
|
|
331
|
+
'model.field.maxTokens': 'Tokens de salida máx.',
|
|
332
|
+
'model.field.input': 'Entrada',
|
|
333
|
+
'model.error.idNeeded': 'un modelo necesita un ID',
|
|
334
|
+
'model.error.idDuplicate': 'el modelo "{id}" ya está en la lista',
|
|
335
|
+
'model.error.capacity': 'la ventana de contexto y los tokens máximos deben ser enteros (256K, 1M)',
|
|
336
|
+
|
|
337
|
+
// ---- MCP tab ------------------------------------------------------------
|
|
338
|
+
'mcp.title': 'MCP',
|
|
339
|
+
'mcp.subtitle': 'Enter editar · Supr quitar · Esc volver',
|
|
340
|
+
'mcp.editSubtitle': 'Enter editar · Esc volver',
|
|
341
|
+
'mcp.servers': 'Servidores MCP',
|
|
342
|
+
'mcp.empty': 'Ningún servidor MCP configurado',
|
|
343
|
+
'mcp.add': 'Añadir servidor MCP',
|
|
344
|
+
'mcp.scope': 'ámbito',
|
|
345
|
+
'mcp.scopeUserPrefix': 'usuario · {path}',
|
|
346
|
+
'mcp.scopePathPrefix': 'ruta · {path}',
|
|
347
|
+
'mcp.configFiles': 'Archivos de configuración',
|
|
348
|
+
'mcp.userScope': 'usuario (todas las sesiones)',
|
|
349
|
+
'mcp.secrets': 'Secretos',
|
|
350
|
+
'mcp.secretsPlain': 'texto plano en los archivos de configuración',
|
|
351
|
+
'mcp.loaded': 'cargado',
|
|
352
|
+
'mcp.notCreated': 'aún no creado',
|
|
353
|
+
'mcp.type.stdio': 'Comando local',
|
|
354
|
+
'mcp.type.http': 'HTTP',
|
|
355
|
+
'mcp.type.sse': 'SSE',
|
|
356
|
+
'mcp.state.connected': '● conectado',
|
|
357
|
+
'mcp.state.tools.one': '● {count} herramienta',
|
|
358
|
+
'mcp.state.tools.other': '● {count} herramientas',
|
|
359
|
+
'mcp.state.pending': '… conectando',
|
|
360
|
+
'mcp.state.disabled': '○ desactivado',
|
|
361
|
+
'mcp.state.idle': '○ sin conectar',
|
|
362
|
+
'mcp.notice.connected': "MCP {name}: conectado",
|
|
363
|
+
'mcp.notice.failed': "MCP {name}: error de conexión",
|
|
364
|
+
'mcp.form.add': 'Añadir servidor MCP',
|
|
365
|
+
'mcp.form.edit': 'Editar servidor MCP · {name}',
|
|
366
|
+
'mcp.titleAdd': 'MCP · añadir',
|
|
367
|
+
'mcp.titleEdit': 'MCP · editar',
|
|
368
|
+
'mcp.field.name': 'Nombre',
|
|
369
|
+
'mcp.field.type': 'Tipo',
|
|
370
|
+
'mcp.field.timeout': 'Tiempo de espera (ms)',
|
|
371
|
+
'mcp.field.command': 'Comando',
|
|
372
|
+
'mcp.field.args': 'Argumentos',
|
|
373
|
+
'mcp.field.env': 'Entorno (JSON)',
|
|
374
|
+
'mcp.field.url': 'URL',
|
|
375
|
+
'mcp.field.headers': 'Cabeceras (JSON)',
|
|
376
|
+
'mcp.field.scope': 'Ámbito',
|
|
377
|
+
'mcp.field.path': 'Ruta',
|
|
378
|
+
'mcp.field.enabled': 'Activado',
|
|
379
|
+
'mcp.field.save': 'Guardar',
|
|
380
|
+
'mcp.field.remove': 'Quitar',
|
|
381
|
+
'mcp.choice.stdio': 'Comando local (stdio)',
|
|
382
|
+
'mcp.choice.http': 'HTTP (con streaming)',
|
|
383
|
+
'mcp.choice.sse': 'SSE (HTTP+SSE heredado)',
|
|
384
|
+
'mcp.choice.scopeUser': 'Usuario — todas las sesiones',
|
|
385
|
+
'mcp.choice.scopePath': 'Ruta — sesiones bajo un directorio',
|
|
386
|
+
'mcp.removeConfirm': '¿Quitar este servidor MCP y desconectarlo?',
|
|
387
|
+
'mcp.saved': 'Servidor MCP guardado',
|
|
388
|
+
'mcp.added': 'Servidor MCP añadido',
|
|
389
|
+
'mcp.removed': 'Servidor MCP quitado',
|
|
390
|
+
'mcp.error.name': 'el nombre debe tener de 1 a 32 caracteres entre letras, dígitos, "-" o "_"',
|
|
391
|
+
'mcp.error.duplicate': 'ya hay un servidor MCP llamado "{name}" configurado',
|
|
392
|
+
'mcp.error.timeout': 'timeoutMs debe ser un número entero entre 1 y {max}',
|
|
393
|
+
'mcp.error.pathNeeded': 'un servidor con ámbito de ruta necesita un directorio',
|
|
394
|
+
'mcp.error.pathAbsolute': 'el ámbito de ruta debe ser un directorio absoluto',
|
|
395
|
+
'mcp.error.commandNeeded': 'un servidor stdio necesita un comando',
|
|
396
|
+
'mcp.error.urlParse': 'no se puede analizar la URL',
|
|
397
|
+
'mcp.error.urlScheme': 'la URL debe usar http o https',
|
|
398
|
+
'mcp.error.pathNotDir': 'el ámbito de ruta no es un directorio: {path}',
|
|
399
|
+
'mcp.error.configIsDir': 'la ruta del archivo de configuración es un directorio: {path}',
|
|
400
|
+
'mcp.error.notFound': 'no hay ningún servidor MCP llamado "{name}" configurado',
|
|
401
|
+
'mcp.error.documentGone': 'el documento que define "{name}" desapareció: {error}',
|
|
402
|
+
'mcp.error.noClient': 'el host no proporciona ningún cliente MCP',
|
|
403
|
+
'mcp.error.connectTimeout': 'se agotó el tiempo al conectar con {name}',
|
|
404
|
+
'mcp.error.json': 'el documento no es JSON válido: {error}',
|
|
405
|
+
'mcp.error.jsonObject': 'el documento debe ser un objeto JSON',
|
|
406
|
+
'mcp.error.serversObject': '"servers" debe ser un objeto JSON',
|
|
407
|
+
'mcp.error.argsArray': 'los argumentos deben ser un array JSON de cadenas',
|
|
408
|
+
'mcp.error.argsTypes': 'los argumentos deben ser cadenas o números',
|
|
409
|
+
'mcp.error.argsUnclosed': 'los argumentos tienen una comilla sin cerrar',
|
|
410
|
+
'mcp.error.envObject': '{label} debe ser un objeto JSON',
|
|
411
|
+
'mcp.error.envValue': 'el valor "{name}" de {label} debe ser cadena, número o booleano',
|
|
412
|
+
'mcp.error.header': 'cabecera HTTP no válida "{name}"',
|
|
413
|
+
'mcp.error.envName': 'nombre de entorno no válido "{name}"',
|
|
414
|
+
|
|
415
|
+
// ---- rewind -------------------------------------------------------------
|
|
416
|
+
'rewind.title': 'Retroceder',
|
|
417
|
+
'rewind.restoreTo': 'Restaurar al punto anterior: {label}',
|
|
418
|
+
'rewind.restorePrompt': 'Restaurar la conversación al punto anterior a…',
|
|
419
|
+
'rewind.empty': 'Aún no hay nada a lo que retroceder.',
|
|
420
|
+
'rewind.option.conversation': 'Restaurar conversación',
|
|
421
|
+
'rewind.option.both': 'Restaurar conversación y archivos',
|
|
422
|
+
'rewind.option.code': 'Restaurar archivos',
|
|
423
|
+
'rewind.option.cancel': 'Cancelar',
|
|
424
|
+
'rewind.current': '(actual)',
|
|
425
|
+
'rewind.noPoints': 'no hay mensajes de usuario a los que retroceder',
|
|
426
|
+
'rewind.unknownPoint': 'punto de retroceso desconocido "{selector}": usar un número o last',
|
|
427
|
+
'rewind.noPoint': 'no hay punto de retroceso {n} — 1..{count}',
|
|
428
|
+
'rewind.notGit': 'no es un worktree de git',
|
|
429
|
+
'rewind.noBackup': 'no hay ubicación de copia de seguridad',
|
|
430
|
+
'rewind.filesNotRestored': 'archivos no restaurados',
|
|
431
|
+
'rewind.filesNotRestoredReason': 'archivos no restaurados ({reason})',
|
|
432
|
+
'rewind.restored.one': '{count} archivo rastreado restaurado desde HEAD',
|
|
433
|
+
'rewind.restored.other': '{count} archivos rastreados restaurados desde HEAD',
|
|
434
|
+
'rewind.removed.one': '{count} archivo nuevo eliminado',
|
|
435
|
+
'rewind.removed.other': '{count} archivos nuevos eliminados',
|
|
436
|
+
'rewind.skipped': '{count} omitidos',
|
|
437
|
+
'rewind.previousSaved': 'contenido anterior guardado en {path}',
|
|
438
|
+
'rewind.noChanges': 'sin cambios de archivos después de este punto',
|
|
439
|
+
'rewind.image': '[imagen]',
|
|
440
|
+
'rewind.images': '[{count} imágenes]',
|
|
441
|
+
'rewind.emptyMessage': '(vacío)',
|
|
442
|
+
'git.title': 'Ramas de Git',
|
|
443
|
+
'git.subtitle': 'Actual: {branch} · {path}',
|
|
444
|
+
'git.local': 'Ramas locales',
|
|
445
|
+
'git.remote': 'Ramas remotas',
|
|
446
|
+
'git.empty': 'No hay ramas en este repositorio.',
|
|
447
|
+
'git.detached': '(separado)',
|
|
448
|
+
'git.switched': 'Cambiado a la rama {branch}',
|
|
449
|
+
'git.switchFailed': 'No se puede cambiar a {branch}: {error}',
|
|
450
|
+
'git.pullDone': 'Actualizaciones descargadas',
|
|
451
|
+
'git.pullFailed': 'No se pueden descargar las actualizaciones: {error}',
|
|
452
|
+
'git.listFailed': 'No se pueden listar las ramas: {error}',
|
|
453
|
+
'git.notRepo': 'no es un árbol de trabajo de git',
|
|
454
|
+
'git.gitMissing': 'git no está disponible en el PATH',
|
|
455
|
+
'git.timedOut': 'git agotó el tiempo de espera',
|
|
456
|
+
'git.onlyTitleScreen': 'El cambio de rama solo está disponible en la página vacía — usa /new para salir de la sesión',
|
|
457
|
+
'git.footer': '↑/↓ elegir · Enter cambiar · P pull · R actualizar · Esc cerrar',
|
|
458
|
+
|
|
459
|
+
// ---- update tab ---------------------------------------------------------
|
|
460
|
+
'update.title': 'Actualización',
|
|
461
|
+
'update.checking': 'Comprobando versiones…',
|
|
462
|
+
'update.fetching': 'obteniendo del registro npm…',
|
|
463
|
+
'update.fetchingVersions': 'Obteniendo versiones…',
|
|
464
|
+
'update.versionsSubtitle': 'Enter descargar · Esc volver',
|
|
465
|
+
'update.installed': 'Instalada',
|
|
466
|
+
'update.latest': 'Última (etiqueta npm)',
|
|
467
|
+
'update.status': 'Estado',
|
|
468
|
+
'update.versions': 'Versiones',
|
|
469
|
+
'update.selectVersion': 'Elegir versión…',
|
|
470
|
+
'update.restartApply': 'Reiniciar para aplicar {version}',
|
|
471
|
+
'update.enterRestart': 'Enter reiniciar',
|
|
472
|
+
'update.discard': 'Descartar {version} descargada',
|
|
473
|
+
'update.actions': 'Acciones',
|
|
474
|
+
'update.checkNow': 'Comprobar ahora',
|
|
475
|
+
'update.checkingShort': 'Comprobando…',
|
|
476
|
+
'update.startupCheck': 'Comprobación al inicio',
|
|
477
|
+
'update.profile': 'perfil',
|
|
478
|
+
'update.dshPackage': 'dsh (@deepseek-ai/dsh)',
|
|
479
|
+
'update.statusCorrupt': 'Instalación dañada — reinstalar abajo',
|
|
480
|
+
'update.statusError': 'Falló la comprobación del registro: {error}',
|
|
481
|
+
'update.statusAvailable': 'Actualización disponible → {version}',
|
|
482
|
+
'update.statusUpToDate': 'Actualizado',
|
|
483
|
+
'update.statusNoStable': 'No hay versión estable — elegir en Versiones',
|
|
484
|
+
'update.notOnPath': 'no se encuentra en PATH',
|
|
485
|
+
'update.subtitleStaged': '{package} {version} descargada — reiniciar para aplicar',
|
|
486
|
+
'update.subtitleIdle': 'Enter seleccionar · descargar y reiniciar para aplicar',
|
|
487
|
+
'update.download': 'Descargar',
|
|
488
|
+
'update.contacting': 'contactando con el registro…',
|
|
489
|
+
'update.version': 'Versión',
|
|
490
|
+
'update.savingTo': 'Guardando en',
|
|
491
|
+
'update.escCancels': 'Esc cancela',
|
|
492
|
+
'update.restartApplyQ': '¿Reiniciar para aplicar {label} {version}? (ya descargada)',
|
|
493
|
+
'update.downloadQ': '¿Descargar {label} {version} y reiniciar para aplicar?',
|
|
494
|
+
'update.localSwitch': ' — cambia la instalación local a una versión del registro',
|
|
495
|
+
'update.downloaded': 'descargada · reiniciar para aplicar',
|
|
496
|
+
'update.downloadedToast': '{label} {version} descargada · aplicarla desde la pestaña Actualización',
|
|
497
|
+
'update.downloadedConfirm': 'Descargado ¿reiniciar para aplicar {label} {version}? (y/n)',
|
|
498
|
+
'update.alreadyDownloadedConfirm': 'Ya descargado · ¿reiniciar para aplicar {label} {version}? (y/n)',
|
|
499
|
+
'update.downloadCancelled': 'descarga cancelada',
|
|
500
|
+
'update.downloadFailed': 'falló la descarga: {error}',
|
|
501
|
+
'update.stagedGone': 'la descarga preparada desapareció — elegir la versión otra vez',
|
|
502
|
+
'update.locks.one': 'no se puede aplicar mientras dsh se ejecuta en {count} proceso más — cerrarlo y reintentar',
|
|
503
|
+
'update.locks.other': 'no se puede aplicar mientras dsh se ejecuta en {count} procesos más — cerrarlos y reintentar',
|
|
504
|
+
'update.noNpm': 'no se puede aplicar: no se encontró npm',
|
|
505
|
+
'update.noDshCli': 'no se puede aplicar: no se encontró la CLI de dsh',
|
|
506
|
+
'update.installerFailed': 'no se puede iniciar el instalador — reiniciar dsh para aplicar {label}',
|
|
507
|
+
'update.applying': 'aplicando {label} · saliendo, reiniciando…',
|
|
508
|
+
'update.stagedDiscarded': 'descarga preparada descartada',
|
|
509
|
+
'update.tagCached': 'en caché',
|
|
510
|
+
'update.tagStaged': 'preparada',
|
|
511
|
+
'update.installFailed': 'Falló la instalación (código {code}) — reintentar desde Versiones',
|
|
512
|
+
'update.installFailedRetry': 'abrir Actualización → dsh-oc-tui → Versiones y elegir una versión para descargar de nuevo',
|
|
513
|
+
'update.installUnreadable': 'la instalación informó de éxito pero la versión instalada es {installed} (se esperaba {expected}) — reparación: {repair}',
|
|
514
|
+
'update.registryUnreachable': 'registro inaccesible: {error}',
|
|
515
|
+
'update.notOnRegistry': '{package} no está en el registro',
|
|
516
|
+
'update.registryHttp': 'el registro devolvió HTTP {status} para {package}',
|
|
517
|
+
'update.noTarballUrl': 'la respuesta del registro no incluye URL de tarball',
|
|
518
|
+
'update.downloadHttp': 'falló la descarga: HTTP {status} para {url}',
|
|
519
|
+
'update.downloadEmpty': 'falló la descarga: cuerpo de respuesta vacío',
|
|
520
|
+
'update.integrityFailed': 'falló la comprobación de integridad de {file} — descarga descartada',
|
|
521
|
+
'update.npmMissing': 'npm no encontrado en PATH',
|
|
522
|
+
'update.npmViewFailed': 'npm view {package} terminó con {code}',
|
|
523
|
+
'update.timedOut': '\n(tiempo agotado tras {ms}ms)',
|
|
524
|
+
'update.noOutput': '(sin salida)',
|
|
525
|
+
|
|
526
|
+
// ---- commands -----------------------------------------------------------
|
|
527
|
+
'command.settings': 'Abrir las páginas de ajustes de la TUI',
|
|
528
|
+
'command.help': 'Mostrar la referencia de teclas y comandos de la TUI',
|
|
529
|
+
'command.stats': 'Mostrar estadísticas de tokens y caché de la sesión',
|
|
530
|
+
'command.new': 'Iniciar una sesión nueva',
|
|
531
|
+
'command.resume': 'Reanudar una sesión guardada',
|
|
532
|
+
'command.clear': 'Limpiar el transcript',
|
|
533
|
+
'command.cancel': 'Cancelar el turno en curso',
|
|
534
|
+
'command.rewind': 'Retroceder la sesión a un punto anterior',
|
|
535
|
+
'command.branch': 'Cambiar de rama de git en la página vacía',
|
|
536
|
+
'command.quit': 'Salir de la TUI',
|
|
537
|
+
|
|
538
|
+
// ---- help overlay -------------------------------------------------------
|
|
539
|
+
'help.title': 'DeepSeek Harness TUI — ayuda',
|
|
540
|
+
'help.enter': 'Enter',
|
|
541
|
+
'help.enterDesc': 'enviar mensaje',
|
|
542
|
+
'help.ctrlEnter': 'Ctrl+Enter',
|
|
543
|
+
'help.ctrlEnterDesc': 'insertar salto de línea',
|
|
544
|
+
'help.ctrlC': 'Ctrl+C',
|
|
545
|
+
'help.ctrlCDesc': 'cancelar el turno en curso; pulsar otra vez para salir',
|
|
546
|
+
'help.ctrlP': 'Ctrl+P',
|
|
547
|
+
'help.ctrlPDesc': 'abrir ajustes',
|
|
548
|
+
'help.ctrlE': 'Ctrl+E',
|
|
549
|
+
'help.ctrlEDesc': 'alternar el control de pensamiento',
|
|
550
|
+
'help.tab': 'Tab',
|
|
551
|
+
'help.tabDesc': 'recorrer la intensidad de pensamiento',
|
|
552
|
+
'help.ctrlN': 'Ctrl+N',
|
|
553
|
+
'help.ctrlNDesc': 'nueva sesión',
|
|
554
|
+
'help.ctrlG': 'Ctrl+G',
|
|
555
|
+
'help.ctrlGDesc': 'cambiar de rama de git (página vacía)',
|
|
556
|
+
'help.ctrlD': 'Ctrl+D',
|
|
557
|
+
'help.ctrlDDesc': 'borrar sesión en Gestionar sesiones (dos veces)',
|
|
558
|
+
'help.pg': 'PgUp / PgDn',
|
|
559
|
+
'help.pgDesc': 'desplazar el transcript',
|
|
560
|
+
'help.shiftArrows': 'Shift+↑/↓',
|
|
561
|
+
'help.shiftArrowsDesc': 'desplazar la barra de estado (ventanas anchas)',
|
|
562
|
+
'help.upDown': 'Arriba / Abajo',
|
|
563
|
+
'help.upDownDesc': 'cursor arriba/abajo; historial en los extremos',
|
|
564
|
+
'help.mouse': 'Arrastrar ratón',
|
|
565
|
+
'help.mouseDesc': 'seleccionar texto; el clic derecho copia',
|
|
566
|
+
'help.wheel': 'Rueda',
|
|
567
|
+
'help.wheelDesc': 'desplazar transcript / ajustes',
|
|
568
|
+
'help.escEsc': 'Esc Esc',
|
|
569
|
+
'help.escEscDesc': 'selector de retroceso',
|
|
570
|
+
'help.esc': 'Esc',
|
|
571
|
+
'help.escDesc': 'cerrar overlay · cancelar turno · limpiar entrada',
|
|
572
|
+
'help.commands': 'Comandos:',
|
|
573
|
+
|
|
574
|
+
// ---- session manager / toasts ------------------------------------------
|
|
575
|
+
'session.newTitle': 'Nueva sesión',
|
|
576
|
+
'session.noSaved': 'No hay sesiones guardadas',
|
|
577
|
+
'session.manageTitle': 'Gestionar sesiones',
|
|
578
|
+
'session.manageSubtitle': 'Enter abrir · Ctrl+D dos veces para borrar · Esc volver',
|
|
579
|
+
'session.loading': 'Cargando sesiones...',
|
|
580
|
+
'session.deleted': 'sesión {label} borrada',
|
|
581
|
+
'session.deleteFailed': 'borrar sesión: {error}',
|
|
582
|
+
'session.deleteNotFound': 'no se encontró el directorio de la sesión guardada',
|
|
583
|
+
'session.deleteCancelled': 'borrado cancelado',
|
|
584
|
+
'session.resumed': 'sesión {id} reanudada',
|
|
585
|
+
'session.started': 'sesión {id} iniciada',
|
|
586
|
+
'session.openFailed': 'no se pudo abrir la sesión: {error}',
|
|
587
|
+
'session.forkSummary': '{label} desde {parent} · {files}',
|
|
588
|
+
'session.forkDropped': ' · se descartaron {count} entradas pendientes heredadas',
|
|
589
|
+
'session.conversationOnly': 'solo conversación',
|
|
590
|
+
'session.rewindLabel': 'retroceso #{n}',
|
|
591
|
+
'session.files': 'archivos: {summary}',
|
|
592
|
+
'session.error': 'error: {error}',
|
|
593
|
+
'session.interruptFirst': 'cancelar primero el turno en curso (/cancel)',
|
|
594
|
+
'session.interruptFirstEsc': 'cancelar primero el turno en curso (Esc o /cancel)',
|
|
595
|
+
'session.startFirst': 'iniciar primero una sesión',
|
|
596
|
+
'session.noReasoningLevels': 'el modelo actual no expone niveles de razonamiento',
|
|
597
|
+
'session.settingsUnavailable': 'ajustes no disponibles',
|
|
598
|
+
'session.interruptRequested': 'interrupción solicitada',
|
|
599
|
+
'session.nothingToInterrupt': 'nada que interrumpir',
|
|
600
|
+
'session.noSessionRunning': 'no hay ninguna sesión en ejecución',
|
|
601
|
+
'session.promptCleared': 'entrada limpiada',
|
|
602
|
+
'session.exitAgain': 'pulsar Ctrl+C otra vez para salir',
|
|
603
|
+
'session.usageResume': 'uso: /resume <sessionId>',
|
|
604
|
+
'session.currentModel': 'modelo actual: {model}',
|
|
605
|
+
'session.modelSet': 'modelo establecido en {model} (se aplica a la próxima petición)',
|
|
606
|
+
'session.currentProvider': 'proveedor actual: {provider}',
|
|
607
|
+
'session.providerSet': 'proveedor establecido en {provider} (se aplica a la próxima petición)',
|
|
608
|
+
'session.unknownCommand': 'comando desconocido /{name} — probar /help',
|
|
609
|
+
'session.queryMissing': 'la consulta de sesión no está montada en este perfil',
|
|
610
|
+
'session.listHeader': 'sesiones:',
|
|
611
|
+
'session.noPersisted': 'no hay sesiones guardadas',
|
|
612
|
+
'session.listFailed': 'no se pudieron listar las sesiones: {error}',
|
|
613
|
+
'session.modelNoImages': 'el modelo "{model}" no admite entrada de imagen',
|
|
614
|
+
'session.imageAttachFailed': 'falló el adjuntado de imagen: {error}',
|
|
615
|
+
'session.attachmentsUnavailable': 'servicio de adjuntos no disponible; no se puede leer la imagen',
|
|
616
|
+
'session.copied.one': '{count} línea copiada al portapapeles',
|
|
617
|
+
'session.copied.other': '{count} líneas copiadas al portapapeles',
|
|
618
|
+
'session.valueRequired': 'se requiere un valor',
|
|
619
|
+
'session.minChars': 'al menos {count} caracteres',
|
|
620
|
+
'session.maxChars': 'como máximo {count} caracteres',
|
|
621
|
+
'session.answerRequired': 'seleccionar una opción o escribir una respuesta',
|
|
622
|
+
'session.typeAnswer': 'escribir una respuesta o pulsar Esc',
|
|
623
|
+
'session.updatesAvailable': 'Actualizaciones: {list} — Ctrl+P → Actualización',
|
|
624
|
+
'session.versionsError': 'versiones: {error}',
|
|
625
|
+
'session.mcpError': 'MCP: {error}',
|
|
626
|
+
'session.noClipboard': 'no hay ruta de portapapeles disponible',
|
|
627
|
+
'session.unsupportedInteraction': 'tipo de interacción no admitido: {kind}',
|
|
628
|
+
|
|
629
|
+
// ---- tool activity summaries -------------------------------------------
|
|
630
|
+
'tool.run': 'ejecutar {command}',
|
|
631
|
+
'tool.askUser': 'preguntar al usuario',
|
|
632
|
+
'tool.askQuestions': 'hacer {count} preguntas',
|
|
604
633
|
|
|
605
634
|
// ---- host diagnostics ----------------------------------------------------
|
|
606
635
|
'diagnostics.notice': 'Diagnósticos del host registrados en {path}',
|
|
607
|
-
|
|
636
|
+
|
|
637
|
+
// ---- screenshots --------------------------------------------------------
|
|
638
|
+
"screenshot.shortcut": "Captura de pantalla",
|
|
639
|
+
"screenshot.directory": "Carpeta de capturas",
|
|
640
|
+
"screenshot.saved": "Captura guardada",
|
|
641
|
+
"screenshot.failed": "Error al hacer la captura",
|
|
642
|
+
}
|