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.
Files changed (50) hide show
  1. package/README.md +21 -563
  2. package/bin/mcp-sse-bridge.mjs +499 -499
  3. package/docs/assets/conversation.png +0 -0
  4. package/docs/assets/cover.png +0 -0
  5. package/docs/assets/home.png +0 -0
  6. package/docs/assets/settings.png +0 -0
  7. package/docs/dsh-std-/346/216/245/345/205/245/350/257/264/346/230/216.md +566 -0
  8. package/docs/user-guide.md +616 -0
  9. package/docs//347/224/250/346/210/267/346/211/213/345/206/214.md +607 -593
  10. package/dsh-plugin.json +69 -69
  11. package/lib/boot-block.js +129 -0
  12. package/lib/diagnostics.js +162 -120
  13. package/lib/dsh-version.js +161 -0
  14. package/lib/git-branch.js +157 -157
  15. package/lib/i18n.js +283 -283
  16. package/lib/image.js +2 -1
  17. package/lib/index.js +5183 -4812
  18. package/lib/locales/ar.js +670 -635
  19. package/lib/locales/de.js +639 -604
  20. package/lib/locales/en.js +35 -0
  21. package/lib/locales/es.js +639 -604
  22. package/lib/locales/fr.js +639 -604
  23. package/lib/locales/id.js +641 -606
  24. package/lib/locales/it.js +639 -604
  25. package/lib/locales/ja.js +639 -604
  26. package/lib/locales/ko.js +639 -604
  27. package/lib/locales/nl.js +639 -604
  28. package/lib/locales/pl.js +653 -618
  29. package/lib/locales/pt-BR.js +639 -604
  30. package/lib/locales/ru.js +653 -618
  31. package/lib/locales/tr.js +639 -604
  32. package/lib/locales/vi.js +641 -606
  33. package/lib/locales/zh-CN.js +640 -605
  34. package/lib/locales/zh-TW.js +640 -605
  35. package/lib/markdown.js +101 -27
  36. package/lib/mcp-monitor.js +189 -0
  37. package/lib/mcp-skill.js +93 -93
  38. package/lib/mcp.js +865 -838
  39. package/lib/model-route.js +66 -0
  40. package/lib/providers.js +712 -712
  41. package/lib/screenshot.js +140 -0
  42. package/lib/splash-opencode.js +29 -26
  43. package/lib/startup.js +66 -48
  44. package/lib/term.js +53 -11
  45. package/lib/themes.js +101 -0
  46. package/lib/ui.js +685 -443
  47. package/lib/updates.js +5 -2
  48. package/lib/web-settings.js +52 -21
  49. package/package.json +160 -146
  50. package/skills/mcp-import/SKILL.md +216 -216
