beast-agent 0.19.0 → 0.20.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/package.json +1 -1
- package/src/agent/bots.js +495 -0
- package/src/agent/engine.js +3303 -3118
- package/src/agent/memory.js +419 -383
- package/src/agent/mqueue.js +124 -0
- package/src/agent/skills.js +523 -522
- package/src/agent/store.js +378 -0
- package/src/agent/watext.js +76 -75
- package/src/main.js +4719 -3951
- package/src/preload.js +149 -128
- package/src/renderer/i18n.js +1073 -795
- package/src/renderer/index.html +288 -231
- package/src/renderer/renderer.js +4317 -3356
- package/src/renderer/style.css +1826 -1307
- package/store/skills.json +5 -0
- package/tests/bg-jobs.test.js +4 -3
package/src/renderer/i18n.js
CHANGED
|
@@ -1,795 +1,1073 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/* Hafif i18n (TR/EN):
|
|
4
|
-
- data-i18n → textContent
|
|
5
|
-
- data-i18n-ph → placeholder
|
|
6
|
-
- data-i18n-title→ title
|
|
7
|
-
- I18N.t(key) → dinamik render'larda
|
|
8
|
-
Seçim localStorage('beast.lang') içinde kalıcıdır (default tr). */
|
|
9
|
-
|
|
10
|
-
(function () {
|
|
11
|
-
const DICT = {
|
|
12
|
-
tr: {
|
|
13
|
-
// ana ekran
|
|
14
|
-
newChat: '+ Yeni Sohbet',
|
|
15
|
-
emptyHint: 'Hızlı · hafif · becerikli. Ne yapalım?',
|
|
16
|
-
composerPh: 'Bir şey sor ya da görev ver… (Enter: gönder · Shift+Enter: satır · /: komutlar)',
|
|
17
|
-
tipModel: 'Model seç',
|
|
18
|
-
tipThink: 'Düşünme (reasoning) seviyesi',
|
|
19
|
-
tipPickCfg: 'Picker\u2019da görünecek modeller',
|
|
20
|
-
tipRail: 'Paralel Ajan Konsolu',
|
|
21
|
-
tipWatch: 'İzleyiciler (Watchers)',
|
|
22
|
-
tipCron: 'Cron Görevler',
|
|
23
|
-
tip_light: 'Açık tema',
|
|
24
|
-
bc_label: 'Beast Kodu',
|
|
25
|
-
bc_copy: 'Kopyala',
|
|
26
|
-
bc_copied: 'Kopyalandı',
|
|
27
|
-
tipModelRefresh: 'Modelleri yeniden çek (tüm providerlar)',
|
|
28
|
-
mr_done: 'Modeller yenilendi',
|
|
29
|
-
tipMic: 'Sesli komut — konuş, bırakınca yazıya çevirsin',
|
|
30
|
-
mic_listening: 'Dinliyorum… bitirmek için mikrofona tekrar bas',
|
|
31
|
-
mic_transcribing: 'Ses yazıya çevriliyor (yerel Whisper)…',
|
|
32
|
-
mic_fail: 'Konuşma algılanamadı',
|
|
33
|
-
mic_denied: 'Mikrofon erişimi verilmedi',
|
|
34
|
-
tip_dark: 'Koyu tema',
|
|
35
|
-
tipTerm: 'Terminal (PowerShell)',
|
|
36
|
-
tipTermG: 'Git Bash terminali',
|
|
37
|
-
tipTermC: 'CMD terminali',
|
|
38
|
-
tipBrowser: 'Dahili tarayıcı',
|
|
39
|
-
tipEye: 'Ajan tarayıcısı görünür/gizli — göz açıkken aramalar panelde izlenir, kapalıyken gizli çalışır',
|
|
40
|
-
tipAttach: 'Dosya / resim ekle',
|
|
41
|
-
tipStop: 'Durdur',
|
|
42
|
-
tipSend: 'Gönder',
|
|
43
|
-
tipMic: 'Konuş — sesin yazıya dönsün',
|
|
44
|
-
tipGear: 'Ayarlar',
|
|
45
|
-
tipThemeDark: 'Koyu tema',
|
|
46
|
-
tipThemeLight: 'Açık tema',
|
|
47
|
-
tipLang: 'Dil değiştir / Switch language',
|
|
48
|
-
// kenar çubuğu & paneller
|
|
49
|
-
labelParallel: 'Paralel Ajanlar',
|
|
50
|
-
set_title: 'AYARLAR',
|
|
51
|
-
tab_provider: 'Provider',
|
|
52
|
-
tab_fallout: 'Fallout',
|
|
53
|
-
tab_memory: 'Memory',
|
|
54
|
-
tab_skills: 'Skills',
|
|
55
|
-
tab_notes: 'Oturum Notları',
|
|
56
|
-
tab_history: 'Oturum Geçmişi',
|
|
57
|
-
tab_agents: 'Paralel Ajanlar',
|
|
58
|
-
tab_tts: 'Sesli Yanıt',
|
|
59
|
-
tab_email: 'E-posta',
|
|
60
|
-
tab_integrations: 'Entegrasyonlar',
|
|
61
|
-
tab_websearch: 'Web Arama',
|
|
62
|
-
tab_limits: 'Limit Ayarları',
|
|
63
|
-
tab_security: 'Güvenlik',
|
|
64
|
-
tab_update: 'Güncelleme',
|
|
65
|
-
up_h2: 'Güncelleme',
|
|
66
|
-
up_sub: 'Sürümler GitHub Releases\u2019ten gelir. Otomatik kontrol açılışta ve 6 saatte bir çalışır.',
|
|
67
|
-
up_current: 'Mevcut sürüm',
|
|
68
|
-
up_latest: 'En son sürüm',
|
|
69
|
-
up_status: 'Durum',
|
|
70
|
-
up_checking: 'Kontrol ediliyor…',
|
|
71
|
-
up_available: 'Yeni sürüm var',
|
|
72
|
-
up_uptodate: 'Güncel',
|
|
73
|
-
up_downloading: 'İndiriliyor…',
|
|
74
|
-
up_downloaded: 'İndirildi — kurulum için hazır',
|
|
75
|
-
up_npm_mode: 'npm kurulumu — güncellemeler otomatik kontrol edilir',
|
|
76
|
-
up_npm_note: 'Yeni sürüm algılanınca buton aktifleşir: uygulama kapanır, güncellenir ve kendiliğinden yeniden açılır. Terminal komutu: beast-agent update',
|
|
77
|
-
up_dev_note: 'Geliştirme modu — güncelleme buradan yapılmaz; dağıtım npm ve GitHub Releases üzerinden. Kaynak kod için: git pull',
|
|
78
|
-
up_auto_check: 'Otomatik sürüm kontrolü (açılış + 6 saatte bir)',
|
|
79
|
-
up_auto_dl: 'Yeni sürümü otomatik indir (kapanışta kurulur)',
|
|
80
|
-
up_check_now: 'Şimdi Kontrol Et',
|
|
81
|
-
up_install_now: 'Yeniden Başlat & Kur',
|
|
82
|
-
up_note: 'Kurulumdan sonra uygulama otomatik yeniden başlar. İstersen WhatsApp\u2019tan /update komutunu da kullanabilirsin.',
|
|
83
|
-
tab_events: 'Olay Merkezi',
|
|
84
|
-
tab_cron: 'Cron',
|
|
85
|
-
tab_usage: 'Maliyet',
|
|
86
|
-
tab_logs: 'Log',
|
|
87
|
-
tab_dash: 'Dashboard',
|
|
88
|
-
tab_limits: 'Limit',
|
|
89
|
-
logs_h2: 'Loglar',
|
|
90
|
-
logs_sub: 'Uygulama olayları — son 600 satır. Dosya: %APPDATA%\\beast\\logs',
|
|
91
|
-
logs_clear: 'Logları Temizle',
|
|
92
|
-
logs_refresh: 'Yenile',
|
|
93
|
-
logs_empty: 'Henüz log yok.',
|
|
94
|
-
dash_h2: 'Oturum Geçmişi',
|
|
95
|
-
dash_sub: 'Tüm sohbet oturumları — kod, mesaj sayısı ve zaman',
|
|
96
|
-
dash_stat_sessions: 'Oturum',
|
|
97
|
-
dash_stat_msgs: 'Mesaj',
|
|
98
|
-
dash_stat_today: 'Bugün',
|
|
99
|
-
dash_stat_last: 'Son etkinlik',
|
|
100
|
-
dash_open: 'Aç',
|
|
101
|
-
dash_empty: 'Henüz oturum yok.',
|
|
102
|
-
lim_h2: 'Limit',
|
|
103
|
-
lim_sub: 'Provider bazlı maksimum girdi (prompt) token limiti — model başına gönderilen bağlamı kontrol eder. 0 = limitsiz.',
|
|
104
|
-
lim_enabled: 'Limit aktif',
|
|
105
|
-
lim_compress: 'Bağlam sıkıştırma (limit aşılırsa eski mesajlar özetlenerek çıkarılır)',
|
|
106
|
-
lim_default: 'Varsayılan limit (tüm providerlar, token)',
|
|
107
|
-
lim_prov_h2: 'Provider Limitleri',
|
|
108
|
-
lim_prov_sub: 'Provider adına göre limit — boş/0 ise varsayılan kullanılır',
|
|
109
|
-
lim_save: 'Limitleri Kaydet',
|
|
110
|
-
lim_saved_toast: 'Limitler kaydedildi',
|
|
111
|
-
lim_unlimited: 'limitsiz',
|
|
112
|
-
tf_h2: 'TinyFish Arama',
|
|
113
|
-
tf_sub: 'Ücretsiz, hızlı web arama API\u2019si. Anahtar girilirse web_search zincirinin EN BAŞINDA kullanılır; sonuç yoksa eski zincir (tarayıcı → çoklu-motor → Exa) devam eder.',
|
|
114
|
-
tf_key_label: 'TinyFish API anahtarı (agent.tinyfish.ai/api-keys)',
|
|
115
|
-
tf_status_set: 'TinyFish aktif — kayıtlı anahtar: ',
|
|
116
|
-
tf_status_unset: 'TinyFish pasif — eski arama zinciri kullanılıyor.',
|
|
117
|
-
tf_empty_toast: 'Anahtar boş — mevcut anahtar korundu',
|
|
118
|
-
tf_saved_toast: 'TinyFish anahtarı kaydedildi',
|
|
119
|
-
tf_cleared_toast: 'TinyFish anahtarı silindi',
|
|
120
|
-
btn_close: 'Kapat',
|
|
121
|
-
em_pass_masked: 'Mevcut şifre korunuyor — değiştirmek için yeniden gir',
|
|
122
|
-
p_h2: 'Provider',
|
|
123
|
-
p_sub: 'Beast config.yaml\u2019dan gelen modeller — aktif olanı seç',
|
|
124
|
-
p_del_title: 'Modeli listeden sil',
|
|
125
|
-
p_no_model: 'Model bulunamadı — %APPDATA%\\beast\\config.yaml ve .env kontrol et.',
|
|
126
|
-
p_deleted_h2: 'Silinen Modeller',
|
|
127
|
-
p_deleted_sub: '${n} model listeden çıkarıldı — geri getirebilirsin',
|
|
128
|
-
p_restore: 'Geri Getir',
|
|
129
|
-
p_role_h2: 'Özel Rol Modelleri',
|
|
130
|
-
p_role_sub: 'Vision, Terminal, Coding ve Subagent için ayrı model; boş bırakırsan ana model kullanılır',
|
|
131
|
-
p_role_main: '— Ana model —',
|
|
132
|
-
p_custom_h2: 'Özel Provider',
|
|
133
|
-
p_custom_sub: 'API adres + key ver, modeller otomatik çekilir',
|
|
134
|
-
p_custom_del: 'Sil',
|
|
135
|
-
p_name_opt: 'Ad (opsiyonel)',
|
|
136
|
-
p_api_url: 'API adresi',
|
|
137
|
-
p_api_key: 'API Key',
|
|
138
|
-
p_fetch: 'Modelleri Çek',
|
|
139
|
-
p_models_manual: 'Modelleri elle gir (her satıra bir model adı)',
|
|
140
|
-
p_save: 'Kaydet',
|
|
141
|
-
p_model_toast: 'Model: ',
|
|
142
|
-
p_del_toast: 'Silindi: ',
|
|
143
|
-
p_restore_toast: 'Geri getirildi: ',
|
|
144
|
-
p_prov_del_toast: 'Provider silindi',
|
|
145
|
-
p_fetching: 'çekiliyor…',
|
|
146
|
-
p_no_provider: 'Kayıtlı provider yok — önce Provider sekmesinden bir sağlayıcı ekle.',
|
|
147
|
-
fo_h2: 'Fallout Zinciri',
|
|
148
|
-
fo_enabled: 'Fallout aktif',
|
|
149
|
-
fo_resume: 'Açılışta yarım işi otomatik sürdür',
|
|
150
|
-
fo_count: '${n}/10 kayıt',
|
|
151
|
-
fo_provider_ph: 'provider seç…',
|
|
152
|
-
fo_save: 'Kaydet',
|
|
153
|
-
fo_clear_title: 'Kaydı sil',
|
|
154
|
-
fo_seq: 'Zincir sırası',
|
|
155
|
-
fo_sub: 'Çökme sonrası otomatik kurtarma — model çökerse sıradaki kayda geçer, durum diske yazılır ve kaldığı yerden devam eder. Aynı provider+modeli farklı API key ile birden çok kez ekleyebilirsin.',
|
|
156
|
-
fo_note: 'Sıra önemli: #1 çökerse #2\u0027ye, o da çökerse #3\u0027e… geçilir. Geçişler sohbette <b>☢ FALLOUT</b> durum etiketiyle görünür.',
|
|
157
|
-
mem_h2: 'Memory',
|
|
158
|
-
mem_sub: 'Ajanın kalıcı hafızası — sistem promptuna birebir girer, kısa tut',
|
|
159
|
-
mem_soul: 'SOUL.md — ajanın kişiliği (karakter, ton, davranış kuralları)',
|
|
160
|
-
mem_mem: 'MEMORY.md',
|
|
161
|
-
mem_user: 'USER.md',
|
|
162
|
-
mem_save: 'Kaydet',
|
|
163
|
-
mem_saved: 'Memory kaydedildi — SOUL.md dahil',
|
|
164
|
-
sk_h2: 'Skills',
|
|
165
|
-
sk_sub: 'SKILL.md indeksi — tam metin model tarafından okunur',
|
|
166
|
-
sk_rules_h2: 'Kalıcı Kurallar',
|
|
167
|
-
sk_rules_sub: 'Agent\u2019ın her sohbette uyduğu talimatlar — WA\u2019dan /rule ile de eklenir',
|
|
168
|
-
sk_no_rule: 'Henüz kural yok.',
|
|
169
|
-
sk_rule_ph: 'Yeni kural…',
|
|
170
|
-
sk_rule_add: 'Ekle',
|
|
171
|
-
sk_drafts_h2: 'Taslaklar',
|
|
172
|
-
sk_drafts_sub: 'Uzun işlerden otomatik doğan yetenek adayları — kabul edersen skill olur',
|
|
173
|
-
sk_no_draft: 'Taslak yok — agent\u2019ın 5+ araç kullandığı uzun işlerde otomatik üretilir.',
|
|
174
|
-
sk_dr_accept: 'Skill olarak kur',
|
|
175
|
-
sk_dr_drop: 'Sil',
|
|
176
|
-
sk_open_folder: 'Skills klasörünü aç',
|
|
177
|
-
tts_h2: 'Sesli Yanıt (TTS)',
|
|
178
|
-
tts_sub: 'Açık olursa WhatsApp cevapları metnin yanı sıra sesli not olarak da gönderilir.',
|
|
179
|
-
tts_active: 'Aktif',
|
|
180
|
-
tts_save: 'TTS Kaydet',
|
|
181
|
-
tts_note: 'OpenAI-uyumlu bir speech API kullanır (tts-1, tts-1-hd vb.). Sesler: alloy, echo, fable, onyx, nova, shimmer.',
|
|
182
|
-
tts_on: 'TTS açık — cevaplar sesli de gider',
|
|
183
|
-
tts_off: 'TTS kapalı',
|
|
184
|
-
em_h2: 'E-posta (Gmail)',
|
|
185
|
-
em_sub: 'IMAP/SMTP — Gmail hesabında "Uygulama Şifresi" oluşturup buraya gir. Agent mailleri okur, özetler ve senin adına gönderir.',
|
|
186
|
-
em_save: 'E-posta Kaydet',
|
|
187
|
-
em_note: 'Kaydettikten sonra agent\u2019a "gelen mailleri özetle", "X\u2019e mail at" gibi komutlar verebilirsin.',
|
|
188
|
-
em_saved: 'E-posta kaydedildi — agent artık maillere erişebilir',
|
|
189
|
-
it_h2: 'Entegrasyonlar',
|
|
190
|
-
it_sub: 'Mesajlaşma köprüleri — gelen mesajlar Beast\u2019e gider, cevap geri döner',
|
|
191
|
-
it_wa_sub: 'Özel mesajlar · gruplar (@mention ile) · slash komutları (/help)',
|
|
192
|
-
it_connect: 'QR ile Bağlan',
|
|
193
|
-
it_disconnect: 'Kes',
|
|
194
|
-
it_reset_pair: 'Eşlemeyi Sıfırla',
|
|
195
|
-
it_groups_on: 'WhatsApp gruplarında çalış — bot @mention edilince cevap verir',
|
|
196
|
-
it_groups_all: 'Mention şart değil: grup içindeki her mesaja karış',
|
|
197
|
-
it_allow_label: 'İzinli numaralar',
|
|
198
|
-
it_name_ph: 'İsim (zorunlu)',
|
|
199
|
-
it_num_ph: 'Numara 905xxxxxxxxx',
|
|
200
|
-
it_add: 'Ekle',
|
|
201
|
-
it_allow_note: 'İsim + numara zorunlu. Her kişinin yanındaki serbest/web/okuma/kısıtlı seçimiyle kişiye özel yetki ver.',
|
|
202
|
-
ev_h2: 'Olay Merkezi',
|
|
203
|
-
ev_sub: 'Cron\u2019suz canlı olaylar — kaynakları aç, abonelikleri agent kendisi kurar (event_subscribe). Tetiklenen olay ilgili sohbete düşer, cevap WhatsApp\u2019a gider.',
|
|
204
|
-
ev_on: 'Olay merkezi açık',
|
|
205
|
-
ev_mail: 'Yeni e-posta anlık takip (IMAP IDLE) — E-posta sekmesindeki hesabı kullanır',
|
|
206
|
-
ev_fs: 'Workspace dosya değişimi izleme',
|
|
207
|
-
ev_price_ph: 'Fiyat sembolü (örn PAXGUSDT)',
|
|
208
|
-
ev_save: 'Kaydet',
|
|
209
|
-
ev_price_sub: 'boş sembol = fiyat feed kapalı (Binance miniTicker)',
|
|
210
|
-
ev_token_copy: 'token kopyala',
|
|
211
|
-
ev_subs_h3: 'Aktif Abonelikler',
|
|
212
|
-
ev_no_sub: 'Abonelik yok — agent\u2019a "mail gelince haber ver" ya da "fiyat X altına inerse bağır" de, kendisi kurar.',
|
|
213
|
-
ev_on_toast: 'Olay merkezi açık',
|
|
214
|
-
ev_off_toast: 'Olay merkezi kapandı',
|
|
215
|
-
us_h2: 'Maliyet',
|
|
216
|
-
us_sub: 'Gerçek API kullanımından toplanır. USD tahmini için config.yaml\u2019da provider\u2019a price_in / price_out (1M token) ekle.',
|
|
217
|
-
us_today_calls: 'Bugünkü çağrı',
|
|
218
|
-
us_today_tokens: 'Bugün token',
|
|
219
|
-
us_today_cost: 'Bugün maliyet',
|
|
220
|
-
us_month_cost: 'Bu ay maliyet',
|
|
221
|
-
us_models_today: 'Modeller — bugün',
|
|
222
|
-
us_models_month: 'Modeller — bu ay',
|
|
223
|
-
us_no_records: 'Bu dönemde kayıt yok',
|
|
224
|
-
us_reset: 'Sayaçları sıfırla',
|
|
225
|
-
us_backup_h2: 'Yedekleme',
|
|
226
|
-
us_backup_sub: 'Tüm Beast verisi (ayarlar, API anahtarları, oturumlar, hafıza, WhatsApp eşlemesi) AES-256 ile ŞİFRELİ yedeklenir ve Beast Kodu ile imzalanır: Masaüstü\\Beast-Backups. Yedeği yalnız bu makine geri yükleyebilir.',
|
|
227
|
-
us_backup_now: 'Şimdi yedekle',
|
|
228
|
-
us_where_h2: 'Nerede Kaldım',
|
|
229
|
-
us_where_sub: 'Açılışta son oturumun durumu + yarım kalan todolar sohbete özet olarak düşer.',
|
|
230
|
-
us_where_on: 'Açılışta "nerede kaldım" özeti göster',
|
|
231
|
-
us_no_records: 'Bu dönemde kayıt yok',
|
|
232
|
-
us_reset_toast: 'Kullanım sayaçları sıfırlandı',
|
|
233
|
-
us_backup_ing: 'Yedekleniyor…',
|
|
234
|
-
us_backup_ok: 'Şifreli yedek alındı: Masaüstü\\Beast-Backups',
|
|
235
|
-
us_backup_err: 'Hata: ',
|
|
236
|
-
us_backup_restore: 'Yedekten Geri Yükle',
|
|
237
|
-
us_restore_ing: 'Geri yükleniyor…',
|
|
238
|
-
us_restore_ok: 'Geri yükleme tamamlandı — değişikliklerin oturması için uygulamayı yeniden başlat',
|
|
239
|
-
us_where_on_toast: 'Açılış özeti açık',
|
|
240
|
-
us_where_off_toast: 'Açılış özeti kapandı',
|
|
241
|
-
ws_calls: 'çağrı',
|
|
242
|
-
ws_token: 'token',
|
|
243
|
-
ws_h2: 'Web Arama',
|
|
244
|
-
ws_sub: 'Arama zinciri: 1) dahili tarayıcı (direk Google) 2) python çoklu-motor (ddgs / DDG+Bing+Mojeek) 3) Exa — otomatik. Exa anahtarı yalnızca son çare olarak kullanılır.',
|
|
245
|
-
ws_exa_label: 'Exa API anahtarı (exa.ai)',
|
|
246
|
-
ws_exa_ph: 'masaüstü görünümde maskeli',
|
|
247
|
-
ws_save: 'Kaydet',
|
|
248
|
-
ws_clear: 'Anahtarı Sil',
|
|
249
|
-
ws_note: 'Anahtar maskeli tutulur; yenisini yazıp kaydettiğinde eskisinin yerine geçer. Boş kaydet: mevcut anahtar korunur.',
|
|
250
|
-
ws_status_set: 'Exa aktif — kayıtlı anahtar: ',
|
|
251
|
-
ws_status_unset: 'Exa yapılandırılmadı — ücretsiz python çoklu-motor arama kullanılıyor.',
|
|
252
|
-
ws_empty_toast: 'Anahtar boş — mevcut anahtar korundu',
|
|
253
|
-
ws_saved_toast: 'Exa anahtarı kaydedildi',
|
|
254
|
-
ws_fail_toast: 'Kaydedilemedi',
|
|
255
|
-
ws_cleared_toast: 'Exa anahtarı silindi',
|
|
256
|
-
ag_h2: 'Paralel Ajanlar',
|
|
257
|
-
ag_sub: 'CEO\u2019nun devrettiği arka plan işleri — canlı izleme',
|
|
258
|
-
ag_ceo_label: 'CEO modu — konuşan ajan iş yapmaz, sadece emir verir',
|
|
259
|
-
ag_ceo_on: 'CEO modu açıldı',
|
|
260
|
-
ag_ceo_off: 'CEO modu kapandı',
|
|
261
|
-
ag_no_jobs: 'Henüz devredilmiş iş yok. CEO modunda agent somut işleri buraya düşürür.',
|
|
262
|
-
ag_working: 'çalışıyor',
|
|
263
|
-
ag_records: 'kayıt',
|
|
264
|
-
ag_st_running: 'çalışıyor',
|
|
265
|
-
ag_st_queued: 'kuyrukta',
|
|
266
|
-
ag_st_done: 'bitti',
|
|
267
|
-
ag_st_error: 'hata',
|
|
268
|
-
ag_st_aborted: 'iptal',
|
|
269
|
-
ag_cancel: 'İptal',
|
|
270
|
-
ag_delete: 'Sohbeti ve kaydı sil',
|
|
271
|
-
ag_empty: 'Henüz arka plan işi yok.\nCEO modunda ajan verdiği emirleri buraya düşürür.',
|
|
272
|
-
ag_tool_start: 'araç: ',
|
|
273
|
-
ag_detail: 'Dökümü',
|
|
274
|
-
ag_show: 'göster',
|
|
275
|
-
ag_hide: 'gizle',
|
|
276
|
-
ag_live: 'Canlı döküm',
|
|
277
|
-
ag_log_empty: '(boş)',
|
|
278
|
-
ag_detail_err: '(detay alınamadı)',
|
|
279
|
-
us_reset_toast: 'Kullanım sayaçları sıfırlandı',
|
|
280
|
-
us_backup_ok: 'Yedek alındı: Masaüstü\\Beast-Backups',
|
|
281
|
-
us_where_on_toast: 'Açılış özeti açık',
|
|
282
|
-
us_where_off_toast: 'Açılış özeti kapandı',
|
|
283
|
-
ws_h2: 'Web Arama',
|
|
284
|
-
ws_exa_label: 'Exa API anahtarı (exa.ai)',
|
|
285
|
-
ws_save: 'Kaydet',
|
|
286
|
-
ws_clear: 'Anahtarı Sil',
|
|
287
|
-
ws_key_note: 'Anahtar maskeli tutulur; yenisini yazıp kaydettiğinde eskisinin yerine geçer. Boş kaydet: mevcut anahtar korunur.',
|
|
288
|
-
ws_active: 'Exa aktif — kayıtlı anahtar: ',
|
|
289
|
-
ws_notcfg: 'Exa yapılandırılmadı — ücretsiz python çoklu-motor arama kullanılıyor.',
|
|
290
|
-
ws_empty: 'Anahtar boş — mevcut anahtar korundu',
|
|
291
|
-
// terminal & tarayıcı & mini
|
|
292
|
-
term_clear: 'Temizle',
|
|
293
|
-
term_ph: 'komut yaz, Enter\u2019la çalıştır…',
|
|
294
|
-
term_stop: 'Çalışan komutu durdur',
|
|
295
|
-
bb_ph: 'adres yaz veya ara…',
|
|
296
|
-
tip_bb_back: 'Geri',
|
|
297
|
-
tip_bb_fwd: 'İleri',
|
|
298
|
-
tip_bb_reload: 'Yenile',
|
|
299
|
-
tip_bb_shot: 'Ekran görüntüsünü sohbete ekle',
|
|
300
|
-
tip_bb_open: 'Tarayıcıda aç',
|
|
301
|
-
tip_bb_close: 'Kapat',
|
|
302
|
-
mini_watch: 'İzleyiciler (Watchers)',
|
|
303
|
-
mini_cron: 'Cron Görevler',
|
|
304
|
-
// cron formu
|
|
305
|
-
cron_h2: 'Cron Görevler',
|
|
306
|
-
cron_sub: 'Zamanlanmış görevler — saati gelince agent otomatik çalışır',
|
|
307
|
-
cron_name_ph: 'Görev adı',
|
|
308
|
-
cron_prompt_ph: 'Agent\u2019a verilecek görev…',
|
|
309
|
-
cron_add: '+ Görev Ekle',
|
|
310
|
-
cron_pr_5: 'Her 5 dakika',
|
|
311
|
-
cron_pr_15: 'Her 15 dakika',
|
|
312
|
-
cron_pr_30: 'Her 30 dakika',
|
|
313
|
-
cron_pr_hour: 'Her saat başı',
|
|
314
|
-
cron_pr_day9: 'Her gün 09:00',
|
|
315
|
-
cron_pr_wd21: 'Hafta içi 21:00',
|
|
316
|
-
cron_pr_custom: 'Özel cron…',
|
|
317
|
-
// tarihçe/limit/güvenlik panelleri (dinamik)
|
|
318
|
-
notes_h2: 'Oturum Notları',
|
|
319
|
-
history_h2: 'Oturum Geçmişi',
|
|
320
|
-
limits_h2: 'Limit Ayarları',
|
|
321
|
-
security_h2: 'Güvenlik',
|
|
322
|
-
st_open: 'Aç',
|
|
323
|
-
st_del: 'Sil',
|
|
324
|
-
sec_toggle: 'Tehlikeli işlemlerde onay iste (silme, değiştirme, komut çalıştırma, mail gönderme…)',
|
|
325
|
-
sec_sub: 'Kapalıyken her şey serbesttir (varsayım). Açıkken ajan riskli bir araç çağırmadan önce onay ister: sohbette onay kartı + WhatsApp\u2019a mesaj gider.',
|
|
326
|
-
sec_note: 'Onay: sohbet kartındaki butonlar ya da /approve · Bu araç için bir daha sorma: /approve always · Reddet: /deny',
|
|
327
|
-
sec_always_h2: 'Bir Daha Sorulmayan Araçlar',
|
|
328
|
-
sec_always_empty: 'Henüz "always" onaylı araç yok.',
|
|
329
|
-
sec_clear_always: 'Listeyi Temizle',
|
|
330
|
-
sec_on_toast: 'Onay kapısı AÇIK — riskli işlemlerde ajan sorar',
|
|
331
|
-
sec_off_toast: 'Onay kapısı KAPALI — her şey serbest',
|
|
332
|
-
sec_ok: 'Onayla',
|
|
333
|
-
sec_always: 'Her zaman',
|
|
334
|
-
sec_no: 'Reddet',
|
|
335
|
-
sec_ok_done: 'Onaylandı — devam ediyor',
|
|
336
|
-
sec_always_done: 'Onaylandı — bu araç için tekrar sorulmayacak',
|
|
337
|
-
sec_no_done: 'Reddedildi — ajan bu işlemi yapmadı',
|
|
338
|
-
// dinamik panel metinleri
|
|
339
|
-
prov_h2: 'Provider',
|
|
340
|
-
prov_sub: 'Beast config.yaml\u2019dan gelen modeller — aktif olanı seç',
|
|
341
|
-
notes_sub: 'Uzun konuşmaların özeti — input token tasarrufu için. Silersen agent o oturumun geçmişini notlardan hatırlamaz.',
|
|
342
|
-
notes_clear_all: 'Tüm Notları Temizle',
|
|
343
|
-
notes_empty: 'Henüz not alınmış oturum yok — konuşmalar 14 mesaja ulaşınca özet çıkarılır.',
|
|
344
|
-
notes_del: 'Notu Sil',
|
|
345
|
-
notes_open: 'Sohbeti Aç',
|
|
346
|
-
history_sub: 'Son 100 sohbet — tıklayıp aç, gereksizleri sil.',
|
|
347
|
-
hist_stat_sess: 'Oturum',
|
|
348
|
-
hist_stat_msg: 'Mesaj',
|
|
349
|
-
hist_stat_7d: 'Son 7 gün',
|
|
350
|
-
hist_empty: 'Henüz oturum yok.',
|
|
351
|
-
limits_sub: 'Provider bazlı maksimum input (bağlam) token limiti. Boş = varsayılan bütçe kullanılır. Ör. Groq 8000 token destekliyorsa 8000 yaz — ajan geçmişi bu bütçeye göre sıkıştırır.',
|
|
352
|
-
limits_compr: 'Bağlam sıkıştırma — eski mesajlar öze dönüşünce diskten de düşer (önerilir)',
|
|
353
|
-
limits_save: 'Limitleri Kaydet',
|
|
354
|
-
limits_note: 'Varsayılan input bütçesi: 18.000 token. Limit set edilen provider\u2019da bu değer geçerli olur.',
|
|
355
|
-
limits_empty: 'Model yok — Provider sekmesinden ekle.',
|
|
356
|
-
security_sub: 'Ajanın tehlikeli işlemlerinde onay kapısı. <b>Default kapalıdır</b> — ajan kendi kararına göre çalışır.',
|
|
357
|
-
stt_lang_label: 'Sesli mesaj dili (Whisper STT) · Voice note language',
|
|
358
|
-
stt_lang_sub: 'WA\u2019dan ve 🎤 mikrofondan gelen sesler bu dilde yazıya çevrilir.',
|
|
359
|
-
deleted: 'Silindi',
|
|
360
|
-
st_thinking: 'düşünüyor…',
|
|
361
|
-
st_queued: 'kuyruğa eklendi — iş bitince gider',
|
|
362
|
-
st_transcribing: 'ses yazıya çevriliyor…',
|
|
363
|
-
st_listening: 'dinliyorum… (bitirmek için 🎤)',
|
|
364
|
-
st_screenshot: 'ekran görüntüsü alınıyor…',
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
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
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
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
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
}
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/* Hafif i18n (TR/EN):
|
|
4
|
+
- data-i18n → textContent
|
|
5
|
+
- data-i18n-ph → placeholder
|
|
6
|
+
- data-i18n-title→ title
|
|
7
|
+
- I18N.t(key) → dinamik render'larda
|
|
8
|
+
Seçim localStorage('beast.lang') içinde kalıcıdır (default tr). */
|
|
9
|
+
|
|
10
|
+
(function () {
|
|
11
|
+
const DICT = {
|
|
12
|
+
tr: {
|
|
13
|
+
// ana ekran
|
|
14
|
+
newChat: '+ Yeni Sohbet',
|
|
15
|
+
emptyHint: 'Hızlı · hafif · becerikli. Ne yapalım?',
|
|
16
|
+
composerPh: 'Bir şey sor ya da görev ver… (Enter: gönder · Shift+Enter: satır · /: komutlar)',
|
|
17
|
+
tipModel: 'Model seç',
|
|
18
|
+
tipThink: 'Düşünme (reasoning) seviyesi',
|
|
19
|
+
tipPickCfg: 'Picker\u2019da görünecek modeller',
|
|
20
|
+
tipRail: 'Paralel Ajan Konsolu',
|
|
21
|
+
tipWatch: 'İzleyiciler (Watchers)',
|
|
22
|
+
tipCron: 'Cron Görevler',
|
|
23
|
+
tip_light: 'Açık tema',
|
|
24
|
+
bc_label: 'Beast Kodu',
|
|
25
|
+
bc_copy: 'Kopyala',
|
|
26
|
+
bc_copied: 'Kopyalandı',
|
|
27
|
+
tipModelRefresh: 'Modelleri yeniden çek (tüm providerlar)',
|
|
28
|
+
mr_done: 'Modeller yenilendi',
|
|
29
|
+
tipMic: 'Sesli komut — konuş, bırakınca yazıya çevirsin',
|
|
30
|
+
mic_listening: 'Dinliyorum… bitirmek için mikrofona tekrar bas',
|
|
31
|
+
mic_transcribing: 'Ses yazıya çevriliyor (yerel Whisper)…',
|
|
32
|
+
mic_fail: 'Konuşma algılanamadı',
|
|
33
|
+
mic_denied: 'Mikrofon erişimi verilmedi',
|
|
34
|
+
tip_dark: 'Koyu tema',
|
|
35
|
+
tipTerm: 'Terminal (PowerShell)',
|
|
36
|
+
tipTermG: 'Git Bash terminali',
|
|
37
|
+
tipTermC: 'CMD terminali',
|
|
38
|
+
tipBrowser: 'Dahili tarayıcı',
|
|
39
|
+
tipEye: 'Ajan tarayıcısı görünür/gizli — göz açıkken aramalar panelde izlenir, kapalıyken gizli çalışır',
|
|
40
|
+
tipAttach: 'Dosya / resim ekle',
|
|
41
|
+
tipStop: 'Durdur',
|
|
42
|
+
tipSend: 'Gönder',
|
|
43
|
+
tipMic: 'Konuş — sesin yazıya dönsün',
|
|
44
|
+
tipGear: 'Ayarlar',
|
|
45
|
+
tipThemeDark: 'Koyu tema',
|
|
46
|
+
tipThemeLight: 'Açık tema',
|
|
47
|
+
tipLang: 'Dil değiştir / Switch language',
|
|
48
|
+
// kenar çubuğu & paneller
|
|
49
|
+
labelParallel: 'Paralel Ajanlar',
|
|
50
|
+
set_title: 'AYARLAR',
|
|
51
|
+
tab_provider: 'Provider',
|
|
52
|
+
tab_fallout: 'Fallout',
|
|
53
|
+
tab_memory: 'Memory',
|
|
54
|
+
tab_skills: 'Skills',
|
|
55
|
+
tab_notes: 'Oturum Notları',
|
|
56
|
+
tab_history: 'Oturum Geçmişi',
|
|
57
|
+
tab_agents: 'Paralel Ajanlar',
|
|
58
|
+
tab_tts: 'Sesli Yanıt',
|
|
59
|
+
tab_email: 'E-posta',
|
|
60
|
+
tab_integrations: 'Entegrasyonlar',
|
|
61
|
+
tab_websearch: 'Web Arama',
|
|
62
|
+
tab_limits: 'Limit Ayarları',
|
|
63
|
+
tab_security: 'Güvenlik',
|
|
64
|
+
tab_update: 'Güncelleme',
|
|
65
|
+
up_h2: 'Güncelleme',
|
|
66
|
+
up_sub: 'Sürümler GitHub Releases\u2019ten gelir. Otomatik kontrol açılışta ve 6 saatte bir çalışır.',
|
|
67
|
+
up_current: 'Mevcut sürüm',
|
|
68
|
+
up_latest: 'En son sürüm',
|
|
69
|
+
up_status: 'Durum',
|
|
70
|
+
up_checking: 'Kontrol ediliyor…',
|
|
71
|
+
up_available: 'Yeni sürüm var',
|
|
72
|
+
up_uptodate: 'Güncel',
|
|
73
|
+
up_downloading: 'İndiriliyor…',
|
|
74
|
+
up_downloaded: 'İndirildi — kurulum için hazır',
|
|
75
|
+
up_npm_mode: 'npm kurulumu — güncellemeler otomatik kontrol edilir',
|
|
76
|
+
up_npm_note: 'Yeni sürüm algılanınca buton aktifleşir: uygulama kapanır, güncellenir ve kendiliğinden yeniden açılır. Terminal komutu: beast-agent update',
|
|
77
|
+
up_dev_note: 'Geliştirme modu — güncelleme buradan yapılmaz; dağıtım npm ve GitHub Releases üzerinden. Kaynak kod için: git pull',
|
|
78
|
+
up_auto_check: 'Otomatik sürüm kontrolü (açılış + 6 saatte bir)',
|
|
79
|
+
up_auto_dl: 'Yeni sürümü otomatik indir (kapanışta kurulur)',
|
|
80
|
+
up_check_now: 'Şimdi Kontrol Et',
|
|
81
|
+
up_install_now: 'Yeniden Başlat & Kur',
|
|
82
|
+
up_note: 'Kurulumdan sonra uygulama otomatik yeniden başlar. İstersen WhatsApp\u2019tan /update komutunu da kullanabilirsin.',
|
|
83
|
+
tab_events: 'Olay Merkezi',
|
|
84
|
+
tab_cron: 'Cron',
|
|
85
|
+
tab_usage: 'Maliyet',
|
|
86
|
+
tab_logs: 'Log',
|
|
87
|
+
tab_dash: 'Dashboard',
|
|
88
|
+
tab_limits: 'Limit',
|
|
89
|
+
logs_h2: 'Loglar',
|
|
90
|
+
logs_sub: 'Uygulama olayları — son 600 satır. Dosya: %APPDATA%\\beast\\logs',
|
|
91
|
+
logs_clear: 'Logları Temizle',
|
|
92
|
+
logs_refresh: 'Yenile',
|
|
93
|
+
logs_empty: 'Henüz log yok.',
|
|
94
|
+
dash_h2: 'Oturum Geçmişi',
|
|
95
|
+
dash_sub: 'Tüm sohbet oturumları — kod, mesaj sayısı ve zaman',
|
|
96
|
+
dash_stat_sessions: 'Oturum',
|
|
97
|
+
dash_stat_msgs: 'Mesaj',
|
|
98
|
+
dash_stat_today: 'Bugün',
|
|
99
|
+
dash_stat_last: 'Son etkinlik',
|
|
100
|
+
dash_open: 'Aç',
|
|
101
|
+
dash_empty: 'Henüz oturum yok.',
|
|
102
|
+
lim_h2: 'Limit',
|
|
103
|
+
lim_sub: 'Provider bazlı maksimum girdi (prompt) token limiti — model başına gönderilen bağlamı kontrol eder. 0 = limitsiz.',
|
|
104
|
+
lim_enabled: 'Limit aktif',
|
|
105
|
+
lim_compress: 'Bağlam sıkıştırma (limit aşılırsa eski mesajlar özetlenerek çıkarılır)',
|
|
106
|
+
lim_default: 'Varsayılan limit (tüm providerlar, token)',
|
|
107
|
+
lim_prov_h2: 'Provider Limitleri',
|
|
108
|
+
lim_prov_sub: 'Provider adına göre limit — boş/0 ise varsayılan kullanılır',
|
|
109
|
+
lim_save: 'Limitleri Kaydet',
|
|
110
|
+
lim_saved_toast: 'Limitler kaydedildi',
|
|
111
|
+
lim_unlimited: 'limitsiz',
|
|
112
|
+
tf_h2: 'TinyFish Arama',
|
|
113
|
+
tf_sub: 'Ücretsiz, hızlı web arama API\u2019si. Anahtar girilirse web_search zincirinin EN BAŞINDA kullanılır; sonuç yoksa eski zincir (tarayıcı → çoklu-motor → Exa) devam eder.',
|
|
114
|
+
tf_key_label: 'TinyFish API anahtarı (agent.tinyfish.ai/api-keys)',
|
|
115
|
+
tf_status_set: 'TinyFish aktif — kayıtlı anahtar: ',
|
|
116
|
+
tf_status_unset: 'TinyFish pasif — eski arama zinciri kullanılıyor.',
|
|
117
|
+
tf_empty_toast: 'Anahtar boş — mevcut anahtar korundu',
|
|
118
|
+
tf_saved_toast: 'TinyFish anahtarı kaydedildi',
|
|
119
|
+
tf_cleared_toast: 'TinyFish anahtarı silindi',
|
|
120
|
+
btn_close: 'Kapat',
|
|
121
|
+
em_pass_masked: 'Mevcut şifre korunuyor — değiştirmek için yeniden gir',
|
|
122
|
+
p_h2: 'Provider',
|
|
123
|
+
p_sub: 'Beast config.yaml\u2019dan gelen modeller — aktif olanı seç',
|
|
124
|
+
p_del_title: 'Modeli listeden sil',
|
|
125
|
+
p_no_model: 'Model bulunamadı — %APPDATA%\\beast\\config.yaml ve .env kontrol et.',
|
|
126
|
+
p_deleted_h2: 'Silinen Modeller',
|
|
127
|
+
p_deleted_sub: '${n} model listeden çıkarıldı — geri getirebilirsin',
|
|
128
|
+
p_restore: 'Geri Getir',
|
|
129
|
+
p_role_h2: 'Özel Rol Modelleri',
|
|
130
|
+
p_role_sub: 'Vision, Terminal, Coding ve Subagent için ayrı model; boş bırakırsan ana model kullanılır',
|
|
131
|
+
p_role_main: '— Ana model —',
|
|
132
|
+
p_custom_h2: 'Özel Provider',
|
|
133
|
+
p_custom_sub: 'API adres + key ver, modeller otomatik çekilir',
|
|
134
|
+
p_custom_del: 'Sil',
|
|
135
|
+
p_name_opt: 'Ad (opsiyonel)',
|
|
136
|
+
p_api_url: 'API adresi',
|
|
137
|
+
p_api_key: 'API Key',
|
|
138
|
+
p_fetch: 'Modelleri Çek',
|
|
139
|
+
p_models_manual: 'Modelleri elle gir (her satıra bir model adı)',
|
|
140
|
+
p_save: 'Kaydet',
|
|
141
|
+
p_model_toast: 'Model: ',
|
|
142
|
+
p_del_toast: 'Silindi: ',
|
|
143
|
+
p_restore_toast: 'Geri getirildi: ',
|
|
144
|
+
p_prov_del_toast: 'Provider silindi',
|
|
145
|
+
p_fetching: 'çekiliyor…',
|
|
146
|
+
p_no_provider: 'Kayıtlı provider yok — önce Provider sekmesinden bir sağlayıcı ekle.',
|
|
147
|
+
fo_h2: 'Fallout Zinciri',
|
|
148
|
+
fo_enabled: 'Fallout aktif',
|
|
149
|
+
fo_resume: 'Açılışta yarım işi otomatik sürdür',
|
|
150
|
+
fo_count: '${n}/10 kayıt',
|
|
151
|
+
fo_provider_ph: 'provider seç…',
|
|
152
|
+
fo_save: 'Kaydet',
|
|
153
|
+
fo_clear_title: 'Kaydı sil',
|
|
154
|
+
fo_seq: 'Zincir sırası',
|
|
155
|
+
fo_sub: 'Çökme sonrası otomatik kurtarma — model çökerse sıradaki kayda geçer, durum diske yazılır ve kaldığı yerden devam eder. Aynı provider+modeli farklı API key ile birden çok kez ekleyebilirsin.',
|
|
156
|
+
fo_note: 'Sıra önemli: #1 çökerse #2\u0027ye, o da çökerse #3\u0027e… geçilir. Geçişler sohbette <b>☢ FALLOUT</b> durum etiketiyle görünür.',
|
|
157
|
+
mem_h2: 'Memory',
|
|
158
|
+
mem_sub: 'Ajanın kalıcı hafızası — sistem promptuna birebir girer, kısa tut',
|
|
159
|
+
mem_soul: 'SOUL.md — ajanın kişiliği (karakter, ton, davranış kuralları)',
|
|
160
|
+
mem_mem: 'MEMORY.md',
|
|
161
|
+
mem_user: 'USER.md',
|
|
162
|
+
mem_save: 'Kaydet',
|
|
163
|
+
mem_saved: 'Memory kaydedildi — SOUL.md dahil',
|
|
164
|
+
sk_h2: 'Skills',
|
|
165
|
+
sk_sub: 'SKILL.md indeksi — tam metin model tarafından okunur',
|
|
166
|
+
sk_rules_h2: 'Kalıcı Kurallar',
|
|
167
|
+
sk_rules_sub: 'Agent\u2019ın her sohbette uyduğu talimatlar — WA\u2019dan /rule ile de eklenir',
|
|
168
|
+
sk_no_rule: 'Henüz kural yok.',
|
|
169
|
+
sk_rule_ph: 'Yeni kural…',
|
|
170
|
+
sk_rule_add: 'Ekle',
|
|
171
|
+
sk_drafts_h2: 'Taslaklar',
|
|
172
|
+
sk_drafts_sub: 'Uzun işlerden otomatik doğan yetenek adayları — kabul edersen skill olur',
|
|
173
|
+
sk_no_draft: 'Taslak yok — agent\u2019ın 5+ araç kullandığı uzun işlerde otomatik üretilir.',
|
|
174
|
+
sk_dr_accept: 'Skill olarak kur',
|
|
175
|
+
sk_dr_drop: 'Sil',
|
|
176
|
+
sk_open_folder: 'Skills klasörünü aç',
|
|
177
|
+
tts_h2: 'Sesli Yanıt (TTS)',
|
|
178
|
+
tts_sub: 'Açık olursa WhatsApp cevapları metnin yanı sıra sesli not olarak da gönderilir.',
|
|
179
|
+
tts_active: 'Aktif',
|
|
180
|
+
tts_save: 'TTS Kaydet',
|
|
181
|
+
tts_note: 'OpenAI-uyumlu bir speech API kullanır (tts-1, tts-1-hd vb.). Sesler: alloy, echo, fable, onyx, nova, shimmer.',
|
|
182
|
+
tts_on: 'TTS açık — cevaplar sesli de gider',
|
|
183
|
+
tts_off: 'TTS kapalı',
|
|
184
|
+
em_h2: 'E-posta (Gmail)',
|
|
185
|
+
em_sub: 'IMAP/SMTP — Gmail hesabında "Uygulama Şifresi" oluşturup buraya gir. Agent mailleri okur, özetler ve senin adına gönderir.',
|
|
186
|
+
em_save: 'E-posta Kaydet',
|
|
187
|
+
em_note: 'Kaydettikten sonra agent\u2019a "gelen mailleri özetle", "X\u2019e mail at" gibi komutlar verebilirsin.',
|
|
188
|
+
em_saved: 'E-posta kaydedildi — agent artık maillere erişebilir',
|
|
189
|
+
it_h2: 'Entegrasyonlar',
|
|
190
|
+
it_sub: 'Mesajlaşma köprüleri — gelen mesajlar Beast\u2019e gider, cevap geri döner',
|
|
191
|
+
it_wa_sub: 'Özel mesajlar · gruplar (@mention ile) · slash komutları (/help)',
|
|
192
|
+
it_connect: 'QR ile Bağlan',
|
|
193
|
+
it_disconnect: 'Kes',
|
|
194
|
+
it_reset_pair: 'Eşlemeyi Sıfırla',
|
|
195
|
+
it_groups_on: 'WhatsApp gruplarında çalış — bot @mention edilince cevap verir',
|
|
196
|
+
it_groups_all: 'Mention şart değil: grup içindeki her mesaja karış',
|
|
197
|
+
it_allow_label: 'İzinli numaralar',
|
|
198
|
+
it_name_ph: 'İsim (zorunlu)',
|
|
199
|
+
it_num_ph: 'Numara 905xxxxxxxxx',
|
|
200
|
+
it_add: 'Ekle',
|
|
201
|
+
it_allow_note: 'İsim + numara zorunlu. Her kişinin yanındaki serbest/web/okuma/kısıtlı seçimiyle kişiye özel yetki ver.',
|
|
202
|
+
ev_h2: 'Olay Merkezi',
|
|
203
|
+
ev_sub: 'Cron\u2019suz canlı olaylar — kaynakları aç, abonelikleri agent kendisi kurar (event_subscribe). Tetiklenen olay ilgili sohbete düşer, cevap WhatsApp\u2019a gider.',
|
|
204
|
+
ev_on: 'Olay merkezi açık',
|
|
205
|
+
ev_mail: 'Yeni e-posta anlık takip (IMAP IDLE) — E-posta sekmesindeki hesabı kullanır',
|
|
206
|
+
ev_fs: 'Workspace dosya değişimi izleme',
|
|
207
|
+
ev_price_ph: 'Fiyat sembolü (örn PAXGUSDT)',
|
|
208
|
+
ev_save: 'Kaydet',
|
|
209
|
+
ev_price_sub: 'boş sembol = fiyat feed kapalı (Binance miniTicker)',
|
|
210
|
+
ev_token_copy: 'token kopyala',
|
|
211
|
+
ev_subs_h3: 'Aktif Abonelikler',
|
|
212
|
+
ev_no_sub: 'Abonelik yok — agent\u2019a "mail gelince haber ver" ya da "fiyat X altına inerse bağır" de, kendisi kurar.',
|
|
213
|
+
ev_on_toast: 'Olay merkezi açık',
|
|
214
|
+
ev_off_toast: 'Olay merkezi kapandı',
|
|
215
|
+
us_h2: 'Maliyet',
|
|
216
|
+
us_sub: 'Gerçek API kullanımından toplanır. USD tahmini için config.yaml\u2019da provider\u2019a price_in / price_out (1M token) ekle.',
|
|
217
|
+
us_today_calls: 'Bugünkü çağrı',
|
|
218
|
+
us_today_tokens: 'Bugün token',
|
|
219
|
+
us_today_cost: 'Bugün maliyet',
|
|
220
|
+
us_month_cost: 'Bu ay maliyet',
|
|
221
|
+
us_models_today: 'Modeller — bugün',
|
|
222
|
+
us_models_month: 'Modeller — bu ay',
|
|
223
|
+
us_no_records: 'Bu dönemde kayıt yok',
|
|
224
|
+
us_reset: 'Sayaçları sıfırla',
|
|
225
|
+
us_backup_h2: 'Yedekleme',
|
|
226
|
+
us_backup_sub: 'Tüm Beast verisi (ayarlar, API anahtarları, oturumlar, hafıza, WhatsApp eşlemesi) AES-256 ile ŞİFRELİ yedeklenir ve Beast Kodu ile imzalanır: Masaüstü\\Beast-Backups. Yedeği yalnız bu makine geri yükleyebilir.',
|
|
227
|
+
us_backup_now: 'Şimdi yedekle',
|
|
228
|
+
us_where_h2: 'Nerede Kaldım',
|
|
229
|
+
us_where_sub: 'Açılışta son oturumun durumu + yarım kalan todolar sohbete özet olarak düşer.',
|
|
230
|
+
us_where_on: 'Açılışta "nerede kaldım" özeti göster',
|
|
231
|
+
us_no_records: 'Bu dönemde kayıt yok',
|
|
232
|
+
us_reset_toast: 'Kullanım sayaçları sıfırlandı',
|
|
233
|
+
us_backup_ing: 'Yedekleniyor…',
|
|
234
|
+
us_backup_ok: 'Şifreli yedek alındı: Masaüstü\\Beast-Backups',
|
|
235
|
+
us_backup_err: 'Hata: ',
|
|
236
|
+
us_backup_restore: 'Yedekten Geri Yükle',
|
|
237
|
+
us_restore_ing: 'Geri yükleniyor…',
|
|
238
|
+
us_restore_ok: 'Geri yükleme tamamlandı — değişikliklerin oturması için uygulamayı yeniden başlat',
|
|
239
|
+
us_where_on_toast: 'Açılış özeti açık',
|
|
240
|
+
us_where_off_toast: 'Açılış özeti kapandı',
|
|
241
|
+
ws_calls: 'çağrı',
|
|
242
|
+
ws_token: 'token',
|
|
243
|
+
ws_h2: 'Web Arama',
|
|
244
|
+
ws_sub: 'Arama zinciri: 1) dahili tarayıcı (direk Google) 2) python çoklu-motor (ddgs / DDG+Bing+Mojeek) 3) Exa — otomatik. Exa anahtarı yalnızca son çare olarak kullanılır.',
|
|
245
|
+
ws_exa_label: 'Exa API anahtarı (exa.ai)',
|
|
246
|
+
ws_exa_ph: 'masaüstü görünümde maskeli',
|
|
247
|
+
ws_save: 'Kaydet',
|
|
248
|
+
ws_clear: 'Anahtarı Sil',
|
|
249
|
+
ws_note: 'Anahtar maskeli tutulur; yenisini yazıp kaydettiğinde eskisinin yerine geçer. Boş kaydet: mevcut anahtar korunur.',
|
|
250
|
+
ws_status_set: 'Exa aktif — kayıtlı anahtar: ',
|
|
251
|
+
ws_status_unset: 'Exa yapılandırılmadı — ücretsiz python çoklu-motor arama kullanılıyor.',
|
|
252
|
+
ws_empty_toast: 'Anahtar boş — mevcut anahtar korundu',
|
|
253
|
+
ws_saved_toast: 'Exa anahtarı kaydedildi',
|
|
254
|
+
ws_fail_toast: 'Kaydedilemedi',
|
|
255
|
+
ws_cleared_toast: 'Exa anahtarı silindi',
|
|
256
|
+
ag_h2: 'Paralel Ajanlar',
|
|
257
|
+
ag_sub: 'CEO\u2019nun devrettiği arka plan işleri — canlı izleme',
|
|
258
|
+
ag_ceo_label: 'CEO modu — konuşan ajan iş yapmaz, sadece emir verir',
|
|
259
|
+
ag_ceo_on: 'CEO modu açıldı',
|
|
260
|
+
ag_ceo_off: 'CEO modu kapandı',
|
|
261
|
+
ag_no_jobs: 'Henüz devredilmiş iş yok. CEO modunda agent somut işleri buraya düşürür.',
|
|
262
|
+
ag_working: 'çalışıyor',
|
|
263
|
+
ag_records: 'kayıt',
|
|
264
|
+
ag_st_running: 'çalışıyor',
|
|
265
|
+
ag_st_queued: 'kuyrukta',
|
|
266
|
+
ag_st_done: 'bitti',
|
|
267
|
+
ag_st_error: 'hata',
|
|
268
|
+
ag_st_aborted: 'iptal',
|
|
269
|
+
ag_cancel: 'İptal',
|
|
270
|
+
ag_delete: 'Sohbeti ve kaydı sil',
|
|
271
|
+
ag_empty: 'Henüz arka plan işi yok.\nCEO modunda ajan verdiği emirleri buraya düşürür.',
|
|
272
|
+
ag_tool_start: 'araç: ',
|
|
273
|
+
ag_detail: 'Dökümü',
|
|
274
|
+
ag_show: 'göster',
|
|
275
|
+
ag_hide: 'gizle',
|
|
276
|
+
ag_live: 'Canlı döküm',
|
|
277
|
+
ag_log_empty: '(boş)',
|
|
278
|
+
ag_detail_err: '(detay alınamadı)',
|
|
279
|
+
us_reset_toast: 'Kullanım sayaçları sıfırlandı',
|
|
280
|
+
us_backup_ok: 'Yedek alındı: Masaüstü\\Beast-Backups',
|
|
281
|
+
us_where_on_toast: 'Açılış özeti açık',
|
|
282
|
+
us_where_off_toast: 'Açılış özeti kapandı',
|
|
283
|
+
ws_h2: 'Web Arama',
|
|
284
|
+
ws_exa_label: 'Exa API anahtarı (exa.ai)',
|
|
285
|
+
ws_save: 'Kaydet',
|
|
286
|
+
ws_clear: 'Anahtarı Sil',
|
|
287
|
+
ws_key_note: 'Anahtar maskeli tutulur; yenisini yazıp kaydettiğinde eskisinin yerine geçer. Boş kaydet: mevcut anahtar korunur.',
|
|
288
|
+
ws_active: 'Exa aktif — kayıtlı anahtar: ',
|
|
289
|
+
ws_notcfg: 'Exa yapılandırılmadı — ücretsiz python çoklu-motor arama kullanılıyor.',
|
|
290
|
+
ws_empty: 'Anahtar boş — mevcut anahtar korundu',
|
|
291
|
+
// terminal & tarayıcı & mini
|
|
292
|
+
term_clear: 'Temizle',
|
|
293
|
+
term_ph: 'komut yaz, Enter\u2019la çalıştır…',
|
|
294
|
+
term_stop: 'Çalışan komutu durdur',
|
|
295
|
+
bb_ph: 'adres yaz veya ara…',
|
|
296
|
+
tip_bb_back: 'Geri',
|
|
297
|
+
tip_bb_fwd: 'İleri',
|
|
298
|
+
tip_bb_reload: 'Yenile',
|
|
299
|
+
tip_bb_shot: 'Ekran görüntüsünü sohbete ekle',
|
|
300
|
+
tip_bb_open: 'Tarayıcıda aç',
|
|
301
|
+
tip_bb_close: 'Kapat',
|
|
302
|
+
mini_watch: 'İzleyiciler (Watchers)',
|
|
303
|
+
mini_cron: 'Cron Görevler',
|
|
304
|
+
// cron formu
|
|
305
|
+
cron_h2: 'Cron Görevler',
|
|
306
|
+
cron_sub: 'Zamanlanmış görevler — saati gelince agent otomatik çalışır',
|
|
307
|
+
cron_name_ph: 'Görev adı',
|
|
308
|
+
cron_prompt_ph: 'Agent\u2019a verilecek görev…',
|
|
309
|
+
cron_add: '+ Görev Ekle',
|
|
310
|
+
cron_pr_5: 'Her 5 dakika',
|
|
311
|
+
cron_pr_15: 'Her 15 dakika',
|
|
312
|
+
cron_pr_30: 'Her 30 dakika',
|
|
313
|
+
cron_pr_hour: 'Her saat başı',
|
|
314
|
+
cron_pr_day9: 'Her gün 09:00',
|
|
315
|
+
cron_pr_wd21: 'Hafta içi 21:00',
|
|
316
|
+
cron_pr_custom: 'Özel cron…',
|
|
317
|
+
// tarihçe/limit/güvenlik panelleri (dinamik)
|
|
318
|
+
notes_h2: 'Oturum Notları',
|
|
319
|
+
history_h2: 'Oturum Geçmişi',
|
|
320
|
+
limits_h2: 'Limit Ayarları',
|
|
321
|
+
security_h2: 'Güvenlik',
|
|
322
|
+
st_open: 'Aç',
|
|
323
|
+
st_del: 'Sil',
|
|
324
|
+
sec_toggle: 'Tehlikeli işlemlerde onay iste (silme, değiştirme, komut çalıştırma, mail gönderme…)',
|
|
325
|
+
sec_sub: 'Kapalıyken her şey serbesttir (varsayım). Açıkken ajan riskli bir araç çağırmadan önce onay ister: sohbette onay kartı + WhatsApp\u2019a mesaj gider.',
|
|
326
|
+
sec_note: 'Onay: sohbet kartındaki butonlar ya da /approve · Bu araç için bir daha sorma: /approve always · Reddet: /deny',
|
|
327
|
+
sec_always_h2: 'Bir Daha Sorulmayan Araçlar',
|
|
328
|
+
sec_always_empty: 'Henüz "always" onaylı araç yok.',
|
|
329
|
+
sec_clear_always: 'Listeyi Temizle',
|
|
330
|
+
sec_on_toast: 'Onay kapısı AÇIK — riskli işlemlerde ajan sorar',
|
|
331
|
+
sec_off_toast: 'Onay kapısı KAPALI — her şey serbest',
|
|
332
|
+
sec_ok: 'Onayla',
|
|
333
|
+
sec_always: 'Her zaman',
|
|
334
|
+
sec_no: 'Reddet',
|
|
335
|
+
sec_ok_done: 'Onaylandı — devam ediyor',
|
|
336
|
+
sec_always_done: 'Onaylandı — bu araç için tekrar sorulmayacak',
|
|
337
|
+
sec_no_done: 'Reddedildi — ajan bu işlemi yapmadı',
|
|
338
|
+
// dinamik panel metinleri
|
|
339
|
+
prov_h2: 'Provider',
|
|
340
|
+
prov_sub: 'Beast config.yaml\u2019dan gelen modeller — aktif olanı seç',
|
|
341
|
+
notes_sub: 'Uzun konuşmaların özeti — input token tasarrufu için. Silersen agent o oturumun geçmişini notlardan hatırlamaz.',
|
|
342
|
+
notes_clear_all: 'Tüm Notları Temizle',
|
|
343
|
+
notes_empty: 'Henüz not alınmış oturum yok — konuşmalar 14 mesaja ulaşınca özet çıkarılır.',
|
|
344
|
+
notes_del: 'Notu Sil',
|
|
345
|
+
notes_open: 'Sohbeti Aç',
|
|
346
|
+
history_sub: 'Son 100 sohbet — tıklayıp aç, gereksizleri sil.',
|
|
347
|
+
hist_stat_sess: 'Oturum',
|
|
348
|
+
hist_stat_msg: 'Mesaj',
|
|
349
|
+
hist_stat_7d: 'Son 7 gün',
|
|
350
|
+
hist_empty: 'Henüz oturum yok.',
|
|
351
|
+
limits_sub: 'Provider bazlı maksimum input (bağlam) token limiti. Boş = varsayılan bütçe kullanılır. Ör. Groq 8000 token destekliyorsa 8000 yaz — ajan geçmişi bu bütçeye göre sıkıştırır.',
|
|
352
|
+
limits_compr: 'Bağlam sıkıştırma — eski mesajlar öze dönüşünce diskten de düşer (önerilir)',
|
|
353
|
+
limits_save: 'Limitleri Kaydet',
|
|
354
|
+
limits_note: 'Varsayılan input bütçesi: 18.000 token. Limit set edilen provider\u2019da bu değer geçerli olur.',
|
|
355
|
+
limits_empty: 'Model yok — Provider sekmesinden ekle.',
|
|
356
|
+
security_sub: 'Ajanın tehlikeli işlemlerinde onay kapısı. <b>Default kapalıdır</b> — ajan kendi kararına göre çalışır.',
|
|
357
|
+
stt_lang_label: 'Sesli mesaj dili (Whisper STT) · Voice note language',
|
|
358
|
+
stt_lang_sub: 'WA\u2019dan ve 🎤 mikrofondan gelen sesler bu dilde yazıya çevrilir.',
|
|
359
|
+
deleted: 'Silindi',
|
|
360
|
+
st_thinking: 'düşünüyor…',
|
|
361
|
+
st_queued: 'kuyruğa eklendi — iş bitince gider',
|
|
362
|
+
st_transcribing: 'ses yazıya çevriliyor…',
|
|
363
|
+
st_listening: 'dinliyorum… (bitirmek için 🎤)',
|
|
364
|
+
st_screenshot: 'ekran görüntüsü alınıyor…',
|
|
365
|
+
// bot sistemi
|
|
366
|
+
bot_head: 'BOTLAR',
|
|
367
|
+
bot_add: 'Yeni Bot',
|
|
368
|
+
bot_overview: 'Tüm Botlar',
|
|
369
|
+
bot_overview_sub: 'Tüm botların toplam görünümü — bir bota tıklayıp yönet.',
|
|
370
|
+
bot_chats: 'SOHBET GEÇMİŞİ',
|
|
371
|
+
bot_tab_settings: 'Ayarlar',
|
|
372
|
+
bot_tab_memory: 'Memory',
|
|
373
|
+
bot_tab_log: 'Log',
|
|
374
|
+
bot_tab_plugin: 'Plugin',
|
|
375
|
+
bot_tab_watcher: 'Watcher',
|
|
376
|
+
bot_tab_stats: 'İstatistik',
|
|
377
|
+
bot_name: 'Bot adı',
|
|
378
|
+
bot_icon: 'İkon',
|
|
379
|
+
bot_prompt: 'System prompt (kişilik/görev)',
|
|
380
|
+
bot_prompt_ph: 'Bu bot kim, ne yapar, nasıl konuşur…',
|
|
381
|
+
bot_tpl_hint: 'Hazır şablon seç ya da kendi promptunu yaz:',
|
|
382
|
+
bot_tpl_none: '— boş —',
|
|
383
|
+
bot_tpl_acc: 'Muhasebe Botu',
|
|
384
|
+
bot_tpl_sales: 'Satış Botu',
|
|
385
|
+
bot_tpl_support: 'Destek Botu',
|
|
386
|
+
bot_tpl_pm: 'Proje Yönetimi Botu',
|
|
387
|
+
bot_tpl_pick: 'Prompt şablonu seç (numara yaz):',
|
|
388
|
+
bot_tpl_applied: 'Şablon uygulandı — düzenleyip kaydet',
|
|
389
|
+
bot_numbers: 'Bağlı WhatsApp numaraları',
|
|
390
|
+
bot_no_numbers: 'Henüz numara bağlı değil.',
|
|
391
|
+
bot_num_name_ph: 'Kişi adı',
|
|
392
|
+
bot_num_name_req: 'İsim zorunlu',
|
|
393
|
+
bot_num_added: 'Numara whitelist\u2019e eklendi ve bu bota bağlandı',
|
|
394
|
+
bot_num_removed: 'Numara kaldırıldı',
|
|
395
|
+
bot_num_del: 'Bu numarayı whitelist\u2019ten çıkar',
|
|
396
|
+
bot_see: 'Görebilir (diğer botlar)',
|
|
397
|
+
bot_no_other: 'Başka bot yok.',
|
|
398
|
+
bot_perm: 'Yetki seviyesi',
|
|
399
|
+
bot_skills: 'Skill erişimi',
|
|
400
|
+
bot_browser: 'Tarayıcı ayarları',
|
|
401
|
+
bot_ext_browser: 'Dış tarayıcı yetkisi (kullanıcı isterse)',
|
|
402
|
+
bot_def_browser: 'Varsayılan tarayıcı',
|
|
403
|
+
bot_br_dahili: 'Dahili (panel)',
|
|
404
|
+
bot_br_dis: 'Dış tarayıcı',
|
|
405
|
+
bot_ext_cmd: 'Dış tarayıcı komutu',
|
|
406
|
+
bot_browser_note: 'Dahili tarayıcı tüm botlarda varsayılan açıktır; dış tarayıcı yalnız yetkisi olan botlarda kullanılır.',
|
|
407
|
+
bot_save: 'Kaydet',
|
|
408
|
+
bot_save_fail: 'Kaydedilemedi',
|
|
409
|
+
bot_saved: 'Kaydedildi',
|
|
410
|
+
bot_delete: 'Botu Sil',
|
|
411
|
+
bot_confirm_del: '"${n}" silinsin mi? Bağlı numaralar botsuz duruma düşer (Beast\u2019e yönlendirilir).',
|
|
412
|
+
bot_deleted: 'Bot silindi',
|
|
413
|
+
bot_max_toast: 'En fazla ${n} bot olabilir (1 admin + 4 müşteri)',
|
|
414
|
+
bot_name_ph: 'Bot adı (örn: Muhasebe Botu)',
|
|
415
|
+
bot_icon_ph: 'İkon seç (emoji kopyala-yapıştır)',
|
|
416
|
+
bot_created: 'Bot oluşturuldu:',
|
|
417
|
+
bot_mem_sub: 'Bu botun KENDİ hafızası — SOUL (kişilik) · USER (kullanıcı bilgisi) · MEMORY (hafıza kayıtları). Diğer botlardan tamamen izoledir.',
|
|
418
|
+
bot_mem_admin_sub: 'Beast (admin) botun hafızası = GLOBAL Beast hafızası. Sohbetlerde user_write ile USER.md\u2019ye, memory_write ile MEMORY.md\u2019ye kaydettiği her şey burada görünür.',
|
|
419
|
+
bot_mem_ph: 'Bu bota özel kalıcı notlar…',
|
|
420
|
+
bot_mem_saved: 'Bot hafızası kaydedildi',
|
|
421
|
+
bot_log_sub: 'Yetki/ayar değişiklikleri loglanır (yalnız admin görebilir).',
|
|
422
|
+
bot_plugin_sub: 'Aktif plugin\u2019leri seç (değişiklik loglanır).',
|
|
423
|
+
bot_watcher_sub: 'Bu botun oturumlarına bağlı izleyiciler.',
|
|
424
|
+
bot_no_watchers: 'Bu bota ait izleyici yok.',
|
|
425
|
+
bot_stats_sub: 'Bu botun kullanım özeti.',
|
|
426
|
+
bot_stat_numbers: 'Numara',
|
|
427
|
+
bot_stat_sessions: 'Sohbet',
|
|
428
|
+
bot_stat_msgs: 'Mesaj',
|
|
429
|
+
bot_stat_last: 'Son aktivite',
|
|
430
|
+
bot_total: 'TOPLAM',
|
|
431
|
+
bot_no_chats: 'Bu botun henüz sohbeti yok.',
|
|
432
|
+
bot_msg_user: 'KULLANICI',
|
|
433
|
+
bot_bind_title: 'Bu numarayı hangi bot karşılasın?',
|
|
434
|
+
bot_sel_empty: '— bot seçme —',
|
|
435
|
+
bot_switch_hint: 'Tıkla: bu botta çalış · ⚙: yönet',
|
|
436
|
+
bot_switched: 'bottasın — sohbetler bu botun kimliğiyle gider',
|
|
437
|
+
bot_manage: 'Botu yönet',
|
|
438
|
+
bot_paused: 'duraklatılmış',
|
|
439
|
+
bot_add_note: 'Kaydettikten sonra Ayarlar sekmesinden numara bağlayabilir, yetkileri düzenleyebilirsin.',
|
|
440
|
+
bot_create: 'Botu Oluştur',
|
|
441
|
+
bot_cancel: 'Vazgeç',
|
|
442
|
+
bot_name_req: 'Bot adı zorunlu',
|
|
443
|
+
p_preset: 'Hazır sağlayıcı (endpoint otomatik)',
|
|
444
|
+
p_preset_custom: '— elle gir —',
|
|
445
|
+
p_preset_hint: 'Hazır seçersen adres otomatik dolar; sadece API key girip modelleri çek.',
|
|
446
|
+
p_zen_btn: 'Tek Tıkla Model Ekle (OpenCode Zen Free)',
|
|
447
|
+
p_zen_hint: 'Tek tıkla Zen free modelleri kurulur. Anahtar yoksa OpenCode CLI kurulur ve giriş penceresi açılır — giriş bitince modeller otomatik gelir.',
|
|
448
|
+
p_zen_busy: 'Kuruluyor — OpenCode Zen… (giriş penceresini tamamla)',
|
|
449
|
+
p_zen_ok: '${n} free model yüklendi',
|
|
450
|
+
p_zen_skipped: '${n} model yanıt vermedi, listeye alınmadı',
|
|
451
|
+
p_zen_fail: 'Model kurulumu başarısız',
|
|
452
|
+
bot_num_ro_hint: 'Numara ekleme/kişi adı Ayarlar → Entegrasyonlar (WhatsApp izin listesi) üzerinden yapılır; burada yalnızca bağlı numaralar görünür.',
|
|
453
|
+
tipStore: 'Skills Store',
|
|
454
|
+
store_title: 'SKILLS STORE',
|
|
455
|
+
store_tab_trending: 'Trending',
|
|
456
|
+
store_tab_stars: 'Stars',
|
|
457
|
+
store_tab_upload: 'Upload',
|
|
458
|
+
store_sub_upload: 'Skill klasörünü yükle (SKILL.md zorunlu). Tutulursa trende girer, uzun süre popüler kalırsa Stars\u2019a yükselir.',
|
|
459
|
+
store_install: 'İste Kur',
|
|
460
|
+
store_installed: 'Kurulu ✓',
|
|
461
|
+
store_update: 'Güncelle',
|
|
462
|
+
store_installs: 'kurulum',
|
|
463
|
+
store_likes: 'beğeni',
|
|
464
|
+
store_empty_trending: 'Mağaza henüz boş — ilk skill\u2019i sen yükle!',
|
|
465
|
+
store_empty_stars: 'Henüz yıldız skill yok — uzun süre popüler olanlar buraya yükselir.',
|
|
466
|
+
store_offline: 'Topluluk indeksine ulaşılamadı (offline) — yerel kayıtlar gösteriliyor.',
|
|
467
|
+
store_id_label: 'Beast Kimliği',
|
|
468
|
+
store_user_label: 'Kullanıcı adı (benzersiz)',
|
|
469
|
+
store_user_ph: 'örn: batuhan',
|
|
470
|
+
store_user_change: 'Değiştir',
|
|
471
|
+
store_user_saved_note: 'Kullanıcı adı kaydedildi — her yüklemede otomatik kullanılır. Değiştirmek istersen "Değiştir"e bas.',
|
|
472
|
+
store_img_label: 'Kapak resmi (kare, zorunlu)',
|
|
473
|
+
store_img_pick: 'Resim Seç',
|
|
474
|
+
store_img_change: 'Resmi Değiştir',
|
|
475
|
+
store_img_auto: 'Seçtiğin resim otomatik kare kırpılır (256×256).',
|
|
476
|
+
store_img_required: 'Kapak resmi zorunlu — kare kırpılmış bir resim seç',
|
|
477
|
+
store_skill_folder: 'Skill klasörü',
|
|
478
|
+
store_pick_btn: 'Klasör Seç',
|
|
479
|
+
store_none_picked: 'Henüz klasör seçilmedi — SKILL.md içeren bir klasör seç.',
|
|
480
|
+
store_name_label: 'Skill adı',
|
|
481
|
+
store_desc_label: 'Açıklama',
|
|
482
|
+
store_tags_label: 'Etiketler (virgülle, en fazla 4)',
|
|
483
|
+
store_tags_ph: 'örn: finans, ocr, eğitim',
|
|
484
|
+
store_files_label: 'Dosyalar',
|
|
485
|
+
store_commit: 'Mağazaya Yükle',
|
|
486
|
+
store_commit_ok: 'Skill mağazaya yüklendi — Trending listesinde!',
|
|
487
|
+
store_identity_first: 'Önce kullanıcı adı ve avatar belirle, sonra yükle.',
|
|
488
|
+
store_id_save: 'Kaydet',
|
|
489
|
+
store_identity_saved: 'Kimlik kaydedildi',
|
|
490
|
+
store_pick_first: 'Önce SKILL.md içeren bir klasör seç',
|
|
491
|
+
store_mine: 'Yüklediklerin',
|
|
492
|
+
store_mine_empty: 'Henüz yükleme yapmadın.',
|
|
493
|
+
store_share: 'GitHub\u2019da Paylaş (JSON kopyala + issue aç)',
|
|
494
|
+
store_share_ok: 'Skill JSON\u2019ı kopyalandı — açılan issue\u2019ya yapıştır ve gönder',
|
|
495
|
+
store_remove: 'Kaldır',
|
|
496
|
+
store_removed: 'Yükleme kaldırıldı',
|
|
497
|
+
store_install_ok: 'Skill kuruldu — agent artık kullanabilir',
|
|
498
|
+
store_install_fail: 'Kurulum başarısız',
|
|
499
|
+
store_like_ok: 'Beğeni kaydedildi',
|
|
500
|
+
store_login_note: 'Beast Kimliği anonimdir; gerçek Beast Kodun asla paylaşılmaz.',
|
|
501
|
+
},
|
|
502
|
+
en: {
|
|
503
|
+
newChat: '+ New Chat',
|
|
504
|
+
emptyHint: 'Fast · light · capable. What shall we do?',
|
|
505
|
+
composerPh: 'Ask something or give a task… (Enter: send · Shift+Enter: newline · /: commands)',
|
|
506
|
+
tipModel: 'Choose model',
|
|
507
|
+
tipThink: 'Reasoning level',
|
|
508
|
+
tipPickCfg: 'Models shown in picker',
|
|
509
|
+
tipRail: 'Parallel Agents Console',
|
|
510
|
+
tipWatch: 'Watchers',
|
|
511
|
+
tipCron: 'Cron Jobs',
|
|
512
|
+
tip_light: 'Light theme',
|
|
513
|
+
bc_label: 'Beast Code',
|
|
514
|
+
bc_copy: 'Copy',
|
|
515
|
+
bc_copied: 'Copied',
|
|
516
|
+
tipModelRefresh: 'Refresh models (all providers)',
|
|
517
|
+
mr_done: 'Models refreshed',
|
|
518
|
+
tipMic: 'Voice command — speak, it transcribes when you stop',
|
|
519
|
+
mic_listening: 'Listening… press the mic again to finish',
|
|
520
|
+
mic_transcribing: 'Transcribing (local Whisper)…',
|
|
521
|
+
mic_fail: 'Could not detect speech',
|
|
522
|
+
mic_denied: 'Microphone access denied',
|
|
523
|
+
tip_dark: 'Dark theme',
|
|
524
|
+
tipTerm: 'Terminal (PowerShell)',
|
|
525
|
+
tipTermG: 'Git Bash terminal',
|
|
526
|
+
tipTermC: 'CMD terminal',
|
|
527
|
+
tipBrowser: 'Built-in browser',
|
|
528
|
+
tipEye: 'Agent browser visible/hidden — searches are watched in the panel when open, run hidden when closed',
|
|
529
|
+
tipAttach: 'Attach file / image',
|
|
530
|
+
tipStop: 'Stop',
|
|
531
|
+
tipSend: 'Send',
|
|
532
|
+
tipMic: 'Speak — your voice becomes text',
|
|
533
|
+
tipGear: 'Settings',
|
|
534
|
+
tipThemeDark: 'Dark theme',
|
|
535
|
+
tipThemeLight: 'Light theme',
|
|
536
|
+
tipLang: 'Dil değiştir / Switch language',
|
|
537
|
+
labelParallel: 'Parallel Agents',
|
|
538
|
+
set_title: 'SETTINGS',
|
|
539
|
+
tab_provider: 'Provider',
|
|
540
|
+
tab_fallout: 'Fallout',
|
|
541
|
+
tab_memory: 'Memory',
|
|
542
|
+
tab_skills: 'Skills',
|
|
543
|
+
tab_notes: 'Session Notes',
|
|
544
|
+
tab_history: 'Session History',
|
|
545
|
+
tab_agents: 'Parallel Agents',
|
|
546
|
+
tab_tts: 'Voice Reply',
|
|
547
|
+
tab_email: 'E-mail',
|
|
548
|
+
tab_integrations: 'Integrations',
|
|
549
|
+
tab_websearch: 'Web Search',
|
|
550
|
+
tab_limits: 'Limits',
|
|
551
|
+
tab_security: 'Security',
|
|
552
|
+
tab_update: 'Update',
|
|
553
|
+
up_h2: 'Update',
|
|
554
|
+
up_sub: 'Versions come from GitHub Releases. Automatic check runs on startup and every 6 hours.',
|
|
555
|
+
up_current: 'Current version',
|
|
556
|
+
up_latest: 'Latest version',
|
|
557
|
+
up_status: 'Status',
|
|
558
|
+
up_checking: 'Checking…',
|
|
559
|
+
up_available: 'New version available',
|
|
560
|
+
up_uptodate: 'Up to date',
|
|
561
|
+
up_downloading: 'Downloading…',
|
|
562
|
+
up_downloaded: 'Downloaded — ready to install',
|
|
563
|
+
up_npm_mode: 'npm install — updates are checked automatically',
|
|
564
|
+
up_npm_note: 'The button activates when a new version is detected: the app closes, updates and relaunches by itself. Terminal command: beast-agent update',
|
|
565
|
+
up_dev_note: 'Development mode — updates are distributed via npm and GitHub Releases. For source code: git pull',
|
|
566
|
+
up_auto_check: 'Automatic version check (on startup + every 6 hours)',
|
|
567
|
+
up_auto_dl: 'Auto-download new versions (installed on quit)',
|
|
568
|
+
up_check_now: 'Check Now',
|
|
569
|
+
up_install_now: 'Restart & Install',
|
|
570
|
+
up_note: 'The app restarts itself after installing. You can also use the /update command from WhatsApp.',
|
|
571
|
+
tab_events: 'Event Center',
|
|
572
|
+
tab_cron: 'Cron',
|
|
573
|
+
tab_usage: 'Costs',
|
|
574
|
+
tab_logs: 'Logs',
|
|
575
|
+
tab_dash: 'Dashboard',
|
|
576
|
+
tab_limits: 'Limit',
|
|
577
|
+
logs_h2: 'Logs',
|
|
578
|
+
logs_sub: 'Application events — last 600 lines. File: %APPDATA%\\beast\\logs',
|
|
579
|
+
logs_clear: 'Clear Logs',
|
|
580
|
+
logs_refresh: 'Refresh',
|
|
581
|
+
logs_empty: 'No logs yet.',
|
|
582
|
+
dash_h2: 'Session History',
|
|
583
|
+
dash_sub: 'All chat sessions — code, message count and time',
|
|
584
|
+
dash_stat_sessions: 'Sessions',
|
|
585
|
+
dash_stat_msgs: 'Messages',
|
|
586
|
+
dash_stat_today: 'Today',
|
|
587
|
+
dash_stat_last: 'Last activity',
|
|
588
|
+
dash_open: 'Open',
|
|
589
|
+
dash_empty: 'No sessions yet.',
|
|
590
|
+
lim_h2: 'Limit',
|
|
591
|
+
lim_sub: 'Provider-based maximum input (prompt) token limit — controls the context sent per model. 0 = unlimited.',
|
|
592
|
+
lim_enabled: 'Limit active',
|
|
593
|
+
lim_compress: 'Context compression (when over limit, older messages are dropped with a summary note)',
|
|
594
|
+
lim_default: 'Default limit (all providers, tokens)',
|
|
595
|
+
lim_prov_h2: 'Provider Limits',
|
|
596
|
+
lim_prov_sub: 'Limit per provider name — empty/0 uses the default',
|
|
597
|
+
lim_save: 'Save Limits',
|
|
598
|
+
lim_saved_toast: 'Limits saved',
|
|
599
|
+
lim_unlimited: 'unlimited',
|
|
600
|
+
tf_h2: 'TinyFish Search',
|
|
601
|
+
tf_sub: 'Free, fast web search API. If a key is set it is used at the TOP of the web_search chain; otherwise the old chain (browser → multi-engine → Exa) continues.',
|
|
602
|
+
tf_key_label: 'TinyFish API key (agent.tinyfish.ai/api-keys)',
|
|
603
|
+
tf_status_set: 'TinyFish active — saved key: ',
|
|
604
|
+
tf_status_unset: 'TinyFish off — using the old search chain.',
|
|
605
|
+
tf_empty_toast: 'Key empty — current key kept',
|
|
606
|
+
tf_saved_toast: 'TinyFish key saved',
|
|
607
|
+
tf_cleared_toast: 'TinyFish key deleted',
|
|
608
|
+
btn_close: 'Close',
|
|
609
|
+
em_pass_masked: 'Current password kept — type a new one to change it',
|
|
610
|
+
p_h2: 'Provider',
|
|
611
|
+
p_sub: 'Models from Beast config.yaml — pick the active one',
|
|
612
|
+
p_del_title: 'Remove model from list',
|
|
613
|
+
p_no_model: 'No models found — check %APPDATA%\\beast\\config.yaml and .env.',
|
|
614
|
+
p_deleted_h2: 'Deleted Models',
|
|
615
|
+
p_deleted_sub: '${n} model removed from list — you can restore it',
|
|
616
|
+
p_restore: 'Restore',
|
|
617
|
+
p_role_h2: 'Custom Role Models',
|
|
618
|
+
p_role_sub: 'Separate model for Vision, Terminal, Coding and Subagent; leave empty to use the main model',
|
|
619
|
+
p_role_main: '— Main model —',
|
|
620
|
+
p_custom_h2: 'Custom Provider',
|
|
621
|
+
p_custom_sub: 'Provide API URL + key, models are fetched automatically',
|
|
622
|
+
p_custom_del: 'Delete',
|
|
623
|
+
p_name_opt: 'Name (optional)',
|
|
624
|
+
p_api_url: 'API URL',
|
|
625
|
+
p_api_key: 'API Key',
|
|
626
|
+
p_fetch: 'Fetch Models',
|
|
627
|
+
p_models_manual: 'Enter models manually (one per line)',
|
|
628
|
+
p_save: 'Save',
|
|
629
|
+
p_model_toast: 'Model: ',
|
|
630
|
+
p_del_toast: 'Deleted: ',
|
|
631
|
+
p_restore_toast: 'Restored: ',
|
|
632
|
+
p_prov_del_toast: 'Provider deleted',
|
|
633
|
+
p_fetching: 'fetching…',
|
|
634
|
+
p_no_provider: 'No saved provider — add one from the Provider tab first.',
|
|
635
|
+
fo_h2: 'Fallout Chain',
|
|
636
|
+
fo_enabled: 'Fallout active',
|
|
637
|
+
fo_resume: 'Auto-resume unfinished work on startup',
|
|
638
|
+
fo_count: '${n}/10 slots',
|
|
639
|
+
fo_provider_ph: 'select provider…',
|
|
640
|
+
fo_save: 'Save',
|
|
641
|
+
fo_clear_title: 'Delete record',
|
|
642
|
+
fo_seq: 'Chain order',
|
|
643
|
+
fo_sub: 'Automatic recovery after a crash — if a model fails it moves to the next slot, state is written to disk and it resumes where it left off. You can add the same provider+model multiple times with different API keys.',
|
|
644
|
+
fo_note: 'Order matters: if #1 fails it goes to #2, if that fails to #3… Transitions appear in chat tagged with the <b>☢ FALLOUT</b> state label.',
|
|
645
|
+
mem_h2: 'Memory',
|
|
646
|
+
mem_sub: "The agent's persistent memory — goes straight into the system prompt, keep it short",
|
|
647
|
+
mem_soul: 'SOUL.md — agent personality (character, tone, behavior rules)',
|
|
648
|
+
mem_mem: 'MEMORY.md',
|
|
649
|
+
mem_user: 'USER.md',
|
|
650
|
+
mem_save: 'Save',
|
|
651
|
+
mem_saved: 'Memory saved — including SOUL.md',
|
|
652
|
+
sk_h2: 'Skills',
|
|
653
|
+
sk_sub: 'SKILL.md index — full text is read by the model',
|
|
654
|
+
sk_rules_h2: 'Persistent Rules',
|
|
655
|
+
sk_rules_sub: 'Instructions the agent follows in every chat — also addable via /rule on WA',
|
|
656
|
+
sk_no_rule: 'No rules yet.',
|
|
657
|
+
sk_rule_ph: 'New rule…',
|
|
658
|
+
sk_rule_add: 'Add',
|
|
659
|
+
sk_drafts_h2: 'Drafts',
|
|
660
|
+
sk_drafts_sub: 'Capability candidates auto-born from long tasks — accept to make a skill',
|
|
661
|
+
sk_no_draft: 'No drafts — auto-generated from long tasks where the agent uses 5+ tools.',
|
|
662
|
+
sk_dr_accept: 'Install as skill',
|
|
663
|
+
sk_dr_drop: 'Delete',
|
|
664
|
+
sk_open_folder: 'Open Skills folder',
|
|
665
|
+
tts_h2: 'Voice Reply (TTS)',
|
|
666
|
+
tts_sub: 'When on, WhatsApp replies are also sent as voice notes alongside text.',
|
|
667
|
+
tts_active: 'Active',
|
|
668
|
+
tts_save: 'Save TTS',
|
|
669
|
+
tts_note: 'Uses an OpenAI-compatible speech API (tts-1, tts-1-hd, etc.). Voices: alloy, echo, fable, onyx, nova, shimmer.',
|
|
670
|
+
tts_on: 'TTS on — replies also go as voice',
|
|
671
|
+
tts_off: 'TTS off',
|
|
672
|
+
em_h2: 'E-mail (Gmail)',
|
|
673
|
+
em_sub: 'IMAP/SMTP — create an "App Password" in your Gmail account and enter it here. The agent reads, summarizes and sends mail on your behalf.',
|
|
674
|
+
em_save: 'Save E-mail',
|
|
675
|
+
em_note: 'After saving you can give the agent commands like "summarize incoming mail", "send mail to X".',
|
|
676
|
+
em_saved: 'E-mail saved — the agent can now access mail',
|
|
677
|
+
it_h2: 'Integrations',
|
|
678
|
+
it_sub: 'Messaging bridges — incoming messages go to Beast, replies come back',
|
|
679
|
+
it_wa_sub: 'Private messages · groups (@mention) · slash commands (/help)',
|
|
680
|
+
it_connect: 'Connect via QR',
|
|
681
|
+
it_disconnect: 'Disconnect',
|
|
682
|
+
it_reset_pair: 'Reset pairing',
|
|
683
|
+
it_groups_on: 'Work in WhatsApp groups — bot replies when @mentioned',
|
|
684
|
+
it_groups_all: 'Mention not required: respond to every group message',
|
|
685
|
+
it_allow_label: 'Allowed numbers',
|
|
686
|
+
it_name_ph: 'Name (required)',
|
|
687
|
+
it_num_ph: 'Number 905xxxxxxxxx',
|
|
688
|
+
it_add: 'Add',
|
|
689
|
+
it_allow_note: 'Name + number required. Grant per-person permission (free/web/read/restricted) via the selector next to each.',
|
|
690
|
+
ev_h2: 'Event Center',
|
|
691
|
+
ev_sub: 'Live events without cron — open sources, the agent sets up subscriptions itself (event_subscribe). The triggered event drops into the relevant chat, the reply goes to WhatsApp.',
|
|
692
|
+
ev_on: 'Event center on',
|
|
693
|
+
ev_mail: 'Live e-mail tracking (IMAP IDLE) — uses the account from the E-mail tab',
|
|
694
|
+
ev_fs: 'Workspace file change monitoring',
|
|
695
|
+
ev_price_ph: 'Price symbol (e.g. PAXGUSDT)',
|
|
696
|
+
ev_save: 'Save',
|
|
697
|
+
ev_price_sub: 'empty symbol = price feed off (Binance miniTicker)',
|
|
698
|
+
ev_token_copy: 'copy token',
|
|
699
|
+
ev_subs_h3: 'Active Subscriptions',
|
|
700
|
+
ev_no_sub: 'No subscriptions — tell the agent "notify me on mail" or "shout if price drops below X" and it sets one up.',
|
|
701
|
+
ev_on_toast: 'Event center on',
|
|
702
|
+
ev_off_toast: 'Event center off',
|
|
703
|
+
us_h2: 'Costs',
|
|
704
|
+
us_sub: 'Collected from real API usage. For USD estimate add price_in / price_out (per 1M tokens) per provider in config.yaml.',
|
|
705
|
+
us_today_calls: 'Today calls',
|
|
706
|
+
us_today_tokens: 'Today tokens',
|
|
707
|
+
us_today_cost: "Today cost",
|
|
708
|
+
us_month_cost: 'This month cost',
|
|
709
|
+
us_models_today: 'Models — today',
|
|
710
|
+
us_models_month: 'Models — this month',
|
|
711
|
+
us_no_records: 'No records this period',
|
|
712
|
+
us_reset: 'Reset counters',
|
|
713
|
+
us_backup_h2: 'Backup',
|
|
714
|
+
us_backup_sub: 'All Beast data (settings, API keys, sessions, memory, WhatsApp mapping) is backed up AES-256 ENCRYPTED and signed with the Beast Code: Desktop\\Beast-Backups. Only this machine can restore it.',
|
|
715
|
+
us_backup_now: 'Backup now',
|
|
716
|
+
us_where_h2: 'Where I Left Off',
|
|
717
|
+
us_where_sub: 'On startup, a summary of the last session state + unfinished todos drops into the chat.',
|
|
718
|
+
us_where_on: 'Show "where I left off" summary on startup',
|
|
719
|
+
us_no_records: 'No records this period',
|
|
720
|
+
us_reset_toast: 'Usage counters reset',
|
|
721
|
+
us_backup_ing: 'Backing up…',
|
|
722
|
+
us_backup_ok: 'Encrypted backup saved: Desktop\\Beast-Backups',
|
|
723
|
+
us_backup_err: 'Error: ',
|
|
724
|
+
us_backup_restore: 'Restore from Backup',
|
|
725
|
+
us_restore_ing: 'Restoring…',
|
|
726
|
+
us_restore_ok: 'Restore complete — restart the app to apply',
|
|
727
|
+
us_where_on_toast: 'Startup summary on',
|
|
728
|
+
us_where_off_toast: 'Startup summary off',
|
|
729
|
+
ws_calls: 'calls',
|
|
730
|
+
ws_token: 'tokens',
|
|
731
|
+
ws_h2: 'Web Search',
|
|
732
|
+
ws_sub: 'Search chain: 1) built-in browser (direct Google) 2) python multi-engine (ddgs / DDG+Bing+Mojeek) 3) Exa — automatic. The Exa key is only used as a last resort.',
|
|
733
|
+
ws_exa_label: 'Exa API key (exa.ai)',
|
|
734
|
+
ws_exa_ph: 'masked on desktop view',
|
|
735
|
+
ws_save: 'Save',
|
|
736
|
+
ws_clear: 'Delete Key',
|
|
737
|
+
ws_note: 'The key is kept masked; saving a new one replaces the old. Saving empty keeps the current key.',
|
|
738
|
+
ws_status_set: 'Exa active — saved key: ',
|
|
739
|
+
ws_status_unset: 'Exa not configured — using free python multi-engine search.',
|
|
740
|
+
ws_empty_toast: 'Key empty — current key kept',
|
|
741
|
+
ws_saved_toast: 'Exa key saved',
|
|
742
|
+
ws_fail_toast: 'Could not save',
|
|
743
|
+
ws_cleared_toast: 'Exa key deleted',
|
|
744
|
+
ag_h2: 'Parallel Agents',
|
|
745
|
+
ag_sub: 'Background tasks delegated by the CEO — live monitoring',
|
|
746
|
+
ag_ceo_label: 'CEO mode — the talking agent does no work, only gives orders',
|
|
747
|
+
ag_ceo_on: 'CEO mode on',
|
|
748
|
+
ag_ceo_off: 'CEO mode off',
|
|
749
|
+
ag_no_jobs: 'No delegated tasks yet. In CEO mode the agent drops concrete work here.',
|
|
750
|
+
ag_working: 'running',
|
|
751
|
+
ag_records: 'records',
|
|
752
|
+
ag_st_running: 'running',
|
|
753
|
+
ag_st_queued: 'queued',
|
|
754
|
+
ag_st_done: 'done',
|
|
755
|
+
ag_st_error: 'error',
|
|
756
|
+
ag_st_aborted: 'aborted',
|
|
757
|
+
ag_cancel: 'Cancel',
|
|
758
|
+
ag_delete: 'Delete chat and record',
|
|
759
|
+
ag_empty: 'No background tasks yet.\nIn CEO mode the agent drops the orders it gave here.',
|
|
760
|
+
ag_tool_start: 'tool: ',
|
|
761
|
+
ag_detail: 'Log',
|
|
762
|
+
ag_show: 'show',
|
|
763
|
+
ag_hide: 'hide',
|
|
764
|
+
ag_live: 'Live log',
|
|
765
|
+
ag_log_empty: '(empty)',
|
|
766
|
+
ag_detail_err: '(could not get details)',
|
|
767
|
+
cr_empty: 'No tasks yet — add from above.',
|
|
768
|
+
cr_dot_on: 'active — click: fill the form',
|
|
769
|
+
cr_dot_off: 'off — click: fill the form',
|
|
770
|
+
cr_next: 'next: ',
|
|
771
|
+
cr_last: ' · last: ',
|
|
772
|
+
cr_run: 'Run now',
|
|
773
|
+
cr_pause: 'Pause',
|
|
774
|
+
cr_start: 'Start',
|
|
775
|
+
cr_del: 'Delete',
|
|
776
|
+
cr_modal_empty: 'No saved cron tasks — add from Settings → Cron tab.',
|
|
777
|
+
cr_ran: 'Started',
|
|
778
|
+
cr_toggle_pause: 'Pause',
|
|
779
|
+
w_empty: 'No saved watchers — add from the form above.',
|
|
780
|
+
wa_vazgec: 'Cancel',
|
|
781
|
+
wa_kaydet: 'save',
|
|
782
|
+
wa_updated: 'Updated',
|
|
783
|
+
wa_isim_ph: 'name',
|
|
784
|
+
wa_numara_ph: 'number',
|
|
785
|
+
wa_no_name_title: 'This person will NOT get replies — click to give a name',
|
|
786
|
+
wa_edit_title: 'Click: edit name/number',
|
|
787
|
+
wa_perm_title: 'Permission level — sets this person\u2019s agent access',
|
|
788
|
+
wa_owner_title_on: 'This person is the OWNER of BEAST — click to transfer to someone else',
|
|
789
|
+
wa_owner_title_off: 'Click: make this person the OWNER (only one allowed)',
|
|
790
|
+
wa_owner_on: '👑 owner',
|
|
791
|
+
wa_owner_off: 'make owner',
|
|
792
|
+
wa_perm_all: 'free',
|
|
793
|
+
wa_perm_read: 'read',
|
|
794
|
+
wa_perm_chat: 'restricted',
|
|
795
|
+
wa_queue_info: 'Message queue: ${n} pending',
|
|
796
|
+
wa_queue_failed: '${n} could not be sent',
|
|
797
|
+
wa_queue_empty_ok: 'Queue clear',
|
|
798
|
+
cr_empty: 'Henüz görev yok — yukarıdan ekle.',
|
|
799
|
+
cr_dot_on: 'aktif — tıkla: forma doldur',
|
|
800
|
+
cr_dot_off: 'kapalı — tıkla: forma doldur',
|
|
801
|
+
cr_next: 'sıradaki: ',
|
|
802
|
+
cr_last: ' · son: ',
|
|
803
|
+
cr_run: 'Şimdi çalıştır',
|
|
804
|
+
cr_pause: 'Durdur',
|
|
805
|
+
cr_start: 'Başlat',
|
|
806
|
+
cr_del: 'Sil',
|
|
807
|
+
cr_modal_empty: 'Kayıtlı cron görev yok — Ayarlar → Cron sekmesinden ekle.',
|
|
808
|
+
cr_ran: 'Çalıştırıldı',
|
|
809
|
+
cr_toggle_pause: 'Duraklat',
|
|
810
|
+
w_empty: 'Kayıtlı izleyici yok — yukarıdaki formla ekle.',
|
|
811
|
+
wa_vazgec: 'Vazgeç',
|
|
812
|
+
wa_kaydet: 'kaydet',
|
|
813
|
+
wa_updated: 'Güncellendi',
|
|
814
|
+
wa_isim_ph: 'isim',
|
|
815
|
+
wa_numara_ph: 'numara',
|
|
816
|
+
wa_no_name_title: 'Bu kişiye cevap VERİLMEYECEK — tıklayıp isim ver',
|
|
817
|
+
wa_edit_title: 'Tıkla: isim/numara düzenle',
|
|
818
|
+
wa_perm_title: 'Yetki seviyesi — bu kişinin agent erişimini belirler',
|
|
819
|
+
wa_owner_title_on: 'Bu kişi BEAST\u2019İN SAHİBİ — tıklayıp başka kişiye devret',
|
|
820
|
+
wa_owner_title_off: 'Tıkla: bu kişiyi SAHİP yap (yalnız biri olabilir)',
|
|
821
|
+
wa_owner_on: '👑 sahip',
|
|
822
|
+
wa_owner_off: 'sahip yap',
|
|
823
|
+
wa_perm_all: 'serbest',
|
|
824
|
+
wa_perm_read: 'okuma',
|
|
825
|
+
wa_perm_chat: 'kısıtlı',
|
|
826
|
+
wa_queue_info: 'Mesaj kuyruğu: ${n} bekleyen',
|
|
827
|
+
wa_queue_failed: '${n} gönderilemedi',
|
|
828
|
+
wa_queue_empty_ok: 'Kuyruk temiz',
|
|
829
|
+
us_reset_toast: 'Usage counters reset',
|
|
830
|
+
us_backup_ok: 'Backup taken: Desktop\\Beast-Backups',
|
|
831
|
+
us_where_on_toast: 'Startup summary on',
|
|
832
|
+
us_where_off_toast: 'Startup summary off',
|
|
833
|
+
ws_h2: 'Web Search',
|
|
834
|
+
ws_exa_label: 'Exa API key (exa.ai)',
|
|
835
|
+
ws_save: 'Save',
|
|
836
|
+
ws_clear: 'Delete Key',
|
|
837
|
+
ws_key_note: 'Key is kept masked; saving a new one replaces the old. Save empty: existing key kept.',
|
|
838
|
+
ws_active: 'Exa active — saved key: ',
|
|
839
|
+
ws_notcfg: 'Exa not configured — free python multi-engine search is used.',
|
|
840
|
+
ws_empty: 'Key empty — existing key kept',
|
|
841
|
+
term_clear: 'Clear',
|
|
842
|
+
term_ph: 'type a command, press Enter…',
|
|
843
|
+
term_stop: 'Stop running command',
|
|
844
|
+
bb_ph: 'type an address or search…',
|
|
845
|
+
tip_bb_back: 'Back',
|
|
846
|
+
tip_bb_fwd: 'Forward',
|
|
847
|
+
tip_bb_reload: 'Reload',
|
|
848
|
+
tip_bb_shot: 'Add screenshot to chat',
|
|
849
|
+
tip_bb_open: 'Open in browser',
|
|
850
|
+
tip_bb_close: 'Close',
|
|
851
|
+
mini_watch: 'Watchers',
|
|
852
|
+
mini_cron: 'Cron Jobs',
|
|
853
|
+
cron_h2: 'Cron Jobs',
|
|
854
|
+
cron_sub: 'Scheduled tasks — the agent runs automatically when due',
|
|
855
|
+
cron_name_ph: 'Job name',
|
|
856
|
+
cron_prompt_ph: 'Task to give the agent…',
|
|
857
|
+
cron_add: '+ Add Job',
|
|
858
|
+
cron_pr_5: 'Every 5 minutes',
|
|
859
|
+
cron_pr_15: 'Every 15 minutes',
|
|
860
|
+
cron_pr_30: 'Every 30 minutes',
|
|
861
|
+
cron_pr_hour: 'Every hour',
|
|
862
|
+
cron_pr_day9: 'Every day 09:00',
|
|
863
|
+
cron_pr_wd21: 'Weekdays 21:00',
|
|
864
|
+
cron_pr_custom: 'Custom cron…',
|
|
865
|
+
notes_h2: 'Session Notes',
|
|
866
|
+
history_h2: 'Session History',
|
|
867
|
+
limits_h2: 'Limits',
|
|
868
|
+
security_h2: 'Security',
|
|
869
|
+
st_open: 'Open',
|
|
870
|
+
st_del: 'Delete',
|
|
871
|
+
sec_toggle: 'Ask approval for dangerous actions (delete, modify, run commands, send mail…)',
|
|
872
|
+
sec_sub: 'When off, everything is free (default). When on, the agent asks approval before a risky tool call: an approval card in chat + a WhatsApp message.',
|
|
873
|
+
sec_note: 'Approve: chat card buttons or /approve · Never ask again for this tool: /approve always · Deny: /deny',
|
|
874
|
+
sec_always_h2: 'Tools Never Asked Again',
|
|
875
|
+
sec_always_empty: 'No "always" approved tools yet.',
|
|
876
|
+
sec_clear_always: 'Clear List',
|
|
877
|
+
sec_on_toast: 'Approval gate ON — the agent asks before risky actions',
|
|
878
|
+
sec_off_toast: 'Approval gate OFF — everything free',
|
|
879
|
+
sec_ok: 'Approve',
|
|
880
|
+
sec_always: 'Always',
|
|
881
|
+
sec_no: 'Deny',
|
|
882
|
+
sec_ok_done: 'Approved — continuing',
|
|
883
|
+
sec_always_done: 'Approved — will not ask again for this tool',
|
|
884
|
+
sec_no_done: 'Denied — the agent did not perform the action',
|
|
885
|
+
prov_h2: 'Provider',
|
|
886
|
+
prov_sub: 'Models from Beast config.yaml — pick the active one',
|
|
887
|
+
notes_sub: 'Summaries of long conversations — saves input tokens. If deleted, the agent loses session recall.',
|
|
888
|
+
notes_clear_all: 'Clear All Notes',
|
|
889
|
+
notes_empty: 'No session notes yet — summaries are produced after 14 messages.',
|
|
890
|
+
notes_del: 'Delete Note',
|
|
891
|
+
notes_open: 'Open Chat',
|
|
892
|
+
history_sub: 'Last 100 chats — click to open, delete what you do not need.',
|
|
893
|
+
hist_stat_sess: 'Sessions',
|
|
894
|
+
hist_stat_msg: 'Messages',
|
|
895
|
+
hist_stat_7d: 'Last 7 days',
|
|
896
|
+
hist_empty: 'No sessions yet.',
|
|
897
|
+
limits_sub: 'Per-provider maximum input (context) token limit. Empty = default budget. E.g. if Groq supports 8000 tokens, write 8000 — history is compressed to fit.',
|
|
898
|
+
limits_compr: 'Context compression — summarized old messages are also dropped from disk (recommended)',
|
|
899
|
+
limits_save: 'Save Limits',
|
|
900
|
+
limits_note: 'Default input budget: 18,000 tokens. A set limit overrides it for that provider.',
|
|
901
|
+
limits_empty: 'No models — add one in the Provider tab.',
|
|
902
|
+
security_sub: 'Approval gate for the agent\u2019s dangerous actions. <b>Off by default</b> — the agent runs on its own judgment.',
|
|
903
|
+
stt_lang_label: 'Voice note language (Whisper STT) · Sesli mesaj dili',
|
|
904
|
+
stt_lang_sub: 'Voice from WhatsApp and the 🎤 mic is transcribed in this language.',
|
|
905
|
+
deleted: 'Deleted',
|
|
906
|
+
st_thinking: 'thinking…',
|
|
907
|
+
st_queued: 'queued — sent when current task ends',
|
|
908
|
+
st_transcribing: 'transcribing voice…',
|
|
909
|
+
st_listening: 'listening… (tap 🎤 to finish)',
|
|
910
|
+
st_screenshot: 'capturing screen…',
|
|
911
|
+
// bot sistemi
|
|
912
|
+
bot_head: 'BOTS',
|
|
913
|
+
bot_add: 'New Bot',
|
|
914
|
+
bot_overview: 'All Bots',
|
|
915
|
+
bot_overview_sub: 'Overview of all bots — click one to manage.',
|
|
916
|
+
bot_chats: 'CHAT HISTORY',
|
|
917
|
+
bot_tab_settings: 'Settings',
|
|
918
|
+
bot_tab_memory: 'Memory',
|
|
919
|
+
bot_tab_log: 'Log',
|
|
920
|
+
bot_tab_plugin: 'Plugin',
|
|
921
|
+
bot_tab_watcher: 'Watcher',
|
|
922
|
+
bot_tab_stats: 'Stats',
|
|
923
|
+
bot_name: 'Bot name',
|
|
924
|
+
bot_icon: 'Icon',
|
|
925
|
+
bot_prompt: 'System prompt (personality/task)',
|
|
926
|
+
bot_prompt_ph: 'Who is this bot, what does it do, how does it talk…',
|
|
927
|
+
bot_tpl_hint: 'Pick a template or write your own prompt:',
|
|
928
|
+
bot_tpl_none: '— empty —',
|
|
929
|
+
bot_tpl_acc: 'Accounting Bot',
|
|
930
|
+
bot_tpl_sales: 'Sales Bot',
|
|
931
|
+
bot_tpl_support: 'Support Bot',
|
|
932
|
+
bot_tpl_pm: 'Project Management Bot',
|
|
933
|
+
bot_tpl_pick: 'Pick a prompt template (type number):',
|
|
934
|
+
bot_tpl_applied: 'Template applied — edit and save',
|
|
935
|
+
bot_numbers: 'Linked WhatsApp numbers',
|
|
936
|
+
bot_no_numbers: 'No numbers linked yet.',
|
|
937
|
+
bot_num_name_ph: 'Person name',
|
|
938
|
+
bot_num_name_req: 'Name is required',
|
|
939
|
+
bot_num_added: 'Number added to whitelist and linked to this bot',
|
|
940
|
+
bot_num_removed: 'Number removed',
|
|
941
|
+
bot_num_del: 'Remove this number from the whitelist',
|
|
942
|
+
bot_see: 'Can see (other bots)',
|
|
943
|
+
bot_no_other: 'No other bots.',
|
|
944
|
+
bot_perm: 'Permission level',
|
|
945
|
+
bot_skills: 'Skill access',
|
|
946
|
+
bot_browser: 'Browser settings',
|
|
947
|
+
bot_ext_browser: 'External browser permission (when user asks)',
|
|
948
|
+
bot_def_browser: 'Default browser',
|
|
949
|
+
bot_br_dahili: 'Built-in (panel)',
|
|
950
|
+
bot_br_dis: 'External browser',
|
|
951
|
+
bot_ext_cmd: 'External browser command',
|
|
952
|
+
bot_browser_note: 'Built-in browser is on by default for all bots; the external browser is only used by permitted bots.',
|
|
953
|
+
bot_save: 'Save',
|
|
954
|
+
bot_save_fail: 'Could not save',
|
|
955
|
+
bot_saved: 'Saved',
|
|
956
|
+
bot_delete: 'Delete Bot',
|
|
957
|
+
bot_confirm_del: 'Delete "${n}"? Linked numbers become botless (routed to Beast).',
|
|
958
|
+
bot_deleted: 'Bot deleted',
|
|
959
|
+
bot_max_toast: 'Maximum ${n} bots (1 admin + 4 customer)',
|
|
960
|
+
bot_name_ph: 'Bot name (e.g. Accounting Bot)',
|
|
961
|
+
bot_icon_ph: 'Pick an icon (emoji)',
|
|
962
|
+
bot_created: 'Bot created:',
|
|
963
|
+
bot_mem_sub: 'This bot\u2019s OWN memory — SOUL (personality) · USER (user info) · MEMORY (memory entries). Fully isolated from other bots.',
|
|
964
|
+
bot_mem_admin_sub: 'The Beast (admin) bot\u2019s memory = the GLOBAL Beast memory. Everything it saves via user_write (USER.md) or memory_write (MEMORY.md) in chats appears here.',
|
|
965
|
+
bot_mem_ph: 'Persistent notes for this bot only…',
|
|
966
|
+
bot_mem_saved: 'Bot memory saved',
|
|
967
|
+
bot_log_sub: 'Permission/setting changes are logged (admin only).',
|
|
968
|
+
bot_plugin_sub: 'Select active plugins (changes are logged).',
|
|
969
|
+
bot_watcher_sub: 'Watchers linked to this bot\u2019s sessions.',
|
|
970
|
+
bot_no_watchers: 'No watchers for this bot.',
|
|
971
|
+
bot_stats_sub: 'Usage summary for this bot.',
|
|
972
|
+
bot_stat_numbers: 'Numbers',
|
|
973
|
+
bot_stat_sessions: 'Chats',
|
|
974
|
+
bot_stat_msgs: 'Messages',
|
|
975
|
+
bot_stat_last: 'Last activity',
|
|
976
|
+
bot_total: 'TOTAL',
|
|
977
|
+
bot_no_chats: 'This bot has no chats yet.',
|
|
978
|
+
bot_msg_user: 'USER',
|
|
979
|
+
bot_bind_title: 'Which bot should answer this number?',
|
|
980
|
+
bot_sel_empty: '— no bot —',
|
|
981
|
+
bot_switch_hint: 'Click: work as this bot · ⚙: manage',
|
|
982
|
+
bot_switched: 'active — chats run with this bot\u2019s identity',
|
|
983
|
+
bot_manage: 'Manage bot',
|
|
984
|
+
bot_paused: 'paused',
|
|
985
|
+
bot_add_note: 'After creating, link numbers and tune permissions in the Settings tab.',
|
|
986
|
+
bot_create: 'Create Bot',
|
|
987
|
+
bot_cancel: 'Cancel',
|
|
988
|
+
bot_name_req: 'Bot name is required',
|
|
989
|
+
p_preset: 'Built-in provider (endpoint auto-filled)',
|
|
990
|
+
p_preset_custom: '— manual —',
|
|
991
|
+
p_preset_hint: 'Pick a built-in provider to auto-fill the URL; just enter your API key and fetch models.',
|
|
992
|
+
p_zen_btn: 'One-Click Add Models (OpenCode Zen Free)',
|
|
993
|
+
p_zen_hint: 'Installs Zen free models in one click. If no key is found, the OpenCode CLI is installed and a login window opens — models arrive automatically once you finish.',
|
|
994
|
+
p_zen_busy: 'Setting up — OpenCode Zen… (finish the login window)',
|
|
995
|
+
p_zen_ok: '${n} free models installed',
|
|
996
|
+
p_zen_skipped: '${n} models did not respond, excluded',
|
|
997
|
+
p_zen_fail: 'Model setup failed',
|
|
998
|
+
bot_num_ro_hint: 'Add numbers / person names via Settings → Integrations (WhatsApp allow list); only linked numbers are shown here.',
|
|
999
|
+
tipStore: 'Skills Store',
|
|
1000
|
+
store_title: 'SKILLS STORE',
|
|
1001
|
+
store_tab_trending: 'Trending',
|
|
1002
|
+
store_tab_stars: 'Stars',
|
|
1003
|
+
store_tab_upload: 'Upload',
|
|
1004
|
+
store_sub_upload: 'Upload a skill folder (SKILL.md required). If it catches on it enters Trending; long-term popularity promotes it to Stars.',
|
|
1005
|
+
store_install: 'Install',
|
|
1006
|
+
store_installed: 'Installed ✓',
|
|
1007
|
+
store_update: 'Update',
|
|
1008
|
+
store_installs: 'installs',
|
|
1009
|
+
store_likes: 'likes',
|
|
1010
|
+
store_empty_trending: 'The store is empty — be the first to upload a skill!',
|
|
1011
|
+
store_empty_stars: 'No star skills yet — long-time popular ones rise here.',
|
|
1012
|
+
store_offline: 'Community index unreachable (offline) — showing local entries.',
|
|
1013
|
+
store_id_label: 'Beast ID',
|
|
1014
|
+
store_user_label: 'Username (unique)',
|
|
1015
|
+
store_user_ph: 'e.g. batuhan',
|
|
1016
|
+
store_user_change: 'Change',
|
|
1017
|
+
store_user_saved_note: 'Username saved — used automatically on every upload. Press "Change" to edit it.',
|
|
1018
|
+
store_img_label: 'Cover image (square, required)',
|
|
1019
|
+
store_img_pick: 'Choose Image',
|
|
1020
|
+
store_img_change: 'Change Image',
|
|
1021
|
+
store_img_auto: 'The image you pick is auto-cropped to a square (256×256).',
|
|
1022
|
+
store_img_required: 'Cover image is required — pick one (auto square-cropped)',
|
|
1023
|
+
store_skill_folder: 'Skill folder',
|
|
1024
|
+
store_pick_btn: 'Choose Folder',
|
|
1025
|
+
store_none_picked: 'No folder picked yet — choose one containing SKILL.md.',
|
|
1026
|
+
store_name_label: 'Skill name',
|
|
1027
|
+
store_desc_label: 'Description',
|
|
1028
|
+
store_tags_label: 'Tags (comma separated, max 4)',
|
|
1029
|
+
store_tags_ph: 'e.g. finance, ocr, education',
|
|
1030
|
+
store_files_label: 'Files',
|
|
1031
|
+
store_commit: 'Publish to Store',
|
|
1032
|
+
store_commit_ok: 'Skill published — see it in Trending!',
|
|
1033
|
+
store_identity_first: 'Set a username and avatar first, then upload.',
|
|
1034
|
+
store_id_save: 'Save',
|
|
1035
|
+
store_identity_saved: 'Identity saved',
|
|
1036
|
+
store_pick_first: 'First pick a folder containing SKILL.md',
|
|
1037
|
+
store_mine: 'Your uploads',
|
|
1038
|
+
store_mine_empty: 'No uploads yet.',
|
|
1039
|
+
store_share: 'Share on GitHub (copy JSON + open issue)',
|
|
1040
|
+
store_share_ok: 'Skill JSON copied — paste it into the opened issue and submit',
|
|
1041
|
+
store_remove: 'Remove',
|
|
1042
|
+
store_removed: 'Upload removed',
|
|
1043
|
+
store_install_ok: 'Skill installed — the agent can use it now',
|
|
1044
|
+
store_install_fail: 'Install failed',
|
|
1045
|
+
store_like_ok: 'Like saved',
|
|
1046
|
+
store_login_note: 'Your Beast ID is anonymous; your real Beast Code is never shared.',
|
|
1047
|
+
},
|
|
1048
|
+
};
|
|
1049
|
+
|
|
1050
|
+
let lang = 'tr';
|
|
1051
|
+
try { lang = localStorage.getItem('beast.lang') === 'en' ? 'en' : 'tr'; } catch {}
|
|
1052
|
+
|
|
1053
|
+
function t(key) {
|
|
1054
|
+
return (DICT[lang] && DICT[lang][key]) || (DICT.tr && DICT.tr[key]) || key;
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
function apply(root) {
|
|
1058
|
+
const r = root || document;
|
|
1059
|
+
r.querySelectorAll('[data-i18n]').forEach((el) => { el.textContent = t(el.dataset.i18n); });
|
|
1060
|
+
r.querySelectorAll('[data-i18n-ph]').forEach((el) => { el.placeholder = t(el.dataset.i18nPh); });
|
|
1061
|
+
r.querySelectorAll('[data-i18n-title]').forEach((el) => { el.title = t(el.dataset.i18nTitle); });
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
function setLang(l) {
|
|
1065
|
+
lang = DICT[l] ? l : 'tr';
|
|
1066
|
+
try { localStorage.setItem('beast.lang', lang); } catch {}
|
|
1067
|
+
apply(document);
|
|
1068
|
+
try { document.dispatchEvent(new CustomEvent('langchange', { detail: { lang } })); } catch {}
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
window.I18N = { t, apply, setLang, get lang() { return lang; } };
|
|
1072
|
+
apply(document);
|
|
1073
|
+
})();
|