Files
cortiq-gateway/web/js/i18n/tr.js
T
infosave2007 15de36be3b feat: ops & UX batch — jobs survive restarts, logs/system in the console, media queue, gallery, chat, exact stream tokens
Fifteen changes aimed at the first day of real use:

- Import and media jobs persist to <data>/jobs-*.json and reload on start
  (running ones settle as errors); the Register button no longer vanishes
  because the gateway restarted.
- Docker ships the cortiq binary (built in the builder stage) — local .cmf
  chat models and image/video generation now work in containers, where
  auto-install never could (no cargo in the runtime image). libvulkan1 added
  for optional GPU offload.
- Open admin console on 0.0.0.0 without a token now warns in the log and
  shows a dismissible banner — the VPS footgun is at least labeled.
- "Restart gateway" button in Settings: stops managed model servers, spawns
  a fresh copy (bind retried while the port frees), Docker relies on the
  container restart policy instead.
- Dashboard "System" panel: CPU sparkline + load, RAM (with the gateway's
  own RSS), free disk at the models dir — sampled by sysinfo every 2 s.
- Featured model cards warn "not enough disk" / "may not fit in RAM" before
  the download, from the same live snapshot.
- Log viewer in the sidebar: a 500-line in-memory ring fed by a second
  ANSI-free tracing layer; filter, level, pause, copy.
- Update check: crates.io polled twice a day, the console shows an
  "update available" notice.
- Media generations queue up (with position shown) instead of being
  rejected; progress gained an honest ETA from measured throughput.
- Generation gallery under the image/video tabs: lazy PPM thumbnails,
  click to reopen with seed/steps, delete.
- Playground chat is a real dialogue now: history is resent, bubbles,
  Clear, Cmd/Ctrl+Enter.
- "Connect your app" snippets (curl / Python / JS) on the keys page, with
  the real key inlined right after creation.
- One-click benchmark on the Models page via `cortiq bench --json`.
- Config export now downloads the actual gateway.toml (comments intact);
  import accepts TOML (validated, hot-reloaded) and the legacy JSON.
- Streaming token counts are exact when the model server provides usage
  (cortiq-server patch, shipped separately); the gateway fallback now
  counts content chunks (1/token on cortiq) instead of chars/4.

Wizard's Finish lands on the Playground. 37 new strings in all 7 languages.
2026-08-07 17:07:48 +03:00