package/lib/locales/tr.js CHANGED
@@ -1,607 +1,642 @@
1
- // Turkish catalog. Keys, order and placeholders mirror `en.js`, the source.
2
- export default {
3
- // ---- shared chrome ------------------------------------------------------
4
- 'common.selectBack': 'Enter seç · Esc geri',
5
- 'common.selectConfirmBack': '↑/↓ seç · Enter onayla · Esc geri',
6
- 'common.selectContinueExit': '↑/↓ seç · Enter devam · Esc çık',
7
- 'common.escBack': 'Esc geri',
8
- 'common.escClose': 'Esc kapat',
9
- 'common.escCancel': 'Esc iptal',
10
- 'common.working': 'Çalışıyor…',
11
- 'common.pleaseWait': 'lütfen bekleyin',
12
- 'common.on': 'açık',
13
- 'common.off': 'kapalı',
14
- 'common.unavailable': 'kullanılamıyor',
15
- 'common.selected': 'seçili',
16
- 'common.default': 'varsayılan',
17
- 'common.system': 'sistem',
18
- 'common.installed': '(kurulu)',
19
- 'common.more': '… {count} tane daha',
20
- 'common.moreLines': '… {count} satır daha',
21
- 'common.clickExpand': ' · genişletmek için tıkla',
22
- 'common.clickCollapse': ' · daraltmak için tıkla',
23
- 'common.unknown': 'bilinmiyor',
24
- 'common.emptyMessage': '[boş mesaj]',
25
- 'value.queue': 'kuyruk',
26
- 'value.steer': 'yönlendir',
27
- 'value.auto': 'otomatik',
28
- 'value.local': 'yerel',
29
- 'value.textOnly': 'yalnızca metin',
30
- 'value.textImage': 'metin + görsel',
31
-
32
- // ---- title screen -------------------------------------------------------
33
- 'splash.hint': 'Her şeyi sorun... "Bozuk testleri düzelt"',
34
- 'splash.shortcutSettings': 'ayarlar',
35
- 'splash.shortcutThinking': 'düşünme',
36
- 'splash.shortcutBranches': 'dallar',
37
-
38
- // ---- header / sidebar / status row -------------------------------------
39
- // ---- command-line help (dsh --profile tui --help) -----------------------
40
- 'startup.description': 'DeepSeek Harness terminal arayüzünü başlatır.',
41
- 'startup.helpOption': 'bu yardımı göster',
42
- 'startup.resume': 'mevcut kalıcı oturumu id ile sürdür',
43
- 'startup.model': 'yeni oturumlar için varsayılan model id',
44
- 'startup.provider': 'yeni oturumlar için varsayılan sağlayıcı rotası',
45
- 'startup.sidebar': 'oturum kenar çubuğunu göster (varsayılan)',
46
- 'startup.noSidebar': 'kenar çubuğu olmadan başlat',
47
- 'startup.examples': 'Örnekler:',
48
- 'startup.exampleFresh': 'yeni bir oturum başlat',
49
- 'startup.exampleResume': 'kalıcı bir oturumu sürdür',
50
-
51
- 'header.workspace': 'ÇALIŞMA ALANI',
52
- 'sidebar.sessions': 'OTURUMLAR',
53
- 'sidebar.recent': 'SON',
54
- 'sidebar.newSession': '+ Yeni oturum',
55
- 'status.model': 'model',
56
- 'status.draftTokens': '{count} taslak tok',
57
- 'status.ctrlP': 'ctrl+p komutlar',
58
- 'status.interrupt': 'kes: ctrl+c',
59
-
60
- // ---- composer command hints --------------------------------------------
61
- 'hint.help': 'yardımı göster',
62
- 'hint.settings': 'ayarları aç',
63
- 'hint.new': 'yeni oturum',
64
- 'hint.resume': 'oturumu sürdür',
65
- 'hint.model': 'model seç',
66
- 'hint.provider': 'sağlayıcı seç',
67
- 'hint.rewind': 'geri sarma seçici',
68
- 'hint.branch': 'git dalı değiştir',
69
- 'hint.stats': 'oturum istatistikleri ve token kullanımı',
70
- 'hint.clear': 'görünümü temizle',
71
- 'hint.cancel': 'çalışan turu iptal et',
72
- 'hint.quit': 'çık',
73
- 'hint.compact': 'bağlamı sıkıştır',
74
- 'hint.goal': 'hedefi yönet',
75
-
76
- // ---- transcript blocks --------------------------------------------------
77
- 'transcript.turns.one': '{count} tur',
78
- 'transcript.turns.other': '{count} tur',
79
- 'transcript.steps.one': '{count} adım',
80
- 'transcript.steps.other': '{count} adım',
81
- 'transcript.thinking': ' düşünme',
82
- 'transcript.streaming': ' · akıyor…',
83
- 'transcript.steeringBadge': ' ⟲ yönlendirme',
84
- 'transcript.tasks': 'görevler',
85
- 'transcript.systemPrompt': ' sistem istemi',
86
- 'transcript.pendingInput': ' bekleyen giriş · ',
87
- 'transcript.steering': ' yönlendirme',
88
- 'transcript.queued': ' sırada',
89
- 'note.systemReminder': 'system-reminder',
90
- 'note.compaction': 'sıkıştırma',
91
-
92
- // ---- images and mermaid -------------------------------------------------
93
- 'image.attachment': '🖼 görsel eki',
94
- 'image.rendering': '⏳ görsel işleniyor…',
95
- 'image.renderFailed': '⚠ görsel işlenemedi · {error}',
96
- 'image.mermaidRendering': '⏳ mermaid diyagramı işleniyor…',
97
- 'image.mermaidTooWide': '↔ mermaid diyagramı {width} sütun gerektiriyor, bu bölmede {budget} var',
98
- 'image.altFallback': 'görsel',
99
-
100
- // ---- composer / approval prompt ----------------------------------------
101
- 'composer.imageHint': 'Yapıştırılan görsel: çok kipli bir model/eklenti veya deepseek-v4-flash-vision-exp kullanın, aksi halde görsel okunamaz',
102
- 'composer.approval': 'Onay · ',
103
- 'composer.summary': 'Özet · ',
104
- 'composer.origin': 'Kaynak · ',
105
- 'composer.risk': 'Risk · ',
106
- 'composer.approvalHint': 'y izin ver · n reddet · Esc iptal',
107
- 'risk.low': 'düşük',
108
- 'risk.medium': 'orta',
109
- 'risk.high': 'yüksek',
110
- 'composer.effortHint': 'Tab / ←/→ ayarla · Esc kapat',
111
-
112
- // ---- right status rail --------------------------------------------------
113
- 'rail.model': 'MODEL',
114
- 'rail.thinking': 'DÜŞÜNME',
115
- 'rail.context': 'BAĞLAM',
116
- 'rail.session': 'OTURUM',
117
- 'rail.goal': 'HEDEF',
118
- 'rail.subagents': 'ALT AJANLAR',
119
- 'rail.noData': '—',
120
- 'rail.percentUsed': '%{percent} kullanıldı',
121
- 'rail.tokens': '~{used} / {window} token',
122
- 'rail.cacheHit': 'önbellek %{percent} isabet',
123
- 'rail.breakdown': 'sistem {system} · araçlar {tools} · mesajlar {messages}',
124
- 'rail.contextPending': 'kullanım bildirilince görünür',
125
- 'rail.subagentCounts': '{running} çalışıyor · {total} toplam',
126
- 'rail.unreadable': '{label} (okunamıyor)',
127
- 'rail.more': '… +{count} daha',
128
- 'rail.round': ' · tur {started}/{max}',
129
- 'goal.active': 'etkin',
130
- 'goal.paused': 'duraklatıldı',
131
- 'goal.blocked': 'engellendi',
132
- 'goal.complete': 'tamamlandı',
133
-
134
- // ---- session stats window ----------------------------------------------
135
- 'stats.title': 'oturum istatistikleri',
136
- 'stats.hint': 'şeride veya /stats komutuna tıkla',
137
- 'stats.usage': 'kullanım',
138
- 'stats.duration': 'süre',
139
- 'stats.speed': 'hız',
140
- 'stats.tokens': 'tokenlar',
141
- 'stats.cache': 'önbellek',
142
- 'stats.context': 'bağlam',
143
- 'stats.noSteps': 'henüz tamamlanmış adım yok',
144
- 'stats.llmTime': 'LLM {value}',
145
- 'stats.toolTime': 'araçlar {value}',
146
- 'stats.ttft': 'TTFT ort. {value}',
147
- 'stats.tokensPerSecond': '{value} tok/s',
148
- 'stats.cacheRate': 'önbellek %{percent}',
149
- 'stats.inOut': 'giriş {input} · çıkış {output}',
150
- 'stats.cacheDetail': '%{percent} isabet · okuma {read} · yazma {write} · ıska {miss}',
151
- 'stats.contextUsed': '%{percent} kullanıldı ~{used} / {window}',
152
- 'stats.systemPrompt': 'sistem istemi',
153
- 'stats.tools': 'araçlar',
154
- 'stats.messages': 'mesajlar',
155
- 'stats.compositionUnavailable': 'bağlam bileşimi kullanılamıyor',
156
- 'stats.contextPending': 'bağlam doluluğu, bir istek kullanım bildirdiğinde görünür',
157
-
158
- // ---- questions modal ----------------------------------------------------
159
- 'questions.title': 'Soru',
160
- 'questions.titleOf': 'Soru {index} / {total}',
161
- 'questions.defer': 'Esc ertele',
162
- 'questions.range': '{from}-{to} / {total} PgUp/PgDn',
163
- 'questions.other': 'Diğer: ',
164
- 'questions.answer': 'Yanıt: ',
165
- 'questions.placeholder': 'kendi yanıtını yaz',
166
- 'questions.hintCustom': 'Enter onayla · Esc geri',
167
- 'questions.hintMulti': 'Space değiştir · Enter devam · Up/Down gezin',
168
- 'questions.hintSingle': 'Enter seç · Up/Down gezin',
169
-
170
- // ---- secret prompt ------------------------------------------------------
171
- 'secret.hint': 'Göndermek için Enter · iptal için Esc',
172
-
173
- // ---- settings dialog chrome --------------------------------------------
174
- 'settings.title': 'Ayarlar',
175
- 'settings.menu': 'MENÜ',
176
- 'settings.shared': 'DeepSeek Harness WebUI ile paylaşılır',
177
- 'settings.footerEdit': 'Enter kaydet · Esc iptal',
178
- 'settings.footerMenu': '↑/↓ gezin · Tab menü · Enter seç · Esc geri',
179
- 'settings.footerPlain': '↑/↓ gezin · Enter seç · Esc geri',
180
- 'settings.confirmHint': '{text} · Y / N',
181
- 'settings.confirmDefault': 'Y onayla · N iptal',
182
- 'settings.confirmDeleteSession': 'Silmek için tekrar Ctrl+D',
183
- 'settings.confirmChange': 'Bu değişiklik onaylansın mı?',
184
- 'settings.deleteTwice': 'Silmek için tekrar Ctrl+D basın: ',
185
- 'settings.deleteMcpTwice': 'Kaldırmak için tekrar Delete basın: ',
186
- 'settings.noSession': 'oturum seçilmedi',
187
- 'settings.noSessions': 'kullanılabilir oturum yok',
188
- 'settings.noMcp': 'MCP sunucusu seçilmedi',
189
- 'settings.noOptions': '{label} için kullanılabilir seçenek yok',
190
- 'settings.saved': 'DSH ayarlarına kaydedildi',
191
- 'settings.providerRemoved': 'sağlayıcı kaldırıldı',
192
- 'settings.conflict': 'ayarlar başka yerde değişti; yeniden yüklendi',
193
- 'settings.error': 'ayarlar: {error}',
194
- 'settings.dshSettings': 'DSH ayarları',
195
- 'settings.optionList': 'Enter seç · Esc geri',
196
-
197
- // ---- settings left menu -------------------------------------------------
198
- 'menu.main': 'Ana',
199
- 'menu.model': 'Model',
200
- 'menu.update': 'Güncelleme',
201
- 'menu.mcp': 'MCP',
202
-
203
- // ---- settings rows: main tab -------------------------------------------
204
- 'settings.general': 'Genel',
205
- 'settings.graphics': 'Grafikler',
206
- 'settings.sessions': 'Oturumlar',
207
- 'settings.system': 'Sistem',
208
- 'settings.busyEnter': 'Meşgulken Enter',
209
- 'settings.defaultPreset': 'Varsayılan ön ayar',
210
- 'settings.permissionPreset': 'İzin ön ayarı',
211
- 'settings.permissionDangerConfirm': 'Sınırsız araç ve dosya erişimi etkinleştirilsin mi?',
212
- 'settings.graphicsRendering': 'Grafik işleme',
213
- 'settings.noProtocolFallback': 'Protokolsüz yedek',
214
- 'settings.imageHeightCap': 'Görsel yükseklik sınırı (satır)',
215
- 'settings.mermaidRendering': 'Mermaid işleme',
216
- 'settings.newSession': 'Yeni oturum',
217
- 'settings.manageSessions': 'Oturumları yönet',
218
- 'settings.providerConfig': 'Sağlayıcı API yapılandırması',
219
- 'settings.updateManager': 'Güncelleme yöneticisi',
220
- 'settings.settingsFile': 'Ayar dosyası',
221
- 'settings.language': 'Dil',
222
- 'settings.languageSystem': 'Sistem ({language})',
223
- 'settings.languageSaved': 'dil: {language}',
224
-
225
- // ---- model tab ----------------------------------------------------------
226
- 'model.title': 'Model',
227
- 'model.subtitle': 'Enter, listedeki modeli varsayılan yapar',
228
- 'model.defaultSection': 'Varsayılan',
229
- 'model.defaultProvider': 'Varsayılan sağlayıcı',
230
- 'model.defaultModel': 'Varsayılan model',
231
- 'model.reasoning': 'Akıl yürütme',
232
- 'model.providerUrl': 'Sağlayıcı URL’si',
233
- 'model.providerApiKey': 'Sağlayıcı API anahtarı',
234
- 'model.displayName': 'Görünen ad',
235
- 'model.wireProtocol': 'Aktarım protokolü',
236
- 'model.defaultImageInput': 'Varsayılan görsel girişi',
237
- 'model.models': 'Modeller',
238
- 'model.fetch': 'getir…',
239
- 'model.selectedCount': '{count} seçili',
240
- 'model.removeProvider': 'Sağlayıcıyı kaldır',
241
- 'model.removeProviderConfirm': '{name} ve yönetilen kimlik bilgisi kaldırılsın mı?',
242
- 'model.noModels': 'kullanılabilir model yok',
243
- 'model.noModelsReturned': 'sağlayıcı model döndürmedi',
244
- 'model.fetchUnavailable': 'otomatik getirme kullanılamıyor — kayıtlı modeller · Enter değiştir',
245
- 'model.fetchOk': 'otomatik getirildi · Enter değiştir · Esc geri',
246
- 'model.fetching': 'Modeller getiriliyor…',
247
- 'model.autoFetching': 'otomatik getiriliyor…',
248
- 'model.credentialConfigured': 'yapılandırıldı ({source})',
249
- 'model.credentialMissing': 'yapılandırılmadı',
250
- 'model.defaultTag': 'varsayılan',
251
- 'model.providerUnavailable': 'sağlayıcı artık kullanılamıyor',
252
- 'model.namespaceUnavailable': 'sağlayıcı ayar alanı kullanılamıyor',
253
- 'model.apiKeyEmpty': 'API anahtarı boş olamaz',
254
- 'model.credentialsUnavailable': 'kimlik bilgisi hizmeti kullanılamıyor',
255
- 'model.noProviderModels': 'seçili sağlayıcının kullanılabilir modeli yok',
256
- 'model.addCount.one': '{count} eklenebilir',
257
- 'model.addCount.other': '{count} eklenebilir',
258
-
259
- // ---- add-provider flow --------------------------------------------------
260
- 'provider.add': 'Sağlayıcı ekle',
261
- 'provider.empty': 'henüz sağlayıcı yapılandırılmadı',
262
- 'provider.pickSubtitle': 'Enter seç · Esc geri',
263
- 'provider.catalog': 'Kurulu sağlayıcılar',
264
- 'provider.catalogEmpty': 'kurulu sağlayıcıların tümü zaten yapılandırılmış',
265
- 'provider.custom': 'Özel API — uç noktayı kendin tanımla',
266
- 'provider.form.catalog': 'Kurulu bir sağlayıcıyı kullan',
267
- 'provider.form.custom': 'Özel sağlayıcı tanımla',
268
- 'provider.formSubtitle': 'Enter düzenle · Esc geri',
269
- 'provider.field.route': 'Rota kimliği',
270
- 'provider.field.addModel': 'Model kimliği ekle',
271
- 'provider.field.save': 'Sağlayıcıyı kaydet',
272
- 'provider.hint.route': 'küçük harf, rakam ve tire · anahtar {ref} olarak saklanır',
273
- 'provider.error.route': 'rota kimliği bir harfle başlamalı; yalnızca küçük harf, rakam ve tire içermeli',
274
- 'provider.error.routeNeeded': 'bir sağlayıcı seç',
275
- 'provider.error.taken': 'bu rota kimliği zaten kullanılıyor',
276
- 'provider.error.baseUrl': 'uç nokta http veya https URL olmalı',
277
- 'provider.error.baseUrlNeeded': 'özel sağlayıcı bir uç nokta gerektirir',
278
- 'provider.error.apiNeeded': 'bu uç noktanın konuştuğu protokolü seç',
279
- 'provider.error.modelsNeeded': 'özel sağlayıcı en az bir model gerektirir',
280
- 'provider.error.modelId': '{index}. modelin kimliği yok',
281
- 'provider.error.modelDuplicate': 'model "{id}" iki kez listelenmiş',
282
- 'provider.added': 'sağlayıcı eklendi',
283
- 'provider.accountManaged': 'DeepSeek hesabınla oturum açıldı',
284
- 'provider.search': 'Ara',
285
- 'provider.searchPlaceholder': 'filtrelemek için yaz',
286
- 'provider.searchEmpty': '"{query}" ile eşleşen sağlayıcı yok',
287
-
288
- // ---- tek bir model kaydı ---------------------------------------------------
289
- 'model.edit': 'Modeli düzenle',
290
- 'model.editHint': 'e düzenle · Del kaldır',
291
- 'model.refresh': 'Kataloğu yenile',
292
- 'model.selectAll': 'Tümünü seç',
293
- 'model.fetchRefused': 'uç nokta model listesi döndürmedi',
294
- 'model.notSaved': 'bu model henüz kaydedilmedi',
295
- 'model.removed': 'model kaldırıldı',
296
- 'model.form.add': 'Model ekle',
297
- 'model.form.edit': 'Model · {id}',
298
- 'model.form.save': 'Modeli kaydet',
299
- 'model.form.remove': 'Sağlayıcıdan kaldır',
300
- 'model.form.removeConfirm': 'Bu model sağlayıcıdan kaldırılsın mı?',
301
- 'model.field.id': 'Model kimliği',
302
- 'model.field.name': 'Görünen ad',
303
- 'model.field.contextWindow': 'Bağlam penceresi',
304
- 'model.field.maxTokens': 'Azami çıktı token',
305
- 'model.field.input': 'Girdi',
306
- 'model.error.idNeeded': 'bir modelin kimliği olmalı',
307
- 'model.error.idDuplicate': 'model "{id}" zaten listede',
308
- 'model.error.capacity': 'bağlam penceresi ve azami token tam sayı olmalı (256K, 1M)',
309
-
310
- // ---- MCP tab ------------------------------------------------------------
311
- 'mcp.title': 'MCP',
312
- 'mcp.subtitle': 'Enter düzenle · Del kaldır · Esc geri',
313
- 'mcp.editSubtitle': 'Enter düzenle · Esc geri',
314
- 'mcp.servers': 'MCP sunucuları',
315
- 'mcp.empty': 'Yapılandırılmış MCP sunucusu yok',
316
- 'mcp.add': 'MCP sunucusu ekle',
317
- 'mcp.scope': 'kapsam',
318
- 'mcp.scopeUserPrefix': 'kullanıcı · {path}',
319
- 'mcp.scopePathPrefix': 'yol · {path}',
320
- 'mcp.configFiles': 'Yapılandırma dosyaları',
321
- 'mcp.userScope': 'kullanıcı (tüm oturumlar)',
322
- 'mcp.secrets': 'Sırlar',
323
- 'mcp.secretsPlain': 'yapılandırma dosyalarında düz metin',
324
- 'mcp.loaded': 'yüklendi',
325
- 'mcp.notCreated': 'henüz oluşturulmadı',
326
- 'mcp.type.stdio': 'Yerel komut',
327
- 'mcp.type.http': 'HTTP',
328
- 'mcp.type.sse': 'SSE',
329
- 'mcp.state.connected': '● bağlı',
330
- 'mcp.state.tools.one': '● {count} araç',
331
- 'mcp.state.tools.other': '● {count} araç',
332
- 'mcp.state.pending': '… bağlanıyor',
333
- 'mcp.state.disabled': '○ devre dışı',
334
- 'mcp.state.idle': '○ bağlı değil',
335
- 'mcp.form.add': 'MCP sunucusu ekle',
336
- 'mcp.form.edit': 'MCP sunucusunu düzenle · {name}',
337
- 'mcp.titleAdd': 'MCP · ekle',
338
- 'mcp.titleEdit': 'MCP · düzenle',
339
- 'mcp.field.name': 'Ad',
340
- 'mcp.field.type': 'Tür',
341
- 'mcp.field.timeout': 'Zaman aşımı (ms)',
342
- 'mcp.field.command': 'Komut',
343
- 'mcp.field.args': 'Bağımsız değişkenler',
344
- 'mcp.field.env': 'Ortam (JSON)',
345
- 'mcp.field.url': 'URL',
346
- 'mcp.field.headers': 'Başlıklar (JSON)',
347
- 'mcp.field.scope': 'Kapsam',
348
- 'mcp.field.path': 'Yol',
349
- 'mcp.field.enabled': 'Etkin',
350
- 'mcp.field.save': 'Kaydet',
351
- 'mcp.field.remove': 'Kaldır',
352
- 'mcp.choice.stdio': 'Yerel komut (stdio)',
353
- 'mcp.choice.http': 'HTTP (streamable)',
354
- 'mcp.choice.sse': 'SSE (eski HTTP+SSE)',
355
- 'mcp.choice.scopeUser': 'Kullanıcı — tüm oturumlar',
356
- 'mcp.choice.scopePath': 'Yol — bir dizin altındaki oturumlar',
357
- 'mcp.removeConfirm': 'Bu MCP sunucusu kaldırılsın ve bağlantısı kesilsin mi?',
358
- 'mcp.saved': 'MCP sunucusu kaydedildi',
359
- 'mcp.added': 'MCP sunucusu eklendi',
360
- 'mcp.removed': 'MCP sunucusu kaldırıldı',
361
- 'mcp.error.name': 'ad 1-32 karakter olmalı: harf, rakam, "-" veya "_"',
362
- 'mcp.error.duplicate': '"{name}" adlı bir MCP sunucusu zaten yapılandırılmış',
363
- 'mcp.error.timeout': 'timeoutMs 1 ile {max} arasında bir tam sayı olmalı',
364
- 'mcp.error.pathNeeded': 'yol kapsamlı bir sunucu için dizin gerekir',
365
- 'mcp.error.pathAbsolute': 'yol kapsamı mutlak bir dizin olmalı',
366
- 'mcp.error.commandNeeded': 'stdio sunucusu için komut gerekir',
367
- 'mcp.error.urlParse': 'URL ayrıştırılamıyor',
368
- 'mcp.error.urlScheme': 'URL http veya https kullanmalı',
369
- 'mcp.error.pathNotDir': 'yol kapsamı bir dizin değil: {path}',
370
- 'mcp.error.configIsDir': 'yapılandırma dosyası yolu bir dizin: {path}',
371
- 'mcp.error.notFound': '"{name}" adlı MCP sunucusu yapılandırılmamış',
372
- 'mcp.error.documentGone': '"{name}" tanımlayan belge kayboldu: {error}',
373
- 'mcp.error.noClient': 'ana makine MCP istemcisi sunmuyor',
374
- 'mcp.error.connectTimeout': '{name} bağlantısı zaman aşımına uğradı',
375
- 'mcp.error.json': 'belge geçerli JSON değil: {error}',
376
- 'mcp.error.jsonObject': 'belge bir JSON nesnesi olmalı',
377
- 'mcp.error.serversObject': '"servers" bir JSON nesnesi olmalı',
378
- 'mcp.error.argsArray': 'bağımsız değişkenler dize dizisi (JSON) olmalı',
379
- 'mcp.error.argsTypes': 'bağımsız değişkenler dize veya sayı olmalı',
380
- 'mcp.error.argsUnclosed': 'bağımsız değişkenlerde kapanmamış tırnak var',
381
- 'mcp.error.envObject': '{label} bir JSON nesnesi olmalı',
382
- 'mcp.error.envValue': '{label} değeri "{name}" dize, sayı veya boolean olmalı',
383
- 'mcp.error.header': 'geçersiz HTTP başlığı "{name}"',
384
- 'mcp.error.envName': 'geçersiz ortam adı "{name}"',
385
-
386
- // ---- rewind -------------------------------------------------------------
387
- 'rewind.title': 'Geri sar',
388
- 'rewind.restoreTo': 'Şu noktadan öncesine geri yükle: {label}',
389
- 'rewind.restorePrompt': 'Konuşmayı şu noktadan öncesine geri yükle…',
390
- 'rewind.empty': 'Henüz geri sarılacak bir nokta yok.',
391
- 'rewind.option.conversation': 'Konuşmayı geri yükle',
392
- 'rewind.option.both': 'Konuşmayı ve dosyaları geri yükle',
393
- 'rewind.option.code': 'Dosyaları geri yükle',
394
- 'rewind.option.cancel': 'İptal',
395
- 'rewind.current': '(geçerli)',
396
- 'rewind.noPoints': 'geri sarılacak kullanıcı mesajı yok',
397
- 'rewind.unknownPoint': 'bilinmeyen geri sarma noktası "{selector}" — bir sayı veya last kullanın',
398
- 'rewind.noPoint': '{n} numaralı geri sarma noktası yok — 1..{count}',
399
- 'rewind.notGit': 'bir git çalışma ağacı değil',
400
- 'rewind.noBackup': 'yedekleme konumu yok',
401
- 'rewind.filesNotRestored': 'dosyalar geri yüklenmedi',
402
- 'rewind.filesNotRestoredReason': 'dosyalar geri yüklenmedi ({reason})',
403
- 'rewind.restored.one': 'HEAD’ten {count} izlenen dosya geri yüklendi',
404
- 'rewind.restored.other': 'HEAD’ten {count} izlenen dosya geri yüklendi',
405
- 'rewind.removed.one': '{count} yeni dosya kaldırıldı',
406
- 'rewind.removed.other': '{count} yeni dosya kaldırıldı',
407
- 'rewind.skipped': '{count} atlandı',
408
- 'rewind.previousSaved': 'önceki içerik {path} konumuna kaydedildi',
409
- 'rewind.noChanges': 'bu noktadan sonra dosya değişikliği yok',
410
- 'rewind.image': '[görsel]',
411
- 'rewind.images': '[{count} görsel]',
412
- 'rewind.emptyMessage': '(boş)',
413
- 'git.title': 'Git Dalları',
414
- 'git.subtitle': 'Geçerli: {branch} · {path}',
415
- 'git.local': 'Yerel dallar',
416
- 'git.remote': 'Uzak dallar',
417
- 'git.empty': 'Bu depoda dal yok.',
418
- 'git.detached': '(bağımsız)',
419
- 'git.switched': '{branch} dalına geçildi',
420
- 'git.switchFailed': '{branch} dalına geçilemiyor: {error}',
421
- 'git.pullDone': 'Güncellemeler çekildi',
422
- 'git.pullFailed': 'Güncellemeler çekilemiyor: {error}',
423
- 'git.listFailed': 'Dallar listelenemiyor: {error}',
424
- 'git.notRepo': 'git çalışma ağacı değil',
425
- 'git.gitMissing': 'git PATH üzerinde bulunamadı',
426
- 'git.timedOut': 'git zaman aşımına uğradı',
427
- 'git.onlyTitleScreen': 'Dal değiştirme yalnızca boş sayfada kullanılabilir — oturumdan /new ile çıkın',
428
- 'git.footer': '↑/↓ seç · Enter geç · P pull · R yenile · Esc kapat',
429
-
430
- // ---- update tab ---------------------------------------------------------
431
- 'update.title': 'Güncelleme',
432
- 'update.checking': 'Sürümler denetleniyor…',
433
- 'update.fetching': 'npm kayıt defterinden getiriliyor…',
434
- 'update.fetchingVersions': 'Sürümler getiriliyor…',
435
- 'update.versionsSubtitle': 'Enter indir · Esc geri',
436
- 'update.installed': 'Kurulu',
437
- 'update.latest': 'En son (npm etiketi)',
438
- 'update.status': 'Durum',
439
- 'update.versions': 'Sürümler',
440
- 'update.selectVersion': 'Sürüm seç…',
441
- 'update.restartApply': '{version} uygulamak için yeniden başlatın',
442
- 'update.enterRestart': 'Enter yeniden başlat',
443
- 'update.discard': 'İndirilen {version} sürümünü at',
444
- 'update.actions': 'Eylemler',
445
- 'update.checkNow': 'Şimdi denetle',
446
- 'update.checkingShort': 'Denetleniyor…',
447
- 'update.startupCheck': 'Açılışta denetim',
448
- 'update.profile': 'profil',
449
- 'update.dshPackage': 'dsh (@deepseek-ai/dsh)',
450
- 'update.statusCorrupt': 'Kurulum bozuk — aşağıdan yeniden kurun',
451
- 'update.statusError': 'Kayıt defteri denetimi başarısız: {error}',
452
- 'update.statusAvailable': 'Güncelleme var → {version}',
453
- 'update.statusUpToDate': 'Güncel',
454
- 'update.statusNoStable': 'Kararlı sürüm yok — Sürümler’den seçin',
455
- 'update.notOnPath': 'PATH içinde bulunamadı',
456
- 'update.subtitleStaged': '{package} {version} indirildi — uygulamak için yeniden başlatın',
457
- 'update.subtitleIdle': 'Enter seç · indir, sonra uygulamak için yeniden başlat',
458
- 'update.download': 'İndir',
459
- 'update.contacting': 'kayıt defterine bağlanılıyor…',
460
- 'update.version': 'Sürüm',
461
- 'update.savingTo': 'Kaydediliyor',
462
- 'update.escCancels': 'Esc iptal eder',
463
- 'update.restartApplyQ': '{label} {version} uygulamak için yeniden başlatılsın mı? (zaten indirildi)',
464
- 'update.downloadQ': '{label} {version} indirilip uygulanmak üzere yeniden başlatılsın mı?',
465
- 'update.localSwitch': ' — yerel kurulumu bir kayıt defteri sürümüne geçirir',
466
- 'update.downloaded': 'indirildi · uygulamak için yeniden başlatın',
467
- 'update.downloadedToast': '{label} {version} indirildi · Güncelleme sekmesinden uygulayın',
468
- 'update.downloadedConfirm': 'İndirildi: {label} {version} uygulamak için yeniden başlatılsın mı? (y/n)',
469
- 'update.alreadyDownloadedConfirm': 'Zaten indirildi · {label} {version} uygulamak için yeniden başlatılsın mı? (y/n)',
470
- 'update.downloadCancelled': 'indirme iptal edildi',
471
- 'update.downloadFailed': 'indirme başarısız: {error}',
472
- 'update.stagedGone': 'hazırlanan indirme kayboldu — sürümü yeniden seçin',
473
- 'update.locks.one': 'dsh {count} başka süreçte çalışırken uygulanamaz — kapatıp yeniden deneyin',
474
- 'update.locks.other': 'dsh {count} başka süreçte çalışırken uygulanamaz — kapatıp yeniden deneyin',
475
- 'update.noNpm': 'uygulanamıyor: npm bulunamadı',
476
- 'update.noDshCli': 'uygulanamıyor: dsh CLI bulunamadı',
477
- 'update.installerFailed': 'yükleyici başlatılamıyor — {label} uygulamak için dsh’yi yeniden başlatın',
478
- 'update.applying': '{label} uygulanıyor · çıkılıyor, yeniden başlatılıyor…',
479
- 'update.stagedDiscarded': 'hazırlanan indirme atıldı',
480
- 'update.tagCached': 'önbellekte',
481
- 'update.tagStaged': 'hazırlandı',
482
- 'update.installFailed': 'Kurulum başarısız (çıkış {code}) — Sürümler’den yeniden deneyin',
483
- 'update.installFailedRetry': 'Güncelleme → dsh-oc-tui → Sürümler’i açın ve yeniden indirmek için bir sürüm seçin',
484
- 'update.installUnreadable': 'kurulum başarı bildirdi ama kurulu sürüm {installed} (beklenen {expected}) — onarım: {repair}',
485
- 'update.registryUnreachable': 'kayıt defterine ulaşılamıyor: {error}',
486
- 'update.notOnRegistry': '{package} kayıt defterinde yok',
487
- 'update.registryHttp': 'kayıt defteri {package} için HTTP {status} döndürdü',
488
- 'update.noTarballUrl': 'kayıt defteri yanıtında tarball URL’si yok',
489
- 'update.downloadHttp': 'indirme başarısız: {url} için HTTP {status}',
490
- 'update.downloadEmpty': 'indirme başarısız: boş yanıt gövdesi',
491
- 'update.integrityFailed': '{file} için bütünlük denetimi başarısız — indirme atıldı',
492
- 'update.npmMissing': 'npm PATH içinde bulunamadı',
493
- 'update.npmViewFailed': 'npm view {package} {code} koduyla çıktı',
494
- 'update.timedOut': '\n({ms} ms sonra zaman aşımı)',
495
- 'update.noOutput': '(çıktı yok)',
496
-
497
- // ---- commands -----------------------------------------------------------
498
- 'command.settings': 'TUI ayar sayfalarını aç',
499
- 'command.help': 'TUI tuş ve komut başvurusunu göster',
500
- 'command.stats': 'Oturum token ve önbellek istatistiklerini göster',
501
- 'command.new': 'Yeni bir oturum başlat',
502
- 'command.resume': 'Kayıtlı bir oturumu sürdür',
503
- 'command.clear': 'Konuşma dökümünü temizle',
504
- 'command.cancel': 'Çalışan turu iptal et',
505
- 'command.rewind': 'Oturumu daha önceki bir noktaya sar',
506
- 'command.branch': 'Boş sayfada git dalı değiştir',
507
- 'command.quit': 'TUI’den çık',
508
-
509
- // ---- help overlay -------------------------------------------------------
510
- 'help.title': 'DeepSeek Harness TUI — yardım',
511
- 'help.enter': 'Enter',
512
- 'help.enterDesc': 'mesaj gönder',
513
- 'help.ctrlEnter': 'Ctrl+Enter',
514
- 'help.ctrlEnterDesc': 'yeni satır ekle',
515
- 'help.ctrlC': 'Ctrl+C',
516
- 'help.ctrlCDesc': 'çalışan turu iptal et; çıkmak için tekrar bas',
517
- 'help.ctrlP': 'Ctrl+P',
518
- 'help.ctrlPDesc': 'ayarları aç',
519
- 'help.ctrlE': 'Ctrl+E',
520
- 'help.ctrlEDesc': 'düşünme kaydırıcısını aç/kapat',
521
- 'help.tab': 'Tab',
522
- 'help.tabDesc': 'düşünme yoğunluğunu değiştir',
523
- 'help.ctrlN': 'Ctrl+N',
524
- 'help.ctrlNDesc': 'yeni oturum',
525
- 'help.ctrlG': 'Ctrl+G',
526
- 'help.ctrlGDesc': 'git dalı değiştir (boş sayfa)',
527
- 'help.ctrlD': 'Ctrl+D',
528
- 'help.ctrlDDesc': 'Oturumları yönet içinde oturumu sil (iki kez bas)',
529
- 'help.pg': 'PgUp / PgDn',
530
- 'help.pgDesc': 'konuşma dökümünü kaydır',
531
- 'help.shiftArrows': 'Shift+↑/↓',
532
- 'help.shiftArrowsDesc': 'durum şeridini kaydır (geniş pencereler)',
533
- 'help.upDown': 'Up / Down',
534
- 'help.upDownDesc': 'imleç yukarı/aşağı; kenarlarda geçmiş',
535
- 'help.mouse': 'Fareyle sürükle',
536
- 'help.mouseDesc': 'metin seç; sağ tık kopyalar',
537
- 'help.wheel': 'Tekerlek',
538
- 'help.wheelDesc': 'konuşma dökümünü / ayarları kaydır',
539
- 'help.escEsc': 'Esc Esc',
540
- 'help.escEscDesc': 'geri sarma seçici',
541
- 'help.esc': 'Esc',
542
- 'help.escDesc': 'katmanı kapat · turu iptal et · istemi temizle',
543
- 'help.commands': 'Komutlar:',
544
-
545
- // ---- session manager / toasts ------------------------------------------
546
- 'session.newTitle': 'Yeni oturum',
547
- 'session.noSaved': 'Kayıtlı oturum yok',
548
- 'session.manageTitle': 'Oturumları yönet',
549
- 'session.manageSubtitle': 'Enter aç · silmek için iki kez Ctrl+D · Esc geri',
550
- 'session.loading': 'Oturumlar yükleniyor...',
551
- 'session.deleted': '{label} oturumu silindi',
552
- 'session.deleteFailed': 'oturum silme: {error}',
553
- 'session.deleteNotFound': 'kayıtlı oturum dizini bulunamadı',
554
- 'session.deleteCancelled': 'silme iptal edildi',
555
- 'session.resumed': '{id} oturumu sürdürüldü',
556
- 'session.started': '{id} oturumu başlatıldı',
557
- 'session.openFailed': 'oturum açılamadı: {error}',
558
- 'session.forkSummary': '{parent} kaynağından {label} · {files}',
559
- 'session.forkDropped': ' · {count} devralınan bekleyen giriş atıldı',
560
- 'session.conversationOnly': 'yalnızca konuşma',
561
- 'session.rewindLabel': 'geri sarma #{n}',
562
- 'session.files': 'dosyalar: {summary}',
563
- 'session.error': 'hata: {error}',
564
- 'session.interruptFirst': 'önce çalışan turu kes (/cancel)',
565
- 'session.interruptFirstEsc': 'önce çalışan turu kes (Esc veya /cancel)',
566
- 'session.startFirst': 'önce bir oturum başlat',
567
- 'session.noReasoningLevels': 'geçerli model akıl yürütme düzeyi sunmuyor',
568
- 'session.settingsUnavailable': 'ayarlar kullanılamıyor',
569
- 'session.interruptRequested': 'kesme istendi',
570
- 'session.nothingToInterrupt': 'kesilecek bir şey yok',
571
- 'session.noSessionRunning': 'çalışan oturum yok',
572
- 'session.promptCleared': 'istem temizlendi',
573
- 'session.exitAgain': 'çıkmak için tekrar Ctrl+C basın',
574
- 'session.usageResume': 'kullanım: /resume <sessionId>',
575
- 'session.currentModel': 'geçerli model: {model}',
576
- 'session.modelSet': 'model {model} olarak ayarlandı (sonraki istekte geçerli)',
577
- 'session.currentProvider': 'geçerli sağlayıcı: {provider}',
578
- 'session.providerSet': 'sağlayıcı {provider} olarak ayarlandı (sonraki istekte geçerli)',
579
- 'session.unknownCommand': 'bilinmeyen komut /{name} — /help deneyin',
580
- 'session.queryMissing': 'oturum sorgusu bu profilde bağlı değil',
581
- 'session.listHeader': 'oturumlar:',
582
- 'session.noPersisted': 'kayıtlı oturum yok',
583
- 'session.listFailed': 'oturumlar listelenemedi: {error}',
584
- 'session.modelNoImages': '"{model}" modeli görsel girişini desteklemiyor',
585
- 'session.imageAttachFailed': 'görsel eklenemedi: {error}',
586
- 'session.attachmentsUnavailable': 'ek hizmeti kullanılamıyor; görsel okunamıyor',
587
- 'session.copied.one': '{count} satır panoya kopyalandı',
588
- 'session.copied.other': '{count} satır panoya kopyalandı',
589
- 'session.valueRequired': 'bir değer gerekli',
590
- 'session.minChars': 'en az {count} karakter',
591
- 'session.maxChars': 'en çok {count} karakter',
592
- 'session.answerRequired': 'bir seçenek seçin veya yanıt yazın',
593
- 'session.typeAnswer': 'yanıt yazın veya Esc basın',
594
- 'session.updatesAvailable': 'Güncellemeler: {list} — Ctrl+P → Güncelleme',
595
- 'session.versionsError': 'sürümler: {error}',
596
- 'session.mcpError': 'MCP: {error}',
597
- 'session.noClipboard': 'kullanılabilir pano yolu yok',
598
- 'session.unsupportedInteraction': 'desteklenmeyen etkileşim türü: {kind}',
599
-
600
- // ---- tool activity summaries -------------------------------------------
601
- 'tool.run': '{command} çalıştır',
602
- 'tool.askUser': 'kullanıcıya sor',
603
- 'tool.askQuestions': '{count} soru sor',
1
+ // Turkish catalog. Keys, order and placeholders mirror `en.js`, the source.
2
+ export default {
3
+ // ---- shared chrome ------------------------------------------------------
4
+ 'common.selectBack': 'Enter seç · Esc geri',
5
+ 'common.selectConfirmBack': '↑/↓ seç · Enter onayla · Esc geri',
6
+ 'common.selectContinueExit': '↑/↓ seç · Enter devam · Esc çık',
7
+ 'common.escBack': 'Esc geri',
8
+ 'common.escClose': 'Esc kapat',
9
+ 'common.escCancel': 'Esc iptal',
10
+ 'common.working': 'Çalışıyor…',
11
+ 'common.pleaseWait': 'lütfen bekleyin',
12
+ 'common.on': 'açık',
13
+ 'common.off': 'kapalı',
14
+ 'common.unavailable': 'kullanılamıyor',
15
+ 'common.selected': 'seçili',
16
+ 'common.default': 'varsayılan',
17
+ 'common.system': 'sistem',
18
+ 'common.installed': '(kurulu)',
19
+ 'common.more': '… {count} tane daha',
20
+ 'common.moreLines': '… {count} satır daha',
21
+ 'common.clickExpand': ' · genişletmek için tıkla',
22
+ 'common.clickCollapse': ' · daraltmak için tıkla',
23
+ 'common.unknown': 'bilinmiyor',
24
+ 'common.emptyMessage': '[boş mesaj]',
25
+ 'value.queue': 'kuyruk',
26
+ 'value.steer': 'yönlendir',
27
+ 'value.auto': 'otomatik',
28
+ 'value.local': 'yerel',
29
+ 'value.textOnly': 'yalnızca metin',
30
+ 'value.textImage': 'metin + görsel',
31
+ 'value.show': 'göster',
32
+ 'value.hide': 'gizle',
33
+
34
+ // ---- title screen -------------------------------------------------------
35
+ 'splash.hint': 'Her şeyi sorun... "Bozuk testleri düzelt"',
36
+ 'splash.shortcutSettings': 'ayarlar',
37
+ 'splash.shortcutThinking': 'düşünme',
38
+ 'splash.shortcutBranches': 'dallar',
39
+
40
+ // ---- header / sidebar / status row -------------------------------------
41
+ // ---- command-line help (dsh --profile tui --help) -----------------------
42
+ 'startup.description': 'DeepSeek Harness terminal arayüzünü başlatır.',
43
+ 'startup.helpOption': 'bu yardımı göster',
44
+ 'startup.resume': 'mevcut kalıcı oturumu id ile sürdür',
45
+ 'startup.model': 'yeni oturumlar için varsayılan model id',
46
+ 'startup.provider': 'yeni oturumlar için varsayılan sağlayıcı rotası',
47
+ 'startup.sidebar': 'oturum kenar çubuğunu göster (varsayılan)',
48
+ 'startup.noSidebar': 'kenar çubuğu olmadan başlat',
49
+ 'startup.examples': 'Örnekler:',
50
+ 'startup.exampleFresh': 'yeni bir oturum başlat',
51
+ 'startup.exampleResume': 'kalıcı bir oturumu sürdür',
52
+
53
+ 'header.workspace': 'ÇALIŞMA ALANI',
54
+ 'sidebar.sessions': 'OTURUMLAR',
55
+ 'sidebar.recent': 'SON',
56
+ 'sidebar.newSession': '+ Yeni oturum',
57
+ 'status.model': 'model',
58
+ 'status.draftTokens': '{count} taslak tok',
59
+ 'status.ctrlP': 'ctrl+p komutlar',
60
+ 'status.interrupt': 'kes: ctrl+c',
61
+
62
+ // ---- composer command hints --------------------------------------------
63
+ 'hint.help': 'yardımı göster',
64
+ 'hint.settings': 'ayarları aç',
65
+ 'hint.new': 'yeni oturum',
66
+ 'hint.resume': 'oturumu sürdür',
67
+ 'hint.model': 'model seç',
68
+ 'hint.provider': 'sağlayıcı seç',
69
+ 'hint.rewind': 'geri sarma seçici',
70
+ 'hint.branch': 'git dalı değiştir',
71
+ 'hint.stats': 'oturum istatistikleri ve token kullanımı',
72
+ 'hint.clear': 'görünümü temizle',
73
+ 'hint.cancel': 'çalışan turu iptal et',
74
+ 'hint.quit': 'çık',
75
+ 'hint.compact': 'bağlamı sıkıştır',
76
+ 'hint.goal': 'hedefi yönet',
77
+
78
+ // ---- transcript blocks --------------------------------------------------
79
+ 'transcript.turns.one': '{count} tur',
80
+ 'transcript.turns.other': '{count} tur',
81
+ 'transcript.steps.one': '{count} adım',
82
+ 'transcript.steps.other': '{count} adım',
83
+ 'transcript.modelChanged': 'Model {from} yerine {to} olarak değiştirildi',
84
+ 'transcript.thinking': ' düşünme',
85
+ 'transcript.streaming': ' · akıyor…',
86
+ 'transcript.steeringBadge': ' ⟲ yönlendirme',
87
+ 'transcript.tasks': 'görevler',
88
+ 'transcript.systemPrompt': ' sistem istemi',
89
+ 'transcript.pendingInput': ' bekleyen giriş · ',
90
+ 'transcript.steering': ' yönlendirme',
91
+ 'transcript.queued': ' sırada',
92
+ 'note.systemReminder': 'system-reminder',
93
+ 'note.compaction': 'sıkıştırma',
94
+ 'note.runtimeContext': 'çalışma zamanı bağlamı',
95
+
96
+ // ---- images and mermaid -------------------------------------------------
97
+ 'image.attachment': '🖼 görsel eki',
98
+ 'image.rendering': '⏳ görsel işleniyor…',
99
+ 'image.renderFailed': '⚠ görsel işlenemedi · {error}',
100
+ 'image.mermaidRendering': '⏳ mermaid diyagramı işleniyor…',
101
+ 'image.mermaidTooWide': '↔ mermaid diyagramı {width} sütun gerektiriyor, bu bölmede {budget} var',
102
+ 'image.altFallback': 'görsel',
103
+
104
+ // ---- composer / approval prompt ----------------------------------------
105
+ 'composer.keys': "Enter gönder · Ctrl+Enter yeni satır · Ctrl+P ayarlar",
106
+ 'composer.commandKeys': "↑/↓ seç · Tab tamamla · Esc kapat",
107
+ 'composer.imageHint': 'Yapıştırılan görsel: çok kipli bir model/eklenti veya deepseek-v4-flash-vision-exp kullanın, aksi halde görsel okunamaz',
108
+ 'composer.approval': 'Onay · ',
109
+ 'composer.summary': 'Özet · ',
110
+ 'composer.origin': 'Kaynak · ',
111
+ 'composer.risk': 'Risk · ',
112
+ 'composer.approvalHint': 'y izin ver · n reddet · Esc iptal',
113
+ 'risk.low': 'düşük',
114
+ 'risk.medium': 'orta',
115
+ 'risk.high': 'yüksek',
116
+ 'composer.effortHint': 'Tab / ←/→ ayarla · Esc kapat',
117
+
118
+ // ---- right status rail --------------------------------------------------
119
+ 'rail.model': 'MODEL',
120
+ 'rail.thinking': 'DÜŞÜNME',
121
+ 'rail.context': 'BAĞLAM',
122
+ 'rail.session': 'OTURUM',
123
+ 'rail.goal': 'HEDEF',
124
+ 'rail.subagents': 'ALT AJANLAR',
125
+ 'rail.noData': '—',
126
+ 'rail.percentUsed': '%{percent} kullanıldı',
127
+ 'rail.tokens': '~{used} / {window} token',
128
+ 'rail.cacheHit': 'önbellek %{percent} isabet',
129
+ 'rail.breakdown': 'sistem {system} · araçlar {tools} · mesajlar {messages}',
130
+ 'rail.contextPending': 'kullanım bildirilince görünür',
131
+ 'rail.subagentCounts': '{running} çalışıyor · {total} toplam',
132
+ 'rail.unreadable': '{label} (okunamıyor)',
133
+ 'rail.more': '… +{count} daha',
134
+ 'rail.round': ' · tur {started}/{max}',
135
+ 'goal.active': 'etkin',
136
+ 'goal.paused': 'duraklatıldı',
137
+ 'goal.blocked': 'engellendi',
138
+ 'goal.complete': 'tamamlandı',
139
+
140
+ // ---- session stats window ----------------------------------------------
141
+ 'stats.title': 'oturum istatistikleri',
142
+ 'stats.hint': 'şeride veya /stats komutuna tıkla',
143
+ 'stats.usage': 'kullanım',
144
+ 'stats.duration': 'süre',
145
+ 'stats.speed': 'hız',
146
+ 'stats.tokens': 'tokenlar',
147
+ 'stats.cache': 'önbellek',
148
+ 'stats.context': 'bağlam',
149
+ 'stats.noSteps': 'henüz tamamlanmış adım yok',
150
+ 'stats.llmTime': 'LLM {value}',
151
+ 'stats.toolTime': 'araçlar {value}',
152
+ 'stats.ttft': 'TTFT ort. {value}',
153
+ 'stats.tokensPerSecond': '{value} tok/s',
154
+ 'stats.cacheRate': 'önbellek %{percent}',
155
+ 'stats.inOut': 'giriş {input} · çıkış {output}',
156
+ 'stats.cacheDetail': '%{percent} isabet · okuma {read} · yazma {write} · ıska {miss}',
157
+ 'stats.contextUsed': '%{percent} kullanıldı ~{used} / {window}',
158
+ 'stats.systemPrompt': 'sistem istemi',
159
+ 'stats.tools': 'araçlar',
160
+ 'stats.messages': 'mesajlar',
161
+ 'stats.compositionUnavailable': 'bağlam bileşimi kullanılamıyor',
162
+ 'stats.contextPending': 'bağlam doluluğu, bir istek kullanım bildirdiğinde görünür',
163
+
164
+ // ---- questions modal ----------------------------------------------------
165
+ 'questions.title': 'Soru',
166
+ 'questions.titleOf': 'Soru {index} / {total}',
167
+ 'questions.defer': 'Esc ertele',
168
+ 'questions.range': '{from}-{to} / {total} PgUp/PgDn',
169
+ 'questions.other': 'Diğer: ',
170
+ 'questions.answer': 'Yanıt: ',
171
+ 'questions.placeholder': 'kendi yanıtını yaz',
172
+ 'questions.hintCustom': 'Enter onayla · Esc geri',
173
+ 'questions.hintMulti': 'Space değiştir · Enter devam · Up/Down gezin',
174
+ 'questions.hintSingle': 'Enter seç · Up/Down gezin',
175
+
176
+ // ---- secret prompt ------------------------------------------------------
177
+ 'secret.hint': 'Göndermek için Enter · iptal için Esc',
178
+
179
+ // ---- boot gate: the dsh version this build may run on ----
180
+ 'boot.unsupportedTitle': 'Desteklenmeyen dsh sürümü',
181
+ 'boot.unverifiedTitle': 'Doğrulanmamış dsh sürümü',
182
+ 'boot.runningLabel': 'çalışan dsh',
183
+ 'boot.supportedLabel': 'desteklenen',
184
+ 'boot.recommendedLabel': 'önerilen',
185
+ 'boot.verifiedLabel': 'doğrulanan',
186
+ 'boot.unsupportedBody': 'Bu dsh-oc-tui sürümü yalnızca {range} destekliyor ve {version} bunun dışında. dsh desteklenen bir sürüme geçmeden oturumlar çalışamaz.',
187
+ 'boot.unverifiedBody': 'Bu dsh-oc-tui sürümü {verified} ile doğrulandı, {version} ile değil. Çalıştığından emin olmak için {recommended} sürümünü kurun.',
188
+ 'boot.installHint': 'Önerilen dsh sürümünü kurun ve bu profile yeniden başlatın:',
189
+ 'boot.updatePluginHint': 'Daha yeni bir dsh-oc-tui bu dsh destekliyorsa eklentiyi güncelleyin:',
190
+ 'boot.exitHint': 'Esc veya Ctrl+C çıkar',
191
+
192
+ // ---- settings dialog chrome --------------------------------------------
193
+ 'settings.title': 'Ayarlar',
194
+ 'settings.menu': 'MENÜ',
195
+ 'settings.shared': 'DeepSeek Harness WebUI ile paylaşılır',
196
+ 'settings.footerEdit': 'Enter kaydet · Esc iptal',
197
+ 'settings.footerMenu': '↑/↓ gezin · Tab menü · Enter seç · Esc geri',
198
+ 'settings.footerPlain': '↑/↓ gezin · Enter seç · Esc geri',
199
+ 'settings.confirmHint': '{text} · Y / N',
200
+ 'settings.confirmDefault': 'Y onayla · N iptal',
201
+ 'settings.confirmDeleteSession': 'Silmek için tekrar Ctrl+D',
202
+ 'settings.confirmChange': 'Bu değişiklik onaylansın mı?',
203
+ 'settings.deleteTwice': 'Silmek için tekrar Ctrl+D basın: ',
204
+ 'settings.deleteMcpTwice': 'Kaldırmak için tekrar Delete basın: ',
205
+ 'settings.noSession': 'oturum seçilmedi',
206
+ 'settings.noSessions': 'kullanılabilir oturum yok',
207
+ 'settings.noMcp': 'MCP sunucusu seçilmedi',
208
+ 'settings.noOptions': '{label} için kullanılabilir seçenek yok',
209
+ 'settings.saved': 'DSH ayarlarına kaydedildi',
210
+ 'settings.providerRemoved': 'sağlayıcı kaldırıldı',
211
+ 'settings.conflict': 'ayarlar başka yerde değişti; yeniden yüklendi',
212
+ 'settings.error': 'ayarlar: {error}',
213
+ 'settings.dshSettings': 'DSH ayarları',
214
+ 'settings.optionList': 'Enter seç · Esc geri',
215
+
216
+ // ---- settings left menu -------------------------------------------------
217
+ 'menu.main': 'Ana',
218
+ 'menu.model': 'Model',
219
+ 'menu.update': 'Güncelleme',
220
+ 'menu.mcp': 'MCP',
221
+
222
+ // ---- settings rows: main tab -------------------------------------------
223
+ 'settings.general': 'Genel',
224
+ 'settings.graphics': 'Grafikler',
225
+ 'settings.sessions': 'Oturumlar',
226
+ 'settings.system': 'Sistem',
227
+ 'settings.developer': 'Geliştirici',
228
+ 'settings.contextDetails': 'Bağlam ayrıntıları',
229
+ 'settings.busyEnter': 'Meşgulken Enter',
230
+ 'settings.defaultPreset': 'Varsayılan ön ayar',
231
+ 'settings.permissionPreset': 'İzin ön ayarı',
232
+ 'settings.permissionDangerConfirm': 'Sınırsız araç ve dosya erişimi etkinleştirilsin mi?',
233
+ 'settings.graphicsRendering': 'Grafik işleme',
234
+ 'settings.noProtocolFallback': 'Protokolsüz yedek',
235
+ 'settings.imageHeightCap': 'Görsel yükseklik sınırı (satır)',
236
+ 'settings.mermaidRendering': 'Mermaid işleme',
237
+ 'settings.newSession': 'Yeni oturum',
238
+ 'settings.manageSessions': 'Oturumları yönet',
239
+ 'settings.providerConfig': 'Sağlayıcı API yapılandırması',
240
+ 'settings.updateManager': 'Güncelleme yöneticisi',
241
+ 'settings.settingsFile': 'Ayar dosyası',
242
+ 'settings.language': 'Dil',
243
+ 'settings.theme': 'Tema',
244
+ 'theme.deepseek': 'DeepSeek Standard',
245
+ 'theme.github-dark': 'GitHub Dark',
246
+ 'theme.dracula': 'Dracula',
247
+ 'theme.vscode-dark': 'VS Code Dark+',
248
+ 'theme.nord': 'Nord',
249
+ 'settings.languageSystem': 'Sistem ({language})',
250
+ 'settings.languageSaved': 'dil: {language}',
251
+
252
+ // ---- model tab ----------------------------------------------------------
253
+ 'model.title': 'Model',
254
+ 'model.subtitle': 'Enter, listedeki modeli varsayılan yapar',
255
+ 'model.defaultSection': 'Varsayılan',
256
+ 'model.defaultProvider': 'Varsayılan sağlayıcı',
257
+ 'model.defaultModel': 'Varsayılan model',
258
+ 'model.reasoning': 'Akıl yürütme',
259
+ 'model.providerUrl': 'Sağlayıcı URL’si',
260
+ 'model.providerApiKey': 'Sağlayıcı API anahtarı',
261
+ 'model.displayName': 'Görünen ad',
262
+ 'model.wireProtocol': 'Aktarım protokolü',
263
+ 'model.defaultImageInput': 'Varsayılan görsel girişi',
264
+ 'model.models': 'Modeller',
265
+ 'model.fetch': 'getir…',
266
+ 'model.selectedCount': '{count} seçili',
267
+ 'model.removeProvider': 'Sağlayıcıyı kaldır',
268
+ 'model.removeProviderConfirm': '{name} ve yönetilen kimlik bilgisi kaldırılsın mı?',
269
+ 'model.noModels': 'kullanılabilir model yok',
270
+ 'model.noModelsReturned': 'sağlayıcı model döndürmedi',
271
+ 'model.fetchUnavailable': 'otomatik getirme kullanılamıyor — kayıtlı modeller · Enter değiştir',
272
+ 'model.fetchOk': 'otomatik getirildi · Enter değiştir · Esc geri',
273
+ 'model.fetching': 'Modeller getiriliyor…',
274
+ 'model.autoFetching': 'otomatik getiriliyor…',
275
+ 'model.credentialConfigured': 'yapılandırıldı ({source})',
276
+ 'model.credentialMissing': 'yapılandırılmadı',
277
+ 'model.defaultTag': 'varsayılan',
278
+ 'model.providerUnavailable': 'sağlayıcı artık kullanılamıyor',
279
+ 'model.namespaceUnavailable': 'sağlayıcı ayar alanı kullanılamıyor',
280
+ 'model.apiKeyEmpty': 'API anahtarı boş olamaz',
281
+ 'model.credentialsUnavailable': 'kimlik bilgisi hizmeti kullanılamıyor',
282
+ 'model.noProviderModels': 'seçili sağlayıcının kullanılabilir modeli yok',
283
+ 'model.addCount.one': '{count} eklenebilir',
284
+ 'model.addCount.other': '{count} eklenebilir',
285
+
286
+ // ---- add-provider flow --------------------------------------------------
287
+ 'provider.add': 'Sağlayıcı ekle',
288
+ 'provider.empty': 'henüz sağlayıcı yapılandırılmadı',
289
+ 'provider.pickSubtitle': 'Enter seç · Esc geri',
290
+ 'provider.catalog': 'Kurulu sağlayıcılar',
291
+ 'provider.catalogEmpty': 'kurulu sağlayıcıların tümü zaten yapılandırılmış',
292
+ 'provider.custom': 'Özel API — uç noktayı kendin tanımla',
293
+ 'provider.form.catalog': 'Kurulu bir sağlayıcıyı kullan',
294
+ 'provider.form.custom': 'Özel sağlayıcı tanımla',
295
+ 'provider.formSubtitle': 'Enter düzenle · Esc geri',
296
+ 'provider.field.route': 'Rota kimliği',
297
+ 'provider.field.addModel': 'Model kimliği ekle',
298
+ 'provider.field.save': 'Sağlayıcıyı kaydet',
299
+ 'provider.hint.route': 'küçük harf, rakam ve tire · anahtar {ref} olarak saklanır',
300
+ 'provider.error.route': 'rota kimliği bir harfle başlamalı; yalnızca küçük harf, rakam ve tire içermeli',
301
+ 'provider.error.routeNeeded': 'bir sağlayıcı seç',
302
+ 'provider.error.taken': 'bu rota kimliği zaten kullanılıyor',
303
+ 'provider.error.baseUrl': 'uç nokta http veya https URL olmalı',
304
+ 'provider.error.baseUrlNeeded': 'özel sağlayıcı bir uç nokta gerektirir',
305
+ 'provider.error.apiNeeded': 'bu uç noktanın konuştuğu protokolü seç',
306
+ 'provider.error.modelsNeeded': 'özel sağlayıcı en az bir model gerektirir',
307
+ 'provider.error.modelId': '{index}. modelin kimliği yok',
308
+ 'provider.error.modelDuplicate': 'model "{id}" iki kez listelenmiş',
309
+ 'provider.added': 'sağlayıcı eklendi',
310
+ 'provider.accountManaged': 'DeepSeek hesabınla oturum açıldı',
311
+ 'provider.search': 'Ara',
312
+ 'provider.searchPlaceholder': 'filtrelemek için yaz',
313
+ 'provider.searchEmpty': '"{query}" ile eşleşen sağlayıcı yok',
314
+
315
+ // ---- tek bir model kaydı ---------------------------------------------------
316
+ 'model.edit': 'Modeli düzenle',
317
+ 'model.editHint': 'e düzenle · Del kaldır',
318
+ 'model.refresh': 'Kataloğu yenile',
319
+ 'model.selectAll': 'Tümünü seç',
320
+ 'model.fetchRefused': 'uç nokta model listesi döndürmedi',
321
+ 'model.notSaved': 'bu model henüz kaydedilmedi',
322
+ 'model.removed': 'model kaldırıldı',
323
+ 'model.form.add': 'Model ekle',
324
+ 'model.form.edit': 'Model · {id}',
325
+ 'model.form.save': 'Modeli kaydet',
326
+ 'model.form.remove': 'Sağlayıcıdan kaldır',
327
+ 'model.form.removeConfirm': 'Bu model sağlayıcıdan kaldırılsın mı?',
328
+ 'model.field.id': 'Model kimliği',
329
+ 'model.field.name': 'Görünen ad',
330
+ 'model.field.contextWindow': 'Bağlam penceresi',
331
+ 'model.field.maxTokens': 'Azami çıktı token',
332
+ 'model.field.input': 'Girdi',
333
+ 'model.error.idNeeded': 'bir modelin kimliği olmalı',
334
+ 'model.error.idDuplicate': 'model "{id}" zaten listede',
335
+ 'model.error.capacity': 'bağlam penceresi ve azami token tam sayı olmalı (256K, 1M)',
336
+
337
+ // ---- MCP tab ------------------------------------------------------------
338
+ 'mcp.title': 'MCP',
339
+ 'mcp.subtitle': 'Enter düzenle · Del kaldır · Esc geri',
340
+ 'mcp.editSubtitle': 'Enter düzenle · Esc geri',
341
+ 'mcp.servers': 'MCP sunucuları',
342
+ 'mcp.empty': 'Yapılandırılmış MCP sunucusu yok',
343
+ 'mcp.add': 'MCP sunucusu ekle',
344
+ 'mcp.scope': 'kapsam',
345
+ 'mcp.scopeUserPrefix': 'kullanıcı · {path}',
346
+ 'mcp.scopePathPrefix': 'yol · {path}',
347
+ 'mcp.configFiles': 'Yapılandırma dosyaları',
348
+ 'mcp.userScope': 'kullanıcı (tüm oturumlar)',
349
+ 'mcp.secrets': 'Sırlar',
350
+ 'mcp.secretsPlain': 'yapılandırma dosyalarında düz metin',
351
+ 'mcp.loaded': 'yüklendi',
352
+ 'mcp.notCreated': 'henüz oluşturulmadı',
353
+ 'mcp.type.stdio': 'Yerel komut',
354
+ 'mcp.type.http': 'HTTP',
355
+ 'mcp.type.sse': 'SSE',
356
+ 'mcp.state.connected': '● bağlı',
357
+ 'mcp.state.tools.one': '● {count} araç',
358
+ 'mcp.state.tools.other': '● {count} araç',
359
+ 'mcp.state.pending': '… bağlanıyor',
360
+ 'mcp.state.disabled': '○ devre dışı',
361
+ 'mcp.state.idle': '○ bağlı değil',
362
+ 'mcp.notice.connected': "MCP {name}: bağlandı",
363
+ 'mcp.notice.failed': "MCP {name}: bağlantı başarısız",
364
+ 'mcp.form.add': 'MCP sunucusu ekle',
365
+ 'mcp.form.edit': 'MCP sunucusunu düzenle · {name}',
366
+ 'mcp.titleAdd': 'MCP · ekle',
367
+ 'mcp.titleEdit': 'MCP · düzenle',
368
+ 'mcp.field.name': 'Ad',
369
+ 'mcp.field.type': 'Tür',
370
+ 'mcp.field.timeout': 'Zaman aşımı (ms)',
371
+ 'mcp.field.command': 'Komut',
372
+ 'mcp.field.args': 'Bağımsız değişkenler',
373
+ 'mcp.field.env': 'Ortam (JSON)',
374
+ 'mcp.field.url': 'URL',
375
+ 'mcp.field.headers': 'Başlıklar (JSON)',
376
+ 'mcp.field.scope': 'Kapsam',
377
+ 'mcp.field.path': 'Yol',
378
+ 'mcp.field.enabled': 'Etkin',
379
+ 'mcp.field.save': 'Kaydet',
380
+ 'mcp.field.remove': 'Kaldır',
381
+ 'mcp.choice.stdio': 'Yerel komut (stdio)',
382
+ 'mcp.choice.http': 'HTTP (streamable)',
383
+ 'mcp.choice.sse': 'SSE (eski HTTP+SSE)',
384
+ 'mcp.choice.scopeUser': 'Kullanıcı — tüm oturumlar',
385
+ 'mcp.choice.scopePath': 'Yol — bir dizin altındaki oturumlar',
386
+ 'mcp.removeConfirm': 'Bu MCP sunucusu kaldırılsın ve bağlantısı kesilsin mi?',
387
+ 'mcp.saved': 'MCP sunucusu kaydedildi',
388
+ 'mcp.added': 'MCP sunucusu eklendi',
389
+ 'mcp.removed': 'MCP sunucusu kaldırıldı',
390
+ 'mcp.error.name': 'ad 1-32 karakter olmalı: harf, rakam, "-" veya "_"',
391
+ 'mcp.error.duplicate': '"{name}" adlı bir MCP sunucusu zaten yapılandırılmış',
392
+ 'mcp.error.timeout': 'timeoutMs 1 ile {max} arasında bir tam sayı olmalı',
393
+ 'mcp.error.pathNeeded': 'yol kapsamlı bir sunucu için dizin gerekir',
394
+ 'mcp.error.pathAbsolute': 'yol kapsamı mutlak bir dizin olmalı',
395
+ 'mcp.error.commandNeeded': 'stdio sunucusu için komut gerekir',
396
+ 'mcp.error.urlParse': 'URL ayrıştırılamıyor',
397
+ 'mcp.error.urlScheme': 'URL http veya https kullanmalı',
398
+ 'mcp.error.pathNotDir': 'yol kapsamı bir dizin değil: {path}',
399
+ 'mcp.error.configIsDir': 'yapılandırma dosyası yolu bir dizin: {path}',
400
+ 'mcp.error.notFound': '"{name}" adlı MCP sunucusu yapılandırılmamış',
401
+ 'mcp.error.documentGone': '"{name}" tanımlayan belge kayboldu: {error}',
402
+ 'mcp.error.noClient': 'ana makine MCP istemcisi sunmuyor',
403
+ 'mcp.error.connectTimeout': '{name} bağlantısı zaman aşımına uğradı',
404
+ 'mcp.error.json': 'belge geçerli JSON değil: {error}',
405
+ 'mcp.error.jsonObject': 'belge bir JSON nesnesi olmalı',
406
+ 'mcp.error.serversObject': '"servers" bir JSON nesnesi olmalı',
407
+ 'mcp.error.argsArray': 'bağımsız değişkenler dize dizisi (JSON) olmalı',
408
+ 'mcp.error.argsTypes': 'bağımsız değişkenler dize veya sayı olmalı',
409
+ 'mcp.error.argsUnclosed': 'bağımsız değişkenlerde kapanmamış tırnak var',
410
+ 'mcp.error.envObject': '{label} bir JSON nesnesi olmalı',
411
+ 'mcp.error.envValue': '{label} değeri "{name}" dize, sayı veya boolean olmalı',
412
+ 'mcp.error.header': 'geçersiz HTTP başlığı "{name}"',
413
+ 'mcp.error.envName': 'geçersiz ortam adı "{name}"',
414
+
415
+ // ---- rewind -------------------------------------------------------------
416
+ 'rewind.title': 'Geri sar',
417
+ 'rewind.restoreTo': 'Şu noktadan öncesine geri yükle: {label}',
418
+ 'rewind.restorePrompt': 'Konuşmayı şu noktadan öncesine geri yükle…',
419
+ 'rewind.empty': 'Henüz geri sarılacak bir nokta yok.',
420
+ 'rewind.option.conversation': 'Konuşmayı geri yükle',
421
+ 'rewind.option.both': 'Konuşmayı ve dosyaları geri yükle',
422
+ 'rewind.option.code': 'Dosyaları geri yükle',
423
+ 'rewind.option.cancel': 'İptal',
424
+ 'rewind.current': '(geçerli)',
425
+ 'rewind.noPoints': 'geri sarılacak kullanıcı mesajı yok',
426
+ 'rewind.unknownPoint': 'bilinmeyen geri sarma noktası "{selector}" — bir sayı veya last kullanın',
427
+ 'rewind.noPoint': '{n} numaralı geri sarma noktası yok — 1..{count}',
428
+ 'rewind.notGit': 'bir git çalışma ağacı değil',
429
+ 'rewind.noBackup': 'yedekleme konumu yok',
430
+ 'rewind.filesNotRestored': 'dosyalar geri yüklenmedi',
431
+ 'rewind.filesNotRestoredReason': 'dosyalar geri yüklenmedi ({reason})',
432
+ 'rewind.restored.one': 'HEAD’ten {count} izlenen dosya geri yüklendi',
433
+ 'rewind.restored.other': 'HEAD’ten {count} izlenen dosya geri yüklendi',
434
+ 'rewind.removed.one': '{count} yeni dosya kaldırıldı',
435
+ 'rewind.removed.other': '{count} yeni dosya kaldırıldı',
436
+ 'rewind.skipped': '{count} atlandı',
437
+ 'rewind.previousSaved': 'önceki içerik {path} konumuna kaydedildi',
438
+ 'rewind.noChanges': 'bu noktadan sonra dosya değişikliği yok',
439
+ 'rewind.image': '[görsel]',
440
+ 'rewind.images': '[{count} görsel]',
441
+ 'rewind.emptyMessage': '(boş)',
442
+ 'git.title': 'Git Dalları',
443
+ 'git.subtitle': 'Geçerli: {branch} · {path}',
444
+ 'git.local': 'Yerel dallar',
445
+ 'git.remote': 'Uzak dallar',
446
+ 'git.empty': 'Bu depoda dal yok.',
447
+ 'git.detached': '(bağımsız)',
448
+ 'git.switched': '{branch} dalına geçildi',
449
+ 'git.switchFailed': '{branch} dalına geçilemiyor: {error}',
450
+ 'git.pullDone': 'Güncellemeler çekildi',
451
+ 'git.pullFailed': 'Güncellemeler çekilemiyor: {error}',
452
+ 'git.listFailed': 'Dallar listelenemiyor: {error}',
453
+ 'git.notRepo': 'git çalışma ağacı değil',
454
+ 'git.gitMissing': 'git PATH üzerinde bulunamadı',
455
+ 'git.timedOut': 'git zaman aşımına uğradı',
456
+ 'git.onlyTitleScreen': 'Dal değiştirme yalnızca boş sayfada kullanılabilir — oturumdan /new ile çıkın',
457
+ 'git.footer': '↑/↓ seç · Enter geç · P pull · R yenile · Esc kapat',
458
+
459
+ // ---- update tab ---------------------------------------------------------
460
+ 'update.title': 'Güncelleme',
461
+ 'update.checking': 'Sürümler denetleniyor…',
462
+ 'update.fetching': 'npm kayıt defterinden getiriliyor…',
463
+ 'update.fetchingVersions': 'Sürümler getiriliyor…',
464
+ 'update.versionsSubtitle': 'Enter indir · Esc geri',
465
+ 'update.installed': 'Kurulu',
466
+ 'update.latest': 'En son (npm etiketi)',
467
+ 'update.status': 'Durum',
468
+ 'update.versions': 'Sürümler',
469
+ 'update.selectVersion': 'Sürüm seç…',
470
+ 'update.restartApply': '{version} uygulamak için yeniden başlatın',
471
+ 'update.enterRestart': 'Enter yeniden başlat',
472
+ 'update.discard': 'İndirilen {version} sürümünü at',
473
+ 'update.actions': 'Eylemler',
474
+ 'update.checkNow': 'Şimdi denetle',
475
+ 'update.checkingShort': 'Denetleniyor…',
476
+ 'update.startupCheck': 'Açılışta denetim',
477
+ 'update.profile': 'profil',
478
+ 'update.dshPackage': 'dsh (@deepseek-ai/dsh)',
479
+ 'update.statusCorrupt': 'Kurulum bozuk — aşağıdan yeniden kurun',
480
+ 'update.statusError': 'Kayıt defteri denetimi başarısız: {error}',
481
+ 'update.statusAvailable': 'Güncelleme var → {version}',
482
+ 'update.statusUpToDate': 'Güncel',
483
+ 'update.statusNoStable': 'Kararlı sürüm yok — Sürümler’den seçin',
484
+ 'update.notOnPath': 'PATH içinde bulunamadı',
485
+ 'update.subtitleStaged': '{package} {version} indirildi — uygulamak için yeniden başlatın',
486
+ 'update.subtitleIdle': 'Enter seç · indir, sonra uygulamak için yeniden başlat',
487
+ 'update.download': 'İndir',
488
+ 'update.contacting': 'kayıt defterine bağlanılıyor…',
489
+ 'update.version': 'Sürüm',
490
+ 'update.savingTo': 'Kaydediliyor',
491
+ 'update.escCancels': 'Esc iptal eder',
492
+ 'update.restartApplyQ': '{label} {version} uygulamak için yeniden başlatılsın mı? (zaten indirildi)',
493
+ 'update.downloadQ': '{label} {version} indirilip uygulanmak üzere yeniden başlatılsın mı?',
494
+ 'update.localSwitch': ' — yerel kurulumu bir kayıt defteri sürümüne geçirir',
495
+ 'update.downloaded': 'indirildi · uygulamak için yeniden başlatın',
496
+ 'update.downloadedToast': '{label} {version} indirildi · Güncelleme sekmesinden uygulayın',
497
+ 'update.downloadedConfirm': 'İndirildi: {label} {version} uygulamak için yeniden başlatılsın mı? (y/n)',
498
+ 'update.alreadyDownloadedConfirm': 'Zaten indirildi · {label} {version} uygulamak için yeniden başlatılsın mı? (y/n)',
499
+ 'update.downloadCancelled': 'indirme iptal edildi',
500
+ 'update.downloadFailed': 'indirme başarısız: {error}',
501
+ 'update.stagedGone': 'hazırlanan indirme kayboldu — sürümü yeniden seçin',
502
+ 'update.locks.one': 'dsh {count} başka süreçte çalışırken uygulanamaz — kapatıp yeniden deneyin',
503
+ 'update.locks.other': 'dsh {count} başka süreçte çalışırken uygulanamaz — kapatıp yeniden deneyin',
504
+ 'update.noNpm': 'uygulanamıyor: npm bulunamadı',
505
+ 'update.noDshCli': 'uygulanamıyor: dsh CLI bulunamadı',
506
+ 'update.installerFailed': 'yükleyici başlatılamıyor — {label} uygulamak için dsh’yi yeniden başlatın',
507
+ 'update.applying': '{label} uygulanıyor · çıkılıyor, yeniden başlatılıyor…',
508
+ 'update.stagedDiscarded': 'hazırlanan indirme atıldı',
509
+ 'update.tagCached': 'önbellekte',
510
+ 'update.tagStaged': 'hazırlandı',
511
+ 'update.installFailed': 'Kurulum başarısız (çıkış {code}) — Sürümler’den yeniden deneyin',
512
+ 'update.installFailedRetry': 'Güncelleme → dsh-oc-tui → Sürümler’i açın ve yeniden indirmek için bir sürüm seçin',
513
+ 'update.installUnreadable': 'kurulum başarı bildirdi ama kurulu sürüm {installed} (beklenen {expected}) — onarım: {repair}',
514
+ 'update.registryUnreachable': 'kayıt defterine ulaşılamıyor: {error}',
515
+ 'update.notOnRegistry': '{package} kayıt defterinde yok',
516
+ 'update.registryHttp': 'kayıt defteri {package} için HTTP {status} döndürdü',
517
+ 'update.noTarballUrl': 'kayıt defteri yanıtında tarball URL’si yok',
518
+ 'update.downloadHttp': 'indirme başarısız: {url} için HTTP {status}',
519
+ 'update.downloadEmpty': 'indirme başarısız: boş yanıt gövdesi',
520
+ 'update.integrityFailed': '{file} için bütünlük denetimi başarısız — indirme atıldı',
521
+ 'update.npmMissing': 'npm PATH içinde bulunamadı',
522
+ 'update.npmViewFailed': 'npm view {package} {code} koduyla çıktı',
523
+ 'update.timedOut': '\n({ms} ms sonra zaman aşımı)',
524
+ 'update.noOutput': '(çıktı yok)',
525
+
526
+ // ---- commands -----------------------------------------------------------
527
+ 'command.settings': 'TUI ayar sayfalarını aç',
528
+ 'command.help': 'TUI tuş ve komut başvurusunu göster',
529
+ 'command.stats': 'Oturum token ve önbellek istatistiklerini göster',
530
+ 'command.new': 'Yeni bir oturum başlat',
531
+ 'command.resume': 'Kayıtlı bir oturumu sürdür',
532
+ 'command.clear': 'Konuşma dökümünü temizle',
533
+ 'command.cancel': 'Çalışan turu iptal et',
534
+ 'command.rewind': 'Oturumu daha önceki bir noktaya sar',
535
+ 'command.branch': 'Boş sayfada git dalı değiştir',
536
+ 'command.quit': 'TUI’den çık',
537
+
538
+ // ---- help overlay -------------------------------------------------------
539
+ 'help.title': 'DeepSeek Harness TUI — yardım',
540
+ 'help.enter': 'Enter',
541
+ 'help.enterDesc': 'mesaj gönder',
542
+ 'help.ctrlEnter': 'Ctrl+Enter',
543
+ 'help.ctrlEnterDesc': 'yeni satır ekle',
544
+ 'help.ctrlC': 'Ctrl+C',
545
+ 'help.ctrlCDesc': 'çalışan turu iptal et; çıkmak için tekrar bas',
546
+ 'help.ctrlP': 'Ctrl+P',
547
+ 'help.ctrlPDesc': 'ayarları aç',
548
+ 'help.ctrlE': 'Ctrl+E',
549
+ 'help.ctrlEDesc': 'düşünme kaydırıcısını aç/kapat',
550
+ 'help.tab': 'Tab',
551
+ 'help.tabDesc': 'düşünme yoğunluğunu değiştir',
552
+ 'help.ctrlN': 'Ctrl+N',
553
+ 'help.ctrlNDesc': 'yeni oturum',
554
+ 'help.ctrlG': 'Ctrl+G',
555
+ 'help.ctrlGDesc': 'git dalı değiştir (boş sayfa)',
556
+ 'help.ctrlD': 'Ctrl+D',
557
+ 'help.ctrlDDesc': 'Oturumları yönet içinde oturumu sil (iki kez bas)',
558
+ 'help.pg': 'PgUp / PgDn',
559
+ 'help.pgDesc': 'konuşma dökümünü kaydır',
560
+ 'help.shiftArrows': 'Shift+↑/↓',
561
+ 'help.shiftArrowsDesc': 'durum şeridini kaydır (geniş pencereler)',
562
+ 'help.upDown': 'Up / Down',
563
+ 'help.upDownDesc': 'imleç yukarı/aşağı; kenarlarda geçmiş',
564
+ 'help.mouse': 'Fareyle sürükle',
565
+ 'help.mouseDesc': 'metin seç; sağ tık kopyalar',
566
+ 'help.wheel': 'Tekerlek',
567
+ 'help.wheelDesc': 'konuşma dökümünü / ayarları kaydır',
568
+ 'help.escEsc': 'Esc Esc',
569
+ 'help.escEscDesc': 'geri sarma seçici',
570
+ 'help.esc': 'Esc',
571
+ 'help.escDesc': 'katmanı kapat · turu iptal et · istemi temizle',
572
+ 'help.commands': 'Komutlar:',
573
+
574
+ // ---- session manager / toasts ------------------------------------------
575
+ 'session.newTitle': 'Yeni oturum',
576
+ 'session.noSaved': 'Kayıtlı oturum yok',
577
+ 'session.manageTitle': 'Oturumları yönet',
578
+ 'session.manageSubtitle': 'Enter aç · silmek için iki kez Ctrl+D · Esc geri',
579
+ 'session.loading': 'Oturumlar yükleniyor...',
580
+ 'session.deleted': '{label} oturumu silindi',
581
+ 'session.deleteFailed': 'oturum silme: {error}',
582
+ 'session.deleteNotFound': 'kayıtlı oturum dizini bulunamadı',
583
+ 'session.deleteCancelled': 'silme iptal edildi',
584
+ 'session.resumed': '{id} oturumu sürdürüldü',
585
+ 'session.started': '{id} oturumu başlatıldı',
586
+ 'session.openFailed': 'oturum açılamadı: {error}',
587
+ 'session.forkSummary': '{parent} kaynağından {label} · {files}',
588
+ 'session.forkDropped': ' · {count} devralınan bekleyen giriş atıldı',
589
+ 'session.conversationOnly': 'yalnızca konuşma',
590
+ 'session.rewindLabel': 'geri sarma #{n}',
591
+ 'session.files': 'dosyalar: {summary}',
592
+ 'session.error': 'hata: {error}',
593
+ 'session.interruptFirst': 'önce çalışan turu kes (/cancel)',
594
+ 'session.interruptFirstEsc': 'önce çalışan turu kes (Esc veya /cancel)',
595
+ 'session.startFirst': 'önce bir oturum başlat',
596
+ 'session.noReasoningLevels': 'geçerli model akıl yürütme düzeyi sunmuyor',
597
+ 'session.settingsUnavailable': 'ayarlar kullanılamıyor',
598
+ 'session.interruptRequested': 'kesme istendi',
599
+ 'session.nothingToInterrupt': 'kesilecek bir şey yok',
600
+ 'session.noSessionRunning': 'çalışan oturum yok',
601
+ 'session.promptCleared': 'istem temizlendi',
602
+ 'session.exitAgain': 'çıkmak için tekrar Ctrl+C basın',
603
+ 'session.usageResume': 'kullanım: /resume <sessionId>',
604
+ 'session.currentModel': 'geçerli model: {model}',
605
+ 'session.modelSet': 'model {model} olarak ayarlandı (sonraki istekte geçerli)',
606
+ 'session.currentProvider': 'geçerli sağlayıcı: {provider}',
607
+ 'session.providerSet': 'sağlayıcı {provider} olarak ayarlandı (sonraki istekte geçerli)',
608
+ 'session.unknownCommand': 'bilinmeyen komut /{name} — /help deneyin',
609
+ 'session.queryMissing': 'oturum sorgusu bu profilde bağlı değil',
610
+ 'session.listHeader': 'oturumlar:',
611
+ 'session.noPersisted': 'kayıtlı oturum yok',
612
+ 'session.listFailed': 'oturumlar listelenemedi: {error}',
613
+ 'session.modelNoImages': '"{model}" modeli görsel girişini desteklemiyor',
614
+ 'session.imageAttachFailed': 'görsel eklenemedi: {error}',
615
+ 'session.attachmentsUnavailable': 'ek hizmeti kullanılamıyor; görsel okunamıyor',
616
+ 'session.copied.one': '{count} satır panoya kopyalandı',
617
+ 'session.copied.other': '{count} satır panoya kopyalandı',
618
+ 'session.valueRequired': 'bir değer gerekli',
619
+ 'session.minChars': 'en az {count} karakter',
620
+ 'session.maxChars': 'en çok {count} karakter',
621
+ 'session.answerRequired': 'bir seçenek seçin veya yanıt yazın',
622
+ 'session.typeAnswer': 'yanıt yazın veya Esc basın',
623
+ 'session.updatesAvailable': 'Güncellemeler: {list} — Ctrl+P → Güncelleme',
624
+ 'session.versionsError': 'sürümler: {error}',
625
+ 'session.mcpError': 'MCP: {error}',
626
+ 'session.noClipboard': 'kullanılabilir pano yolu yok',
627
+ 'session.unsupportedInteraction': 'desteklenmeyen etkileşim türü: {kind}',
628
+
629
+ // ---- tool activity summaries -------------------------------------------
630
+ 'tool.run': '{command} çalıştır',
631
+ 'tool.askUser': 'kullanıcıya sor',
632
+ 'tool.askQuestions': '{count} soru sor',
604
633
 
605
634
  // ---- host diagnostics ----------------------------------------------------
606
635
  'diagnostics.notice': 'Konak tanılamaları {path} yoluna kaydedildi',
607
- }
636
+
637
+ // ---- screenshots --------------------------------------------------------
638
+ "screenshot.shortcut": "Ekran görüntüsü",
639
+ "screenshot.directory": "Ekran görüntüsü klasörü",
640
+ "screenshot.saved": "Ekran görüntüsü kaydedildi",
641
+ "screenshot.failed": "Ekran görüntüsü alınamadı",
642
+ }