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/nl.js
CHANGED
|
@@ -1,607 +1,642 @@
|
|
|
1
|
-
// Dutch catalog. Keys, order and placeholders mirror `en.js`, the source.
|
|
2
|
-
export default {
|
|
3
|
-
// ---- shared chrome ------------------------------------------------------
|
|
4
|
-
'common.selectBack': 'Enter selecteren · Esc terug',
|
|
5
|
-
'common.selectConfirmBack': '↑/↓ selecteren · Enter bevestigen · Esc terug',
|
|
6
|
-
'common.selectContinueExit': '↑/↓ selecteren · Enter doorgaan · Esc afsluiten',
|
|
7
|
-
'common.escBack': 'Esc terug',
|
|
8
|
-
'common.escClose': 'Esc sluiten',
|
|
9
|
-
'common.escCancel': 'Esc annuleren',
|
|
10
|
-
'common.working': 'Bezig…',
|
|
11
|
-
'common.pleaseWait': 'even geduld',
|
|
12
|
-
'common.on': 'aan',
|
|
13
|
-
'common.off': 'uit',
|
|
14
|
-
'common.unavailable': 'niet beschikbaar',
|
|
15
|
-
'common.selected': 'geselecteerd',
|
|
16
|
-
'common.default': 'standaard',
|
|
17
|
-
'common.system': 'systeem',
|
|
18
|
-
'common.installed': '(geïnstalleerd)',
|
|
19
|
-
'common.more': '… {count} meer',
|
|
20
|
-
'common.moreLines': '… {count} regels meer',
|
|
21
|
-
'common.clickExpand': ' · klik om uit te vouwen',
|
|
22
|
-
'common.clickCollapse': ' · klik om in te klappen',
|
|
23
|
-
'common.unknown': 'onbekend',
|
|
24
|
-
'common.emptyMessage': '[leeg bericht]',
|
|
25
|
-
'value.queue': 'wachtrij',
|
|
26
|
-
'value.steer': 'sturen',
|
|
27
|
-
'value.auto': 'automatisch',
|
|
28
|
-
'value.local': 'lokaal',
|
|
29
|
-
'value.textOnly': 'alleen tekst',
|
|
30
|
-
'value.textImage': 'tekst + afbeelding',
|
|
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
|
+
// Dutch catalog. Keys, order and placeholders mirror `en.js`, the source.
|
|
2
|
+
export default {
|
|
3
|
+
// ---- shared chrome ------------------------------------------------------
|
|
4
|
+
'common.selectBack': 'Enter selecteren · Esc terug',
|
|
5
|
+
'common.selectConfirmBack': '↑/↓ selecteren · Enter bevestigen · Esc terug',
|
|
6
|
+
'common.selectContinueExit': '↑/↓ selecteren · Enter doorgaan · Esc afsluiten',
|
|
7
|
+
'common.escBack': 'Esc terug',
|
|
8
|
+
'common.escClose': 'Esc sluiten',
|
|
9
|
+
'common.escCancel': 'Esc annuleren',
|
|
10
|
+
'common.working': 'Bezig…',
|
|
11
|
+
'common.pleaseWait': 'even geduld',
|
|
12
|
+
'common.on': 'aan',
|
|
13
|
+
'common.off': 'uit',
|
|
14
|
+
'common.unavailable': 'niet beschikbaar',
|
|
15
|
+
'common.selected': 'geselecteerd',
|
|
16
|
+
'common.default': 'standaard',
|
|
17
|
+
'common.system': 'systeem',
|
|
18
|
+
'common.installed': '(geïnstalleerd)',
|
|
19
|
+
'common.more': '… {count} meer',
|
|
20
|
+
'common.moreLines': '… {count} regels meer',
|
|
21
|
+
'common.clickExpand': ' · klik om uit te vouwen',
|
|
22
|
+
'common.clickCollapse': ' · klik om in te klappen',
|
|
23
|
+
'common.unknown': 'onbekend',
|
|
24
|
+
'common.emptyMessage': '[leeg bericht]',
|
|
25
|
+
'value.queue': 'wachtrij',
|
|
26
|
+
'value.steer': 'sturen',
|
|
27
|
+
'value.auto': 'automatisch',
|
|
28
|
+
'value.local': 'lokaal',
|
|
29
|
+
'value.textOnly': 'alleen tekst',
|
|
30
|
+
'value.textImage': 'tekst + afbeelding',
|
|
31
|
+
'value.show': 'tonen',
|
|
32
|
+
'value.hide': 'verbergen',
|
|
33
|
+
|
|
34
|
+
// ---- title screen -------------------------------------------------------
|
|
35
|
+
'splash.hint': 'Vraag maar wat... "Repareer kapotte tests"',
|
|
36
|
+
'splash.shortcutSettings': 'instellingen',
|
|
37
|
+
'splash.shortcutThinking': 'denken',
|
|
38
|
+
'splash.shortcutBranches': 'branches',
|
|
39
|
+
|
|
40
|
+
// ---- header / sidebar / status row -------------------------------------
|
|
41
|
+
// ---- command-line help (dsh --profile tui --help) -----------------------
|
|
42
|
+
'startup.description': 'Start de terminalinterface van DeepSeek Harness.',
|
|
43
|
+
'startup.helpOption': 'deze hulp tonen',
|
|
44
|
+
'startup.resume': 'een bestaande opgeslagen sessie hervatten op id',
|
|
45
|
+
'startup.model': 'standaard model-id voor nieuwe sessies',
|
|
46
|
+
'startup.provider': 'standaard provider-route voor nieuwe sessies',
|
|
47
|
+
'startup.sidebar': 'de sessiezijbalk tonen (standaard)',
|
|
48
|
+
'startup.noSidebar': 'starten zonder de zijbalk',
|
|
49
|
+
'startup.examples': 'Voorbeelden:',
|
|
50
|
+
'startup.exampleFresh': 'een nieuwe sessie starten',
|
|
51
|
+
'startup.exampleResume': 'een opgeslagen sessie hervatten',
|
|
52
|
+
|
|
53
|
+
'header.workspace': 'WERKRUIMTE',
|
|
54
|
+
'sidebar.sessions': 'SESSIES',
|
|
55
|
+
'sidebar.recent': 'RECENT',
|
|
56
|
+
'sidebar.newSession': '+ Nieuwe sessie',
|
|
57
|
+
'status.model': 'model',
|
|
58
|
+
'status.draftTokens': '{count} concept-tok',
|
|
59
|
+
'status.ctrlP': 'ctrl+p opdrachten',
|
|
60
|
+
'status.interrupt': 'onderbreken: ctrl+c',
|
|
61
|
+
|
|
62
|
+
// ---- composer command hints --------------------------------------------
|
|
63
|
+
'hint.help': 'toon help',
|
|
64
|
+
'hint.settings': 'open instellingen',
|
|
65
|
+
'hint.new': 'nieuwe sessie',
|
|
66
|
+
'hint.resume': 'sessie hervatten',
|
|
67
|
+
'hint.model': 'model kiezen',
|
|
68
|
+
'hint.provider': 'provider kiezen',
|
|
69
|
+
'hint.rewind': 'terugspoelkiezer',
|
|
70
|
+
'hint.branch': 'git-branch wisselen',
|
|
71
|
+
'hint.stats': 'sessiestatistieken en tokengebruik',
|
|
72
|
+
'hint.clear': 'beeld wissen',
|
|
73
|
+
'hint.cancel': 'lopende beurt annuleren',
|
|
74
|
+
'hint.quit': 'afsluiten',
|
|
75
|
+
'hint.compact': 'context compacteren',
|
|
76
|
+
'hint.goal': 'doel beheren',
|
|
77
|
+
|
|
78
|
+
// ---- transcript blocks --------------------------------------------------
|
|
79
|
+
'transcript.turns.one': '{count} beurt',
|
|
80
|
+
'transcript.turns.other': '{count} beurten',
|
|
81
|
+
'transcript.steps.one': '{count} stap',
|
|
82
|
+
'transcript.steps.other': '{count} stappen',
|
|
83
|
+
'transcript.modelChanged': 'Model gewijzigd van {from} naar {to}',
|
|
84
|
+
'transcript.thinking': ' denken',
|
|
85
|
+
'transcript.streaming': ' · streamen…',
|
|
86
|
+
'transcript.steeringBadge': ' ⟲ bijsturen',
|
|
87
|
+
'transcript.tasks': 'taken',
|
|
88
|
+
'transcript.systemPrompt': ' systeemprompt',
|
|
89
|
+
'transcript.pendingInput': ' wachtende invoer · ',
|
|
90
|
+
'transcript.steering': ' bijsturen',
|
|
91
|
+
'transcript.queued': ' in wachtrij',
|
|
92
|
+
'note.systemReminder': 'system-reminder',
|
|
93
|
+
'note.compaction': 'compressie',
|
|
94
|
+
'note.runtimeContext': 'runtime-context',
|
|
95
|
+
|
|
96
|
+
// ---- images and mermaid -------------------------------------------------
|
|
97
|
+
'image.attachment': '🖼 afbeeldingsbijlage',
|
|
98
|
+
'image.rendering': '⏳ afbeelding renderen…',
|
|
99
|
+
'image.renderFailed': '⚠ afbeelding renderen mislukt · {error}',
|
|
100
|
+
'image.mermaidRendering': '⏳ mermaid-diagram renderen…',
|
|
101
|
+
'image.mermaidTooWide': '↔ mermaid-diagram heeft {width} kolommen nodig, dit paneel heeft {budget}',
|
|
102
|
+
'image.altFallback': 'afbeelding',
|
|
103
|
+
|
|
104
|
+
// ---- composer / approval prompt ----------------------------------------
|
|
105
|
+
'composer.keys': "Enter verzenden · Ctrl+Enter nieuwe regel · Ctrl+P instellingen",
|
|
106
|
+
'composer.commandKeys': "↑/↓ kiezen · Tab aanvullen · Esc sluiten",
|
|
107
|
+
'composer.imageHint': 'Geplakte afbeelding: gebruik een multimodaal model/plugin of deepseek-v4-flash-vision-exp, anders kan de afbeelding niet worden gelezen',
|
|
108
|
+
'composer.approval': 'Goedkeuring · ',
|
|
109
|
+
'composer.summary': 'Samenvatting · ',
|
|
110
|
+
'composer.origin': 'Herkomst · ',
|
|
111
|
+
'composer.risk': 'Risico · ',
|
|
112
|
+
'composer.approvalHint': 'y toestaan · n weigeren · Esc annuleren',
|
|
113
|
+
'risk.low': 'laag',
|
|
114
|
+
'risk.medium': 'gemiddeld',
|
|
115
|
+
'risk.high': 'hoog',
|
|
116
|
+
'composer.effortHint': 'Tab / ←/→ aanpassen · Esc sluiten',
|
|
117
|
+
|
|
118
|
+
// ---- right status rail --------------------------------------------------
|
|
119
|
+
'rail.model': 'MODEL',
|
|
120
|
+
'rail.thinking': 'DENKEN',
|
|
121
|
+
'rail.context': 'CONTEXT',
|
|
122
|
+
'rail.session': 'SESSIE',
|
|
123
|
+
'rail.goal': 'DOEL',
|
|
124
|
+
'rail.subagents': 'SUBAGENTEN',
|
|
125
|
+
'rail.noData': '—',
|
|
126
|
+
'rail.percentUsed': '{percent}% gebruikt',
|
|
127
|
+
'rail.tokens': '~{used} / {window} tokens',
|
|
128
|
+
'rail.cacheHit': 'cache {percent}% hit',
|
|
129
|
+
'rail.breakdown': 'systeem {system} · tools {tools} · berichten {messages}',
|
|
130
|
+
'rail.contextPending': 'verschijnt zodra gebruik is gemeld',
|
|
131
|
+
'rail.subagentCounts': '{running} actief · {total} totaal',
|
|
132
|
+
'rail.unreadable': '{label} (onleesbaar)',
|
|
133
|
+
'rail.more': '… +{count} meer',
|
|
134
|
+
'rail.round': ' · ronde {started}/{max}',
|
|
135
|
+
'goal.active': 'actief',
|
|
136
|
+
'goal.paused': 'gepauzeerd',
|
|
137
|
+
'goal.blocked': 'geblokkeerd',
|
|
138
|
+
'goal.complete': 'voltooid',
|
|
139
|
+
|
|
140
|
+
// ---- session stats window ----------------------------------------------
|
|
141
|
+
'stats.title': 'sessiestatistieken',
|
|
142
|
+
'stats.hint': 'klik de strook of /stats',
|
|
143
|
+
'stats.usage': 'gebruik',
|
|
144
|
+
'stats.duration': 'duur',
|
|
145
|
+
'stats.speed': 'snelheid',
|
|
146
|
+
'stats.tokens': 'tokens',
|
|
147
|
+
'stats.cache': 'cache',
|
|
148
|
+
'stats.context': 'context',
|
|
149
|
+
'stats.noSteps': 'nog geen voltooide stap',
|
|
150
|
+
'stats.llmTime': 'LLM {value}',
|
|
151
|
+
'stats.toolTime': 'tools {value}',
|
|
152
|
+
'stats.ttft': 'TTFT gem. {value}',
|
|
153
|
+
'stats.tokensPerSecond': '{value} tok/s',
|
|
154
|
+
'stats.cacheRate': 'cache {percent}%',
|
|
155
|
+
'stats.inOut': 'in {input} · uit {output}',
|
|
156
|
+
'stats.cacheDetail': '{percent}% hit · gelezen {read} · geschreven {write} · mis {miss}',
|
|
157
|
+
'stats.contextUsed': '{percent}% gebruikt ~{used} / {window}',
|
|
158
|
+
'stats.systemPrompt': 'systeemprompt',
|
|
159
|
+
'stats.tools': 'tools',
|
|
160
|
+
'stats.messages': 'berichten',
|
|
161
|
+
'stats.compositionUnavailable': 'contextsamenstelling niet beschikbaar',
|
|
162
|
+
'stats.contextPending': 'contextgebruik verschijnt zodra een verzoek gebruik meldt',
|
|
163
|
+
|
|
164
|
+
// ---- questions modal ----------------------------------------------------
|
|
165
|
+
'questions.title': 'Vraag',
|
|
166
|
+
'questions.titleOf': 'Vraag {index} van {total}',
|
|
167
|
+
'questions.defer': 'Esc uitstellen',
|
|
168
|
+
'questions.range': '{from}-{to} van {total} PgUp/PgDn',
|
|
169
|
+
'questions.other': 'Anders: ',
|
|
170
|
+
'questions.answer': 'Antwoord: ',
|
|
171
|
+
'questions.placeholder': 'typ je eigen antwoord',
|
|
172
|
+
'questions.hintCustom': 'Enter bevestigen · Esc terug',
|
|
173
|
+
'questions.hintMulti': 'Space wisselen · Enter doorgaan · Up/Down verplaatsen',
|
|
174
|
+
'questions.hintSingle': 'Enter selecteren · Up/Down verplaatsen',
|
|
175
|
+
|
|
176
|
+
// ---- secret prompt ------------------------------------------------------
|
|
177
|
+
'secret.hint': 'Enter verzenden · Esc annuleren',
|
|
178
|
+
|
|
179
|
+
// ---- boot gate: the dsh version this build may run on ----
|
|
180
|
+
'boot.unsupportedTitle': 'Niet-ondersteunde dsh-versie',
|
|
181
|
+
'boot.unverifiedTitle': 'Niet-geverifieerde dsh-versie',
|
|
182
|
+
'boot.runningLabel': 'actieve dsh',
|
|
183
|
+
'boot.supportedLabel': 'ondersteund',
|
|
184
|
+
'boot.recommendedLabel': 'aanbevolen',
|
|
185
|
+
'boot.verifiedLabel': 'geverifieerd',
|
|
186
|
+
'boot.unsupportedBody': 'Deze dsh-oc-tui-build ondersteunt alleen {range}, en {version} valt daarbuiten. Sessies kunnen niet starten tot dsh een ondersteunde versie gebruikt.',
|
|
187
|
+
'boot.unverifiedBody': 'Deze dsh-oc-tui-build is geverifieerd met {verified}, niet met {version}. Installeer {recommended} om zeker te zijn dat het werkt.',
|
|
188
|
+
'boot.installHint': 'Installeer de aanbevolen dsh-versie en start dit profiel opnieuw:',
|
|
189
|
+
'boot.updatePluginHint': 'Als een nieuwere dsh-oc-tui deze dsh al ondersteunt, werk dan de plugin bij:',
|
|
190
|
+
'boot.exitHint': 'Esc of Ctrl+C sluit af',
|
|
191
|
+
|
|
192
|
+
// ---- settings dialog chrome --------------------------------------------
|
|
193
|
+
'settings.title': 'Instellingen',
|
|
194
|
+
'settings.menu': 'MENU',
|
|
195
|
+
'settings.shared': 'Gedeeld met DeepSeek Harness WebUI',
|
|
196
|
+
'settings.footerEdit': 'Enter opslaan · Esc annuleren',
|
|
197
|
+
'settings.footerMenu': '↑/↓ verplaatsen · Tab menu · Enter selecteren · Esc terug',
|
|
198
|
+
'settings.footerPlain': '↑/↓ verplaatsen · Enter selecteren · Esc terug',
|
|
199
|
+
'settings.confirmHint': '{text} · Y / N',
|
|
200
|
+
'settings.confirmDefault': 'Y bevestigen · N annuleren',
|
|
201
|
+
'settings.confirmDeleteSession': 'Ctrl+D nogmaals om te verwijderen',
|
|
202
|
+
'settings.confirmChange': 'Deze wijziging bevestigen?',
|
|
203
|
+
'settings.deleteTwice': 'Druk nogmaals op Ctrl+D om te verwijderen ',
|
|
204
|
+
'settings.deleteMcpTwice': 'Druk nogmaals op Delete om te verwijderen ',
|
|
205
|
+
'settings.noSession': 'geen sessie geselecteerd',
|
|
206
|
+
'settings.noSessions': 'geen sessies beschikbaar',
|
|
207
|
+
'settings.noMcp': 'geen MCP-server geselecteerd',
|
|
208
|
+
'settings.noOptions': 'geen beschikbare opties voor {label}',
|
|
209
|
+
'settings.saved': 'opgeslagen in DSH-instellingen',
|
|
210
|
+
'settings.providerRemoved': 'provider verwijderd',
|
|
211
|
+
'settings.conflict': 'instellingen elders gewijzigd; opnieuw geladen',
|
|
212
|
+
'settings.error': 'instellingen: {error}',
|
|
213
|
+
'settings.dshSettings': 'DSH-instellingen',
|
|
214
|
+
'settings.optionList': 'Enter selecteren · Esc terug',
|
|
215
|
+
|
|
216
|
+
// ---- settings left menu -------------------------------------------------
|
|
217
|
+
'menu.main': 'Hoofd',
|
|
218
|
+
'menu.model': 'Model',
|
|
219
|
+
'menu.update': 'Update',
|
|
220
|
+
'menu.mcp': 'MCP',
|
|
221
|
+
|
|
222
|
+
// ---- settings rows: main tab -------------------------------------------
|
|
223
|
+
'settings.general': 'Algemeen',
|
|
224
|
+
'settings.graphics': 'Grafisch',
|
|
225
|
+
'settings.sessions': 'Sessies',
|
|
226
|
+
'settings.system': 'Systeem',
|
|
227
|
+
'settings.developer': 'Ontwikkelaar',
|
|
228
|
+
'settings.contextDetails': 'Contextdetails',
|
|
229
|
+
'settings.busyEnter': 'Enter tijdens werk',
|
|
230
|
+
'settings.defaultPreset': 'Standaardpreset',
|
|
231
|
+
'settings.permissionPreset': 'Rechtenpreset',
|
|
232
|
+
'settings.permissionDangerConfirm': 'Onbeperkte toegang tot tools en bestanden inschakelen?',
|
|
233
|
+
'settings.graphicsRendering': 'Grafisch renderen',
|
|
234
|
+
'settings.noProtocolFallback': 'Terugval zonder protocol',
|
|
235
|
+
'settings.imageHeightCap': 'Max. afbeeldingshoogte (regels)',
|
|
236
|
+
'settings.mermaidRendering': 'Mermaid-rendering',
|
|
237
|
+
'settings.newSession': 'Nieuwe sessie',
|
|
238
|
+
'settings.manageSessions': 'Sessies beheren',
|
|
239
|
+
'settings.providerConfig': 'Provider-API-configuratie',
|
|
240
|
+
'settings.updateManager': 'Updatebeheer',
|
|
241
|
+
'settings.settingsFile': 'Instellingenbestand',
|
|
242
|
+
'settings.language': 'Taal',
|
|
243
|
+
'settings.theme': 'Thema',
|
|
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': 'Systeem ({language})',
|
|
250
|
+
'settings.languageSaved': 'taal: {language}',
|
|
251
|
+
|
|
252
|
+
// ---- model tab ----------------------------------------------------------
|
|
253
|
+
'model.title': 'Model',
|
|
254
|
+
'model.subtitle': 'Enter maakt het geselecteerde model standaard',
|
|
255
|
+
'model.defaultSection': 'Standaard',
|
|
256
|
+
'model.defaultProvider': 'Standaardprovider',
|
|
257
|
+
'model.defaultModel': 'Standaardmodel',
|
|
258
|
+
'model.reasoning': 'Redeneren',
|
|
259
|
+
'model.providerUrl': 'Provider-URL',
|
|
260
|
+
'model.providerApiKey': 'Provider-API-sleutel',
|
|
261
|
+
'model.displayName': 'Weergavenaam',
|
|
262
|
+
'model.wireProtocol': 'Wire-protocol',
|
|
263
|
+
'model.defaultImageInput': 'Standaard afbeeldingsinvoer',
|
|
264
|
+
'model.models': 'Modellen',
|
|
265
|
+
'model.fetch': 'ophalen…',
|
|
266
|
+
'model.selectedCount': '{count} geselecteerd',
|
|
267
|
+
'model.removeProvider': 'Provider verwijderen',
|
|
268
|
+
'model.removeProviderConfirm': '{name} en de beheerde inloggegevens verwijderen?',
|
|
269
|
+
'model.noModels': 'geen modellen beschikbaar',
|
|
270
|
+
'model.noModelsReturned': 'provider gaf geen modellen terug',
|
|
271
|
+
'model.fetchUnavailable': 'automatisch ophalen niet beschikbaar — opgeslagen modellen · Enter wisselen',
|
|
272
|
+
'model.fetchOk': 'automatisch opgehaald · Enter wisselen · Esc terug',
|
|
273
|
+
'model.fetching': 'Modellen ophalen…',
|
|
274
|
+
'model.autoFetching': 'automatisch ophalen…',
|
|
275
|
+
'model.credentialConfigured': 'geconfigureerd ({source})',
|
|
276
|
+
'model.credentialMissing': 'niet geconfigureerd',
|
|
277
|
+
'model.defaultTag': 'standaard',
|
|
278
|
+
'model.providerUnavailable': 'provider is niet meer beschikbaar',
|
|
279
|
+
'model.namespaceUnavailable': 'provider-instellingenruimte is niet beschikbaar',
|
|
280
|
+
'model.apiKeyEmpty': 'API-sleutel mag niet leeg zijn',
|
|
281
|
+
'model.credentialsUnavailable': 'inloggegevensdienst is niet beschikbaar',
|
|
282
|
+
'model.noProviderModels': 'geselecteerde provider heeft geen beschikbare modellen',
|
|
283
|
+
'model.addCount.one': '{count} beschikbaar',
|
|
284
|
+
'model.addCount.other': '{count} beschikbaar',
|
|
285
|
+
|
|
286
|
+
// ---- add-provider flow --------------------------------------------------
|
|
287
|
+
'provider.add': 'Provider toevoegen',
|
|
288
|
+
'provider.empty': 'nog geen provider geconfigureerd',
|
|
289
|
+
'provider.pickSubtitle': 'Enter kiezen · Esc terug',
|
|
290
|
+
'provider.catalog': 'Geïnstalleerde providers',
|
|
291
|
+
'provider.catalogEmpty': 'alle geïnstalleerde providers zijn al geconfigureerd',
|
|
292
|
+
'provider.custom': 'Eigen API — eindpunt zelf opgeven',
|
|
293
|
+
'provider.form.catalog': 'Geïnstalleerde provider overnemen',
|
|
294
|
+
'provider.form.custom': 'Eigen provider opgeven',
|
|
295
|
+
'provider.formSubtitle': 'Enter bewerken · Esc terug',
|
|
296
|
+
'provider.field.route': 'Route-id',
|
|
297
|
+
'provider.field.addModel': 'Model-id toevoegen',
|
|
298
|
+
'provider.field.save': 'Provider opslaan',
|
|
299
|
+
'provider.hint.route': 'kleine letters, cijfers en streepjes · sleutel opgeslagen als {ref}',
|
|
300
|
+
'provider.error.route': 'route-id moet met een letter beginnen en alleen kleine letters, cijfers en streepjes bevatten',
|
|
301
|
+
'provider.error.routeNeeded': 'kies een provider',
|
|
302
|
+
'provider.error.taken': 'deze route-id is al in gebruik',
|
|
303
|
+
'provider.error.baseUrl': 'het eindpunt moet een http- of https-URL zijn',
|
|
304
|
+
'provider.error.baseUrlNeeded': 'een eigen provider heeft een eindpunt nodig',
|
|
305
|
+
'provider.error.apiNeeded': 'kies het protocol dat dit eindpunt spreekt',
|
|
306
|
+
'provider.error.modelsNeeded': 'een eigen provider heeft minstens één model nodig',
|
|
307
|
+
'provider.error.modelId': 'model {index} heeft een id nodig',
|
|
308
|
+
'provider.error.modelDuplicate': 'model "{id}" staat er twee keer in',
|
|
309
|
+
'provider.added': 'provider toegevoegd',
|
|
310
|
+
'provider.accountManaged': 'aangemeld met je DeepSeek-account',
|
|
311
|
+
'provider.search': 'Zoeken',
|
|
312
|
+
'provider.searchPlaceholder': 'typ om te filteren',
|
|
313
|
+
'provider.searchEmpty': 'geen provider past bij "{query}"',
|
|
314
|
+
|
|
315
|
+
// ---- één modelvermelding -----------------------------------------------------
|
|
316
|
+
'model.edit': 'Model bewerken',
|
|
317
|
+
'model.editHint': 'e bewerken · Del verwijderen',
|
|
318
|
+
'model.refresh': 'Catalogus verversen',
|
|
319
|
+
'model.selectAll': 'Alles selecteren',
|
|
320
|
+
'model.fetchRefused': 'het eindpunt gaf geen modellenlijst terug',
|
|
321
|
+
'model.notSaved': 'dit model is nog niet opgeslagen',
|
|
322
|
+
'model.removed': 'model verwijderd',
|
|
323
|
+
'model.form.add': 'Model toevoegen',
|
|
324
|
+
'model.form.edit': 'Model · {id}',
|
|
325
|
+
'model.form.save': 'Model opslaan',
|
|
326
|
+
'model.form.remove': 'Bij provider weghalen',
|
|
327
|
+
'model.form.removeConfirm': 'Dit model bij de provider weghalen?',
|
|
328
|
+
'model.field.id': 'Model-id',
|
|
329
|
+
'model.field.name': 'Weergavenaam',
|
|
330
|
+
'model.field.contextWindow': 'Contextvenster',
|
|
331
|
+
'model.field.maxTokens': 'Max. uitvoer-tokens',
|
|
332
|
+
'model.field.input': 'Invoer',
|
|
333
|
+
'model.error.idNeeded': 'een model heeft een id nodig',
|
|
334
|
+
'model.error.idDuplicate': 'model "{id}" staat al in de lijst',
|
|
335
|
+
'model.error.capacity': 'contextvenster en max. tokens moeten gehele getallen zijn (256K, 1M)',
|
|
336
|
+
|
|
337
|
+
// ---- MCP tab ------------------------------------------------------------
|
|
338
|
+
'mcp.title': 'MCP',
|
|
339
|
+
'mcp.subtitle': 'Enter bewerken · Del verwijderen · Esc terug',
|
|
340
|
+
'mcp.editSubtitle': 'Enter bewerken · Esc terug',
|
|
341
|
+
'mcp.servers': 'MCP-servers',
|
|
342
|
+
'mcp.empty': 'Geen MCP-server geconfigureerd',
|
|
343
|
+
'mcp.add': 'MCP-server toevoegen',
|
|
344
|
+
'mcp.scope': 'bereik',
|
|
345
|
+
'mcp.scopeUserPrefix': 'gebruiker · {path}',
|
|
346
|
+
'mcp.scopePathPrefix': 'pad · {path}',
|
|
347
|
+
'mcp.configFiles': 'Configuratiebestanden',
|
|
348
|
+
'mcp.userScope': 'gebruiker (alle sessies)',
|
|
349
|
+
'mcp.secrets': 'Geheimen',
|
|
350
|
+
'mcp.secretsPlain': 'plat tekst in de configuratiebestanden',
|
|
351
|
+
'mcp.loaded': 'geladen',
|
|
352
|
+
'mcp.notCreated': 'nog niet aangemaakt',
|
|
353
|
+
'mcp.type.stdio': 'Lokaal commando',
|
|
354
|
+
'mcp.type.http': 'HTTP',
|
|
355
|
+
'mcp.type.sse': 'SSE',
|
|
356
|
+
'mcp.state.connected': '● verbonden',
|
|
357
|
+
'mcp.state.tools.one': '● {count} tool',
|
|
358
|
+
'mcp.state.tools.other': '● {count} tools',
|
|
359
|
+
'mcp.state.pending': '… verbinden',
|
|
360
|
+
'mcp.state.disabled': '○ uitgeschakeld',
|
|
361
|
+
'mcp.state.idle': '○ niet verbonden',
|
|
362
|
+
'mcp.notice.connected': "MCP {name}: verbonden",
|
|
363
|
+
'mcp.notice.failed': "MCP {name}: verbinding mislukt",
|
|
364
|
+
'mcp.form.add': 'MCP-server toevoegen',
|
|
365
|
+
'mcp.form.edit': 'MCP-server bewerken · {name}',
|
|
366
|
+
'mcp.titleAdd': 'MCP · toevoegen',
|
|
367
|
+
'mcp.titleEdit': 'MCP · bewerken',
|
|
368
|
+
'mcp.field.name': 'Naam',
|
|
369
|
+
'mcp.field.type': 'Type',
|
|
370
|
+
'mcp.field.timeout': 'Time-out (ms)',
|
|
371
|
+
'mcp.field.command': 'Commando',
|
|
372
|
+
'mcp.field.args': 'Argumenten',
|
|
373
|
+
'mcp.field.env': 'Omgeving (JSON)',
|
|
374
|
+
'mcp.field.url': 'URL',
|
|
375
|
+
'mcp.field.headers': 'Headers (JSON)',
|
|
376
|
+
'mcp.field.scope': 'Bereik',
|
|
377
|
+
'mcp.field.path': 'Pad',
|
|
378
|
+
'mcp.field.enabled': 'Ingeschakeld',
|
|
379
|
+
'mcp.field.save': 'Opslaan',
|
|
380
|
+
'mcp.field.remove': 'Verwijderen',
|
|
381
|
+
'mcp.choice.stdio': 'Lokaal commando (stdio)',
|
|
382
|
+
'mcp.choice.http': 'HTTP (streamable)',
|
|
383
|
+
'mcp.choice.sse': 'SSE (verouderd HTTP+SSE)',
|
|
384
|
+
'mcp.choice.scopeUser': 'Gebruiker — elke sessie',
|
|
385
|
+
'mcp.choice.scopePath': 'Pad — sessies onder een map',
|
|
386
|
+
'mcp.removeConfirm': 'Deze MCP-server verwijderen en de verbinding verbreken?',
|
|
387
|
+
'mcp.saved': 'MCP-server opgeslagen',
|
|
388
|
+
'mcp.added': 'MCP-server toegevoegd',
|
|
389
|
+
'mcp.removed': 'MCP-server verwijderd',
|
|
390
|
+
'mcp.error.name': 'naam moet 1-32 tekens zijn: letters, cijfers, "-" of "_"',
|
|
391
|
+
'mcp.error.duplicate': 'er is al een MCP-server met de naam "{name}" geconfigureerd',
|
|
392
|
+
'mcp.error.timeout': 'timeoutMs moet een geheel getal tussen 1 en {max} zijn',
|
|
393
|
+
'mcp.error.pathNeeded': 'een server met padbereik heeft een map nodig',
|
|
394
|
+
'mcp.error.pathAbsolute': 'het padbereik moet een absolute map zijn',
|
|
395
|
+
'mcp.error.commandNeeded': 'een stdio-server heeft een commando nodig',
|
|
396
|
+
'mcp.error.urlParse': 'URL kan niet worden geparseerd',
|
|
397
|
+
'mcp.error.urlScheme': 'URL moet http of https gebruiken',
|
|
398
|
+
'mcp.error.pathNotDir': 'het padbereik is geen map: {path}',
|
|
399
|
+
'mcp.error.configIsDir': 'het pad van het configuratiebestand is een map: {path}',
|
|
400
|
+
'mcp.error.notFound': 'er is geen MCP-server met de naam "{name}" geconfigureerd',
|
|
401
|
+
'mcp.error.documentGone': 'het document dat "{name}" definieert is weg: {error}',
|
|
402
|
+
'mcp.error.noClient': 'de host biedt geen MCP-client',
|
|
403
|
+
'mcp.error.connectTimeout': 'verbinden met {name} is verlopen',
|
|
404
|
+
'mcp.error.json': 'het document is geen geldige JSON: {error}',
|
|
405
|
+
'mcp.error.jsonObject': 'het document moet een JSON-object zijn',
|
|
406
|
+
'mcp.error.serversObject': '"servers" moet een JSON-object zijn',
|
|
407
|
+
'mcp.error.argsArray': 'argumenten moeten een JSON-array van strings zijn',
|
|
408
|
+
'mcp.error.argsTypes': 'argumenten moeten strings of getallen zijn',
|
|
409
|
+
'mcp.error.argsUnclosed': 'argumenten bevatten een niet-gesloten aanhalingsteken',
|
|
410
|
+
'mcp.error.envObject': '{label} moet een JSON-object zijn',
|
|
411
|
+
'mcp.error.envValue': '{label}-waarde "{name}" moet een string, getal of boolean zijn',
|
|
412
|
+
'mcp.error.header': 'ongeldige HTTP-header "{name}"',
|
|
413
|
+
'mcp.error.envName': 'ongeldige omgevingsnaam "{name}"',
|
|
414
|
+
|
|
415
|
+
// ---- rewind -------------------------------------------------------------
|
|
416
|
+
'rewind.title': 'Terugspoelen',
|
|
417
|
+
'rewind.restoreTo': 'Herstel naar het punt vóór: {label}',
|
|
418
|
+
'rewind.restorePrompt': 'Het gesprek herstellen naar het punt vóór…',
|
|
419
|
+
'rewind.empty': 'Nog niets om naar terug te spoelen.',
|
|
420
|
+
'rewind.option.conversation': 'Gesprek herstellen',
|
|
421
|
+
'rewind.option.both': 'Gesprek en bestanden herstellen',
|
|
422
|
+
'rewind.option.code': 'Bestanden herstellen',
|
|
423
|
+
'rewind.option.cancel': 'Annuleren',
|
|
424
|
+
'rewind.current': '(huidig)',
|
|
425
|
+
'rewind.noPoints': 'geen gebruikersberichten om naar terug te spoelen',
|
|
426
|
+
'rewind.unknownPoint': 'onbekend terugspoelpunt "{selector}" — gebruik een getal of last',
|
|
427
|
+
'rewind.noPoint': 'geen terugspoelpunt {n} — 1..{count}',
|
|
428
|
+
'rewind.notGit': 'geen git-werkboom',
|
|
429
|
+
'rewind.noBackup': 'geen back-uplocatie',
|
|
430
|
+
'rewind.filesNotRestored': 'bestanden niet hersteld',
|
|
431
|
+
'rewind.filesNotRestoredReason': 'bestanden niet hersteld ({reason})',
|
|
432
|
+
'rewind.restored.one': '{count} gevolgd bestand uit HEAD hersteld',
|
|
433
|
+
'rewind.restored.other': '{count} gevolgde bestanden uit HEAD hersteld',
|
|
434
|
+
'rewind.removed.one': '{count} nieuw bestand verwijderd',
|
|
435
|
+
'rewind.removed.other': '{count} nieuwe bestanden verwijderd',
|
|
436
|
+
'rewind.skipped': '{count} overgeslagen',
|
|
437
|
+
'rewind.previousSaved': 'vorige inhoud opgeslagen in {path}',
|
|
438
|
+
'rewind.noChanges': 'geen bestandswijzigingen na dit punt',
|
|
439
|
+
'rewind.image': '[afbeelding]',
|
|
440
|
+
'rewind.images': '[{count} afbeeldingen]',
|
|
441
|
+
'rewind.emptyMessage': '(leeg)',
|
|
442
|
+
'git.title': 'Git-branches',
|
|
443
|
+
'git.subtitle': 'Huidig: {branch} · {path}',
|
|
444
|
+
'git.local': 'Lokale branches',
|
|
445
|
+
'git.remote': 'Externe branches',
|
|
446
|
+
'git.empty': 'Geen branches in deze repository.',
|
|
447
|
+
'git.detached': '(losgekoppeld)',
|
|
448
|
+
'git.switched': 'Overgeschakeld naar branch {branch}',
|
|
449
|
+
'git.switchFailed': 'Kan niet overschakelen naar {branch}: {error}',
|
|
450
|
+
'git.pullDone': 'Updates opgehaald',
|
|
451
|
+
'git.pullFailed': 'Kan updates niet ophalen: {error}',
|
|
452
|
+
'git.listFailed': 'Kan branches niet oplijsten: {error}',
|
|
453
|
+
'git.notRepo': 'geen git-werkmap',
|
|
454
|
+
'git.gitMissing': 'git is niet beschikbaar in PATH',
|
|
455
|
+
'git.timedOut': 'git heeft de time-out bereikt',
|
|
456
|
+
'git.onlyTitleScreen': 'Branch wisselen is alleen beschikbaar op de lege pagina — verlaat de sessie met /new',
|
|
457
|
+
'git.footer': '↑/↓ kiezen · Enter wisselen · P pull · R verversen · Esc sluiten',
|
|
458
|
+
|
|
459
|
+
// ---- update tab ---------------------------------------------------------
|
|
460
|
+
'update.title': 'Update',
|
|
461
|
+
'update.checking': 'Versies controleren…',
|
|
462
|
+
'update.fetching': 'ophalen van npm-register…',
|
|
463
|
+
'update.fetchingVersions': 'Versies ophalen…',
|
|
464
|
+
'update.versionsSubtitle': 'Enter downloaden · Esc terug',
|
|
465
|
+
'update.installed': 'Geïnstalleerd',
|
|
466
|
+
'update.latest': 'Nieuwste (npm-tag)',
|
|
467
|
+
'update.status': 'Status',
|
|
468
|
+
'update.versions': 'Versies',
|
|
469
|
+
'update.selectVersion': 'Versie kiezen…',
|
|
470
|
+
'update.restartApply': 'Herstart om {version} toe te passen',
|
|
471
|
+
'update.enterRestart': 'Enter herstarten',
|
|
472
|
+
'update.discard': 'Gedownloade {version} weggooien',
|
|
473
|
+
'update.actions': 'Acties',
|
|
474
|
+
'update.checkNow': 'Nu controleren',
|
|
475
|
+
'update.checkingShort': 'Controleren…',
|
|
476
|
+
'update.startupCheck': 'Controle bij opstarten',
|
|
477
|
+
'update.profile': 'profiel',
|
|
478
|
+
'update.dshPackage': 'dsh (@deepseek-ai/dsh)',
|
|
479
|
+
'update.statusCorrupt': 'Installatie beschadigd — hieronder opnieuw installeren',
|
|
480
|
+
'update.statusError': 'Registercontrole mislukt: {error}',
|
|
481
|
+
'update.statusAvailable': 'Update beschikbaar → {version}',
|
|
482
|
+
'update.statusUpToDate': 'Bijgewerkt',
|
|
483
|
+
'update.statusNoStable': 'Geen stabiele release — kies uit Versies',
|
|
484
|
+
'update.notOnPath': 'niet gevonden in PATH',
|
|
485
|
+
'update.subtitleStaged': '{package} {version} gedownload — herstart om toe te passen',
|
|
486
|
+
'update.subtitleIdle': 'Enter selecteren · downloaden, dan herstarten om toe te passen',
|
|
487
|
+
'update.download': 'Downloaden',
|
|
488
|
+
'update.contacting': 'contact met het register…',
|
|
489
|
+
'update.version': 'Versie',
|
|
490
|
+
'update.savingTo': 'Opslaan naar',
|
|
491
|
+
'update.escCancels': 'Esc annuleert',
|
|
492
|
+
'update.restartApplyQ': 'Herstarten om {label} {version} toe te passen? (al gedownload)',
|
|
493
|
+
'update.downloadQ': '{label} {version} downloaden en herstarten om toe te passen?',
|
|
494
|
+
'update.localSwitch': ' — schakelt de lokale installatie over naar een registerversie',
|
|
495
|
+
'update.downloaded': 'gedownload · herstart om toe te passen',
|
|
496
|
+
'update.downloadedToast': '{label} {version} gedownload · pas toe via het tabblad Update',
|
|
497
|
+
'update.downloadedConfirm': 'Gedownload: herstarten om {label} {version} toe te passen? (y/n)',
|
|
498
|
+
'update.alreadyDownloadedConfirm': 'Al gedownload · herstarten om {label} {version} toe te passen? (y/n)',
|
|
499
|
+
'update.downloadCancelled': 'download geannuleerd',
|
|
500
|
+
'update.downloadFailed': 'download mislukt: {error}',
|
|
501
|
+
'update.stagedGone': 'de klaargezette download is weg — kies de versie opnieuw',
|
|
502
|
+
'update.locks.one': 'kan niet toepassen terwijl dsh in {count} ander proces draait — sluit het en probeer opnieuw',
|
|
503
|
+
'update.locks.other': 'kan niet toepassen terwijl dsh in {count} andere processen draait — sluit ze en probeer opnieuw',
|
|
504
|
+
'update.noNpm': 'kan niet toepassen: npm niet gevonden',
|
|
505
|
+
'update.noDshCli': 'kan niet toepassen: de dsh-CLI niet gevonden',
|
|
506
|
+
'update.installerFailed': 'kan de installer niet starten — herstart dsh om {label} toe te passen',
|
|
507
|
+
'update.applying': '{label} toepassen · afsluiten en herstarten…',
|
|
508
|
+
'update.stagedDiscarded': 'klaargezette download weggegooid',
|
|
509
|
+
'update.tagCached': 'gecacht',
|
|
510
|
+
'update.tagStaged': 'klaargezet',
|
|
511
|
+
'update.installFailed': 'Installatie mislukt (exit {code}) — opnieuw proberen via Versies',
|
|
512
|
+
'update.installFailedRetry': 'open Update → dsh-oc-tui → Versies en kies een versie om opnieuw te downloaden',
|
|
513
|
+
'update.installUnreadable': 'installatie meldde succes maar de geïnstalleerde versie is {installed} (verwacht {expected}) — herstel: {repair}',
|
|
514
|
+
'update.registryUnreachable': 'register onbereikbaar: {error}',
|
|
515
|
+
'update.notOnRegistry': '{package} staat niet op het register',
|
|
516
|
+
'update.registryHttp': 'register gaf HTTP {status} voor {package}',
|
|
517
|
+
'update.noTarballUrl': 'registerantwoord bevat geen tarball-URL',
|
|
518
|
+
'update.downloadHttp': 'download mislukt: HTTP {status} voor {url}',
|
|
519
|
+
'update.downloadEmpty': 'download mislukt: lege antwoordbody',
|
|
520
|
+
'update.integrityFailed': 'integriteitscontrole mislukt voor {file} — download weggegooid',
|
|
521
|
+
'update.npmMissing': 'npm niet gevonden in PATH',
|
|
522
|
+
'update.npmViewFailed': 'npm view {package} stopte met code {code}',
|
|
523
|
+
'update.timedOut': '\n(time-out na {ms} ms)',
|
|
524
|
+
'update.noOutput': '(geen uitvoer)',
|
|
525
|
+
|
|
526
|
+
// ---- commands -----------------------------------------------------------
|
|
527
|
+
'command.settings': 'Open de instellingenpagina’s van de TUI',
|
|
528
|
+
'command.help': 'Toon de sneltoetsen en opdrachten van de TUI',
|
|
529
|
+
'command.stats': 'Toon token- en cachestatistieken van de sessie',
|
|
530
|
+
'command.new': 'Start een nieuwe sessie',
|
|
531
|
+
'command.resume': 'Hervat een opgeslagen sessie',
|
|
532
|
+
'command.clear': 'Wis het transcript',
|
|
533
|
+
'command.cancel': 'Annuleer de lopende beurt',
|
|
534
|
+
'command.rewind': 'Spoel de sessie terug naar een eerder punt',
|
|
535
|
+
'command.branch': 'Git-branch wisselen op de lege pagina',
|
|
536
|
+
'command.quit': 'Verlaat de TUI',
|
|
537
|
+
|
|
538
|
+
// ---- help overlay -------------------------------------------------------
|
|
539
|
+
'help.title': 'DeepSeek Harness TUI — help',
|
|
540
|
+
'help.enter': 'Enter',
|
|
541
|
+
'help.enterDesc': 'bericht verzenden',
|
|
542
|
+
'help.ctrlEnter': 'Ctrl+Enter',
|
|
543
|
+
'help.ctrlEnterDesc': 'nieuwe regel invoegen',
|
|
544
|
+
'help.ctrlC': 'Ctrl+C',
|
|
545
|
+
'help.ctrlCDesc': 'lopende beurt annuleren; nogmaals om af te sluiten',
|
|
546
|
+
'help.ctrlP': 'Ctrl+P',
|
|
547
|
+
'help.ctrlPDesc': 'instellingen openen',
|
|
548
|
+
'help.ctrlE': 'Ctrl+E',
|
|
549
|
+
'help.ctrlEDesc': 'denkschuif aan/uit',
|
|
550
|
+
'help.tab': 'Tab',
|
|
551
|
+
'help.tabDesc': 'denkintensiteit wisselen',
|
|
552
|
+
'help.ctrlN': 'Ctrl+N',
|
|
553
|
+
'help.ctrlNDesc': 'nieuwe sessie',
|
|
554
|
+
'help.ctrlG': 'Ctrl+G',
|
|
555
|
+
'help.ctrlGDesc': 'git-branch wisselen (lege pagina)',
|
|
556
|
+
'help.ctrlD': 'Ctrl+D',
|
|
557
|
+
'help.ctrlDDesc': 'sessie verwijderen in Sessies beheren (twee keer drukken)',
|
|
558
|
+
'help.pg': 'PgUp / PgDn',
|
|
559
|
+
'help.pgDesc': 'transcript scrollen',
|
|
560
|
+
'help.shiftArrows': 'Shift+↑/↓',
|
|
561
|
+
'help.shiftArrowsDesc': 'statusrail scrollen (brede vensters)',
|
|
562
|
+
'help.upDown': 'Up / Down',
|
|
563
|
+
'help.upDownDesc': 'cursor omhoog/omlaag; geschiedenis aan de randen',
|
|
564
|
+
'help.mouse': 'Muis slepen',
|
|
565
|
+
'help.mouseDesc': 'tekst selecteren; rechtsklik kopieert',
|
|
566
|
+
'help.wheel': 'Wiel',
|
|
567
|
+
'help.wheelDesc': 'transcript / instellingen scrollen',
|
|
568
|
+
'help.escEsc': 'Esc Esc',
|
|
569
|
+
'help.escEscDesc': 'terugspoelkiezer',
|
|
570
|
+
'help.esc': 'Esc',
|
|
571
|
+
'help.escDesc': 'overlay sluiten · beurt annuleren · prompt wissen',
|
|
572
|
+
'help.commands': 'Opdrachten:',
|
|
573
|
+
|
|
574
|
+
// ---- session manager / toasts ------------------------------------------
|
|
575
|
+
'session.newTitle': 'Nieuwe sessie',
|
|
576
|
+
'session.noSaved': 'Geen opgeslagen sessies',
|
|
577
|
+
'session.manageTitle': 'Sessies beheren',
|
|
578
|
+
'session.manageSubtitle': 'Enter openen · Ctrl+D twee keer om te verwijderen · Esc terug',
|
|
579
|
+
'session.loading': 'Sessies laden...',
|
|
580
|
+
'session.deleted': 'sessie {label} verwijderd',
|
|
581
|
+
'session.deleteFailed': 'sessie verwijderen: {error}',
|
|
582
|
+
'session.deleteNotFound': 'map van opgeslagen sessie niet gevonden',
|
|
583
|
+
'session.deleteCancelled': 'verwijderen geannuleerd',
|
|
584
|
+
'session.resumed': 'sessie {id} hervat',
|
|
585
|
+
'session.started': 'sessie {id} gestart',
|
|
586
|
+
'session.openFailed': 'sessie openen mislukt: {error}',
|
|
587
|
+
'session.forkSummary': '{label} van {parent} · {files}',
|
|
588
|
+
'session.forkDropped': ' · {count} overgeërfde wachtende invoer weggegooid',
|
|
589
|
+
'session.conversationOnly': 'alleen gesprek',
|
|
590
|
+
'session.rewindLabel': 'terugspoelen #{n}',
|
|
591
|
+
'session.files': 'bestanden: {summary}',
|
|
592
|
+
'session.error': 'fout: {error}',
|
|
593
|
+
'session.interruptFirst': 'onderbreek eerst de lopende beurt (/cancel)',
|
|
594
|
+
'session.interruptFirstEsc': 'onderbreek eerst de lopende beurt (Esc of /cancel)',
|
|
595
|
+
'session.startFirst': 'start eerst een sessie',
|
|
596
|
+
'session.noReasoningLevels': 'huidig model heeft geen redeneerniveaus',
|
|
597
|
+
'session.settingsUnavailable': 'instellingen niet beschikbaar',
|
|
598
|
+
'session.interruptRequested': 'onderbreking aangevraagd',
|
|
599
|
+
'session.nothingToInterrupt': 'niets om te onderbreken',
|
|
600
|
+
'session.noSessionRunning': 'geen sessie actief',
|
|
601
|
+
'session.promptCleared': 'prompt gewist',
|
|
602
|
+
'session.exitAgain': 'druk nogmaals op Ctrl+C om af te sluiten',
|
|
603
|
+
'session.usageResume': 'gebruik: /resume <sessionId>',
|
|
604
|
+
'session.currentModel': 'huidig model: {model}',
|
|
605
|
+
'session.modelSet': 'model ingesteld op {model} (geldt voor het volgende verzoek)',
|
|
606
|
+
'session.currentProvider': 'huidige provider: {provider}',
|
|
607
|
+
'session.providerSet': 'provider ingesteld op {provider} (geldt voor het volgende verzoek)',
|
|
608
|
+
'session.unknownCommand': 'onbekende opdracht /{name} — probeer /help',
|
|
609
|
+
'session.queryMissing': 'sessiequery is niet gemount in dit profiel',
|
|
610
|
+
'session.listHeader': 'sessies:',
|
|
611
|
+
'session.noPersisted': 'geen opgeslagen sessies',
|
|
612
|
+
'session.listFailed': 'sessies weergeven mislukt: {error}',
|
|
613
|
+
'session.modelNoImages': 'model "{model}" ondersteunt geen afbeeldingsinvoer',
|
|
614
|
+
'session.imageAttachFailed': 'afbeelding toevoegen mislukt: {error}',
|
|
615
|
+
'session.attachmentsUnavailable': 'bijlagendienst niet beschikbaar; afbeelding kan niet worden gelezen',
|
|
616
|
+
'session.copied.one': '{count} regel naar klembord gekopieerd',
|
|
617
|
+
'session.copied.other': '{count} regels naar klembord gekopieerd',
|
|
618
|
+
'session.valueRequired': 'een waarde is vereist',
|
|
619
|
+
'session.minChars': 'minimaal {count} tekens',
|
|
620
|
+
'session.maxChars': 'maximaal {count} tekens',
|
|
621
|
+
'session.answerRequired': 'kies een optie of typ een antwoord',
|
|
622
|
+
'session.typeAnswer': 'typ een antwoord of druk op Esc',
|
|
623
|
+
'session.updatesAvailable': 'Updates: {list} — Ctrl+P → Update',
|
|
624
|
+
'session.versionsError': 'versies: {error}',
|
|
625
|
+
'session.mcpError': 'MCP: {error}',
|
|
626
|
+
'session.noClipboard': 'geen klembordpad beschikbaar',
|
|
627
|
+
'session.unsupportedInteraction': 'niet-ondersteund interactietype: {kind}',
|
|
628
|
+
|
|
629
|
+
// ---- tool activity summaries -------------------------------------------
|
|
630
|
+
'tool.run': 'voer {command} uit',
|
|
631
|
+
'tool.askUser': 'vraag gebruiker',
|
|
632
|
+
'tool.askQuestions': '{count} vragen stellen',
|
|
604
633
|
|
|
605
634
|
// ---- host diagnostics ----------------------------------------------------
|
|
606
635
|
'diagnostics.notice': 'Hostdiagnostiek vastgelegd in {path}',
|
|
607
|
-
|
|
636
|
+
|
|
637
|
+
// ---- screenshots --------------------------------------------------------
|
|
638
|
+
"screenshot.shortcut": "Schermafbeelding",
|
|
639
|
+
"screenshot.directory": "Map voor schermafbeeldingen",
|
|
640
|
+
"screenshot.saved": "Schermafbeelding opgeslagen",
|
|
641
|
+
"screenshot.failed": "Schermafbeelding mislukt",
|
|
642
|
+
}
|