549 lines
31 KiB
JavaScript
Vendored
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Turkish — tam çeviri; eksik anahtarlar İngilizce'ye geri döner.
export default {
// brand / common
"brand.sub": "Gateway",
"common.loading": "Yükleniyor…",
"common.save": "Kaydet",
"common.saving": "Kaydediliyor…",
"common.cancel": "İptal",
"common.add": "Ekle",
"common.edit": "Düzenle",
"common.delete": "Sil",
"common.close": "Kapat",
"common.test": "Test",
"common.copy": "Kopyala",
"common.copied": "Kopyalandı",
"common.confirm": "Onayla",
"common.none": "yok",
"common.saved": "Kaydedildi",
"common.error": "Hata",
"common.ok": "Tamam",
"common.refresh": "Yenile",
"common.actions": "İşlemler",
"common.optional": "isteğe bağlı",
"common.search": "Ara",
"common.all": "tümü",
// nav
"nav.dashboard": "Pano",
"nav.models": "Modeller",
"nav.routing": "Yönlendirme",
"nav.protocols": "Protokoller",
"nav.keys": "API anahtarları",
"nav.playground": "Oyun alanı",
"nav.settings": "Ayarlar",
"nav.foot": "Gateway · v{v}",
"nav.billing": "Router anahtarı ve ödeme",
// topbar / status
"status.router": "Yönlendirici",
"status.gateway": "Gateway",
"status.online": "çevrimiçi",
"status.offline": "çevrimdışı",
"status.checking": "kontrol ediliyor…",
"status.noKey": "anahtar yok",
"theme.toggle": "Tema",
"logout": "Çıkış yap",
// login
"login.title": "allaigate Gateway",
"login.subtitle": "Bu gateway'i yönetmek için yönetici token'ını girin.",
"login.token": "Yönetici token'ı",
"login.tokenPlaceholder": "yönetici token'ını yapıştırın",
"login.submit": "Konsolu aç",
"login.hint": "Token, başlangıçta gateway günlüğüne yazdırılır veya [admin].token_env ile ayarlanır.",
"login.failed": "Geçersiz yönetici token'ı.",
// dashboard
"dash.title": "Pano",
"dash.subtitle": "Model havuzunuz için canlı trafik, maliyet ve yönlendirme analitiği.",
"dash.range": "Aralık",
"dash.range.1h": "1s",
"dash.range.24h": "24s",
"dash.range.7d": "7g",
"dash.kpi.requests": "İstekler",
"dash.kpi.tokens": "Token'lar",
"dash.kpi.cost": "Maliyet",
"dash.kpi.latency": "Ort. gecikme",
"dash.kpi.success": "Başarı oranı",
"dash.kpi.failovers": "Yedeklemeler",
"dash.series.title": "Zamana göre istekler",
"dash.series.cost": "Zamana göre maliyet",
"dash.series.empty": "Bu aralıkta henüz trafik yok.",
"dash.breakdown.title": "Dağılım",
"dash.groupby.model": "modele göre",
"dash.groupby.tier": "kademeye göre",
"dash.groupby.label": "göreve göre",
"dash.groupby.account": "hesaba göre",
"dash.recent.title": "Son istekler",
"dash.recent.empty": "Henüz kayıtlı istek yok. Oyun alanını deneyin.",
"dash.col.time": "Zaman",
"dash.col.model": "Model",
"dash.col.tier": "Kademe",
"dash.col.task": "Görev",
"dash.col.tokens": "Token'lar",
"dash.col.cost": "Maliyet",
"dash.col.latency": "Gecikme",
"dash.col.outcome": "Sonuç",
"dash.col.requests": "İstekler",
"dash.col.errors": "Hatalar",
"dash.health.title": "Sağlık",
"dash.health.reachable": "erişilebilir",
"dash.health.unreachable": "erişilemiyor",
"dash.health.getKey": "Router anahtarı al",
// models
"models.title": "Modeller",
"models.subtitle": "Model havuzunuz — ucuz yerel modelleri bulut API'leriyle karıştırın.",
"models.add": "Model ekle",
"models.empty": "Henüz model yok. Başlamak için ilk modelinizi ekleyin.",
"models.col.id": "ID",
"models.col.provider": "Sağlayıcı",
"models.col.model": "Model",
"models.col.tier": "Maliyet kademesi",
"models.col.key": "Anahtar",
"models.col.caps": "Yetenekler",
"models.col.price": "Fiyat (giriş/çıkış)",
"models.probe": "Sına",
"models.probe.ok": "Erişilebilir ({ms} ms)",
"models.probe.fail": "Başarısız: {err}",
"models.form.addTitle": "Model ekle",
"models.form.editTitle": "Modeli düzenle",
"models.form.id": "ID",
"models.form.idHint": "Yönlendirmede kullanılan benzersiz id, örn. local-qwen",
"models.form.provider": "Sağlayıcı",
"models.form.baseUrl": "Temel URL",
"models.form.model": "Model adı",
"models.form.kind": "Tür",
"models.form.costTier": "Maliyet kademesi",
"models.form.priceIn": "Giriş fiyatı ($/1M)",
"models.form.priceOut": "Çıkış fiyatı ($/1M)",
"models.form.apiKeyEnv": "API anahtarı ortam değişkeni adı",
"models.form.apiKeyEnvHint": "Bu sağlayıcının anahtarını tutan ortam değişkeni / saklı gizli adı.",
"models.form.caps": "Yetenekler",
"models.form.secret": "Gizli değer",
"models.form.secretStored": "saklandı",
"models.form.secretEnv": "ortamdan",
"models.form.secretMissing": "ayarlanmadı",
"models.form.secretPlaceholder": "anahtarı ayarla veya değiştir (yalnızca yazma)",
"models.deleteConfirm": "\"{id}\" modelini sil?",
// routing
"routing.title": "Yönlendirme",
"routing.subtitle": "Karmaşıklık kademelerini sıralı model listesiyle eşleştirin (öncelik = yedek).",
"routing.default": "Varsayılan model",
"routing.defaultHint": "Yönlendirici erişilemez olduğunda kullanılır.",
"routing.tiers": "Kademeler",
"routing.tierHint": "Sıralamak için çipleri sürükleyin; birincisi tercih edilir, diğerleri yedektir.",
"routing.addModel": "+ ekle",
"routing.addTier": "Kademe ekle",
"routing.tierName": "Kademe adı",
"routing.policy": "İlke",
"routing.policy.mode": "Mod",
"routing.policy.fixed": "Sabit tablo",
"routing.policy.costAware": "Maliyet bilinçli",
"routing.policy.maxCost": "İstek başına maks. maliyet ($)",
"routing.policy.minClass": "Kademe başına minimum sınıf",
"routing.empty": "Kullanılabilir model yok — önce model ekleyin.",
// protocols
"protocols.title": "Protokoller",
"protocols.subtitle": "Yalnızca ihtiyaç duyduğunuz gelen API yüzeylerini etkinleştirin. Geçişler anında uygulanır.",
"protocols.implemented": "uygulandı",
"protocols.planned": "planlandı",
"protocols.openai_chat": "OpenAI Chat Completions",
"protocols.openai_chat.d": "POST /v1/chat/completions — OpenAI SDK, LangChain, crewAI ile çalışır.",
"protocols.openai_completions": "OpenAI Completions (eski)",
"protocols.openai_completions.d": "POST /v1/completions — eski entegrasyonlar.",
"protocols.openai_embeddings": "OpenAI Embeddings",
"protocols.openai_embeddings.d": "POST /v1/embeddings — RAG ardışık düzenleri.",
"protocols.openai_models": "OpenAI Models",
"protocols.openai_models.d": "GET /v1/models — istemci otomatik keşfi.",
"protocols.anthropic_messages": "Anthropic Messages",
"protocols.anthropic_messages.d": "POST /v1/messages — Claude yerel ajanları.",
"protocols.mcp": "MCP (Model Context Protocol)",
"protocols.mcp.d": "JSON-RPC / SSE — MCP yerel orkestratörler.",
"protocols.native_passthrough": "Yerel geçiş",
"protocols.native_passthrough.d": "POST /route — yönlendirme kararına doğrudan erişim.",
// keys
"keys.title": "API anahtarları",
"keys.subtitle": "Ajanlarınız için sanal gateway anahtarları. Sağlayıcı anahtarları gateway'den hiç çıkmaz.",
"keys.add": "Yeni anahtar",
"keys.empty": "Anahtar yapılandırılmadı — gateway açık modda (kimlik doğrulama yok).",
"keys.openMode": "Açık mod: tüm istekler kabul edilir (anahtar gerekmez).",
"keys.col.key": "Anahtar",
"keys.col.account": "Hesap",
"keys.col.rate": "Oran / dak",
"keys.col.models": "İzin verilen modeller",
"keys.form.title": "Yeni API anahtarı",
"keys.form.account": "Hesap",
"keys.form.rate": "Oran sınırı / dak",
"keys.form.allow": "İzin verilen modeller",
"keys.form.allowHint": "Tüm modellere izin vermek için boş bırakın.",
"keys.form.custom": "Özel anahtar (isteğe bağlı)",
"keys.form.customHint": "sk-gw-… otomatik oluşturmak için boş bırakın.",
"keys.created": "Anahtar oluşturuldu — şimdi kopyalayın, bir daha gösterilmeyecek:",
"keys.revoke": "İptal et",
"keys.revokeConfirm": "Bu anahtarı iptal et?",
"keys.allowAll": "tümü",
// playground
"pg.title": "Oyun alanı",
"pg.subtitle": "Canlı ardışık düzen üzerinden istem gönderin ve yönlendirme kararını inceleyin.",
"pg.system": "Sistem istemi",
"pg.systemPlaceholder": "isteğe bağlı sistem mesajı",
"pg.prompt": "İstem",
"pg.promptPlaceholder": "Bir şey sorun…",
"pg.mode": "Mod",
"pg.mode.auto": "Otomatik (yönlendir)",
"pg.mode.pinned": "Sabitlenmiş model",
"pg.profile": "Profil",
"pg.model": "Model",
"pg.temp": "Sıcaklık",
"pg.maxTokens": "Maks. token",
"pg.send": "Gönder",
"pg.stream": "Akış",
"pg.sending": "Gönderiliyor…",
"pg.answer": "Yanıt",
"pg.empty": "Yanıt ve yönlendirme kararı burada görünecek.",
"pg.decision": "Yönlendirme kararı",
"pg.task": "Görev",
"pg.tier": "Kademe",
"pg.score": "Karmaşıklık",
"pg.selected": "Seçilen model",
"pg.source": "Rota kaynağı",
"pg.cost": "Maliyet",
"pg.latency": "Gecikme",
"pg.tokens": "Token'lar (giriş/çıkış)",
"pg.failover": "Yedekleme",
"pg.error": "İstek başarısız",
// settings
"settings.title": "Ayarlar",
"settings.subtitle": "Gateway bağlantısı, yönlendirme girişi, güvenilirlik ve gözlemlenebilirlik.",
"settings.router": "Yönlendirici bağlantısı",
"settings.router.url": "Yönlendirici URL'si",
"settings.router.keyEnv": "Yönlendirici anahtarı ortam değişkeni adı",
"settings.router.timeout": "Zaman aşımı (ms)",
"settings.router.verifyTls": "TLS sertifikasını doğrula",
"settings.router.taxonomy": "Taksonomi id",
"settings.router.getKey": "Router anahtarı almak veya bakiye yüklemek için:",
"settings.router.secret": "Router anahtarı (değer)",
"settings.router.test": "Router'ı test et",
"router.probe.ok": "Router çalışıyor ({ms} ms)",
"router.probe.noKey": "Router anahtarı ayarlanmadı",
"router.probe.auth": "Anahtar reddedildi — geçersiz veya iptal edilmiş",
"router.probe.payment": "Ödeme gerekli — plan süresi doldu veya kota tükendi",
"router.probe.quota": "Hız sınırı aşıldı",
"router.probe.timeout": "Router zaman aşımına uğradı",
"router.probe.unreachable": "Router erişilemiyor",
"router.probe.error": "Router hatası",
"router.usage": "Kullanım",
"settings.route": "Yönlendirme girişi",
"settings.route.strategy": "Metin stratejisi",
"settings.route.maxChars": "Maks. karakter",
"settings.route.cacheTtl": "Önbellek TTL",
"settings.route.profile": "Varsayılan profil",
"settings.breaker": "Devre kesici",
"settings.breaker.threshold": "Hata eşiği",
"settings.breaker.cooldown": "Bekleme süresi",
"settings.log": "Günlükleme",
"settings.log.level": "Günlük seviyesi",
"settings.log.bodies": "Mesaj gövdelerini günlükle (gizlilik kapalı)",
"settings.telemetry": "Telemetri",
"settings.telemetry.metrics": "Prometheus /metrics'i aç",
"settings.cortiq": "Yanıt meta verisi",
"settings.cortiq.echo": "Yanıtlarda cortiq yönlendirme bloğunu yansıt",
"settings.stats": "İstatistikler",
"settings.stats.enabled": "İstek istatistiklerini kaydet",
"settings.stats.file": "İstatistik dosyası (JSONL)",
"settings.stats.retention": "Saklama süresi",
"settings.listen": "Dinleme adresi",
"settings.export": "Yapılandırmayı dışa aktar",
"settings.import": "Yapılandırmayı içe aktar",
"settings.needsRestart": "Kaydedildi. Bazı değişiklikler (dinleme adresi) yeniden başlatma gerektirir.",
// toasts / misc
"toast.saved": "Değişiklikler kaydedildi",
"toast.deleted": "Silindi",
"toast.probing": "Sınanıyor…",
"toast.imported": "Yapılandırma içe aktarıldı",
"dash.cache": "Anlamsal önbellek",
"dash.cache.hitRate": "İsabet oranı",
"dash.cache.hits": "İsabet",
"dash.cache.saved": "Tasarruf",
"dash.cache.disabled": "Anlamsal önbellek kapalı — Ayarlar'dan etkinleştirin.",
"settings.cache": "Anlamsal önbellek",
"settings.cache.enabled": "Anlamsal önbelleği etkinleştir",
"settings.cache.threshold": "Benzerlik eşiği",
"settings.cache.ttl": "Giriş TTL",
"settings.cache.embed": "Gömme modeli",
"settings.cache.note": "Anlamsal önbellek ayarları yeniden başlatmadan sonra geçerli olur.",
// ── translated from en.js (previously falling back to English) ──
// nav
"nav.import": "Model içe aktar",
// dash
"dash.clear": "Günlükleri temizle",
"dash.clearConfirm": "Kaydedilmiş tüm istatistikler ve günlükler silinsin mi? Bu işlem geri alınamaz.",
"dash.cleared": "Günlükler temizlendi",
// models
"models.form.idOrModel": "Bir id ya da model adı girin",
"models.form.apiKey": "API anahtarı",
"models.form.apiKeyPlaceholder": "API anahtarınızı yapıştırın",
"models.form.apiKeyNotNeeded": "gerekmiyor (yerel sunucu)",
"models.form.apiKeyHint": "Ağ geçidinde güvenle saklanır; bir daha gösterilmez.",
"models.form.keyStored": "Kayıtlı bir anahtar var — korumak için boş bırakın ya da yenisini yapıştırın.",
"models.form.keyFromEnv": "Ortam değişkenindeki anahtar kullanılıyor.",
"models.form.paramsTitle": "Üretim ve düşünme parametreleri (O(1), MTP, sıcaklık)",
"models.form.temperature": "Sıcaklık",
"models.form.temperatureHint": "Üretim sıcaklığı (0.0 = belirlenimci, 1.0+ = yaratıcı).",
"models.form.topP": "Top-P (nucleus örnekleme)",
"models.form.topPHint": "Örnekleme eşiği (0.0 .. 1.0).",
"models.form.maxTokens": "Maks. token",
"models.form.maxTokensHint": "Üretilecek en fazla token sayısı.",
"models.form.thinkBudget": "Düşünme modu / düşünme bütçesi",
"models.form.thinkBudgetHint": "Akıl yürütme token bütçesi (0 = kapalı, N > 0 = en fazla akıl yürütme tokeni).",
"models.form.systemPrompt": "Varsayılan sistem istemi",
"models.form.systemPromptHint": "İstekte sistem istemi yoksa otomatik olarak başa eklenir.",
"models.form.systemPromptPlaceholder": "Yardımsever bir asistansın…",
"models.form.testKey": "Test et ve modelleri yükle",
"models.form.testing": "kontrol ediliyor…",
"models.form.foundModels": "{n} model yüklendi",
"models.form.modelPlaceholder": "aramak için yazın…",
"models.form.modelHint": "Anahtarınızla listeyi çekmek için “Test et ve modelleri yükle”ye tıklayın, sonra birini seçin.",
"models.managed": "yönetilen",
"models.managedHint": "Yönetilen CMF sunucusu tarafından sağlanır (Ayarlar → Yerel modeller). Yapılandırmayı orada yapın.",
// settings
"settings.router.enabled": "Yönlendiriciyi kullan (kapalı = yalnızca yerel modeller)",
"settings.cmf": "Yerel modeller (CMF)",
"settings.cmf.localOnly": "Yalnızca yerel modelleri kullan",
"settings.cmf.manage": "Yerel model sunucusu çalıştır",
"settings.cmf.autoInstall": "cortiq'i otomatik kur (crates.io)",
"settings.cmf.autoUpdate": "cortiq'i otomatik güncelle",
"settings.cmf.model": "Yerel .cmf model yolu",
"settings.cmf.port": "Yerel sunucu portu",
"settings.cmf.modelId": "Havuzdaki model id'si",
"settings.cmf.note": "Yerel bir .cmf dosyasını cortiq ile sunar (github.com/infosave2007/cmf). Yönlendirici erişilemez olsa bile çalışır.",
"settings.cmf.threads": "İş parçacıkları",
"settings.cmf.gpu": "GPU kullan (Metal / wgpu)",
"settings.cmf.speedNote": "İş parçacıkları çözme aşamasındaki matris-vektör çarpımlarını paralelleştirir (~3× hızlı; 0 = çalışma zamanı varsayılanı). GPU'ya aktarım daha çok uzun istemlerin prefill aşamasına yarar — çözme bellek bant genişliğine bağlı olduğundan Apple Silicon'da etkisi yaklaşık nötrdür.",
"settings.cmf.pick": "bir model seçin",
"settings.cmf.models": "Yerel modeller",
"settings.cmf.modelsHelp": "Her satır, ağ geçidinin çalıştırdığı (kendi portunda kendi cortiq serve süreci olan) ve havuza kaydettiği bir modeldir. Kaç .cmf dosyanız ve boş portunuz varsa o kadar ekleyebilirsiniz.",
"settings.cmf.rowHint": "id · .cmf dosyası · port · iş parçacığı · GPU. Değişiklikler yeniden başlatınca geçerli olur; satırı silmek o sunucuyu durdurur.",
"settings.cmf.addServer": "+ Yerel model ekle",
"settings.cmf.checkPort": "Portu kontrol et",
"settings.cmf.portFree": "port boş",
"settings.cmf.portBusy": "port kullanımda",
"settings.cmf.useSuggested": "{port} kullan",
"settings.cmf.serving": "{model} :{port} üzerinde sunuluyor",
"settings.cmf.intro": "Modelleri cortiq motoruyla yerelde çalıştırın — çevrimdışıyken ya da yönlendirici çöktüğünde bile çalışır.",
"settings.cmf.runtime": "cortiq çalışma zamanı",
"settings.cmf.runtimeHelp": ".cmf modellerini yükleyip çalıştıran `cortiq` komut satırı aracı. Yerel sunucuyu başlatmadan önce bir kez kurun.",
"settings.cmf.install": "cortiq'i kur",
"settings.cmf.reinstall": "Yeniden kur / güncelle",
"settings.cmf.installing": "kuruluyor… (derleniyor, birkaç dakika)",
"settings.cmf.installedOk": "cortiq kuruldu",
"settings.cmf.notInstalled": "kurulu değil",
"settings.cmf.addModel": "Model ekle",
"settings.cmf.addModelHelp": "Modeller “Model içe aktar” sekmesinde indirilip dönüştürülür (HuggingFace → .cmf). Sonra aşağıdaki yerel sunucuyu o .cmf dosyasına yönlendirin.",
"settings.cmf.importNote": "Henüz model yok mu? Bir tane içe aktarın:",
"settings.cmf.importLink": "İçe aktarmayı aç",
"settings.cmf.modelHelp": "Sunulacak .cmf dosyasının yolu (ör. models/qwen.cmf), içe aktarma sekmesinde üretilir. Farklı görevler için birden çok model mi? Hepsini içe aktarıp bu yolu değiştirin.",
"settings.cmf.portHelp": "Yerel model sunucusunun dinlediği TCP portu (varsayılan 8081). Yalnızca başka bir servisle çakışırsa değiştirin.",
"settings.cmf.threadsHelp": "Üretim için kaç CPU çekirdeği kullanılacağı. Daha fazlası = daha hızlı (tek çekirdeğe göre ~3×); 0 seçimi çalışma zamanına bırakır.",
"settings.cmf.gpuHelp": "Matris hesaplarını GPU'ya aktarır (Metal/wgpu). Apple Silicon'da çoğunlukla uzun istemleri hızlandırır — çözme bellek bant genişliğine bağlıdır.",
"settings.cmf.localOnlyHelp": "Her isteği yerel modele yönlendirir; yönlendiriciyi ve tüm bulut sağlayıcılarını yok sayar.",
"settings.cmf.manageHelp": "Ağ geçidi açılışta aşağıdaki .cmf için `cortiq serve` başlatır ve istekleri oraya yönlendirir. cortiq'in kurulu olması gerekir (adım 1). Yeniden başlatınca geçerli olur.",
"settings.cmf.autoInstallHelp": "Açılışta cortiq yoksa crates.io üzerinden otomatik kurar.",
"settings.cmf.autoUpdateHelp": "Açılışta daha yeni bir sürüm varsa cortiq'i en son sürüme yükseltir.",
"settings.router.enabledHelp": "Her isteği cortiq yönlendiricisi sınıflandırsın (görev türü + karmaşıklık) ve model seçsin. Kapalı = yalnızca yerel yönlendirme tablosunu kullan.",
"settings.router.verifyTlsHelp": "Yönlendiricinin TLS sertifikasını doğrula. Yalnızca kendinden imzalı ya da IP'ye bağlı sertifikada kapatın.",
"settings.telemetry.metricsHelp": "Prometheus metriklerini GET /metrics adresinde yayınla.",
"settings.cortiq.echoHelp": "Her yanıt gövdesine `cortiq` alanı ekle (görev, model, maliyet). Yanıt başlıkları her zaman gönderilir.",
"settings.stats.enabledHelp": "Panoyu ve grafikleri beslemek için son istekleri kaydet.",
"settings.cache.enabledHelp": "Anlamsal önbellek: yeni bir istem geçmiştekine çok benziyorsa kaydedilmiş yanıtı döndürür ve model çağrısını atlar. Havuzda bir gömme (embedding) modeli gerekir.",
"settings.log.bodiesHelp": "İstek/yanıt mesaj gövdelerinin tamamını günlüğe yaz. Gizlilik için varsayılan olarak kapalı.",
"settings.router.saveKey": "Anahtarı kaydet",
"settings.router.keySaved": "Yönlendirici anahtarı kaydedildi",
"settings.router.keyEmpty": "Önce anahtarı yapıştırın",
"settings.router.secretHelp": "api.allaigate.com e-postanızdaki anahtarı yapıştırıp Anahtarı kaydet'e basın. Bu bir “API anahtarları” değeri DEĞİLDİR — onlar ağ geçidinizi çağıran istemciler içindir.",
"settings.router.keyStoredMask": "•••••••••••• — anahtar kayıtlı (değiştirmek için yenisini yapıştırın)",
"settings.route.strategyHelp": "Sınıflandırma için yönlendiriciye gönderilen metin: last_user = yalnızca son kullanıcı mesajı; last_user_plus_system = son kullanıcı mesajı + sistem istemi; concat_all = tüm konuşma.",
"settings.route.maxCharsHelp": "Bu metnin yönlendiriciye gönderilen en fazla karakter sayısı (fazlası kırpılır). Daha fazlası = daha isabetli sınıflandırma, ama daha yavaş ve pahalı yönlendirici çağrıları.",
"settings.route.cacheTtlHelp": "Aynı istek için yönlendirme kararının, yönlendiriciye yeniden sorulmadan önce ne kadar önbellekte tutulacağı (ör. 60s, 5m).",
"settings.route.profileHelp": "İstek belirtmediğinde kullanılacak varsayılan yönlendirme profili: cost-saver (en ucuz), balanced ya da quality-first (en iyi model). Yönlendiricinin hangi modeli seçeceğini etkiler.",
// import
"import.subtitle": "HuggingFace'te arayın, yerel bir .cmf dosyasına dönüştürün ve sunun.",
"import.searchPlaceholder": "HuggingFace modellerinde ara (ör. qwen3, llama)…",
"import.searching": "Aranıyor…",
"import.noResults": "Model bulunamadı.",
"import.configure": "Dönüştürmeyi yapılandır",
"import.outName": "Çıktı adı",
"import.outNameHint": ".cmf dosya adı (harf, rakam, - ve _).",
"import.quant": "Niceleme",
"import.convert": "Dönüştür ve yükle",
"import.converting": "Dönüştürülüyor",
"import.started": "Dönüştürme başladı",
"import.failed": "Dönüştürme başarısız — günlüğe bakın.",
"import.register": "Yerel model olarak kaydet",
"import.registered": "“{id}” olarak kaydedildi. Sunmak için cortiq-server'ı çalıştırın.",
"import.jobs": "İndirmeler ve dönüştürmeler",
"import.cancel": "İptal",
"import.cancelling": "İptal ediliyor — yarım kalan dosya temizleniyor…",
"import.delete": "Sil",
"import.deleteConfirm": "Bu model ve dönüştürülmüş .cmf dosyası diskten silinsin mi?",
"import.deleted": "Dosyalarıyla birlikte silindi",
"import.state.running": "çalışıyor",
"import.state.done": "tamam",
"import.state.error": "hata",
"import.state.cancelled": "iptal edildi",
"import.featuredTitle": "Öne çıkan hazır .cmf modelleri",
"import.featuredSub": "HuggingFace'teki infosave hesabından hazır .cmf modelleri — liste canlı okunur, yeni modeller kendiliğinden görünür.",
"import.readyCmfBadge": "Hazır .cmf",
"import.directDownload": "İndir",
"import.q.q8_2f": "8 bit çift alan (𝒲×θ) — önerilen: en iyi kalite/boyut dengesi.",
"import.q.q8_row": "Satır başına 8 bit — basit ve sağlam.",
"import.q.q4": "4 bit blok — en küçük, kalite daha düşük.",
"import.q.q4_tiled": "4 bit döşeli (Q4_TILED) — Metal GPU'da 1,66× daha hızlı.",
"import.q.vbit": "Değişken 3–8 bit — uzman başına bit bütçesi.",
"import.q.q1t": "1,58 bit üçlü (Q1T) — seyrek aykırı değerlerle BitNet b1.58.",
"import.q.q1s": "1 bit seyrek (Q1S) — holografik aykırı değerlerle 1 bit taban.",
"import.q.q1p": "1 bit PTQ (Q1P) — hata yayılımlı 1 bit.",
"import.q.q1": "1 bit (Q1) — saf ikili biçim.",
"import.q.f16": "16 bit — niceleme yok.",
"import.q.f32": "32 bit — tam hassasiyet (büyük dosya).",
"import.adv.title": "Gelişmiş ayarlar",
"import.adv.auto": "otomatik",
"import.adv.linearCore": "Doğrusal çekirdek",
"import.adv.linearHint": "Doğrusal dikkat katmanlarının nasıl taşındığı/katlandığı.",
"import.adv.nphase": "vmf_phase faz/başlık",
"import.adv.vbitShape": "VBIT bütçe biçimi",
"import.adv.meanBits": "VBIT ortalama bit",
"import.adv.shard": "Parça üst sınırı (GB)",
"import.adv.noShard": "parçalama yok",
"import.adv.skipMtp": "MTP başlığını atla",
"import.adv.o1": "O(1) dikkat",
"import.adv.o1Hint": "Sabit bellekli akış dikkati: KV önbelleği prefill sonrası serbest bırakılır, böylece uzun bağlamlar belleği büyütmez. Ağırlıklar bayt bayt aynı kalır — yalnızca yükleme anına dair bir ipucu kaydedilir; istediğiniz zaman geri dönebilirsiniz (--o1 off ile sunun). Qwen3-0.6B üzerinde doğrulandı: tüm katmanlar ≈ ×1,18 şaşkınlık (perplexity).",
"import.adv.o1Off": "kapalı — tam dikkat (varsayılan)",
"import.adv.o1All": "all — her softmax katmanını dönüştür",
"import.adv.o1Deep": "deep N — yalnızca en derin N katman",
"import.adv.o1Custom": "özel — açık katman listesi",
"import.adv.o1DeepN": "N derin katman",
"import.adv.o1Layers": "Katmanlar (virgülle ayrılmış)",
"import.adv.o1mHint": "landmark bütçesi (varsayılan 32)",
"import.adv.o1windowHint": "tam pencere genişliği (varsayılan 128)",
"import.adv.o1sinkHint": "kalıcı tam sink anahtarları (varsayılan 4)",
// onboarding
"onboarding.title": "İlk kurulum",
"onboarding.welcome": "Cortiq Gateway'e hoş geldiniz",
"onboarding.welcomeSub": "Dilinizi seçin — üst çubuktan istediğiniz zaman değiştirebilirsiniz.",
"onboarding.next": "İleri",
"onboarding.back": "Geri",
"onboarding.skip": "Şimdilik atla",
"onboarding.skipSetup": "Atla",
"onboarding.finish": "Kurulumu tamamla",
"onboarding.featuredTitle": "Hazır modeller (tek tık)",
"onboarding.featuredSub": "Bunlar HuggingFace'te infosave tarafından yayınlanan, önceden dönüştürülmüş .cmf modelleridir — sadece indirin, dönüştürme gerekmez. Hemen başlamak için bir ya da birkaçını seçin.",
"onboarding.download": "İndir",
"onboarding.hfTitle": "Herhangi bir HuggingFace modeli — otomatik dönüştürme",
"onboarding.hfSub": "İstediğiniz modeli arayın, bir niceleme seçin; biz onu otomatik olarak .cmf biçimine dönüştürelim. Elle yapılandırma düzenlemesi yok.",
"onboarding.noJobs": "Henüz indirme yok.",
"onboarding.doneTitle": "Her şey hazır",
"onboarding.doneSub": "İndirdiğiniz modeller otomatik olarak kaydedilir. Daha fazlasını İçe aktar ya da Modeller sekmesinden ekleyebilirsiniz.",
"onboarding.doneHint": "“Kurulumu tamamla”, biten her indirmeyi yerel model olarak bağlar, .cmf sunucusunu başlatır ve yönlendirmeyi ona çevirir. Tümünü sonradan Modeller sekmesinden değiştirebilirsiniz.",
"onboarding.willRegister": "Yerel model olarak bağlanacak",
"onboarding.nothingToRegister": "Henüz tamamlanmış indirme yok — bağlanacak bir şey bulunmuyor. Bir adım geri dönüp model seçin.",
"onboarding.registeredN": "{n} model bağlandı: {ids}",
"onboarding.runtimeMissing": "cortiq çalışma zamanı kurulu değil — bunları sunabilmek için Ayarlar → Yerel modeller bölümünden kurun.",
"onboarding.downloaded": "indirildi",
"onboarding.update": "Güncelle",
"onboarding.deleteFile": ".cmf dosyasını diskten sil",
"onboarding.confirmDelete": "“{id}” silinsin mi? .cmf dosyası diskten kaldırılacak.",
"onboarding.unregistered": "Ayrıca kaydı kaldırıldı: {ids}",
// playground: media generation + streaming metrics
"pg.tab.chat": "Sohbet",
"pg.tab.image": "Görsel",
"pg.tab.video": "Video",
"pg.generate": "Oluştur",
"pg.generating": "Oluşturuluyor…",
"pg.genFailed": "Oluşturma başarısız — günlüğe bakın.",
"pg.result": "Sonuç",
"pg.genMetrics": "Oluşturma metrikleri",
"pg.imagePromptPlaceholder": "gün batımında karda oturan kızıl tilki, fotogerçekçi, ayrıntılı tüyler",
"pg.videoPromptPlaceholder": "aşçı şapkalı bir corgi krep çeviriyor, cızırtı sesleri ve neşeli bir havlama",
"pg.imageEmpty": "Oluşturulan görsel burada görünecek.",
"pg.videoEmpty": "Oluşturulan klip (sesiyle) burada görünecek.",
"pg.width": "Genişlik",
"pg.height": "Yükseklik",
"pg.steps": "Adım",
"pg.seed": "Seed",
"pg.randomSeed": "Rastgele seed",
"pg.cfgHint": "Guidance gücü; ≤ 1 CFG'yi kapatır ve işi yarıya indirir.",
"pg.frames": "Kare",
"pg.framesHint": "24 fps'te; modelin ızgarasına yuvarlanır.",
"pg.quality": "JPEG kalitesi",
"pg.videoSizeHint": "32'nin katları; eğitilen kısa kenar 768.",
"pg.videoStepsHint": "Turbo LoRA 4 adım için eğitildi.",
"pg.firstFrame": "İlk kare (isteğe bağlı)",
"pg.lastFrame": "Son kare (isteğe bağlı)",
"pg.keyframeHint": "Çalışmayı keyframe-to-video'ya çevirir.",
"pg.resolution": "Çözünürlük",
"pg.genTime": "Oluşturma süresi",
"pg.timePerStep": "Adım başına",
"pg.timePerFrame": "Kare başına",
"pg.fileSize": "Dosya boyutu",
"pg.duration": "Süre",
"pg.play": "Oynat",
"pg.noMediaModels": "Henüz yerel bir {kind} modeli yok. İçe aktarma sekmesinden bir tane indirin (ör. infosave koleksiyonundan):",
"pg.tokSpeed": "Hız",
"pg.ttft": "İlk token",
// ops: logs, system, notices, gallery, chat, snippets, bench
"nav.logs": "Günlükler",
"logs.subtitle": "Ağ geçidinin son günlüğü — terminalde görecekleriniz.",
"logs.filterPlaceholder": "filtrele…",
"logs.pause": "Duraklat",
"logs.resume": "Devam et",
"logs.empty": "Eşleşen yok.",
"notice.openAdmin": "Yönetim konsolu belirteçsiz açık ve diğer makinelerden erişilebilir. Bu makine özel değilse bir belirteç ayarlayın.",
"notice.update": "Güncelleme mevcut: v{v}.",
"dash.sys.title": "Sistem",
"dash.sys.cores": "çekirdek",
"dash.sys.disk": "Disk (modeller)",
"dash.sys.free": "boş",
"dash.sys.gateway": "ağ geçidi",
"fit.disk": "disk alanı yetmez",
"fit.diskTitle": "İndirme, model diskindeki boş alandan büyük.",
"fit.ram": "RAM'e sığmayabilir",
"fit.ramTitle": "Model bu makinenin RAM'ine yakın ya da ondan büyük — çalışmayabilir.",
"pg.eta": "kaldı",
"pg.min": "dk",
"pg.queued": "Kuyrukta — {n}. sırada. Mevcut üretim biter bitmez başlar.",
"pg.gallery": "Son üretimler",
"pg.galDeleteConfirm": "Bu üretim ve dosyaları silinsin mi?",
"pg.clearChat": "Temizle",
"keys.snip.title": "Uygulamanı bağla",
"keys.snip.hint": "Örneklerden birini projene yapıştır — yalnızca anahtar yer tutucusunu değiştirmen gerekir.",
"keys.snip.withKey": "Aşağıdaki örnekler az önce oluşturduğun anahtarı içeriyor.",
"keys.snip.openMode": "API anahtarı yapılandırılmadı — ağ geçidi her değeri kabul eder.",
"keys.snip.keyPh": "API anahtarın",
"settings.restart": "Ağ geçidini yeniden başlat",
"settings.restartConfirm": "Ağ geçidi yeniden başlatılsın mı? Devam eden istekler kesilir; yerel model sunucuları da yeniden başlar.",
"settings.restarting": "Yeniden başlatılıyor — ağ geçidi dönünce sayfa yenilenecek…",
"bench.title": "Yerel model hızı",
"bench.hint": "Bu makinede `cortiq bench` çalıştırır — gerçek tok/s, aynı anda tek model.",
"bench.run": "Ölç",
"bench.running": "ölçülüyor…",
"bench.failed": "başarısız",
"bench.none": "Henüz yerel .cmf sohbet modeli yok.",
};