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/ar.js
CHANGED
|
@@ -1,638 +1,673 @@
|
|
|
1
|
-
// Arabic (Modern Standard) catalog. Same keys, same order, and the same
|
|
2
|
-
// placeholders and padding as `en.js`. Every plural family carries the full
|
|
3
|
-
// CLDR set for Arabic (zero, one, two, few, many, other) so `Intl.PluralRules`
|
|
4
|
-
// never falls back to English wordings.
|
|
5
|
-
export default {
|
|
6
|
-
// ---- shared chrome ------------------------------------------------------
|
|
7
|
-
'common.selectBack': 'Enter اختيار · Esc رجوع',
|
|
8
|
-
'common.selectConfirmBack': '↑/↓ اختيار · Enter تأكيد · Esc رجوع',
|
|
9
|
-
'common.selectContinueExit': '↑/↓ اختيار · Enter متابعة · Esc خروج',
|
|
10
|
-
'common.escBack': 'Esc رجوع',
|
|
11
|
-
'common.escClose': 'Esc إغلاق',
|
|
12
|
-
'common.escCancel': 'Esc إلغاء',
|
|
13
|
-
'common.working': 'جارٍ العمل…',
|
|
14
|
-
'common.pleaseWait': 'يُرجى الانتظار',
|
|
15
|
-
'common.on': 'تشغيل',
|
|
16
|
-
'common.off': 'إيقاف',
|
|
17
|
-
'common.unavailable': 'غير متاح',
|
|
18
|
-
'common.selected': 'محدد',
|
|
19
|
-
'common.default': 'افتراضي',
|
|
20
|
-
'common.system': 'النظام',
|
|
21
|
-
'common.installed': '(مثبت)',
|
|
22
|
-
'common.more': '… {count} أخرى',
|
|
23
|
-
'common.moreLines': '… {count} سطرًا آخر',
|
|
24
|
-
'common.clickExpand': ' · انقر للتوسيع',
|
|
25
|
-
'common.clickCollapse': ' · انقر للطي',
|
|
26
|
-
'common.unknown': 'غير معروف',
|
|
27
|
-
'common.emptyMessage': '[رسالة فارغة]',
|
|
28
|
-
'value.queue': 'قائمة الانتظار',
|
|
29
|
-
'value.steer': 'توجيه',
|
|
30
|
-
'value.auto': 'تلقائي',
|
|
31
|
-
'value.local': 'محلي',
|
|
32
|
-
'value.textOnly': 'نص فقط',
|
|
33
|
-
'value.textImage': 'نص + صورة',
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
'splash.
|
|
39
|
-
'splash.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
'startup.
|
|
46
|
-
'startup.
|
|
47
|
-
'startup.
|
|
48
|
-
'startup.
|
|
49
|
-
'startup.
|
|
50
|
-
'startup.
|
|
51
|
-
'startup.
|
|
52
|
-
'startup.
|
|
53
|
-
|
|
54
|
-
'
|
|
55
|
-
|
|
56
|
-
'
|
|
57
|
-
'sidebar.
|
|
58
|
-
'
|
|
59
|
-
'
|
|
60
|
-
'status.
|
|
61
|
-
'status.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
'hint.
|
|
67
|
-
'hint.
|
|
68
|
-
'hint.
|
|
69
|
-
'hint.
|
|
70
|
-
'hint.
|
|
71
|
-
'hint.
|
|
72
|
-
'hint.
|
|
73
|
-
'hint.
|
|
74
|
-
'hint.
|
|
75
|
-
'hint.
|
|
76
|
-
'hint.
|
|
77
|
-
'hint.
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
'transcript.turns.
|
|
83
|
-
'transcript.turns.
|
|
84
|
-
'transcript.turns.
|
|
85
|
-
'transcript.turns.
|
|
86
|
-
'transcript.
|
|
87
|
-
'transcript.
|
|
88
|
-
'transcript.steps.
|
|
89
|
-
'transcript.steps.
|
|
90
|
-
'transcript.steps.
|
|
91
|
-
'transcript.steps.
|
|
92
|
-
'transcript.
|
|
93
|
-
'transcript.
|
|
94
|
-
'transcript.
|
|
95
|
-
'transcript.
|
|
96
|
-
'transcript.
|
|
97
|
-
'transcript.
|
|
98
|
-
'transcript.
|
|
99
|
-
'transcript.
|
|
100
|
-
'
|
|
101
|
-
'
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
'
|
|
105
|
-
'
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
'image.
|
|
109
|
-
'image.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
'
|
|
113
|
-
'
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
'composer.
|
|
117
|
-
'composer.
|
|
118
|
-
'
|
|
119
|
-
'
|
|
120
|
-
'
|
|
121
|
-
'composer.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
'
|
|
125
|
-
'
|
|
126
|
-
'
|
|
127
|
-
'
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
'rail.
|
|
131
|
-
'rail.
|
|
132
|
-
'rail.
|
|
133
|
-
'rail.
|
|
134
|
-
'rail.
|
|
135
|
-
'rail.
|
|
136
|
-
'rail.
|
|
137
|
-
'rail.
|
|
138
|
-
'rail.
|
|
139
|
-
'rail.
|
|
140
|
-
'
|
|
141
|
-
'
|
|
142
|
-
'
|
|
143
|
-
'
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
'
|
|
147
|
-
'
|
|
148
|
-
'
|
|
149
|
-
'
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
'stats.
|
|
153
|
-
'stats.
|
|
154
|
-
'stats.
|
|
155
|
-
'stats.
|
|
156
|
-
'stats.
|
|
157
|
-
'stats.
|
|
158
|
-
'stats.
|
|
159
|
-
'stats.
|
|
160
|
-
'stats.
|
|
161
|
-
'stats.
|
|
162
|
-
'stats.
|
|
163
|
-
'stats.
|
|
164
|
-
'stats.
|
|
165
|
-
'stats.
|
|
166
|
-
'stats.
|
|
167
|
-
'stats.
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
'
|
|
171
|
-
'
|
|
172
|
-
'
|
|
173
|
-
'
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
'questions.
|
|
177
|
-
'questions.
|
|
178
|
-
'questions.
|
|
179
|
-
'questions.
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
'
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
'
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
'
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
'
|
|
192
|
-
'
|
|
193
|
-
'
|
|
194
|
-
'
|
|
195
|
-
'
|
|
196
|
-
'
|
|
197
|
-
'
|
|
198
|
-
'
|
|
199
|
-
'
|
|
200
|
-
'
|
|
201
|
-
'
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
'settings.
|
|
205
|
-
'settings.
|
|
206
|
-
'settings.
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
'
|
|
210
|
-
'
|
|
211
|
-
'
|
|
212
|
-
'
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
'settings.
|
|
216
|
-
'settings.
|
|
217
|
-
'settings.
|
|
218
|
-
'settings.
|
|
219
|
-
'settings.
|
|
220
|
-
'settings.
|
|
221
|
-
'settings.
|
|
222
|
-
'settings.
|
|
223
|
-
'settings.
|
|
224
|
-
'settings.
|
|
225
|
-
'settings.
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
'
|
|
229
|
-
'
|
|
230
|
-
'
|
|
231
|
-
'
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
'settings.
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
'
|
|
238
|
-
'
|
|
239
|
-
'
|
|
240
|
-
'
|
|
241
|
-
'
|
|
242
|
-
'
|
|
243
|
-
'
|
|
244
|
-
'
|
|
245
|
-
'
|
|
246
|
-
'
|
|
247
|
-
'
|
|
248
|
-
'
|
|
249
|
-
'
|
|
250
|
-
'
|
|
251
|
-
'
|
|
252
|
-
'
|
|
253
|
-
'
|
|
254
|
-
'
|
|
255
|
-
'
|
|
256
|
-
'
|
|
257
|
-
'
|
|
258
|
-
'
|
|
259
|
-
'
|
|
260
|
-
'
|
|
261
|
-
'
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
'model.
|
|
265
|
-
'model.
|
|
266
|
-
'model.
|
|
267
|
-
'model.
|
|
268
|
-
'model.
|
|
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
|
-
'
|
|
339
|
-
'
|
|
340
|
-
'
|
|
341
|
-
'
|
|
342
|
-
'
|
|
343
|
-
'
|
|
344
|
-
'
|
|
345
|
-
'
|
|
346
|
-
'
|
|
347
|
-
|
|
348
|
-
|
|
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
|
-
'mcp.
|
|
386
|
-
'mcp.
|
|
387
|
-
'mcp.
|
|
388
|
-
'mcp.
|
|
389
|
-
'mcp.
|
|
390
|
-
'mcp.
|
|
391
|
-
'mcp.
|
|
392
|
-
'mcp.
|
|
393
|
-
'mcp.
|
|
394
|
-
'mcp.
|
|
395
|
-
'mcp.
|
|
396
|
-
'mcp.
|
|
397
|
-
'mcp.
|
|
398
|
-
'mcp.
|
|
399
|
-
'mcp.
|
|
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
|
-
'rewind.
|
|
432
|
-
'rewind.
|
|
433
|
-
'rewind.
|
|
434
|
-
'rewind.
|
|
435
|
-
'rewind.
|
|
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
|
-
'
|
|
461
|
-
'
|
|
462
|
-
'
|
|
463
|
-
'
|
|
464
|
-
'
|
|
465
|
-
'
|
|
466
|
-
'
|
|
467
|
-
'
|
|
468
|
-
'
|
|
469
|
-
'
|
|
470
|
-
'
|
|
471
|
-
'
|
|
472
|
-
'
|
|
473
|
-
'
|
|
474
|
-
'
|
|
475
|
-
'
|
|
476
|
-
'
|
|
477
|
-
'
|
|
478
|
-
'
|
|
479
|
-
'
|
|
480
|
-
'
|
|
481
|
-
|
|
482
|
-
|
|
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
|
-
'update.
|
|
497
|
-
'update.
|
|
498
|
-
'update.
|
|
499
|
-
'update.
|
|
500
|
-
'update.
|
|
501
|
-
'update.
|
|
502
|
-
'update.
|
|
503
|
-
'update.
|
|
504
|
-
'update.
|
|
505
|
-
'update.
|
|
506
|
-
'update.
|
|
507
|
-
'update.
|
|
508
|
-
'update.
|
|
509
|
-
'update.
|
|
510
|
-
'update.
|
|
511
|
-
'update.
|
|
512
|
-
'update.
|
|
513
|
-
'update.
|
|
514
|
-
'update.
|
|
515
|
-
'update.
|
|
516
|
-
'update.
|
|
517
|
-
'update.
|
|
518
|
-
'update.
|
|
519
|
-
'update.
|
|
520
|
-
'update.
|
|
521
|
-
'update.
|
|
522
|
-
'update.
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
'
|
|
526
|
-
'
|
|
527
|
-
'
|
|
528
|
-
'
|
|
529
|
-
'
|
|
530
|
-
'
|
|
531
|
-
'
|
|
532
|
-
'
|
|
533
|
-
'
|
|
534
|
-
'
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
'
|
|
538
|
-
'
|
|
539
|
-
'
|
|
540
|
-
'
|
|
541
|
-
'
|
|
542
|
-
'
|
|
543
|
-
'
|
|
544
|
-
'
|
|
545
|
-
'
|
|
546
|
-
'
|
|
547
|
-
'
|
|
548
|
-
'
|
|
549
|
-
'
|
|
550
|
-
'
|
|
551
|
-
'
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
'
|
|
555
|
-
'help
|
|
556
|
-
'
|
|
557
|
-
'
|
|
558
|
-
'
|
|
559
|
-
'
|
|
560
|
-
'
|
|
561
|
-
'
|
|
562
|
-
'
|
|
563
|
-
'
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
'help.
|
|
567
|
-
'help.
|
|
568
|
-
'help.
|
|
569
|
-
'help.
|
|
570
|
-
'help.
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
'
|
|
574
|
-
'
|
|
575
|
-
'
|
|
576
|
-
'
|
|
577
|
-
'
|
|
578
|
-
'
|
|
579
|
-
'
|
|
580
|
-
'
|
|
581
|
-
'
|
|
582
|
-
'
|
|
583
|
-
'
|
|
584
|
-
'
|
|
585
|
-
'
|
|
586
|
-
'
|
|
587
|
-
'
|
|
588
|
-
'
|
|
589
|
-
'
|
|
590
|
-
'
|
|
591
|
-
'
|
|
592
|
-
'
|
|
593
|
-
'
|
|
594
|
-
'
|
|
595
|
-
'
|
|
596
|
-
'
|
|
597
|
-
'
|
|
598
|
-
'
|
|
599
|
-
'
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
'session.
|
|
603
|
-
'session.
|
|
604
|
-
'session.
|
|
605
|
-
'session.
|
|
606
|
-
'session.
|
|
607
|
-
'session.
|
|
608
|
-
'session.
|
|
609
|
-
'session.
|
|
610
|
-
'session.
|
|
611
|
-
'session.
|
|
612
|
-
'session.
|
|
613
|
-
'session.
|
|
614
|
-
'session.
|
|
615
|
-
'session.
|
|
616
|
-
'session.
|
|
617
|
-
'session.
|
|
618
|
-
'session.
|
|
619
|
-
'session.
|
|
620
|
-
'session.
|
|
621
|
-
'session.
|
|
622
|
-
'session.
|
|
623
|
-
'session.
|
|
624
|
-
'session.
|
|
625
|
-
'session.
|
|
626
|
-
'session.
|
|
627
|
-
'session.
|
|
628
|
-
'session.
|
|
629
|
-
'session.
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
'
|
|
633
|
-
'
|
|
634
|
-
'
|
|
1
|
+
// Arabic (Modern Standard) catalog. Same keys, same order, and the same
|
|
2
|
+
// placeholders and padding as `en.js`. Every plural family carries the full
|
|
3
|
+
// CLDR set for Arabic (zero, one, two, few, many, other) so `Intl.PluralRules`
|
|
4
|
+
// never falls back to English wordings.
|
|
5
|
+
export default {
|
|
6
|
+
// ---- shared chrome ------------------------------------------------------
|
|
7
|
+
'common.selectBack': 'Enter اختيار · Esc رجوع',
|
|
8
|
+
'common.selectConfirmBack': '↑/↓ اختيار · Enter تأكيد · Esc رجوع',
|
|
9
|
+
'common.selectContinueExit': '↑/↓ اختيار · Enter متابعة · Esc خروج',
|
|
10
|
+
'common.escBack': 'Esc رجوع',
|
|
11
|
+
'common.escClose': 'Esc إغلاق',
|
|
12
|
+
'common.escCancel': 'Esc إلغاء',
|
|
13
|
+
'common.working': 'جارٍ العمل…',
|
|
14
|
+
'common.pleaseWait': 'يُرجى الانتظار',
|
|
15
|
+
'common.on': 'تشغيل',
|
|
16
|
+
'common.off': 'إيقاف',
|
|
17
|
+
'common.unavailable': 'غير متاح',
|
|
18
|
+
'common.selected': 'محدد',
|
|
19
|
+
'common.default': 'افتراضي',
|
|
20
|
+
'common.system': 'النظام',
|
|
21
|
+
'common.installed': '(مثبت)',
|
|
22
|
+
'common.more': '… {count} أخرى',
|
|
23
|
+
'common.moreLines': '… {count} سطرًا آخر',
|
|
24
|
+
'common.clickExpand': ' · انقر للتوسيع',
|
|
25
|
+
'common.clickCollapse': ' · انقر للطي',
|
|
26
|
+
'common.unknown': 'غير معروف',
|
|
27
|
+
'common.emptyMessage': '[رسالة فارغة]',
|
|
28
|
+
'value.queue': 'قائمة الانتظار',
|
|
29
|
+
'value.steer': 'توجيه',
|
|
30
|
+
'value.auto': 'تلقائي',
|
|
31
|
+
'value.local': 'محلي',
|
|
32
|
+
'value.textOnly': 'نص فقط',
|
|
33
|
+
'value.textImage': 'نص + صورة',
|
|
34
|
+
'value.show': 'عرض',
|
|
35
|
+
'value.hide': 'إخفاء',
|
|
36
|
+
|
|
37
|
+
// ---- title screen -------------------------------------------------------
|
|
38
|
+
'splash.hint': 'اسأل أي شيء... "أصلح الاختبارات المعطلة"',
|
|
39
|
+
'splash.shortcutSettings': 'الإعدادات',
|
|
40
|
+
'splash.shortcutThinking': 'التفكير',
|
|
41
|
+
'splash.shortcutBranches': 'الفروع',
|
|
42
|
+
|
|
43
|
+
// ---- header / sidebar / status row -------------------------------------
|
|
44
|
+
// ---- command-line help (dsh --profile tui --help) -----------------------
|
|
45
|
+
'startup.description': 'يشغّل واجهة الطرفية الخاصة بـ DeepSeek Harness.',
|
|
46
|
+
'startup.helpOption': 'عرض هذه المساعدة',
|
|
47
|
+
'startup.resume': 'استئناف جلسة محفوظة موجودة بواسطة المعرّف',
|
|
48
|
+
'startup.model': 'معرّف النموذج الافتراضي للجلسات الجديدة',
|
|
49
|
+
'startup.provider': 'مسار المزوّد الافتراضي للجلسات الجديدة',
|
|
50
|
+
'startup.sidebar': 'إظهار الشريط الجانبي للجلسات (افتراضي)',
|
|
51
|
+
'startup.noSidebar': 'البدء بدون الشريط الجانبي',
|
|
52
|
+
'startup.examples': 'أمثلة:',
|
|
53
|
+
'startup.exampleFresh': 'بدء جلسة جديدة',
|
|
54
|
+
'startup.exampleResume': 'استئناف جلسة محفوظة',
|
|
55
|
+
|
|
56
|
+
'header.workspace': 'مساحة العمل',
|
|
57
|
+
'sidebar.sessions': 'الجلسات',
|
|
58
|
+
'sidebar.recent': 'الأخيرة',
|
|
59
|
+
'sidebar.newSession': '+ جلسة جديدة',
|
|
60
|
+
'status.model': 'النموذج',
|
|
61
|
+
'status.draftTokens': '{count} رمز مسودة',
|
|
62
|
+
'status.ctrlP': 'ctrl+p أوامر',
|
|
63
|
+
'status.interrupt': 'مقاطعة: ctrl+c',
|
|
64
|
+
|
|
65
|
+
// ---- composer command hints --------------------------------------------
|
|
66
|
+
'hint.help': 'إظهار المساعدة',
|
|
67
|
+
'hint.settings': 'فتح الإعدادات',
|
|
68
|
+
'hint.new': 'جلسة جديدة',
|
|
69
|
+
'hint.resume': 'استئناف جلسة',
|
|
70
|
+
'hint.model': 'اختيار النموذج',
|
|
71
|
+
'hint.provider': 'اختيار المزود',
|
|
72
|
+
'hint.rewind': 'منتقي الإرجاع',
|
|
73
|
+
'hint.branch': 'تبديل فرع git',
|
|
74
|
+
'hint.stats': 'إحصاءات الجلسة والرموز',
|
|
75
|
+
'hint.clear': 'مسح العرض',
|
|
76
|
+
'hint.cancel': 'إلغاء الدور الجاري',
|
|
77
|
+
'hint.quit': 'خروج',
|
|
78
|
+
'hint.compact': 'ضغط السياق',
|
|
79
|
+
'hint.goal': 'إدارة الهدف',
|
|
80
|
+
|
|
81
|
+
// ---- transcript blocks --------------------------------------------------
|
|
82
|
+
'transcript.turns.zero': 'لا أدوار',
|
|
83
|
+
'transcript.turns.one': '{count} دور',
|
|
84
|
+
'transcript.turns.two': 'دوران',
|
|
85
|
+
'transcript.turns.few': '{count} أدوار',
|
|
86
|
+
'transcript.turns.many': '{count} دورًا',
|
|
87
|
+
'transcript.turns.other': '{count} دور',
|
|
88
|
+
'transcript.steps.zero': 'لا خطوات',
|
|
89
|
+
'transcript.steps.one': '{count} خطوة',
|
|
90
|
+
'transcript.steps.two': 'خطوتان',
|
|
91
|
+
'transcript.steps.few': '{count} خطوات',
|
|
92
|
+
'transcript.steps.many': '{count} خطوة',
|
|
93
|
+
'transcript.steps.other': '{count} خطوة',
|
|
94
|
+
'transcript.modelChanged': 'تم تغيير النموذج من {from} إلى {to}',
|
|
95
|
+
'transcript.thinking': ' يفكر',
|
|
96
|
+
'transcript.streaming': ' · جارٍ البث…',
|
|
97
|
+
'transcript.steeringBadge': ' ⟲ توجيه',
|
|
98
|
+
'transcript.tasks': 'المهام',
|
|
99
|
+
'transcript.systemPrompt': ' موجه النظام',
|
|
100
|
+
'transcript.pendingInput': ' إدخال معلق · ',
|
|
101
|
+
'transcript.steering': ' توجيه',
|
|
102
|
+
'transcript.queued': ' في الانتظار',
|
|
103
|
+
'note.systemReminder': 'تذكير النظام',
|
|
104
|
+
'note.compaction': 'ضغط السياق',
|
|
105
|
+
'note.runtimeContext': 'سياق وقت التشغيل',
|
|
106
|
+
|
|
107
|
+
// ---- images and mermaid -------------------------------------------------
|
|
108
|
+
'image.attachment': '🖼 مرفق صورة',
|
|
109
|
+
'image.rendering': '⏳ جارٍ عرض الصورة…',
|
|
110
|
+
'image.renderFailed': '⚠ فشل عرض الصورة · {error}',
|
|
111
|
+
'image.mermaidRendering': '⏳ جارٍ عرض مخطط mermaid…',
|
|
112
|
+
'image.mermaidTooWide': '↔ يحتاج مخطط mermaid إلى {width} عمودًا، وهذا الجزء به {budget}',
|
|
113
|
+
'image.altFallback': 'صورة',
|
|
114
|
+
|
|
115
|
+
// ---- composer / approval prompt ----------------------------------------
|
|
116
|
+
'composer.keys': "Enter إرسال · Ctrl+Enter سطر جديد · Ctrl+P الإعدادات",
|
|
117
|
+
'composer.commandKeys': "↑/↓ اختيار · Tab إكمال · Esc إغلاق",
|
|
118
|
+
'composer.imageHint': 'صورة ملصقة: استخدم نموذجًا/إضافة متعددة الوسائط أو deepseek-v4-flash-vision-exp، وإلا تعذرت قراءة الصورة',
|
|
119
|
+
'composer.approval': 'الموافقة · ',
|
|
120
|
+
'composer.summary': 'الملخص · ',
|
|
121
|
+
'composer.origin': 'المصدر · ',
|
|
122
|
+
'composer.risk': 'الخطورة · ',
|
|
123
|
+
'composer.approvalHint': 'y سماح · n رفض · Esc إلغاء',
|
|
124
|
+
'risk.low': 'منخفضة',
|
|
125
|
+
'risk.medium': 'متوسطة',
|
|
126
|
+
'risk.high': 'عالية',
|
|
127
|
+
'composer.effortHint': 'Tab / ←/→ ضبط · Esc إغلاق',
|
|
128
|
+
|
|
129
|
+
// ---- right status rail --------------------------------------------------
|
|
130
|
+
'rail.model': 'النموذج',
|
|
131
|
+
'rail.thinking': 'التفكير',
|
|
132
|
+
'rail.context': 'السياق',
|
|
133
|
+
'rail.session': 'الجلسة',
|
|
134
|
+
'rail.goal': 'الهدف',
|
|
135
|
+
'rail.subagents': 'الوكلاء الفرعيون',
|
|
136
|
+
'rail.noData': '—',
|
|
137
|
+
'rail.percentUsed': 'استُخدم {percent}%',
|
|
138
|
+
'rail.tokens': '~{used} / {window} رمز',
|
|
139
|
+
'rail.cacheHit': 'كاش {percent}% إصابة',
|
|
140
|
+
'rail.breakdown': 'النظام {system} · الأدوات {tools} · الرسائل {messages}',
|
|
141
|
+
'rail.contextPending': 'يظهر بعد الإبلاغ عن الاستخدام',
|
|
142
|
+
'rail.subagentCounts': '{running} قيد التشغيل · {total} الإجمالي',
|
|
143
|
+
'rail.unreadable': '{label} (غير قابل للقراءة)',
|
|
144
|
+
'rail.more': '… +{count} أخرى',
|
|
145
|
+
'rail.round': ' · الجولة {started}/{max}',
|
|
146
|
+
'goal.active': 'نشط',
|
|
147
|
+
'goal.paused': 'متوقف مؤقتًا',
|
|
148
|
+
'goal.blocked': 'محظور',
|
|
149
|
+
'goal.complete': 'مكتمل',
|
|
150
|
+
|
|
151
|
+
// ---- session stats window ----------------------------------------------
|
|
152
|
+
'stats.title': 'إحصاءات الجلسة',
|
|
153
|
+
'stats.hint': 'انقر الشريط أو /stats',
|
|
154
|
+
'stats.usage': 'الاستخدام',
|
|
155
|
+
'stats.duration': 'المدة',
|
|
156
|
+
'stats.speed': 'السرعة',
|
|
157
|
+
'stats.tokens': 'الرموز',
|
|
158
|
+
'stats.cache': 'التخزين المؤقت',
|
|
159
|
+
'stats.context': 'السياق',
|
|
160
|
+
'stats.noSteps': 'لا خطوة مكتملة بعد',
|
|
161
|
+
'stats.llmTime': 'LLM {value}',
|
|
162
|
+
'stats.toolTime': 'الأدوات {value}',
|
|
163
|
+
'stats.ttft': 'TTFT متوسط {value}',
|
|
164
|
+
'stats.tokensPerSecond': '{value} tok/s',
|
|
165
|
+
'stats.cacheRate': 'كاش {percent}%',
|
|
166
|
+
'stats.inOut': 'داخل {input} · خارج {output}',
|
|
167
|
+
'stats.cacheDetail': '{percent}% إصابة · قراءة {read} · كتابة {write} · فقد {miss}',
|
|
168
|
+
'stats.contextUsed': 'مستخدم {percent}% ~{used} / {window}',
|
|
169
|
+
'stats.systemPrompt': 'موجه النظام',
|
|
170
|
+
'stats.tools': 'الأدوات',
|
|
171
|
+
'stats.messages': 'الرسائل',
|
|
172
|
+
'stats.compositionUnavailable': 'التركيب غير متاح',
|
|
173
|
+
'stats.contextPending': 'يظهر إشغال السياق بعد أن يبلّغ طلب عن الاستخدام',
|
|
174
|
+
|
|
175
|
+
// ---- questions modal ----------------------------------------------------
|
|
176
|
+
'questions.title': 'سؤال',
|
|
177
|
+
'questions.titleOf': 'السؤال {index} من {total}',
|
|
178
|
+
'questions.defer': 'Esc تأجيل',
|
|
179
|
+
'questions.range': '{from}-{to} من {total} PgUp/PgDn',
|
|
180
|
+
'questions.other': 'أخرى: ',
|
|
181
|
+
'questions.answer': 'الإجابة: ',
|
|
182
|
+
'questions.placeholder': 'اكتب إجابتك',
|
|
183
|
+
'questions.hintCustom': 'Enter تأكيد · Esc رجوع',
|
|
184
|
+
'questions.hintMulti': 'Space تبديل · Enter متابعة · Up/Down تنقل',
|
|
185
|
+
'questions.hintSingle': 'Enter اختيار · Up/Down تنقل',
|
|
186
|
+
|
|
187
|
+
// ---- secret prompt ------------------------------------------------------
|
|
188
|
+
'secret.hint': 'Enter للإرسال · Esc للإلغاء',
|
|
189
|
+
|
|
190
|
+
// ---- boot gate: the dsh version this build may run on ----
|
|
191
|
+
'boot.unsupportedTitle': 'إصدار dsh غير مدعوم',
|
|
192
|
+
'boot.unverifiedTitle': 'إصدار dsh غير مُتحقَّق منه',
|
|
193
|
+
'boot.runningLabel': 'dsh قيد التشغيل',
|
|
194
|
+
'boot.supportedLabel': 'المدعوم',
|
|
195
|
+
'boot.recommendedLabel': 'الموصى به',
|
|
196
|
+
'boot.verifiedLabel': 'المُتحقَّق منه',
|
|
197
|
+
'boot.unsupportedBody': 'هذا الإصدار من dsh-oc-tui يدعم {range} فقط، و{version} خارجها. لا يمكن تشغيل الجلسات حتى يستخدم dsh إصدارًا مدعومًا.',
|
|
198
|
+
'boot.unverifiedBody': 'تم التحقق من هذا الإصدار من dsh-oc-tui على {verified} وليس على {version}. ثبّت {recommended} لتتأكد من عمله.',
|
|
199
|
+
'boot.installHint': 'ثبّت إصدار dsh الموصى به، ثم أعد تشغيل هذا profile:',
|
|
200
|
+
'boot.updatePluginHint': 'إذا كان إصدار أحدث من dsh-oc-tui يدعم هذا dsh، فحدّث الإضافة بدلًا من ذلك:',
|
|
201
|
+
'boot.exitHint': 'Esc أو Ctrl+C للخروج',
|
|
202
|
+
|
|
203
|
+
// ---- settings dialog chrome --------------------------------------------
|
|
204
|
+
'settings.title': 'الإعدادات',
|
|
205
|
+
'settings.menu': 'القائمة',
|
|
206
|
+
'settings.shared': 'مشتركة مع DeepSeek Harness WebUI',
|
|
207
|
+
'settings.footerEdit': 'Enter حفظ · Esc إلغاء',
|
|
208
|
+
'settings.footerMenu': '↑/↓ تنقل · Tab القائمة · Enter اختيار · Esc رجوع',
|
|
209
|
+
'settings.footerPlain': '↑/↓ تنقل · Enter اختيار · Esc رجوع',
|
|
210
|
+
'settings.confirmHint': '{text} · Y / N',
|
|
211
|
+
'settings.confirmDefault': 'Y تأكيد · N إلغاء',
|
|
212
|
+
'settings.confirmDeleteSession': 'Ctrl+D مرة أخرى للحذف',
|
|
213
|
+
'settings.confirmChange': 'تأكيد هذا التغيير؟',
|
|
214
|
+
'settings.deleteTwice': 'اضغط Ctrl+D مرة أخرى للحذف ',
|
|
215
|
+
'settings.deleteMcpTwice': 'اضغط Delete مرة أخرى للإزالة ',
|
|
216
|
+
'settings.noSession': 'لا جلسة محددة',
|
|
217
|
+
'settings.noSessions': 'لا جلسات متاحة',
|
|
218
|
+
'settings.noMcp': 'لا خادم MCP محدد',
|
|
219
|
+
'settings.noOptions': 'لا خيارات متاحة لـ {label}',
|
|
220
|
+
'settings.saved': 'حُفظ في إعدادات DSH',
|
|
221
|
+
'settings.providerRemoved': 'أُزيل المزود',
|
|
222
|
+
'settings.conflict': 'تغيّرت الإعدادات في مكان آخر؛ أُعيد التحميل',
|
|
223
|
+
'settings.error': 'الإعدادات: {error}',
|
|
224
|
+
'settings.dshSettings': 'إعدادات DSH',
|
|
225
|
+
'settings.optionList': 'Enter اختيار · Esc رجوع',
|
|
226
|
+
|
|
227
|
+
// ---- settings left menu -------------------------------------------------
|
|
228
|
+
'menu.main': 'الرئيسية',
|
|
229
|
+
'menu.model': 'النموذج',
|
|
230
|
+
'menu.update': 'التحديث',
|
|
231
|
+
'menu.mcp': 'MCP',
|
|
232
|
+
|
|
233
|
+
// ---- settings rows: main tab -------------------------------------------
|
|
234
|
+
'settings.general': 'عام',
|
|
235
|
+
'settings.graphics': 'الرسومات',
|
|
236
|
+
'settings.sessions': 'الجلسات',
|
|
237
|
+
'settings.system': 'النظام',
|
|
238
|
+
'settings.developer': 'المطوّر',
|
|
239
|
+
'settings.contextDetails': 'تفاصيل السياق',
|
|
240
|
+
'settings.busyEnter': 'Enter أثناء الانشغال',
|
|
241
|
+
'settings.defaultPreset': 'الإعداد المسبق الافتراضي',
|
|
242
|
+
'settings.permissionPreset': 'إعداد الأذونات المسبق',
|
|
243
|
+
'settings.permissionDangerConfirm': 'تفعيل وصول غير مقيد إلى الأدوات والملفات؟',
|
|
244
|
+
'settings.graphicsRendering': 'عرض الرسومات',
|
|
245
|
+
'settings.noProtocolFallback': 'بديل بدون بروتوكول',
|
|
246
|
+
'settings.imageHeightCap': 'حد ارتفاع الصورة (أسطر)',
|
|
247
|
+
'settings.mermaidRendering': 'عرض mermaid',
|
|
248
|
+
'settings.newSession': 'جلسة جديدة',
|
|
249
|
+
'settings.manageSessions': 'إدارة الجلسات',
|
|
250
|
+
'settings.providerConfig': 'إعداد API المزود',
|
|
251
|
+
'settings.updateManager': 'مدير التحديثات',
|
|
252
|
+
'settings.settingsFile': 'ملف الإعدادات',
|
|
253
|
+
'settings.language': 'اللغة',
|
|
254
|
+
'settings.theme': 'السمة',
|
|
255
|
+
'theme.deepseek': 'DeepSeek Standard',
|
|
256
|
+
'theme.github-dark': 'GitHub Dark',
|
|
257
|
+
'theme.dracula': 'Dracula',
|
|
258
|
+
'theme.vscode-dark': 'VS Code Dark+',
|
|
259
|
+
'theme.nord': 'Nord',
|
|
260
|
+
'settings.languageSystem': 'النظام ({language})',
|
|
261
|
+
'settings.languageSaved': 'اللغة: {language}',
|
|
262
|
+
|
|
263
|
+
// ---- model tab ----------------------------------------------------------
|
|
264
|
+
'model.title': 'النموذج',
|
|
265
|
+
'model.subtitle': 'Enter يختار نموذجًا من القائمة كافتراضي',
|
|
266
|
+
'model.defaultSection': 'الافتراضي',
|
|
267
|
+
'model.defaultProvider': 'المزود الافتراضي',
|
|
268
|
+
'model.defaultModel': 'النموذج الافتراضي',
|
|
269
|
+
'model.reasoning': 'الاستدلال',
|
|
270
|
+
'model.providerUrl': 'عنوان URL للمزود',
|
|
271
|
+
'model.providerApiKey': 'مفتاح API للمزود',
|
|
272
|
+
'model.displayName': 'الاسم المعروض',
|
|
273
|
+
'model.wireProtocol': 'بروتوكول النقل',
|
|
274
|
+
'model.defaultImageInput': 'إدخال الصور الافتراضي',
|
|
275
|
+
'model.models': 'النماذج',
|
|
276
|
+
'model.fetch': 'جلب…',
|
|
277
|
+
'model.selectedCount': '{count} محدد',
|
|
278
|
+
'model.removeProvider': 'إزالة المزود',
|
|
279
|
+
'model.removeProviderConfirm': 'إزالة {name} وبيانات الاعتماد المُدارة معه؟',
|
|
280
|
+
'model.noModels': 'لا نماذج متاحة',
|
|
281
|
+
'model.noModelsReturned': 'لم يُرجع المزود أي نماذج',
|
|
282
|
+
'model.fetchUnavailable': 'الجلب التلقائي غير متاح — النماذج المحفوظة · Enter تبديل',
|
|
283
|
+
'model.fetchOk': 'جُلب تلقائيًا · Enter تبديل · Esc رجوع',
|
|
284
|
+
'model.fetching': 'جارٍ جلب النماذج…',
|
|
285
|
+
'model.autoFetching': 'جارٍ الجلب التلقائي…',
|
|
286
|
+
'model.credentialConfigured': 'مُهيأ ({source})',
|
|
287
|
+
'model.credentialMissing': 'غير مُهيأ',
|
|
288
|
+
'model.defaultTag': 'افتراضي',
|
|
289
|
+
'model.providerUnavailable': 'المزود لم يعد متاحًا',
|
|
290
|
+
'model.namespaceUnavailable': 'نطاق إعدادات المزود غير متاح',
|
|
291
|
+
'model.apiKeyEmpty': 'لا يمكن أن يكون مفتاح API فارغًا',
|
|
292
|
+
'model.credentialsUnavailable': 'خدمة بيانات الاعتماد غير متاحة',
|
|
293
|
+
'model.noProviderModels': 'المزود المحدد ليس لديه نماذج متاحة',
|
|
294
|
+
'model.addCount.one': '{count} متاح',
|
|
295
|
+
'model.addCount.other': '{count} متاح',
|
|
296
|
+
|
|
297
|
+
// ---- add-provider flow --------------------------------------------------
|
|
298
|
+
'provider.add': 'إضافة مزوّد',
|
|
299
|
+
'provider.empty': 'لم يتم إعداد أي مزوّد بعد',
|
|
300
|
+
'provider.pickSubtitle': 'Enter اختيار · Esc رجوع',
|
|
301
|
+
'provider.catalog': 'المزوّدون المثبّتون',
|
|
302
|
+
'provider.catalogEmpty': 'كل المزوّدين المثبّتين مُعدّون بالفعل',
|
|
303
|
+
'provider.custom': 'واجهة API مخصّصة — عرّف نقطة النهاية',
|
|
304
|
+
'provider.form.catalog': 'استخدام مزوّد مثبّت',
|
|
305
|
+
'provider.form.custom': 'تعريف مزوّد مخصّص',
|
|
306
|
+
'provider.formSubtitle': 'Enter تحرير · Esc رجوع',
|
|
307
|
+
'provider.field.route': 'معرّف المسار',
|
|
308
|
+
'provider.field.addModel': 'إضافة معرّف نموذج',
|
|
309
|
+
'provider.field.save': 'حفظ المزوّد',
|
|
310
|
+
'provider.hint.route': 'حروف صغيرة وأرقام وشرطات · يُخزَّن المفتاح باسم {ref}',
|
|
311
|
+
'provider.error.route': 'يجب أن يبدأ معرّف المسار بحرف وأن يستخدم الحروف الصغيرة والأرقام والشرطات فقط',
|
|
312
|
+
'provider.error.routeNeeded': 'اختر مزوّدًا',
|
|
313
|
+
'provider.error.taken': 'معرّف المسار هذا مستخدم بالفعل',
|
|
314
|
+
'provider.error.baseUrl': 'يجب أن تكون نقطة النهاية رابط http أو https',
|
|
315
|
+
'provider.error.baseUrlNeeded': 'المزوّد المخصّص يحتاج إلى نقطة نهاية',
|
|
316
|
+
'provider.error.apiNeeded': 'اختر البروتوكول الذي تستخدمه نقطة النهاية',
|
|
317
|
+
'provider.error.modelsNeeded': 'المزوّد المخصّص يحتاج إلى نموذج واحد على الأقل',
|
|
318
|
+
'provider.error.modelId': 'النموذج {index} يحتاج إلى معرّف',
|
|
319
|
+
'provider.error.modelDuplicate': 'النموذج "{id}" مكرّر',
|
|
320
|
+
'provider.added': 'تمت إضافة المزوّد',
|
|
321
|
+
'provider.accountManaged': 'تم تسجيل الدخول بحساب DeepSeek',
|
|
322
|
+
'provider.search': 'بحث',
|
|
323
|
+
'provider.searchPlaceholder': 'اكتب للتصفية',
|
|
324
|
+
'provider.searchEmpty': 'لا يوجد مزوّد يطابق "{query}"',
|
|
325
|
+
|
|
326
|
+
// ---- إدخال نموذج واحد --------------------------------------------------------
|
|
327
|
+
'model.edit': 'تحرير النموذج',
|
|
328
|
+
'model.editHint': 'e تحرير · Del حذف',
|
|
329
|
+
'model.refresh': 'تحديث الكتالوج',
|
|
330
|
+
'model.selectAll': 'تحديد الكل',
|
|
331
|
+
'model.fetchRefused': 'لم تُرجع نقطة النهاية أي قائمة نماذج',
|
|
332
|
+
'model.notSaved': 'هذا النموذج غير محفوظ بعد',
|
|
333
|
+
'model.removed': 'تم حذف النموذج',
|
|
334
|
+
'model.form.add': 'إضافة نموذج',
|
|
335
|
+
'model.form.edit': 'نموذج · {id}',
|
|
336
|
+
'model.form.save': 'حفظ النموذج',
|
|
337
|
+
'model.form.remove': 'إزالته من المزوّد',
|
|
338
|
+
'model.form.removeConfirm': 'هل تريد إزالة هذا النموذج من المزوّد؟',
|
|
339
|
+
'model.field.id': 'معرّف النموذج',
|
|
340
|
+
'model.field.name': 'الاسم المعروض',
|
|
341
|
+
'model.field.contextWindow': 'نافذة السياق',
|
|
342
|
+
'model.field.maxTokens': 'أقصى رموز إخراج',
|
|
343
|
+
'model.field.input': 'الإدخال',
|
|
344
|
+
'model.error.idNeeded': 'النموذج يحتاج إلى معرّف',
|
|
345
|
+
'model.error.idDuplicate': 'النموذج "{id}" موجود في القائمة',
|
|
346
|
+
'model.error.capacity': 'نافذة السياق وأقصى الرموز يجب أن تكون أعدادًا صحيحة (256K، 1M)',
|
|
347
|
+
|
|
348
|
+
// ---- MCP tab ------------------------------------------------------------
|
|
349
|
+
'mcp.title': 'MCP',
|
|
350
|
+
'mcp.subtitle': 'Enter تعديل · Del إزالة · Esc رجوع',
|
|
351
|
+
'mcp.editSubtitle': 'Enter تعديل · Esc رجوع',
|
|
352
|
+
'mcp.servers': 'خوادم MCP',
|
|
353
|
+
'mcp.empty': 'لا خادم MCP مُهيأ',
|
|
354
|
+
'mcp.add': 'إضافة خادم MCP',
|
|
355
|
+
'mcp.scope': 'النطاق',
|
|
356
|
+
'mcp.scopeUserPrefix': 'المستخدم · {path}',
|
|
357
|
+
'mcp.scopePathPrefix': 'المسار · {path}',
|
|
358
|
+
'mcp.configFiles': 'ملفات الإعداد',
|
|
359
|
+
'mcp.userScope': 'المستخدم (كل الجلسات)',
|
|
360
|
+
'mcp.secrets': 'الأسرار',
|
|
361
|
+
'mcp.secretsPlain': 'نص صريح في ملفات الإعداد',
|
|
362
|
+
'mcp.loaded': 'محمّل',
|
|
363
|
+
'mcp.notCreated': 'لم يُنشأ بعد',
|
|
364
|
+
'mcp.type.stdio': 'أمر محلي',
|
|
365
|
+
'mcp.type.http': 'HTTP',
|
|
366
|
+
'mcp.type.sse': 'SSE',
|
|
367
|
+
'mcp.state.connected': '● متصل',
|
|
368
|
+
'mcp.state.tools.zero': '● لا أدوات',
|
|
369
|
+
'mcp.state.tools.one': '● {count} أداة',
|
|
370
|
+
'mcp.state.tools.two': '● أداتان',
|
|
371
|
+
'mcp.state.tools.few': '● {count} أدوات',
|
|
372
|
+
'mcp.state.tools.many': '● {count} أداة',
|
|
373
|
+
'mcp.state.tools.other': '● {count} أداة',
|
|
374
|
+
'mcp.state.pending': '… جارٍ الاتصال',
|
|
375
|
+
'mcp.state.disabled': '○ معطل',
|
|
376
|
+
'mcp.state.idle': '○ غير متصل',
|
|
377
|
+
'mcp.notice.connected': "MCP {name}: متصل",
|
|
378
|
+
'mcp.notice.failed': "MCP {name}: فشل الاتصال",
|
|
379
|
+
'mcp.form.add': 'إضافة خادم MCP',
|
|
380
|
+
'mcp.form.edit': 'تعديل خادم MCP · {name}',
|
|
381
|
+
'mcp.titleAdd': 'MCP · إضافة',
|
|
382
|
+
'mcp.titleEdit': 'MCP · تعديل',
|
|
383
|
+
'mcp.field.name': 'الاسم',
|
|
384
|
+
'mcp.field.type': 'النوع',
|
|
385
|
+
'mcp.field.timeout': 'المهلة (ms)',
|
|
386
|
+
'mcp.field.command': 'الأمر',
|
|
387
|
+
'mcp.field.args': 'الوسائط',
|
|
388
|
+
'mcp.field.env': 'البيئة (JSON)',
|
|
389
|
+
'mcp.field.url': 'URL',
|
|
390
|
+
'mcp.field.headers': 'الترويسات (JSON)',
|
|
391
|
+
'mcp.field.scope': 'النطاق',
|
|
392
|
+
'mcp.field.path': 'المسار',
|
|
393
|
+
'mcp.field.enabled': 'مفعّل',
|
|
394
|
+
'mcp.field.save': 'حفظ',
|
|
395
|
+
'mcp.field.remove': 'إزالة',
|
|
396
|
+
'mcp.choice.stdio': 'أمر محلي (stdio)',
|
|
397
|
+
'mcp.choice.http': 'HTTP (قابل للبث)',
|
|
398
|
+
'mcp.choice.sse': 'SSE (HTTP+SSE قديم)',
|
|
399
|
+
'mcp.choice.scopeUser': 'المستخدم — كل الجلسات',
|
|
400
|
+
'mcp.choice.scopePath': 'المسار — الجلسات تحت دليل',
|
|
401
|
+
'mcp.removeConfirm': 'إزالة خادم MCP هذا وقطع اتصاله؟',
|
|
402
|
+
'mcp.saved': 'حُفظ خادم MCP',
|
|
403
|
+
'mcp.added': 'أُضيف خادم MCP',
|
|
404
|
+
'mcp.removed': 'أُزيل خادم MCP',
|
|
405
|
+
'mcp.error.name': 'يجب أن يتكون الاسم من 1-32 حرفًا من الحروف والأرقام و"-" أو "_"',
|
|
406
|
+
'mcp.error.duplicate': 'يوجد خادم MCP بالاسم "{name}" مُهيأ بالفعل',
|
|
407
|
+
'mcp.error.timeout': 'يجب أن يكون timeoutMs عددًا صحيحًا بين 1 و{max}',
|
|
408
|
+
'mcp.error.pathNeeded': 'خادم بنطاق مسار يحتاج إلى دليل',
|
|
409
|
+
'mcp.error.pathAbsolute': 'يجب أن يكون نطاق المسار دليلًا مطلقًا',
|
|
410
|
+
'mcp.error.commandNeeded': 'خادم stdio يحتاج إلى أمر',
|
|
411
|
+
'mcp.error.urlParse': 'تعذر تحليل URL',
|
|
412
|
+
'mcp.error.urlScheme': 'يجب أن يستخدم URL البروتوكول http أو https',
|
|
413
|
+
'mcp.error.pathNotDir': 'نطاق المسار ليس دليلًا: {path}',
|
|
414
|
+
'mcp.error.configIsDir': 'مسار ملف الإعداد دليل: {path}',
|
|
415
|
+
'mcp.error.notFound': 'لا خادم MCP بالاسم "{name}" مُهيأ',
|
|
416
|
+
'mcp.error.documentGone': 'المستند الذي يعرّف "{name}" لم يعد موجودًا: {error}',
|
|
417
|
+
'mcp.error.noClient': 'المضيف لا يوفر عميل MCP',
|
|
418
|
+
'mcp.error.connectTimeout': 'انتهت مهلة الاتصال بـ {name}',
|
|
419
|
+
'mcp.error.json': 'المستند ليس JSON صالحًا: {error}',
|
|
420
|
+
'mcp.error.jsonObject': 'يجب أن يكون المستند كائن JSON',
|
|
421
|
+
'mcp.error.serversObject': 'يجب أن يكون "servers" كائن JSON',
|
|
422
|
+
'mcp.error.argsArray': 'يجب أن تكون الوسائط مصفوفة JSON من السلاسل',
|
|
423
|
+
'mcp.error.argsTypes': 'يجب أن تكون الوسائط سلاسل أو أرقامًا',
|
|
424
|
+
'mcp.error.argsUnclosed': 'في الوسائط علامة اقتباس غير مغلقة',
|
|
425
|
+
'mcp.error.envObject': 'يجب أن يكون {label} كائن JSON',
|
|
426
|
+
'mcp.error.envValue': 'يجب أن تكون قيمة "{name}" في {label} سلسلة أو رقمًا أو قيمة منطقية',
|
|
427
|
+
'mcp.error.header': 'ترويسة HTTP غير صالحة "{name}"',
|
|
428
|
+
'mcp.error.envName': 'اسم بيئة غير صالح "{name}"',
|
|
429
|
+
|
|
430
|
+
// ---- rewind -------------------------------------------------------------
|
|
431
|
+
'rewind.title': 'الإرجاع',
|
|
432
|
+
'rewind.restoreTo': 'الاستعادة إلى النقطة قبل: {label}',
|
|
433
|
+
'rewind.restorePrompt': 'استعادة المحادثة إلى النقطة قبل…',
|
|
434
|
+
'rewind.empty': 'لا يوجد ما يمكن الإرجاع إليه بعد.',
|
|
435
|
+
'rewind.option.conversation': 'استعادة المحادثة',
|
|
436
|
+
'rewind.option.both': 'استعادة المحادثة والملفات',
|
|
437
|
+
'rewind.option.code': 'استعادة الملفات',
|
|
438
|
+
'rewind.option.cancel': 'إلغاء',
|
|
439
|
+
'rewind.current': '(الحالية)',
|
|
440
|
+
'rewind.noPoints': 'لا رسائل مستخدم للإرجاع إليها',
|
|
441
|
+
'rewind.unknownPoint': 'نقطة إرجاع غير معروفة "{selector}" — استخدم رقمًا أو last',
|
|
442
|
+
'rewind.noPoint': 'لا نقطة إرجاع {n} — 1..{count}',
|
|
443
|
+
'rewind.notGit': 'ليس worktree git',
|
|
444
|
+
'rewind.noBackup': 'لا موقع نسخ احتياطي',
|
|
445
|
+
'rewind.filesNotRestored': 'لم تُستعد الملفات',
|
|
446
|
+
'rewind.filesNotRestoredReason': 'لم تُستعد الملفات ({reason})',
|
|
447
|
+
'rewind.restored.zero': 'لم تُستعد ملفات متتبعة من HEAD',
|
|
448
|
+
'rewind.restored.one': 'تمت استعادة {count} ملف متتبع من HEAD',
|
|
449
|
+
'rewind.restored.two': 'تمت استعادة ملفين متتبعين من HEAD',
|
|
450
|
+
'rewind.restored.few': 'تمت استعادة {count} ملفات متتبعة من HEAD',
|
|
451
|
+
'rewind.restored.many': 'تمت استعادة {count} ملفًا متتبعًا من HEAD',
|
|
452
|
+
'rewind.restored.other': 'تمت استعادة {count} ملف متتبع من HEAD',
|
|
453
|
+
'rewind.removed.zero': 'لم تُزل ملفات جديدة',
|
|
454
|
+
'rewind.removed.one': 'أُزيل {count} ملف جديد',
|
|
455
|
+
'rewind.removed.two': 'أُزيل ملفان جديدان',
|
|
456
|
+
'rewind.removed.few': 'أُزيلت {count} ملفات جديدة',
|
|
457
|
+
'rewind.removed.many': 'أُزيل {count} ملفًا جديدًا',
|
|
458
|
+
'rewind.removed.other': 'أُزيل {count} ملف جديد',
|
|
459
|
+
'rewind.skipped': 'تم تخطي {count}',
|
|
460
|
+
'rewind.previousSaved': 'حُفظ المحتوى السابق في {path}',
|
|
461
|
+
'rewind.noChanges': 'لا تغييرات في الملفات بعد هذه النقطة',
|
|
462
|
+
'rewind.image': '[صورة]',
|
|
463
|
+
'rewind.images': '[{count} صورة]',
|
|
464
|
+
'rewind.emptyMessage': '(فارغ)',
|
|
465
|
+
'git.title': 'فروع Git',
|
|
466
|
+
'git.subtitle': 'الحالي: {branch} · {path}',
|
|
467
|
+
'git.local': 'الفروع المحلية',
|
|
468
|
+
'git.remote': 'الفروع البعيدة',
|
|
469
|
+
'git.empty': 'لا توجد فروع في هذا المستودع.',
|
|
470
|
+
'git.detached': '(منفصل)',
|
|
471
|
+
'git.switched': 'تم الانتقال إلى الفرع {branch}',
|
|
472
|
+
'git.switchFailed': 'لا يمكن الانتقال إلى {branch}: {error}',
|
|
473
|
+
'git.pullDone': 'تم جلب التحديثات',
|
|
474
|
+
'git.pullFailed': 'لا يمكن جلب التحديثات: {error}',
|
|
475
|
+
'git.listFailed': 'لا يمكن سرد الفروع: {error}',
|
|
476
|
+
'git.notRepo': 'ليست شجرة عمل git',
|
|
477
|
+
'git.gitMissing': 'git غير متوفر في PATH',
|
|
478
|
+
'git.timedOut': 'انتهت مهلة git',
|
|
479
|
+
'git.onlyTitleScreen': 'تبديل الفرع متاح فقط في الصفحة الفارغة — استخدم /new لمغادرة الجلسة',
|
|
480
|
+
'git.footer': '↑/↓ اختيار · Enter تبديل · P سحب · R تحديث · Esc إغلاق',
|
|
481
|
+
|
|
482
|
+
// ---- update tab ---------------------------------------------------------
|
|
483
|
+
'update.title': 'التحديث',
|
|
484
|
+
'update.checking': 'جارٍ التحقق من الإصدارات…',
|
|
485
|
+
'update.fetching': 'جارٍ الجلب من سجل npm…',
|
|
486
|
+
'update.fetchingVersions': 'جارٍ جلب الإصدارات…',
|
|
487
|
+
'update.versionsSubtitle': 'Enter تنزيل · Esc رجوع',
|
|
488
|
+
'update.installed': 'المثبت',
|
|
489
|
+
'update.latest': 'الأحدث (وسم npm)',
|
|
490
|
+
'update.status': 'الحالة',
|
|
491
|
+
'update.versions': 'الإصدارات',
|
|
492
|
+
'update.selectVersion': 'اختر إصدارًا…',
|
|
493
|
+
'update.restartApply': 'أعد التشغيل لتطبيق {version}',
|
|
494
|
+
'update.enterRestart': 'Enter إعادة التشغيل',
|
|
495
|
+
'update.discard': 'تجاهل {version} المنزّل',
|
|
496
|
+
'update.actions': 'الإجراءات',
|
|
497
|
+
'update.checkNow': 'تحقق الآن',
|
|
498
|
+
'update.checkingShort': 'جارٍ التحقق…',
|
|
499
|
+
'update.startupCheck': 'فحص عند البدء',
|
|
500
|
+
'update.profile': 'الملف التعريفي',
|
|
501
|
+
'update.dshPackage': 'dsh (@deepseek-ai/dsh)',
|
|
502
|
+
'update.statusCorrupt': 'التثبيت تالف — أعد التثبيت أدناه',
|
|
503
|
+
'update.statusError': 'فشل فحص السجل: {error}',
|
|
504
|
+
'update.statusAvailable': 'يتوفر تحديث → {version}',
|
|
505
|
+
'update.statusUpToDate': 'محدّث',
|
|
506
|
+
'update.statusNoStable': 'لا إصدار مستقر — اختر من الإصدارات',
|
|
507
|
+
'update.notOnPath': 'غير موجود في PATH',
|
|
508
|
+
'update.subtitleStaged': 'نُزّل {package} {version} — أعد التشغيل للتطبيق',
|
|
509
|
+
'update.subtitleIdle': 'Enter اختيار · تنزيل، ثم إعادة التشغيل للتطبيق',
|
|
510
|
+
'update.download': 'تنزيل',
|
|
511
|
+
'update.contacting': 'جارٍ الاتصال بالسجل…',
|
|
512
|
+
'update.version': 'الإصدار',
|
|
513
|
+
'update.savingTo': 'جارٍ الحفظ في',
|
|
514
|
+
'update.escCancels': 'Esc يلغي',
|
|
515
|
+
'update.restartApplyQ': 'إعادة التشغيل لتطبيق {label} {version}؟ (منزّل بالفعل)',
|
|
516
|
+
'update.downloadQ': 'تنزيل {label} {version} وإعادة التشغيل للتطبيق؟',
|
|
517
|
+
'update.localSwitch': ' — يحوّل التثبيت المحلي إلى إصدار من السجل',
|
|
518
|
+
'update.downloaded': 'نُزّل · أعد التشغيل للتطبيق',
|
|
519
|
+
'update.downloadedToast': 'نُزّل {label} {version} · طبّقه من علامة التحديث',
|
|
520
|
+
'update.downloadedConfirm': 'نُزّل إعادة التشغيل لتطبيق {label} {version}؟ (y/n)',
|
|
521
|
+
'update.alreadyDownloadedConfirm': 'منزّل بالفعل · إعادة التشغيل لتطبيق {label} {version}؟ (y/n)',
|
|
522
|
+
'update.downloadCancelled': 'أُلغي التنزيل',
|
|
523
|
+
'update.downloadFailed': 'فشل التنزيل: {error}',
|
|
524
|
+
'update.stagedGone': 'التنزيل الجاهز لم يعد موجودًا — اختر الإصدار مجددًا',
|
|
525
|
+
'update.locks.zero': 'لا يمكن التطبيق بينما يعمل dsh في عمليات أخرى — أغلقها وأعد المحاولة',
|
|
526
|
+
'update.locks.one': 'لا يمكن التطبيق بينما يعمل dsh في {count} عملية أخرى — أغلقها وأعد المحاولة',
|
|
527
|
+
'update.locks.two': 'لا يمكن التطبيق بينما يعمل dsh في عمليتين أخريين — أغلقهما وأعد المحاولة',
|
|
528
|
+
'update.locks.few': 'لا يمكن التطبيق بينما يعمل dsh في {count} عمليات أخرى — أغلقها وأعد المحاولة',
|
|
529
|
+
'update.locks.many': 'لا يمكن التطبيق بينما يعمل dsh في {count} عملية أخرى — أغلقها وأعد المحاولة',
|
|
530
|
+
'update.locks.other': 'لا يمكن التطبيق بينما يعمل dsh في {count} عملية أخرى — أغلقها وأعد المحاولة',
|
|
531
|
+
'update.noNpm': 'لا يمكن التطبيق: npm غير موجود',
|
|
532
|
+
'update.noDshCli': 'لا يمكن التطبيق: dsh CLI غير موجود',
|
|
533
|
+
'update.installerFailed': 'تعذر بدء المثبّت — أعد تشغيل dsh لتطبيق {label}',
|
|
534
|
+
'update.applying': 'جارٍ تطبيق {label} · خروج وإعادة تشغيل…',
|
|
535
|
+
'update.stagedDiscarded': 'أُلغي التنزيل الجاهز',
|
|
536
|
+
'update.tagCached': 'مخزّن',
|
|
537
|
+
'update.tagStaged': 'جاهز',
|
|
538
|
+
'update.installFailed': 'فشل التثبيت (رمز الخروج {code}) — أعد المحاولة من الإصدارات',
|
|
539
|
+
'update.installFailedRetry': 'افتح التحديث → dsh-oc-tui → الإصدارات، ثم اختر إصدارًا لتنزيله مجددًا',
|
|
540
|
+
'update.installUnreadable': 'أبلغ التثبيت عن النجاح لكن الإصدار المثبت هو {installed} (المتوقع {expected}) — الإصلاح: {repair}',
|
|
541
|
+
'update.registryUnreachable': 'السجل غير قابل للوصول: {error}',
|
|
542
|
+
'update.notOnRegistry': '{package} ليس في السجل',
|
|
543
|
+
'update.registryHttp': 'أعاد السجل HTTP {status} لـ {package}',
|
|
544
|
+
'update.noTarballUrl': 'استجابة السجل لا تحمل عنوان tarball',
|
|
545
|
+
'update.downloadHttp': 'فشل التنزيل: HTTP {status} لـ {url}',
|
|
546
|
+
'update.downloadEmpty': 'فشل التنزيل: جسم الاستجابة فارغ',
|
|
547
|
+
'update.integrityFailed': 'فشل فحص السلامة لـ {file} — أُلغي التنزيل',
|
|
548
|
+
'update.npmMissing': 'npm غير موجود في PATH',
|
|
549
|
+
'update.npmViewFailed': 'انتهى npm view {package} بالرمز {code}',
|
|
550
|
+
'update.timedOut': '\n(انتهت المهلة بعد {ms}ms)',
|
|
551
|
+
'update.noOutput': '(لا مخرجات)',
|
|
552
|
+
|
|
553
|
+
// ---- commands -----------------------------------------------------------
|
|
554
|
+
'command.settings': 'فتح صفحات إعدادات TUI',
|
|
555
|
+
'command.help': 'عرض مرجع مفاتيح وأوامر TUI',
|
|
556
|
+
'command.stats': 'عرض إحصاءات رموز الجلسة والتخزين المؤقت',
|
|
557
|
+
'command.new': 'بدء جلسة جديدة',
|
|
558
|
+
'command.resume': 'استئناف جلسة محفوظة',
|
|
559
|
+
'command.clear': 'مسح نص المحادثة',
|
|
560
|
+
'command.cancel': 'إلغاء الدور الجاري',
|
|
561
|
+
'command.rewind': 'إرجاع الجلسة إلى نقطة سابقة',
|
|
562
|
+
'command.branch': 'تبديل فرع git في الصفحة الفارغة',
|
|
563
|
+
'command.quit': 'الخروج من TUI',
|
|
564
|
+
|
|
565
|
+
// ---- help overlay -------------------------------------------------------
|
|
566
|
+
'help.title': 'DeepSeek Harness TUI — المساعدة',
|
|
567
|
+
'help.enter': 'Enter',
|
|
568
|
+
'help.enterDesc': 'إرسال الرسالة',
|
|
569
|
+
'help.ctrlEnter': 'Ctrl+Enter',
|
|
570
|
+
'help.ctrlEnterDesc': 'إدراج سطر جديد',
|
|
571
|
+
'help.ctrlC': 'Ctrl+C',
|
|
572
|
+
'help.ctrlCDesc': 'إلغاء الدور الجاري؛ اضغط مجددًا للخروج',
|
|
573
|
+
'help.ctrlP': 'Ctrl+P',
|
|
574
|
+
'help.ctrlPDesc': 'فتح الإعدادات',
|
|
575
|
+
'help.ctrlE': 'Ctrl+E',
|
|
576
|
+
'help.ctrlEDesc': 'تبديل شريط التفكير',
|
|
577
|
+
'help.tab': 'Tab',
|
|
578
|
+
'help.tabDesc': 'تدوير شدة التفكير',
|
|
579
|
+
'help.ctrlN': 'Ctrl+N',
|
|
580
|
+
'help.ctrlNDesc': 'جلسة جديدة',
|
|
581
|
+
'help.ctrlG': 'Ctrl+G',
|
|
582
|
+
'help.ctrlGDesc': 'تبديل فرع git (الصفحة الفارغة)',
|
|
583
|
+
'help.ctrlD': 'Ctrl+D',
|
|
584
|
+
'help.ctrlDDesc': 'حذف الجلسة في إدارة الجلسات (اضغط مرتين)',
|
|
585
|
+
'help.pg': 'PgUp / PgDn',
|
|
586
|
+
'help.pgDesc': 'تمرير نص المحادثة',
|
|
587
|
+
'help.shiftArrows': 'Shift+↑/↓',
|
|
588
|
+
'help.shiftArrowsDesc': 'تمرير شريط الحالة (النوافذ العريضة)',
|
|
589
|
+
'help.upDown': 'Up / Down',
|
|
590
|
+
'help.upDownDesc': 'المؤشر لأعلى/أسفل؛ السجل عند الحواف',
|
|
591
|
+
'help.mouse': 'Mouse drag',
|
|
592
|
+
'help.mouseDesc': 'تحديد النص؛ النقر بزر الفأرة الأيمن ينسخ',
|
|
593
|
+
'help.wheel': 'Wheel',
|
|
594
|
+
'help.wheelDesc': 'تمرير المحادثة / الإعدادات',
|
|
595
|
+
'help.escEsc': 'Esc Esc',
|
|
596
|
+
'help.escEscDesc': 'منتقي الإرجاع',
|
|
597
|
+
'help.esc': 'Esc',
|
|
598
|
+
'help.escDesc': 'إغلاق الطبقة · إلغاء الدور · مسح الموجه',
|
|
599
|
+
'help.commands': 'الأوامر:',
|
|
600
|
+
|
|
601
|
+
// ---- session manager / toasts ------------------------------------------
|
|
602
|
+
'session.newTitle': 'جلسة جديدة',
|
|
603
|
+
'session.noSaved': 'لا جلسات محفوظة',
|
|
604
|
+
'session.manageTitle': 'إدارة الجلسات',
|
|
605
|
+
'session.manageSubtitle': 'Enter فتح · Ctrl+D مرتين للحذف · Esc رجوع',
|
|
606
|
+
'session.loading': 'جارٍ تحميل الجلسات...',
|
|
607
|
+
'session.deleted': 'حُذفت الجلسة {label}',
|
|
608
|
+
'session.deleteFailed': 'حذف الجلسة: {error}',
|
|
609
|
+
'session.deleteNotFound': 'دليل الجلسة المحفوظة غير موجود',
|
|
610
|
+
'session.deleteCancelled': 'أُلغي الحذف',
|
|
611
|
+
'session.resumed': 'استُؤنفت الجلسة {id}',
|
|
612
|
+
'session.started': 'بدأت الجلسة {id}',
|
|
613
|
+
'session.openFailed': 'فشل فتح الجلسة: {error}',
|
|
614
|
+
'session.forkSummary': '{label} من {parent} · {files}',
|
|
615
|
+
'session.forkDropped': ' · أُسقط {count} إدخال معلق موروث',
|
|
616
|
+
'session.conversationOnly': 'المحادثة فقط',
|
|
617
|
+
'session.rewindLabel': 'إرجاع #{n}',
|
|
618
|
+
'session.files': 'الملفات: {summary}',
|
|
619
|
+
'session.error': 'خطأ: {error}',
|
|
620
|
+
'session.interruptFirst': 'أوقف الدور الجاري أولًا (/cancel)',
|
|
621
|
+
'session.interruptFirstEsc': 'أوقف الدور الجاري أولًا (Esc أو /cancel)',
|
|
622
|
+
'session.startFirst': 'ابدأ جلسة أولًا',
|
|
623
|
+
'session.noReasoningLevels': 'النموذج الحالي لا يوفر مستويات استدلال',
|
|
624
|
+
'session.settingsUnavailable': 'الإعدادات غير متاحة',
|
|
625
|
+
'session.interruptRequested': 'طُلب الإيقاف',
|
|
626
|
+
'session.nothingToInterrupt': 'لا شيء للإيقاف',
|
|
627
|
+
'session.noSessionRunning': 'لا جلسة قيد التشغيل',
|
|
628
|
+
'session.promptCleared': 'مُسح الموجه',
|
|
629
|
+
'session.exitAgain': 'اضغط Ctrl+C مجددًا للخروج',
|
|
630
|
+
'session.usageResume': 'الاستخدام: /resume <sessionId>',
|
|
631
|
+
'session.currentModel': 'النموذج الحالي: {model}',
|
|
632
|
+
'session.modelSet': 'ضُبط النموذج على {model} (يُطبق على الطلب التالي)',
|
|
633
|
+
'session.currentProvider': 'المزود الحالي: {provider}',
|
|
634
|
+
'session.providerSet': 'ضُبط المزود على {provider} (يُطبق على الطلب التالي)',
|
|
635
|
+
'session.unknownCommand': 'أمر غير معروف /{name} — جرّب /help',
|
|
636
|
+
'session.queryMissing': 'استعلام الجلسة غير مركّب في هذا الملف التعريفي',
|
|
637
|
+
'session.listHeader': 'الجلسات:',
|
|
638
|
+
'session.noPersisted': 'لا جلسات محفوظة',
|
|
639
|
+
'session.listFailed': 'فشل سرد الجلسات: {error}',
|
|
640
|
+
'session.modelNoImages': 'النموذج "{model}" لا يدعم إدخال الصور',
|
|
641
|
+
'session.imageAttachFailed': 'فشل إرفاق الصورة: {error}',
|
|
642
|
+
'session.attachmentsUnavailable': 'خدمة المرفقات غير متاحة؛ لا يمكن قراءة الصورة',
|
|
643
|
+
'session.copied.zero': 'لم يُنسخ أي سطر إلى الحافظة',
|
|
644
|
+
'session.copied.one': 'نُسخ {count} سطر إلى الحافظة',
|
|
645
|
+
'session.copied.two': 'نُسخ سطران إلى الحافظة',
|
|
646
|
+
'session.copied.few': 'نُسخت {count} أسطر إلى الحافظة',
|
|
647
|
+
'session.copied.many': 'نُسخ {count} سطرًا إلى الحافظة',
|
|
648
|
+
'session.copied.other': 'نُسخ {count} سطر إلى الحافظة',
|
|
649
|
+
'session.valueRequired': 'القيمة مطلوبة',
|
|
650
|
+
'session.minChars': '{count} حرفًا على الأقل',
|
|
651
|
+
'session.maxChars': '{count} حرفًا كحد أقصى',
|
|
652
|
+
'session.answerRequired': 'اختر خيارًا أو اكتب إجابة',
|
|
653
|
+
'session.typeAnswer': 'اكتب إجابة أو اضغط Esc',
|
|
654
|
+
'session.updatesAvailable': 'التحديثات: {list} — Ctrl+P → التحديث',
|
|
655
|
+
'session.versionsError': 'الإصدارات: {error}',
|
|
656
|
+
'session.mcpError': 'MCP: {error}',
|
|
657
|
+
'session.noClipboard': 'لا مسار حافظة متاح',
|
|
658
|
+
'session.unsupportedInteraction': 'نوع تفاعل غير مدعوم: {kind}',
|
|
659
|
+
|
|
660
|
+
// ---- tool activity summaries -------------------------------------------
|
|
661
|
+
'tool.run': 'تشغيل {command}',
|
|
662
|
+
'tool.askUser': 'اسأل المستخدم',
|
|
663
|
+
'tool.askQuestions': 'اطرح {count} سؤالًا',
|
|
635
664
|
|
|
636
665
|
// ---- host diagnostics ----------------------------------------------------
|
|
637
666
|
'diagnostics.notice': 'تم تسجيل تشخيصات المضيف في {path}',
|
|
638
|
-
|
|
667
|
+
|
|
668
|
+
// ---- screenshots --------------------------------------------------------
|
|
669
|
+
"screenshot.shortcut": "لقطة شاشة",
|
|
670
|
+
"screenshot.directory": "مجلد لقطات الشاشة",
|
|
671
|
+
"screenshot.saved": "تم حفظ لقطة الشاشة",
|
|
672
|
+
"screenshot.failed": "تعذر التقاط الشاشة",
|
|
673
|
+
}
|