diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4e68782dc..946ac27c3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -147,7 +147,7 @@ Backend (Tauri 2 + Rust) │ ├── config/ # Provider presets per tool (*ProviderPresets.ts), MCP presets │ ├── hooks/ # Custom hooks (business logic) │ ├── lib/api/ # Tauri invoke wrappers (lib/query/ holds the TanStack Query config) -│ ├── i18n/locales/ # UI strings (zh / zh-TW / en / ja) +│ ├── i18n/locales/ # UI strings (zh / zh-TW / en / ja; community: tr) │ ├── icons/ # Provider icons (index is maintained by hand) │ └── types/ utils/ contexts/ ├── src-tauri/ # Backend (Rust) @@ -244,6 +244,8 @@ The CC Switch UI supports four languages: Simplified Chinese, Traditional Chines 2. Use the `t()` function from i18next for all UI text. 3. Never hardcode user-facing strings. +Turkish (`tr.json`) is a community translation and is optional: you do not need to add Turkish strings, and missing ones fall back to English. If you do edit `tr.json`, keep `{{variables}}`, file names, commands, and other technical literals unchanged. The tray's Turkish texts in `src-tauri/src/tray.rs` start from English in the same way. + > Forgetting to update a locale file does not fail the build: the missing strings fall back to English, and if the English file lacks them too, the UI shows the raw key. ## Questions? @@ -402,7 +404,7 @@ Backend (Tauri 2 + Rust) │ ├── config/ # 各工具的供应商预设(*ProviderPresets.ts)、MCP 预设 │ ├── hooks/ # 自定义 hooks(业务逻辑) │ ├── lib/api/ # Tauri invoke 封装(lib/query/ 为 TanStack Query 配置) -│ ├── i18n/locales/ # 界面文案(zh / zh-TW / en / ja) +│ ├── i18n/locales/ # 界面文案(zh / zh-TW / en / ja;社区翻译:tr) │ ├── icons/ # 供应商图标(索引需手工维护) │ └── types/ utils/ contexts/ ├── src-tauri/ # 后端(Rust) @@ -499,6 +501,8 @@ CC Switch 的界面支持简体中文、繁体中文、英文和日文四种语 2. 所有 UI 文本使用 i18next 的 `t()` 函数。 3. 不要硬编码用户可见的字符串。 +土耳其语(`tr.json`)是社区翻译,可以不改:新增文案不必补土耳其语,缺少的会回退显示英文。如果改了 `tr.json`,请保留 `{{变量}}`、文件名、命令等技术字面量不翻译。`src-tauri/src/tray.rs` 里托盘的土耳其语文案同样从英文起步。 + > 漏掉某个语言文件不会导致构建失败:缺少的文案会回退显示英文,英文文件也缺时,界面上会直接显示 key 的字面量。 ## 有疑问? diff --git a/README.md b/README.md index d8a25d8ce..581a2fe64 100644 --- a/README.md +++ b/README.md @@ -411,7 +411,7 @@ For detailed guides on every feature, check out the **[User Manual](docs/user-ma - **CLI tool management** — On the "Apps" page in the sidebar, see the current and latest versions of command-line tools like Claude Code and Codex, install, upgrade, or upgrade all in one click, and diagnose duplicate installations; on Windows it can also manage tools inside WSL (see FAQ) - **Deep Link** (`ccswitch://`) — Import providers, MCP servers, and prompts, or add skill repositories, in one click via a link; create links with the [online generator](https://ccswitch.io/deplink.html); site owners who want an import button can follow the [integration guide](https://github.com/farion1231/cc-switch/blob/main/docs/guides/deeplink-site-integration-guide-en.md) - **Built-in utilities** — Skip Claude Code's first-run confirmation, hide AI attribution, have the VS Code Claude Code extension follow CC Switch's provider switches, and more -- Dark / Light / System theme, auto-launch, auto-updater, atomic writes, auto-backups (see where every backup lives and how much space it takes in "Settings → Data"), i18n (zh/zh-TW/en/ja) +- Dark / Light / System theme, auto-launch, auto-updater, atomic writes, auto-backups (see where every backup lives and how much space it takes in "Settings → Data"), i18n (zh/zh-TW/en/ja, plus community-translated Turkish) ## FAQ diff --git a/README_DE.md b/README_DE.md index 9e94cdbba..e714feb0e 100644 --- a/README_DE.md +++ b/README_DE.md @@ -411,7 +411,7 @@ Ausführliche Anleitungen zu allen Funktionen finden Sie im **[Benutzerhandbuch] - **CLI-Werkzeugverwaltung** — Auf der Seite „Apps“ in der Seitenleiste sehen Sie die installierte und die neueste Version von Kommandozeilenwerkzeugen wie Claude Code und Codex, können sie mit einem Klick installieren, aktualisieren oder alle auf einmal aktualisieren und doppelte Installationen diagnostizieren; unter Windows lassen sich auch Werkzeuge in WSL verwalten (siehe FAQ) - **Deep Link** (`ccswitch://`) — Anbieter, MCP-Server und Prompts per Link mit einem Klick importieren oder Skill-Repositorys hinzufügen; Links lassen sich mit dem [Online-Generator](https://ccswitch.io/deplink.html) erstellen; Website-Betreiber, die einen Import-Button einbauen möchten, finden alles im [Integrationsleitfaden (Englisch)](https://github.com/farion1231/cc-switch/blob/main/docs/guides/deeplink-site-integration-guide-en.md) - **Hilfsprogramme** — Überspringen der Erststart-Bestätigung von Claude Code, Ausblenden der KI-Attribution, Übernahme des in CC Switch gewählten Anbieters durch die Claude-Code-Erweiterung für VS Code und mehr -- Dunkles / Helles / System-Theme, automatischer Start, automatischer Updater, atomare Schreibvorgänge, automatische Backups (unter „Settings → Data“ sehen Sie Speicherort und Platzbedarf aller Backups), i18n (zh/zh-TW/en/ja) +- Dunkles / Helles / System-Theme, automatischer Start, automatischer Updater, atomare Schreibvorgänge, automatische Backups (unter „Settings → Data“ sehen Sie Speicherort und Platzbedarf aller Backups), i18n (zh/zh-TW/en/ja, dazu Türkisch als Community-Übersetzung) ## FAQ diff --git a/README_JA.md b/README_JA.md index 9bdac6792..9f0518bd6 100644 --- a/README_JA.md +++ b/README_JA.md @@ -411,7 +411,7 @@ paru -S cc-switch-bin - **CLI ツール管理** — サイドバーの「アプリ」ページで Claude Code、Codex などのコマンドラインツールの現在のバージョンと最新バージョンを確認し、ワンクリックでインストール、アップグレード、一括アップグレード。重複インストールの診断にも対応。Windows では WSL 内のツールも管理可能(よくある質問を参照) - **Deep Link**(`ccswitch://`)— リンクからプロバイダ、MCP サーバー、プロンプトをワンクリックでインポート、またはスキルリポジトリを追加。リンクは [オンライン生成ツール](https://ccswitch.io/deplink.html) で作成可能。サイトにインポートボタンを置きたい運営者は [連携ガイド](https://github.com/farion1231/cc-switch/blob/main/docs/guides/deeplink-site-integration-guide-ja.md) を参照 - **便利ツール** — Claude Code の初回確認のスキップ、AI 署名の非表示、VS Code の Claude Code 拡張を CC Switch のプロバイダ切り替えに追従させる機能など -- ダーク / ライト / システムテーマ、自動起動、自動アップデーター、アトミック書き込み、自動バックアップ(「設定 → データ」ですべてのバックアップの場所と使用容量を確認可能)、多言語対応(簡体中文/繁體中文/英/日) +- ダーク / ライト / システムテーマ、自動起動、自動アップデーター、アトミック書き込み、自動バックアップ(「設定 → データ」ですべてのバックアップの場所と使用容量を確認可能)、多言語対応(簡体中文/繁體中文/英/日、コミュニティ翻訳のトルコ語) ## よくある質問 diff --git a/README_ZH.md b/README_ZH.md index 27493f9fa..3ba4f73d2 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -412,7 +412,7 @@ paru -S cc-switch-bin - **CLI 工具管理** — 在侧栏的「应用」页查看 Claude Code、Codex 等命令行工具的当前版本和最新版本,一键安装、升级或全部升级,并诊断重复安装;Windows 上还能管理 WSL 里的工具(见常见问题) - **Deep Link**(`ccswitch://`)— 通过链接一键导入供应商、MCP 服务器和提示词,或添加技能仓库。用 [在线生成器](https://ccswitch.io/deplink.html) 生成链接;站长想在网站上放导入按钮,见 [站长接入指南](https://github.com/farion1231/cc-switch/blob/main/docs/guides/deeplink-site-integration-guide-zh.md) - **小工具** — 跳过 Claude Code 初次安装确认、隐藏 AI 署名、让 VS Code 的 Claude Code 插件随本软件切换供应商等 -- 深色 / 浅色 / 跟随系统主题、开机自启、自动更新、原子写入、自动备份(「设置 → 数据」里可以看到所有备份的位置和占用空间)、国际化(简中/繁中/英/日) +- 深色 / 浅色 / 跟随系统主题、开机自启、自动更新、原子写入、自动备份(「设置 → 数据」里可以看到所有备份的位置和占用空间)、国际化(简中/繁中/英/日,另有社区翻译的土耳其语) ## 常见问题 diff --git a/src-tauri/src/commands/config.rs b/src-tauri/src/commands/config.rs index a10a5e9e9..3d616bfd8 100644 --- a/src-tauri/src/commands/config.rs +++ b/src-tauri/src/commands/config.rs @@ -24,6 +24,7 @@ fn invalid_json_format_error(error: serde_json::Error) -> String { match lang.as_str() { "en" => format!("Invalid JSON format: {error}"), + "tr" => format!("Geçersiz JSON biçimi: {error}"), "ja" => format!("JSON形式が無効です: {error}"), _ => format!("无效的 JSON 格式: {error}"), } @@ -36,6 +37,7 @@ fn invalid_toml_format_error(error: toml_edit::TomlError) -> String { match lang.as_str() { "en" => format!("Invalid TOML format: {error}"), + "tr" => format!("Geçersiz TOML biçimi: {error}"), "ja" => format!("TOML形式が無効です: {error}"), _ => format!("无效的 TOML 格式: {error}"), } diff --git a/src-tauri/src/services/provider/usage.rs b/src-tauri/src/services/provider/usage.rs index 9e985cc21..b9f6ac469 100644 --- a/src-tauri/src/services/provider/usage.rs +++ b/src-tauri/src/services/provider/usage.rs @@ -75,7 +75,7 @@ pub(crate) async fn execute_and_format_usage_result( let msg = match err { AppError::Localized { zh, en, .. } => { - if lang == "en" { + if lang == "en" || lang == "tr" { en } else { zh diff --git a/src-tauri/src/settings.rs b/src-tauri/src/settings.rs index 4ab134d6d..6be57fec2 100644 --- a/src-tauri/src/settings.rs +++ b/src-tauri/src/settings.rs @@ -706,7 +706,7 @@ impl AppSettings { .language .as_ref() .map(|s| s.trim()) - .filter(|s| matches!(*s, "en" | "zh" | "zh-TW" | "ja")) + .filter(|s| matches!(*s, "en" | "zh" | "zh-TW" | "ja" | "tr")) .map(|s| s.to_string()); self.quota_display = self diff --git a/src-tauri/src/tray.rs b/src-tauri/src/tray.rs index bf5682dea..c8f612ba5 100644 --- a/src-tauri/src/tray.rs +++ b/src-tauri/src/tray.rs @@ -166,6 +166,8 @@ fn map_locale_to_tray_language(locale: &str) -> &'static str { "zh" } else if locale.starts_with("ja") { "ja" + } else if locale.starts_with("tr") { + "tr" } else if locale.starts_with("en") { "en" } else { @@ -245,6 +247,67 @@ impl TrayTexts { date_format: "%b %-d", quota_used: false, }, + // 土耳其语是社区翻译:从英文起步再覆盖已翻译的项,之后新增的托盘项 + // 在有人翻译前显示英文,而不是让所有改托盘的提交都必须补土耳其语。 + "tr" => { + let mut texts = Self::from_language("en"); + texts.show_main = "CC Switch'i aç"; + texts.open_website = "Resmî web sitesini aç"; + texts.lightweight_mode = "Hafif mod"; + texts.quit = "CC Switch'ten çık"; + texts.quit_stops_routing = "CC Switch'ten çık (yönlendirme hizmeti durur)"; + texts.projects_label = "Projeler"; + texts.no_project_label = "Proje yok"; + texts.header_direct = "Doğrudan"; + texts.header_route = "Yönlendirme"; + texts.header_failover = "Yönlendirme · Yedek sağlayıcıya geçiş açık"; + texts.header_stack = "Birleştirme · Varsayılan sağlayıcı"; + texts.header_stack_default = "Birleştirme · Varsayılan: {name}"; + texts.failover_note = "Kuyruktan otomatik seçilir; uygulama sayfasından değiştirebilirsiniz"; + texts.mode_route = "Yönlendirme"; + texts.mode_stack = "Birleştirme"; + texts.mode_mapping = "Model eşleme"; + texts.needs_routing_suffix = " (yönlendirme gerekir)…"; + texts.official_blocked_suffix = " (resmî abonelikler yönlendirmeyi kullanmaz)"; + texts.mapping_suffix = " · Model eşleme"; + texts.open_app_page = "{app} sayfasını aç"; + texts.add_provider = "Sağlayıcı ekle…"; + texts.almost_out = "bitmek üzere"; + texts.needs_attention = "ilgilenilmesi gerekiyor"; + texts.problem_service_down = "Yönlendirme hizmeti çalışmıyor (port {port})"; + texts.problem_attach_failed = "{app}: {mode} başlangıçta yeniden bağlanamadı; doğrudan bağlantıya dönüldü"; + texts.problem_switch_failed = "{app} geçiş yapamadı: {reason}"; + texts.problem_more = "{count} sorun daha var — görmek için CC Switch'i açın"; + texts.desktop_unavailable = "Yönlendirme hizmeti çalışmıyor; {name} şu anda kullanılamıyor"; + texts.tooltip_problem = "CC Switch · İlgilenilmesi gerekiyor: {problem}"; + texts.feedback_switched = "{app}, {name} sağlayıcısına geçti. Uygulamak için {app} uygulamasını yeniden başlatın"; + texts.feedback_stack_default = "{app} için varsayılan sağlayıcı artık {name}. Uygulamak için {app} uygulamasını yeniden başlatın"; + texts.feedback_profile = "{name} projesi {app} uygulamasına uygulandı"; + texts.tier_five_hour = "5 saatlik"; + texts.tier_weekly = "Haftalık"; + texts.tier_fable = "Fable"; + texts.tier_monthly = "Aylık"; + texts.tier_thirty_day = "30 günlük"; + texts.tier_credits = "Krediler"; + texts.tier_gemini_pro = "Pro"; + texts.tier_gemini_flash = "Flash"; + texts.tier_gemini_flash_lite = "Flash Lite"; + texts.tier_premium = "Premium"; + texts.tier_left = "{label} %{value} kaldı"; + texts.tier_used = "{label} %{value} kullanıldı"; + texts.tier_used_up = "{label} tükendi"; + texts.balance = "Bakiye {value}"; + texts.balance_used_up = "Bakiye tükendi"; + texts.plan_expired = "Planın süresi doldu"; + texts.used_amount = "Kullanılan: {value}"; + texts.quota_failed = "Kota bilgisi alınamıyor"; + texts.quota_failed_login_expired = "Kota bilgisi alınamıyor: oturumun süresi doldu"; + texts.quota_failed_token_refresh_pending = "Kota bilgisi alınamıyor: token yenilenmesi bekleniyor"; + texts.reset_on_date = "{label} kotası {when} tarihinde sıfırlanır"; + texts.reset_at_time = "{label} kotası {when} saatinde sıfırlanır"; + texts.date_format = "%d.%m"; + texts + } "ja" => Self { show_main: "CC Switch を開く", open_website: "公式サイトを開く", @@ -2916,6 +2979,8 @@ mod tests { #[test] fn locale_maps_japanese_and_english() { + assert_eq!(map_locale_to_tray_language("tr-TR"), "tr"); + assert_eq!(map_locale_to_tray_language("tr"), "tr"); assert_eq!(map_locale_to_tray_language("ja-JP"), "ja"); assert_eq!(map_locale_to_tray_language("ja"), "ja"); assert_eq!(map_locale_to_tray_language("en-US"), "en"); @@ -4050,7 +4115,7 @@ mod tests { quit_text(&en(), true), "Quit CC Switch (stops the routing service)" ); - for language in ["zh", "zh-TW", "en", "ja"] { + for language in ["zh", "zh-TW", "en", "ja", "tr"] { let texts = TrayTexts::from_language(language); assert_ne!(texts.quit, texts.quit_stops_routing, "{language}"); assert!( diff --git a/src/components/settings/sections/GeneralSection.tsx b/src/components/settings/sections/GeneralSection.tsx index 57bbc30b0..b11601e24 100644 --- a/src/components/settings/sections/GeneralSection.tsx +++ b/src/components/settings/sections/GeneralSection.tsx @@ -27,6 +27,7 @@ const LANGUAGES: { value: Language; labelKey: string }[] = [ { value: "zh-TW", labelKey: "settings.languageOptionTraditionalChinese" }, { value: "en", labelKey: "settings.languageOptionEnglish" }, { value: "ja", labelKey: "settings.languageOptionJapanese" }, + { value: "tr", labelKey: "settings.languageOptionTurkish" }, ]; interface GeneralSectionProps { diff --git a/src/components/usage/format.ts b/src/components/usage/format.ts index 979377637..d74570474 100644 --- a/src/components/usage/format.ts +++ b/src/components/usage/format.ts @@ -239,6 +239,7 @@ export function getLocaleFromLanguage(language: string): string { } if (normalized.startsWith("zh")) return "zh-CN"; if (normalized.startsWith("ja")) return "ja-JP"; + if (normalized.startsWith("tr")) return "tr-TR"; return "en-US"; } diff --git a/src/hooks/useSettingsForm.ts b/src/hooks/useSettingsForm.ts index 04fee0dc1..12a533b37 100644 --- a/src/hooks/useSettingsForm.ts +++ b/src/hooks/useSettingsForm.ts @@ -3,7 +3,7 @@ import { useTranslation } from "react-i18next"; import { useSettingsQuery } from "@/lib/query"; import type { Settings } from "@/types"; -type Language = "zh" | "zh-TW" | "en" | "ja"; +type Language = "zh" | "zh-TW" | "en" | "ja" | "tr"; export type SettingsFormState = Omit & { language: Language; @@ -26,7 +26,7 @@ const normalizeLanguage = (lang?: string | null): Language => { return "zh-TW"; } - if (normalized === "en" || normalized === "ja") { + if (normalized === "en" || normalized === "ja" || normalized === "tr") { return normalized; } @@ -41,7 +41,10 @@ const isSupportedLanguage = (lang?: string | null): boolean => { if (!lang) return false; const normalized = lang.toLowerCase().replace(/_/g, "-"); return ( - normalized === "en" || normalized === "ja" || normalized.startsWith("zh") + normalized === "en" || + normalized === "ja" || + normalized === "tr" || + normalized.startsWith("zh") ); }; diff --git a/src/i18n/index.ts b/src/i18n/index.ts index 45e8576fa..1558757ae 100644 --- a/src/i18n/index.ts +++ b/src/i18n/index.ts @@ -3,15 +3,20 @@ import { initReactI18next } from "react-i18next"; import en from "./locales/en.json"; import ja from "./locales/ja.json"; +import tr from "./locales/tr.json"; import zh from "./locales/zh.json"; import zhTW from "./locales/zh-TW.json"; -type Language = "zh" | "zh-TW" | "en" | "ja"; +type Language = "zh" | "zh-TW" | "en" | "ja" | "tr"; const DEFAULT_LANGUAGE: Language = "zh"; const isLanguage = (value: unknown): value is Language => - value === "zh" || value === "zh-TW" || value === "en" || value === "ja"; + value === "zh" || + value === "zh-TW" || + value === "en" || + value === "ja" || + value === "tr"; const getInitialLanguage = (): Language => { if (typeof window !== "undefined") { @@ -52,6 +57,10 @@ const getInitialLanguage = (): Language => { return "ja"; } + if (navigatorLang?.startsWith("tr")) { + return "tr"; + } + if (navigatorLang?.startsWith("en")) { return "en"; } @@ -60,6 +69,7 @@ const getInitialLanguage = (): Language => { }; const resources = { + tr: { translation: tr }, en: { translation: en, }, diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 91345dc8d..e405d2080 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -809,6 +809,7 @@ "languageOptionTraditionalChinese": "繁體中文", "languageOptionEnglish": "English", "languageOptionJapanese": "日本語", + "languageOptionTurkish": "Türkçe (community translation)", "windowBehavior": "Window Behavior", "windowBehaviorHint": "Configure window minimize and Claude plugin integration policies.", "launchOnStartup": "Launch on Startup", diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index e44d833a6..7486bdf79 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json @@ -809,6 +809,7 @@ "languageOptionTraditionalChinese": "繁體中文", "languageOptionEnglish": "English", "languageOptionJapanese": "日本語", + "languageOptionTurkish": "Türkçe(コミュニティ翻訳)", "windowBehavior": "ウィンドウ動作", "windowBehaviorHint": "最小化動作や Claude プラグイン連携を設定します。", "launchOnStartup": "起動時に自動実行", diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json new file mode 100644 index 000000000..5a33f1cba --- /dev/null +++ b/src/i18n/locales/tr.json @@ -0,0 +1,4763 @@ +{ + "app": { + "title": "CC Switch", + "description": "Claude Code, Codex ve Gemini CLI için Hepsi Bir Arada Asistan" + }, + "common": { + "unsavedLeaveTitle": "Kaydedilmemiş değişiklikler", + "unsavedLeaveMessage": "Ayrılırsanız bu editör sayfasındaki değişiklikler kaydedilmeyecektir.", + "unsavedLeaveConfirm": "Değişiklikleri at ve ayrıl", + "unsavedLeaveCancel": "Düzenlemeye devam et", + "add": "Ekle", + "edit": "Düzenle", + "delete": "Sil", + "save": "Kaydet", + "saving": "Kaydediliyor...", + "cancel": "İptal", + "confirm": "Onayla", + "close": "Kapat", + "done": "Tamam", + "settings": "Ayarlar", + "about": "Hakkında", + "version": "Sürüm", + "loading": "Yükleniyor...", + "notInstalled": "Kurulu değil", + "success": "Başarı", + "error": "Hata", + "unknown": "Bilinmiyor", + "enterValidValue": "Lütfen geçerli bir değer girin", + "clear": "Temizle", + "format": "Biçim", + "formatSuccess": "Başarıyla biçimlendirildi", + "formatError": "Biçimlendirme başarısız oldu: {{error}}", + "copy": "Kopyala", + "view": "Görüntüle", + "back": "Geri", + "refresh": "Yenile", + "refreshing": "Yenileniyor...", + "import": "İçe aktar", + "all": "Tümü", + "search": "Ara", + "enableAllForApp": "{{app}} için tümünü etkinleştir", + "disableAllForApp": "{{app}} için tümünü devre dışı bırak", + "bulkToggleFailed": "{{count}} öğeleri güncellenemedi", + "reset": "Sıfırla", + "actions": "Eylemler", + "deleting": "Siliniyor...", + "auto": "Otomatik", + "enabled": "Etkin", + "notSet": "Ayarlanmadı", + "collapse": "Daralt", + "more": "Diğer", + "retry": "Yeniden dene", + "required": "gerekli" + }, + "firstRunNotice": { + "title": "CC Switch’e hoş geldiniz", + "bodyDefault": "CC Switch, tek bir tıklamayla birden fazla Claude Code / Codex / Gemini CLI sağlayıcısı arasında geçiş yapmanızı sağlar. Bu araçları zaten yapılandırdıysanız, CC Switch mevcut kurulumunuzu \"varsayılan\" adlı bir sağlayıcı olarak kaydetmiştir, böylece önceki yapılandırmalarınızın hiçbiri kaybolmaz.", + "bodyOfficial": "Listede “Resmî” ön ayarı da bulunur; resmî varsayılan ayarlara dönmek istediğinizde buna tıklayın. CC Switch, geçiş yapmadan önce mevcut yapılandırmanızı “default” olarak yedekler; böylece iki yapılandırma arasında rahatça geçiş yapabilirsiniz. CC Switch böyle çalışır 😊", + "confirm": "Anladım" + }, + "apiKeyInput": { + "placeholder": "API Anahtarını Girin", + "show": "API Anahtarını Göster", + "hide": "API Anahtarını Gizle" + }, + "jsonEditor": { + "mustBeObject": "Yapılandırma bir dizi veya başka türde değil, JSON nesnesi olmalıdır", + "invalidJson": "Geçersiz JSON biçimi" + }, + "claudeConfig": { + "configLabel": "Claude Code settings.json (JSON) *", + "fullSettingsHint": "Tam Claude Code settings.json içeriği", + "hideAttribution": "AI İlişkilendirmesini Gizle", + "hideAttributionHelp": "Claude Code tarafından oluşturulan taahhütler ve PR'ler artık Ortak Yazarın fragmanını veya oturum bağlantısını taşımamaktadır. Global: Her sağlayıcı için geçerlidir.", + "enableToolSearch": "Araç Aramayı Etkinleştir", + "enableToolSearchHelp": "Bağlamdan tasarruf etmek için MCP araç tanımlarını gerektiğinde yükler. Üçüncü taraf uç noktalarında varsayılan olarak kapalıdır; yalnızca sağlayıcı tool_reference destekliyorsa etkinleştirin. Sağlayıcıyla birlikte değişir.", + "disableAutoUpgrade": "Otomatik Yükseltmeyi Devre Dışı Bırak", + "disableAutoUpgradeHelp": "Keeps Claude Code on its current version instead of updating automatically; Gerektiğinde Claude Update'i kendiniz çalıştırın. Küresel.", + "disableArtifact": "Artifact Aracını Devre Dışı Bırak", + "disableArtifactHelp": "Artifact aracını isteklerin dışında bırakır. Bazı üçüncü taraf ağ geçitleri şemasını reddeder ve her istekte 400 değerini döndürür. Sağlayıcıyla geçiş yapar.", + "disableAutoModeServer": "Otomatik Mod Sunucu Kontrollerini Devre Dışı Bırak", + "disableAutoModeServerHelp": "Ağ geçitleri sunucu tarafındaki kontrolü çalıştıramaz. Bu nedenle otomatik mod, her oturumda bir kez “not eligible” bildirimiyle duraklar ve Enter’a bastığınızda yerel kontrole geçer. İşaretlendiğinde bildirim göstermeden doğrudan yerel kontrolü kullanır. Resmî uç noktalarda bu seçeneği işaretlemeyin.", + "keyFieldsHint": "Uç nokta, anahtar, modeller, bağlam penceresi ve uyumluluk anahtarları sağlayıcıyı takip eder; geri kalan her şey genel bir Claude Code ayarıdır ve kaydedildiğinde her sağlayıcı için geçerlidir.", + "inactiveFieldsHint": "Bu sağlayıcıya daha eski bir sürümle kaydedilmiş; geçiş artık bunları uygulamamaktadır. Yukarıya eklemek için birini tıklayın; kaydettikten sonra her sağlayıcı için geçerlidir.", + "addToGlobalSettings": "Genel ayarlara ekle" + }, + "header": { + "viewOnGithub": "GitHub’da görüntüle", + "toggleDarkMode": "Koyu moda geç", + "toggleLightMode": "Açık moda geç", + "addProvider": "Sağlayıcı Ekle", + "switchToChinese": "Çinceye geç", + "switchToEnglish": "İngilizceye geç", + "enterEditMode": "Düzenleme Moduna Girin", + "exitEditMode": "Düzenleme Modundan Çık", + "windowMinimize": "Pencereyi simge durumuna küçült", + "windowMaximize": "Pencereyi büyüt", + "windowRestore": "Pencereyi geri yükle", + "windowClose": "Pencereyi kapat" + }, + "provider": { + "connectivityCheck": "Bağlantı kontrolü", + "tabProvider": "Sağlayıcı", + "tabUniversal": "Evrensel", + "noProviders": "Henüz sağlayıcı yok", + "noProvidersDescription": "Zaten bir yapılandırmanız varsa, \"Geçerli Yapılandırmayı İçe Aktar\"ı tıklayın; tüm veriler güvenli bir şekilde varsayılan sağlayıcıya kaydedilecektir", + "noProvidersDescriptionKeyFields": "Sağlayıcıların değiştirilmesi yalnızca anahtarın, uç noktanın ve modelin yerini alır; eklentiler ve diğer ayarlar yapılandırma dosyasında kalır ve her sağlayıcıya uygulanır", + "importCurrent": "Mevcut Yapılandırmayı İçe Aktar", + "importFromClaude": "Mevcut sağlayıcıları Claude Code'den içe aktarın", + "importCurrentDescription": "Geçerli canlı yapılandırmayı varsayılan sağlayıcı olarak içe aktar", + "currentlyUsing": "Şu anda Kullanılıyor", + "enable": "Etkinleştir", + "inUse": "Kullanımda", + "needsRouting": "Yönlendirme Gerekiyor", + "directProvider": "Doğrudan", + "directProviderHint": "Yönlendirme modundan çıkıldığında bu sağlayıcıya geri dönülür", + "stackBadge": "Birleştirme", + "stackBadgeHint": "{{client}}'nin model seçicisini seçin: {{models}}", + "stackBadgeNoModels": "Bu sağlayıcının yapılandırılmış modeli yok, dolayısıyla model seçicide hiçbir şey görünmüyor", + "stackSaved": "Kaydedildi. Uygulamak için {{client}}'yi yeniden başlatın", + "stackSavedLive": "Kaydedildi. {{client}}'de hemen yürürlüğe girer", + "stackReselectHint": "CC Switch istemci yapılandırmasını yeniden yazdığında, model seçicide toplanan modeli tekrar seçin", + "stackPartial": "Kısmen yazılı; bir sonraki değişiklikte veya CC Switch yeniden başlatıldığında tamamlanacak", + "stackFailed": "Birleştirilmiş modeller kaydedilemedi: {{error}}", + "stackDefaultCannotRemove": "Varsayılan sağlayıcı kaldırılamaz; önce başka bir sağlayıcıyı varsayılan olarak ayarlayın", + "stackDefaultHint": "Bu varsayılan sağlayıcıdır: listesindeki ilk model Claude Code'nin başlangıç ​​ve arka plan görevlerini yönetir", + "officialModelsBundled": "Resmi model listesi henüz mevcut olmadığından şimdilik Codex'nin yerleşik listesi kullanılıyor ve hesaba özel modeller eksik olabilir", + "officialModelsUnavailable": "Toplu modeller şimdilik kullanılamıyor: Codex model listesi okunamıyor", + "officialModelsOutdated": "Bu bilgisayardaki Codex, tam resmi model listesini almak için çok eski: Codex uygulamasını (CLI dahil) en son sürüme güncelleyin", + "officialModelsReason": { + "noLogin": "Resmi liste: Codex'nin kullanılabilir bir ChatGPT girişi yok. ChatGPT hesabıyla Codex'de oturum açın", + "loginStale": "Resmi liste: Codex giriş bilgileri 8 günden fazla süredir yenilenmedi. Codex uygulamasını bir kez kullandığınızda otomatik olarak yenilenir", + "loginIncomplete": "Resmi liste: Codex oturum açma bilgileri eksik (çalışma alanı veya kullanıcı kimliği eksik). Codex'de tekrar oturum açın", + "noVersion": "Resmi liste: Bu bilgisayardaki Codex sürümü okunamıyor. Codex'de bir görüşme başlattıktan sonra yeniden deneyecek", + "fetchFailed": "Resmi liste: getirilemedi; her 15 dakikada bir yeniden deneniyor (ayrıntılar için günlüğe bakın)", + "invalidList": "Resmi liste: döndürülen veriler eksik (ayrıntılar için günlüğe bakın)", + "noCli": "Codex yerleşik listesi: bu bilgisayarda Codex CLI bulunamadı", + "cliFailed": "Codex yerleşik liste: Codex CLI bir model listesi çıktısı vermedi (ayrıntılar için günlüğe bakın)", + "nothingUsable": "Codex yerleşik liste: kullanılabilir modeli yoktur. Codex uygulamasını en son sürüme güncelleyin" + }, + "routeOwnsCatalog": "Toplanan modeller Codex'de görünmüyor: yönlendirilen sağlayıcı kendi model katalog dosyasını (model_catalog_json) kullanıyor", + "adoptCatalog": "CC Switch’in model kataloğunu kullanın", + "adoptCatalogDone": "Artık CC Switch’in model kataloğunu kullanıyoruz. Uygulamak için Codex uygulamasını yeniden başlatın", + "adoptCatalogFailed": "CC Switch’in model kataloğuna geçilemedi: {{error}}", + "noRoutingSupport": "Yönlendirme Desteği Yok", + "blockedByProxyHint": "Yönlendirme modunda resmi bir sağlayıcıya geçilemiyor", + "editProvider": "Sağlayıcıyı Düzenle", + "editProviderHint": "Yapılandırma, güncellemeden hemen sonra mevcut sağlayıcıya uygulanacaktır.", + "deleteProvider": "Sağlayıcıyı Sil", + "addNewProvider": "Sağlayıcı ekle", + "addFooterHint": "💡 Bir ön ayar seçtikten sonra aşağıdaki alanları doldurun (örn. API Tuşu)", + "addClaudeProvider": "Claude Code Sağlayıcı Ekle", + "addCodexProvider": "Codex Sağlayıcı Ekle", + "addGeminiProvider": "Gemini Sağlayıcı Ekle", + "addOpenCodeProvider": "OpenCode Sağlayıcı Ekle", + "addToConfig": "Ekle", + "removeFromConfig": "Kaldır", + "setAsDefault": "Varsayılanı Ayarla", + "isDefault": "Mevcut Varsayılan", + "inConfig": "Eklendi", + "addProviderHint": "Listedeki sağlayıcıları hızlı bir şekilde değiştirmek için bilgileri doldurun.", + "editClaudeProvider": "Claude Code Sağlayıcıyı Düzenle", + "editCodexProvider": "Codex Sağlayıcıyı Düzenle", + "configError": "Yapılandırma Hatası", + "notConfigured": "Resmi web sitesi için yapılandırılmamış", + "applyToClaudePlugin": "Claude eklentisine uygula", + "removeFromClaudePlugin": "Claude eklentisinden kaldır", + "dragToReorder": "Yeniden sıralamak için sürükleyin", + "dragHandle": "Yeniden sıralamak için sürükleyin", + "searchPlaceholder": "Adı, notları veya URL'yi arayın...", + "searchAriaLabel": "Sağlayıcılarda ara", + "searchScopeHint": "Sağlayıcının adı, notları, web sitesi ve API adresiyle eşleşir.", + "searchButtonTip": "Sağlayıcılarda ara ({{shortcut}})", + "searchCloseHint": "Kapatmak için Esc tuşuna basın", + "searchCloseAriaLabel": "Sağlayıcı aramasını kapat", + "noSearchResults": "Aramanızla eşleşen sağlayıcı yok.", + "duplicate": "Çoğalt", + "sortUpdateFailed": "Sıralama düzeni güncellenemedi", + "configureUsage": "Kullanım sorgusunu yapılandırma", + "managedByHermes": "Hermes Yönetilen", + "managedByHermesHint": "Hermes' sağlayıcılarında tanımlanmıştır: dict. Hermes Web kullanıcı arayüzü aracılığıyla düzenleyin veya kaldırın.", + "openTerminal": "Terminali Aç", + "terminalOpened": "Terminal açıldı", + "terminalOpenFailed": "Terminal açılamadı", + "name": "İsim", + "namePlaceholder": "ör. Claude Resmi", + "websiteUrl": "Web sitesi URL'si", + "notes": "Notlar", + "notesPlaceholder": "ör. Şirkete özel hesap", + "configJson": "Yapılandırma JSON", + "configJsonHint": "Lütfen Claude Code yapılandırmasının tamamını doldurun", + "addProvider": "Sağlayıcı Ekle", + "sortUpdated": "Sıralama düzeni güncellendi", + "usageSaved": "Kullanım sorgusu yapılandırması kaydedildi", + "usageSaveFailed": "Kullanım sorgusu yapılandırması kaydedilemedi", + "geminiConfig": "Gemini Yapılandırması", + "geminiConfigHint": "Gemini'yi yapılandırmak için .env biçimini kullanın", + "form": { + "gemini": { + "model": "Model", + "oauthTitle": "OAuth Kimlik Doğrulama Modu", + "oauthHint": "Google’ın resmî hizmeti kişisel OAuth kimlik doğrulaması kullanır; API anahtarı girmeniz gerekmez. İlk kullanımda oturum açmanız için tarayıcı otomatik açılır.", + "apiKeyPlaceholder": "Gemini API Anahtarını girin" + } + }, + "duplicateLiveIdsLoadFailed": "Sağlayıcı tanımlayıcıları yapılandırmadan okunamadı. Lütfen yapılandırmayı düzeltip tekrar deneyin.", + "editorViewFailed": "İstemci yapılandırma dosyası okunamıyor, dolayısıyla kayıtlı sağlayıcı yapılandırması aşağıda gösterilmektedir: {{error}}", + "editConflict": { + "title": "Yapılandırma dosyası siz düzenleme yaparken değişti", + "message": "Editör açıldıktan sonra aşağıdaki ayarlar başka bir program (Claude Code gibi) tarafından değiştirildi. Düzenlemelerinizle bunların üzerine yazmak mı yoksa harici değişiklikleri saklamak mı istiyorsunuz? Diğer düzenlemeleriniz her iki şekilde de kaydedilir.", + "keepTheirs": "Harici değişiklikleri koru", + "keepMine": "Benim düzenlemelerimle üzerine yaz" + }, + "backToList": "Sağlayıcılara geri dön", + "editProviderNamed": "{{name}}'yi düzenleyin", + "formSubtitleStack": "{{app}} (Birleştirme modu)", + "editCurrentNoticeFile": "Bu, kullanımda olan sağlayıcıdır. Kaydetme şunu yazar:", + "editCurrentNoticeFileEnd": "hemen; sonraki istek bunu kullanır.", + "editCurrentNotice": "Bu, kullanımda olan sağlayıcıdır. Kaydetme hemen etkili olur; sonraki istek yeni ayarları kullanır." + }, + "claudeCode": { + "needsRouting": "Yönlendirme Gerekiyor", + "noRoutingSupport": "Yönlendirme Desteği Yok" + }, + "codex": { + "needsRouting": "Yönlendirme Gerekiyor", + "noRoutingSupport": "Yönlendirme Desteği Yok", + "officialRouting": "Resmi Hesap Yönlendirme", + "nativeLogin": "Codex Oturum aç", + "followCodexLogin": "Codex girişini takip edin", + "followCodexLoginDescription": "Hesap mevcut Codex CLI giriş bilgileri ile değişir", + "openAiAccount": "OpenAI hesabı", + "accountNotSelected": "Hesap seçilmedi", + "chooseAccount": "Hesap seçin", + "accountStatusUnavailable": "Hesap ayrıntıları yüklenemiyor", + "boundAccountUnavailable": "Bağlı hesap kullanılamıyor", + "accountLoading": "Hesap yükleniyor…" + }, + "claudeDesktop": { + "modelConfigTitle": "Model Yapılandırması", + "modelModeLabel": "Bağlantı Modu", + "modelModeDirect": "Doğrudan", + "modelModeProxy": "Model Eşleme", + "officialNotice": "Claude Desktop resmi sağlayıcıları yerleşik 1P oturum açma özelliğini kullanır. API anahtarı veya uç nokta URL'si gerekli değildir.", + "mode": "Model kullanımı", + "modeDirect": "Doğrudan", + "modeProxy": "Yönlendirme gerektirir", + "modelMappingToggle": "Model eşlemeye ihtiyaç var", + "modelModeHint": "Sağlayıcınız yerel Claude modelleri sunuyorsa Doğrudan bağlantıyı kullanabilirsiniz. DeepSeek veya Kimi gibi üçüncü taraf modeller için Model eşleme kullanın.", + "routeMapTitle": "Model eşleme", + "routeMapHint": "Sonnet, Opus ve Haiku katmanlarının her biri için istekte kullanılacak gerçek modeli girin. DeepSeek veya Kimi gibi markalı modeller için menüde görünecek adı kullanın. Boş bırakılan katman, Sonnet katmanındaki modeli (veya ilk doldurduğunuz katmanın modelini) kullanır; böylece alt ajanların çağırdığı Haiku her zaman kullanılabilir.", + "routeModelLabel": "Model rolü", + "routeRoleSonnet": "Sonnet", + "routeRoleOpus": "Opus", + "routeRoleFable": "Fable", + "routeRoleHaiku": "Haiku", + "labelOverrideLabel": "Menü görünen adı", + "upstreamModelLabel": "İstenilen model", + "supports1mLabel": "1 milyon beyan edin", + "supports1mShort": "1 milyon", + "directModelListTitle": "Model Listesi", + "directModelListCollapsedHint": "Yerel Claude modeli sağlayıcılarında buna genellikle gerek yoktur. Claude Desktop, /v1/models uç noktasını otomatik sorgular.", + "directModelListHint": "Claude Desktop için kullanılabilen Sonnet, Opus ve Haiku modellerini yapılandırın. Claude Desktop’ın /v1/models uç noktasını otomatik sorgulaması için boş bırakın. 1M seçeneğini işaretlemek, 1 milyon token bağlam desteğini bildirir.", + "directModelInvalid": "Doğrudan modeller Claude Desktop tarafından tanınan Sonnet / Opus / Haiku model kimliklerini kullanmalıdır", + "addModel": "Model ekle", + "addRoute": "Model ekle", + "routeInvalid": "Bir model rolü seçin ve istenen modeli girin", + "routesRequired": "En az bir model eşlemesi gerekli", + "statusTitle": "Claude Desktop yapılandırmasına dikkat edilmesi gerekiyor", + "statusUnsupported": "Bu platform henüz Claude Desktop 3P konfigürasyonunun yazılmasını desteklemiyor.", + "statusStaleRawModels": "Claude Desktop profili, Sonnet / Opus / Haiku rol ailelerinin dışındaki model kimliklerini içerir. Daha yeni Claude Desktop sürümleri bunu reddedebilir; onarmak için tekrar mevcut sağlayıcıya geçin.", + "statusMissingRouteMappings": "Geçerli sağlayıcının model eşlemesi etkin ancak geçerli rota yok. Sağlayıcıyı düzenleyin ve en az bir eşleme ekleyin.", + "statusGatewayTokenMissing": "Yerel yönlendirme belirteci henüz oluşturulmadı. Bu sağlayıcıya tekrar geçiş yapmak yeni bir yerel token yazacaktır.", + "statusBaseUrlMismatch": "Claude Desktop profili mevcut sağlayıcıdan farklı bir URL'ye işaret ediyor. Güncel: {{actual}}; beklenen: {{expected}}. Onarmak için tekrar mevcut sağlayıcıya geçin.", + "route": { + "tooltip": { + "active": "Claude Desktop yerel yönlendirme çalışıyor - {{address}}:{{port}}", + "inactive": "Model eşlemeye veya biçim dönüştürmeye ihtiyaç duyan sağlayıcılar için Claude Desktop yerel yönlendirmeyi açın. Yapılandırılmış adres: {{address}}:{{port}}" + }, + "stopBlockedByTakeover": "Diğer uygulamalar hâlâ Yönlendirme modunda. Yönlendirme hizmetini durdurmadan önce onları Doğrudan bağlantı moduna döndürün." + } + }, + "notifications": { + "providerAdded": "Sağlayıcı eklendi", + "providerSaved": "Sağlayıcı yapılandırması kaydedildi", + "providerDeleted": "Sağlayıcı başarıyla silindi", + "switchSuccess": "Geçiş başarılı!", + "codexRestartRequired": "Başarıyla değiştirildi. Değişiklikleri uygulamak için istemciyi yeniden başlatın.", + "geminiRestartRequired": "Başarıyla değiştirildi. Değişiklikleri uygulamak için Gemini CLI'yi yeniden başlatın.", + "grokBuildRestartRequired": "Başarıyla değiştirildi. Değişiklikleri uygulamak için Grok Build'yi yeniden başlatın.", + "claudeDesktopRestartRequired": "Başarıyla değiştirildi. Değişiklikleri uygulamak için Claude Desktop'yi yeniden başlatın.", + "claudeDesktopProxyRestartRequired": "Başarıyla değiştirildi. CC Switch'yi çalışır durumda tutun ve değişiklikleri uygulamak için Claude Desktop'yi yeniden başlatın.", + "addToConfigSuccess": "Yapılandırmaya eklendi", + "removeFromConfigSuccess": "Yapılandırmadan kaldırıldı", + "removeFromConfigFailed": "Sağlayıcı kaldırılamadı", + "switchFailedTitle": "Geçiş başarısız oldu", + "switchFailed": "Geçiş başarısız oldu: {{error}}", + "autoImported": "Mevcut yapılandırmadan oluşturulan varsayılan sağlayıcı", + "addFailed": "Sağlayıcı eklenemedi: {{error}}", + "saveFailed": "Kaydetme başarısız oldu: {{error}}", + "saveFailedGeneric": "Kaydetme başarısız oldu, lütfen tekrar deneyin", + "appliedToClaudePlugin": "Claude eklentisine uygulandı", + "removedFromClaudePlugin": "Claude eklentisinden kaldırıldı", + "syncClaudePluginFailed": "Claude eklentisinin eşitlemeu başarısız oldu", + "skipClaudeOnboardingFailed": "Claude Code ilk çalıştırma onayı atlanamadı", + "clearClaudeOnboardingSkipFailed": "Claude Code ilk çalıştırma onayı geri yüklenemedi", + "updateSuccess": "Sağlayıcı başarıyla güncellendi", + "updateFailed": "Sağlayıcı güncellenemedi: {{error}}", + "deleteSuccess": "Sağlayıcı silindi", + "deleteFailed": "Sağlayıcı silinemedi: {{error}}", + "settingsSaved": "Ayarlar kaydedildi", + "settingsSaveFailed": "Ayarlar kaydedilemedi: {{error}}", + "proxyRequiredForSwitch": "Bu sağlayıcı {{reason}}, yönlendirme hizmetinin düzgün çalışmasını gerektirir. Önce yönlendirmeye başlayın.", + "proxyReasonCopilot": "GitHub Copilot'yi Claude sağlayıcısı olarak kullanır", + "proxyReasonOpenAIChat": "OpenAI Sohbet API formatını kullanır", + "proxyReasonOpenAIResponses": "OpenAI Yanıtları API biçimini kullanır", + "proxyReasonAnthropicMessages": "Anthropic Mesajları API formatını kullanır", + "proxyReasonFullUrl": "tam URL bağlantı modu etkin", + "proxyReasonManagedOAuth": "yönetilen OAuth oturum açma bilgilerini kullanır (yerel yönlendirme tarafından enjekte edilen token)", + "proxyReasonRoutingRequired": "istekleri işlemek için yerel yönlendirme gerektirir", + "openAIFormatHint": "Bu sağlayıcı OpenAI uyumlu format kullanıyor ve yönlendirme hizmetinin etkinleştirilmesini gerektiriyor", + "copilotProxyHint": "GitHub Copilot, bir Claude sağlayıcısı olarak her zaman yerel yönlendirme gerektirir; yönlendirme, mevcut modele göre Sohbet Tamamlamalarını veya Yanıtlarını otomatik olarak seçer.", + "openLinkFailed": "Bağlantı açılamadı", + "openclawModelsRegistered": "Modeller /model listesine kaydedildi", + "openclawDefaultModelSet": "Varsayılan model olarak ayarla", + "openclawDefaultModelSetFailed": "Varsayılan model ayarlanamadı", + "openclawNoModels": "Yapılandırılmış model yok", + "openclawModelNotFound": "Seçilen model artık mevcut değil. Yenileyin ve tekrar deneyin.", + "backfillWarning": "Başarılı bir şekilde geçiş yapıldı ancak değişiklikler önceki sağlayıcıya kaydedilemedi", + "codexAuthCleanupFailed": "Başarılı bir şekilde geçiş yapıldı ancak auth.json kaldırılamadı; resmi oturum açma kimlik bilgileri hâlâ diskte; bunları kaldırmak için auth.json'u Codex yapılandırma dizininden silin", + "windowControlFailed": "Pencere kontrolü başarısız oldu: {{error}}", + "officialBlockedByProxy": "Yerel yönlendirme etkinken resmi sağlayıcıya geçilemez. Yönlendirmenin resmi API'lerle kullanılması hesabın yasaklanmasına neden olabilir.", + "proxyOfficialWarning": "Mevcut sağlayıcı {{name}} resmidir. Yerel yönlendirmeyi kullanmadan önce üçüncü taraf bir sağlayıcıya geçmeyi düşünün." + }, + "confirm": { + "deleteProvider": "Sağlayıcıyı Sil", + "deleteProviderMessage": "\"{{name}}\" sağlayıcısını silmek istediğinizden emin misiniz? Bu eylem geri alınamaz.", + "removeProvider": "Sağlayıcıyı Kaldır", + "removeProviderMessage": "\"{{name}}\" sağlayıcısını yapılandırmadan kaldırmak istediğinizden emin misiniz?\n\nKaldırma işleminden sonra bu sağlayıcı artık etkin olmayacak ancak yapılandırma verileri CC Switch’te saklanacak. İstediğiniz zaman yeniden ekleyebilirsiniz.", + "piDefaultProviderWarning": "Pi'nin genel varsayılanı şu anda bu sağlayıcıyı işaret ediyor. Devam ederseniz Pi mevcut başka bir modeli deneyecektir; Bir sağlayıcıyı seçmek için /model'i veya başka bir sağlayıcıda oturum açmak için /login'i kullanın.", + "proxy": { + "title": "Yerel Yönlendirmeyi Etkinleştir", + "message": "Yerel yönlendirme gelişmiş bir özelliktir. Lütfen etkinleştirmeden önce nasıl çalıştığını anladığınızdan emin olun.\n\nDoğru yapılandırma için ilgili belgelere veya sağlayıcınıza danışmanızı öneririz.", + "confirm": "Anladım, etkinleştir" + }, + "failover": { + "title": "Yedek Sağlayıcıya Geçişyi Etkinleştir", + "message": "Yedek sağlayıcıya geçiş gelişmiş bir özelliktir. Lütfen etkinleştirmeden önce nasıl çalıştığını anladığınızdan emin olun.\n\nÖncelikle yedek sağlayıcıya geçiş kuyruğunda sağlayıcı önceliklerini yapılandırmanızı öneririz.", + "confirm": "Anladım, etkinleştir" + }, + "unifyCodexHistory": { + "title": "Birleşik Codex oturum geçmişi", + "message": "Etkinleştirildiğinde Codex CLI’nin devam edilebilir oturum listesinde resmî abonelik ve üçüncü taraf oturumları birlikte görünür (Codex masaüstü uygulaması yakın tarihli bir güncellemeden beri tüm oturumları gösterebilir ve bu ayardan etkilenmez). Not: Diğer arka uç encrypted_content içindeki akıl yürütme verilerinin şifresini çözemediği için eski bir oturuma farklı bir sağlayıcıyla devam etmek başarısız olabilir.\n\nMevcut resmî oturum geçmişinizi de paylaşılan listeye taşıyabilirsiniz (önce ~/.cc-switch/backups konumuna yedeklenir; bu ayarı kapatırken geri yükleyebilirsiniz).", + "migrateExisting": "Ayrıca mevcut resmi oturum geçmişini taşıyın", + "confirm": "Anladım, etkinleştir" + }, + "unifyCodexHistoryOff": { + "title": "Birleşik oturum geçmişini kapat", + "message": "Kapatıldığında Codex CLI, resmi abonelik ve üçüncü taraf sağlayıcılar için ayrı oturum listelerine geri döner (masaüstü uygulaması tüm oturumları göstermeye devam eder). Bu açıkken oluşturulan oturumlar birbirinden ayrılamaz, dolayısıyla üçüncü taraf geçmişinde kalırlar ve CLI bunları resmi abonelik altında göstermez.", + "restoreBackup": "Etkinleştirme zamanında taşınan resmi oturumları resmi geçmişe geri yükleyin (yedekten tam geri yükleme)", + "confirm": "Kapat" + }, + "usage": { + "title": "Kullanım Sorgusunu Yapılandır", + "message": "Kullanım sorgusu özel bir komut dosyası veya API parametreleri gerektirir. Lütfen sağlayıcınızdan gerekli bilgileri aldığınızdan emin olun.\n\nNasıl yapılandıracağınızdan emin değilseniz lütfen önce sağlayıcınızın belgelerine bakın.", + "confirm": "Anladım, yapılandır" + }, + "autoSync": { + "title": "Otomatik Eşitlemeu Etkinleştir", + "message": "Otomatik eşitleme etkinleştirildiğinde, her veritabanı değişikliği otomatik olarak WebDAV sunucusuna yüklenecektir.\n\nBu, önemli miktarda ağ trafiğine neden olabilir. Lütfen ağınızın ve WebDAV hizmetinizin sık veri aktarımlarını gerçekleştirebildiğinden emin olun.", + "confirm": "Anladım, etkinleştir" + } + }, + "settings": { + "title": "Ayarlar", + "general": { + "appearance": "Görünüm", + "quotaDisplay": "Kota gösterimi", + "quotaDisplayLeft": "Kalan", + "quotaDisplayUsed": "Kullanılan", + "quotaDisplayHelp": "Sağlayıcı kartlarındaki, Hesaplar'daki ve tepsideki her kota penceresinin ne kadar kaldığını veya ne kadar kullanıldığını gösterip göstermediği. Bakiyeler ve Krediler her zaman kalanları gösterir.", + "sidebarAndHeader": "Kenar çubuğu ve başlık", + "visibleApps": "Kenar çubuğunda gösterilen uygulamalar", + "goToApps": "Uygulamaları Aç", + "updates": "Uygulamalarınızın yeni sürümleri", + "checkToolUpdates": "Lansman sırasında uygulamalarınızın yeni sürümlerini kontrol edin", + "checkToolUpdatesHelp": "CC Switch açıkken, her başlatıldığında yüklü komut satırı uygulamalarınızı yeni sürümler için kontrol eder ve bulursa kenar çubuğunda Uygulamalar üzerinde bir nokta gösterir. Hiçbir şey otomatik olarak yükseltilmez.", + "windowAndTerminal": "Pencere ve terminal", + "minimizeToTrayHelp": "Açık olduğunda, kapat düğmesi yalnızca pencereyi gizler ve CC Switch sistem tepsisinde çalışmaya devam eder (hafif mod tepsi menüsündedir). Kapatıldığında kapatma düğmesi kapanır.", + "terminalHelp": "Sağlayıcı kartlarındaki “Açık terminal”in kullandığı terminal. Mevcut değilse sistemin varsayılan terminali kullanılır." + }, + "tabGeneral": "Genel", + "tabAuth": "Kimlik doğrulama", + "tabAdvanced": "Gelişmiş", + "tabProxy": "Yönlendirme", + "authCenter": { + "description": "Sağlayıcı olarak GitHub Copilot, ChatGPT ve xAI aboneliklerini kullanın. Yönlendirme hizmeti kimlik bilgilerini enjekte eder, böylece bu sağlayıcılar Yönlendirme modunda çalışır (Codex'nin resmi oturum açma bağlaması hariç).", + "beta": "beta", + "copilotDescription": "GitHub Copilot hesaplarını yönetin", + "codexOauthDescription": "ChatGPT hesaplarını yönetin", + "xaiOauthDescription": "xAI / Grok hesaplarını yönetin" + }, + "advanced": { + "configDir": { + "title": "Yapılandırma Dizini", + "description": "Claude, Codex ve Gemini yapılandırmaları için depolama yollarını yönetin" + }, + "proxy": { + "title": "Yerel Yönlendirme", + "description": "Yönlendirme hizmeti geçişini kontrol edin, durumu ve bağlantı noktası bilgilerini görüntüleyin", + "enableFeature": "Ana Sayfada Yönlendirme Geçişini Göster", + "enableFeatureDescription": "Etkinleştirildiğinde yönlendirme ve yedek sağlayıcıya geçiş geçişleri ana sayfanın üst kısmında görünecektir", + "enableStackMode": "Birleştirme modu anahtarını ana sayfada göster", + "enableStackModeDescription": "Açık olduğunda, Claude Code ve Codex için ana sayfa anahtarı Birleştirme moduna dönüşür: OpenCode'deki gibi birkaç sağlayıcı ekleyin ve bunların tüm modelleri istemcinin model listesinde görünür (Codex'nin önce yeniden başlatılması gerekir). Yedek sağlayıcıya geçiş yok. Bu ve yerel yönlendirme anahtarı birbirini dışlar; geçiş, önce Claude Code ve Codex uygulamasını doğrudan yönlendirmeye gönderir", + "enableFailoverToggle": "Yedek Sağlayıcıya Geçiş Geçişini Ana Sayfada Göster", + "enableFailoverToggleDescription": "Etkinleştirildiğinde, yedek sağlayıcıya geçiş geçişi ana sayfanın üst kısmında bağımsız olarak görünecektir", + "running": "Çalışıyor", + "stopped": "Durduruldu" + }, + "failover": { + "title": "Otomatik yedek sağlayıcıya geçiş", + "description": "Yedek sağlayıcıya geçiş kuyruğunu ve devre kesici stratejisini yapılandırma" + }, + "pricing": { + "title": "Maliyet Fiyatlandırması", + "description": "Her model için token fiyatlandırma kurallarını yönetin" + }, + "globalProxy": { + "title": "Genel çıkış proxy’si", + "description": "CC Switch’in harici API'lere erişmesi için proxy'yi yapılandırın" + }, + "data": { + "title": "Veri Yönetimi", + "description": "Yerel yapılandırma verilerini içe ve dışa aktarın" + }, + "backup": { + "title": "Yedekleme ve Geri Yükleme", + "description": "Otomatik yedeklemeleri yönetin, veritabanı anlık görüntülerini görüntüleyin ve geri yükleyin" + }, + "cloudSync": { + "title": "Bulut eşitleme", + "description": "Verileri WebDAV aracılığıyla cihazlar arasında eşitle edin" + }, + "rectifier": { + "title": "Uyumluluk düzeltici", + "description": "API isteği uyumluluk sorunlarını otomatik olarak düzeltin", + "enabled": "Uyumluluk düzelticiyi etkinleştir", + "enabledDescription": "Ana anahtar, kapatıldığında tüm düzeltme özellikleri devre dışı bırakılacaktır", + "requestGroup": "İstek düzeltme", + "responseGroup": "Yanıt düzeltme", + "thinkingSignature": "Düşünme imzası düzeltme", + "thinkingSignatureDescription": "Anthropic tipi bir sağlayıcı, düşünce imzası uyumsuzluğu veya yasa dışı istek hataları döndürdüğünde, düşünmeyle ilgili uyumsuz blokları otomatik olarak kaldırır ve aynı sağlayıcıyla bir kez daha dener", + "thinkingBudget": "Düşünme bütçesi düzeltme", + "thinkingBudgetDescription": "Anthropic tipi bir sağlayıcı budget_tokens kısıtlama hatalarını (örneğin en az 1024) döndürdüğünde, düşünmeyi otomatik olarak etkin olarak normalleştirir, düşünme bütçesini 32000'e ayarlar ve gerekirse max_tokens'ı 64000'e yükseltir ve ardından bir kez yeniden dener", + "mediaFallback": "Desteklenmeyen Görüntü Geri Dönüşü", + "mediaFallbackDescription": "Bir sağlayıcı görüntü girişini desteklemediğinde (yalnızca metin özelliğini bildirdiğinde veya yukarı akış desteklenmeyen bir görüntü hatası döndürdüğünde), görüşmenin kesintiye uğramaması için görüntü bloklarını otomatik olarak bir [Desteklenmeyen Görüntü] işaretçisiyle değiştirir", + "mediaHeuristic": "Salt Metin Model Ön Kontrolü", + "mediaHeuristicDescription": "Göndermeden önce, yerleşik onaylanmış salt metin kayıt defterindeki modellerin resimlerini çıkarır. Bunu kapatmak yalnızca proxy'nin kayıt defteri tabanlı ön kontrolünü devre dışı bırakır; beyan edilen salt metin işleme ve yukarı akış hatası geri dönüşü kalır ve Codex model kataloğu yetenek bildirimleri değişmez" + }, + "optimizer": { + "title": "Bedrock istek iyileştirici", + "description": "İstekleri göndermeden önce Thinking ve Cache yapılandırmasını otomatik olarak optimize edin (yalnızca Bedrock sağlayıcıları için geçerlidir)", + "enabled": "Optimize Ediciyi Etkinleştir", + "thinkingOptimizer": "Düşünme Optimizasyonu", + "thinkingOptimizerDescription": "Opus/Sonnet için Uyarlanabilir Düşünmeyi otomatik olarak etkinleştirin ve eski modeller için Genişletilmiş Düşünmeyi enjekte edin", + "cacheInjection": "Önbellek Enjeksiyonu", + "cacheInjectionDescription": "Mükerrer token faturalandırmasını azaltmak için anahtar konumlara standart 5 dakikalık önbellek kesme noktalarını otomatik olarak enjekte edin" + }, + "logConfig": { + "title": "Uygulama Tanılama Günlükleri", + "description": "Uygulama tanılama günlükleri için çıkış düzeyini kontrol edin", + "enabled": "Tanılama Günlüklerini Etkinleştir", + "enabledDescription": "cc-switch.log'u kontrol eder; istek kullanım kayıtları ve Crash.log etkilenmez", + "openLog": "Günlüğü aç", + "openLogFailed": "Günlük konumu açılamadı: {{error}}", + "level": "Günlük Düzeyi", + "levelDescription": "Çıkış için minimum günlük düzeyini ayarlayın", + "levels": { + "error": "Hata", + "warn": "Uyarı", + "info": "Bilgi", + "debug": "Hata ayıklama", + "trace": "İz" + }, + "levelHint": "Günlük düzeyi açıklamaları:", + "levelDesc": { + "error": "Yalnızca kritik hatalar", + "warn": "Hatalar + uyarılar", + "info": "Genel çalışma bilgisi (varsayılan)", + "debug": "SSE akışı ve istek/yanıt dahil ayrıntılı bilgi", + "trace": "Tüm günlükler, çoğu ayrıntılı" + } + } + }, + "language": "Dil", + "languageHint": "Arayüz dilini geçişten hemen sonra önizleyin, kaydettikten sonra kalıcı olarak etkili olur.", + "theme": "Açık ve koyu", + "themeHint": "Uygulamanın görünüm temasını seçin, hemen geçerli olur.", + "themeLight": "Ay'ın Aydınlık Yüzü", + "themeDark": "Ayın Karanlık Yüzü", + "themeSystem": "Sistem", + "importExport": "SQL İçe/Dışa Aktarma", + "importExportHint": "Geçiş veya geri yükleme için veritabanı SQL yedeklerini içe veya dışa aktarın (içe aktarma yalnızca CC Switch tarafından dışa aktarılan yedeklemeleri destekler).", + "exportConfig": "SQL Yedeklemesini Dışa Aktar", + "selectConfigFile": "SQL Dosyasını Seçin", + "noFileSelected": "Hiçbir yapılandırma dosyası seçilmedi.", + "import": "İçe aktar", + "importing": "İçe aktarılıyor...", + "importSuccess": "İçe Aktarma Başarılı!", + "importFailed": "İçe Aktarma Başarısız", + "syncLiveFailed": "İçe aktarıldı ancak geçerli sağlayıcıyla eşitle edilemedi. Lütfen sağlayıcıyı manuel olarak yeniden seçin.", + "importPartialSuccess": "Yapılandırma içe aktarıldı ancak geçerli sağlayıcıyla eşitle edilemedi.", + "importPartialHint": "Canlı yapılandırmayı yenilemek için lütfen sağlayıcıyı manuel olarak yeniden seçin.", + "configExported": "Yapılandırma şuraya aktarıldı:", + "exportFailed": "Dışa aktarma başarısız oldu", + "selectFileFailed": "Lütfen geçerli bir SQL yedekleme dosyası seçin", + "configCorrupted": "SQL dosyası bozuk veya geçersiz olabilir", + "backupId": "Yedekleme Kimliği", + "backupManager": { + "title": "Veritabanı Yedeklemeleri", + "description": "Önceki bir duruma geri dönmek için otomatik veritabanı anlık görüntüleri", + "empty": "Henüz yedekleme yok", + "restore": "Geri yükle", + "restoring": "Geri yükleniyor...", + "confirmTitle": "Geri Yüklemeyi Onayla", + "confirmMessage": "Bu yedeğin geri yüklenmesi mevcut veritabanının üzerine yazılacaktır. İlk önce bir güvenlik yedeği oluşturulacaktır.", + "restoreSuccess": "Başarılı bir şekilde geri yükle! Güvenlik yedeklemesi oluşturuldu", + "restoreFailed": "Geri yükleme başarısız oldu", + "safetyBackupId": "Güvenlik Yedekleme Kimliği", + "intervalLabel": "Otomatik Yedekleme Aralığı", + "retainLabel": "Yedekleme Saklama", + "intervalDisabled": "Devre dışı", + "intervalHours": "{{hours}} saat", + "intervalDays": "{{days}} gün", + "rename": "Yeniden adlandır", + "renameSuccess": "Yedekleme yeniden adlandırıldı", + "renameFailed": "Yeniden adlandırma başarısız oldu", + "namePlaceholder": "Yeni adı girin", + "createBackup": "Şimdi Yedekle", + "creating": "Yedekleniyor...", + "createSuccess": "Yedekleme başarıyla oluşturuldu", + "createFailed": "Yedekleme başarısız oldu", + "delete": "Sil", + "deleting": "Siliniyor...", + "deleteSuccess": "Yedekleme silindi", + "deleteFailed": "Silinemedi", + "deleteConfirmTitle": "Silmeyi Onayla", + "deleteConfirmMessage": "Bu yedekleme kalıcı olarak silinecek. Bu eylem geri alınamaz." + }, + "backupStorage": { + "title": "Diğer Yedeklemeler", + "total": "Toplam {{size}}", + "itemCount": "Öğeler: {{count}}", + "reveal": "Dosya yöneticisinde göster", + "delete": "Sil", + "deleting": "Siliniyor...", + "managedAbove": "Yukarıdaki listede yönetiliyor", + "legacy": "Eski", + "loadFailed": "Yedekleme kullanımı okunamadı", + "revealFailed": "Klasör açılamadı", + "deleteConfirmTitle": "\"{{name}}\" silinsin mi?", + "deleteConfirmMessage": "{{path}}'deki {{size}} yedekleri kalıcı olarak silinecek. Bu geri alınamaz.", + "deleteSuccess": "Silindi, serbest bırakıldı {{size}}", + "deleteFailed": "Silinemedi", + "items": { + "database": { + "name": "Veritabanı yedeklemeleri", + "hint": "Otomatik ve manuel veritabanı anlık görüntüleri." + }, + "skills": { + "name": "Beceri kaldırma yedeklemeleri", + "hint": "Beceriler kaldırılırken saklanan kopyalar, Beceriler sayfasından geri yüklenebilir. Silme işleminden sonra kaldırılan beceriler artık geri yüklenemez." + }, + "codexHistoryUnify": { + "name": "Codex oturumu geçiş yedeklemelerini birleştirir", + "hint": "\"Birleşik Codex oturum geçmişi\" mevcut oturumları taşıdığında oturum kopyaları tutuldu. Bu anahtarı kapatırken \"Yedeklemeyi geri yükleme\" onlara bağlıdır; silindikten sonra taşınan resmi oturumlar artık orijinal gruplarına geri taşınamaz." + }, + "codexHistoryUnifyRestore": { + "name": "Codex oturumu geri yükleme yedeklemelerini birleştirir", + "hint": "\"Yedeklemeyi geri yükle\" çalıştırılmadan önce tutulan oturum kopyaları. CC Switch bunları bir daha asla okumaz." + }, + "codexHistoryProviderMigration": { + "name": "Codex oturum grubu geçiş yedeklemeleri", + "hint": "Oturum grupları taşınmadan önce saklanan kopyalar. CC Switch bunları bir daha okumaz." + }, + "liveFirstWrite": { + "name": "İlk yazma yedeklemelerini yapılandırma", + "hint": "CC Switch’in bunları ilk kez yeniden yazmasından önceki orijinal istemci yapılandırma dosyaları. Silme işleminden sonra bu orijinaller kaybolur; bir sonraki yazma işleminde dosyayı o zamanki haliyle yedekler." + }, + "hermes": { + "name": "Hermes yapılandırma yedeklemeleri", + "hint": "Hermes yapılandırması kaydedilmeden önce tutulan kopyalar, Yedekleme Saklama tarafından budanır." + }, + "openclaw": { + "name": "OpenClaw yapılandırma yedeklemeleri", + "hint": "OpenClaw yapılandırması kaydedilmeden önce saklanan kopyalar, Yedekleme Saklama tarafından budanır." + }, + "proxyLiveBackup": { + "name": "Eski yönlendirme devralma yedeklemeleri", + "hint": "Yapılandırma kopyaları, yükseltme sırasında eski yönlendirme devralma yedeklerinden taşındı. CC Switch bunları bir daha asla okumaz." + }, + "envVars": { + "name": "Ortam değişkeni temizleme yedeklemeleri", + "hint": "Çakışan ortam değişkenleri kaldırılmadan önce kaydedilen orijinal değerler kaldırıldı. Silme işleminden sonra bu değerler artık aranamaz." + }, + "legacyConfigBackups": { + "name": "Eski config.json yedeklemeleri", + "hint": "Eski versiyonların bıraktığı; geçerli sürüm artık bunları okumuyor." + }, + "legacyConfigArchive": { + "name": "Eski config.json arşivi", + "hint": "Veritabanı geçişinden önceki eski yapılandırma dosyası; geçerli sürüm artık onu okumuyor." + }, + "legacyDbUpgrade": { + "name": "Eski veritabanı yükseltme yedeklemeleri", + "hint": "Veritabanını yükseltirken eski sürümler tarafından yapılan kopyalar; geçerli sürüm artık bunları okumuyor." + }, + "legacyToolSearch": { + "name": "Eski Araç Arama düzeltme eki yedekleri", + "hint": "Kaldırılan Araç Arama yaması özelliğinden ayrıldık; geçerli sürüm artık bunları okumuyor." + } + } + }, + "webdavSync": { + "title": "WebDAV bulut eşitleme", + "description": "WebDAV aracılığıyla veritabanı ve beceri yapılandırmalarını cihazlar arasında eşitle edin.", + "baseUrl": "WebDAV Sunucu URL'si", + "baseUrlPlaceholder": "https://dav.example.com/dav/", + "username": "WebDAV Hesabı", + "usernamePlaceholder": "E-posta veya kullanıcı adı", + "password": "WebDAV Şifre", + "passwordPlaceholder": "Uygulama şifresi", + "remoteRoot": "Uzak Kök Dizini", + "profile": "Eşitleme profili adı", + "autoSync": "Otomatik eşitleme", + "autoSyncHint": "Etkinleştirildiğinde, her veritabanı değişikliği otomatik bir WebDAV yüklemesini tetikler.", + "test": "Bağlantıyı Test Et", + "testing": "Test ediliyor...", + "testSuccess": "Bağlantı başarılı", + "testFailed": "Bağlantı başarısız oldu: {{error}}", + "save": "Yapılandırmayı Kaydet", + "saving": "Kaydediliyor...", + "saveFailed": "Yapılandırma kaydedilemedi: {{error}}", + "upload": "Buluta Yükle", + "uploading": "Yükleniyor...", + "uploadSuccess": "WebDAV'ye yüklendi", + "uploadFailed": "Yükleme başarısız oldu: {{error}}", + "autoSyncFailedToast": "Otomatik eşitleme başarısız oldu: {{error}}", + "download": "Buluttan indir", + "downloading": "İndiriliyor...", + "downloadSuccess": "WebDAV'den indirildi ve geri yüklendi", + "downloadFailed": "İndirme başarısız oldu: {{error}}", + "lastSync": "Son eşitleme: {{time}}", + "autoSyncLastErrorTitle": "Son otomatik eşitleme başarısız oldu", + "autoSyncLastErrorHint": "Lütfen ağ veya WebDAV ayarlarını kontrol edin. Otomatik eşitleme gelecekteki değişikliklerde yeniden denenecek.", + "missingUrl": "Lütfen WebDAV sunucu URL'sini girin", + "presets": { + "label": "Sağlayıcı", + "jianguoyun": "Jianguoyun", + "jianguoyunHint": "Jianguoyun güvenlik ayarlarında bir \"Uygulama Şifresi\" oluşturun. Giriş şifrenizi kullanmayın.", + "nextcloud": "Nextcloud", + "nextcloudHint": "Sunucunuzu Nextcloud alanınızla ve USERNAME kısmını kullanıcı adınızla değiştirin.", + "synology": "Synology NAS", + "synologyHint": "Önce Synology Paket Merkezi'nde WebDAV Sunucu paketini kurun ve etkinleştirin.", + "custom": "Özel" + }, + "remoteRootDefault": "Varsayılan: cc-switch-sync", + "profileDefault": "Varsayılan: varsayılan", + "saveAndTestSuccess": "Yapılandırma kaydedildi, bağlantı tamam", + "saveAndTestFailed": "Yapılandırma kaydedildi ancak bağlantı testi başarısız oldu: {{error}}", + "noRemoteData": "Uzak sunucuda eşitleme verisi bulunamadı", + "incompatibleVersion": "Uzak veriler uyumsuz (protokol v{{protocolVersion}}, veritabanı {{dbCompatVersion}}). Bu istemci v2 / db-v6 protokolünü destekler.", + "unsaved": "Kaydedilmemiş", + "saved": "Kaydedildi", + "unsavedChanges": "Lütfen önce yapılandırmayı kaydedin", + "saveBeforeSync": "Yüklemeyi/indirmeyi etkinleştirmek için önce yapılandırmayı kaydedin.", + "fetchingRemote": "Uzak bilgiler getiriliyor...", + "fetchRemoteFailed": "Uzak bilgiler getirilemedi. Lütfen yapılandırmayı ve ağı kontrol edin.", + "confirmDownload": { + "title": "Buluttan Geri Yükle", + "deviceName": "Yükleyen:", + "createdAt": "Yüklenme tarihi:", + "path": "Uzak yol", + "dbCompat": "Veritabanı uyumluluğu", + "artifacts": "İçindekiler", + "legacyNotice": "Eski bir uzak yol algılandı. Geri yükleme sonrasında bir sonraki yükleme yeni v2/db-v6 yoluna yazılacaktır.", + "warning": "Bu, tüm yerel verilerin ve beceri yapılandırmalarının üzerine yazacaktır", + "confirm": "Geri Yüklemeyi Onayla" + }, + "confirmUpload": { + "title": "Buluta Yükle", + "content": "Aşağıdakiler WebDAV sunucusuyla eşitle edilecektir:", + "dbItem": "Veritabanı (tüm sağlayıcı yapılandırmaları ve verileri)", + "skillsItem": "Beceriler (tüm özel beceriler)", + "targetPath": "Hedef yolu", + "existingData": "Mevcut bulut verileri", + "deviceName": "Yükleyen:", + "createdAt": "Yüklenme tarihi:", + "path": "Uzak yol", + "dbCompat": "Veritabanı uyumluluğu", + "warning": "Bu, uzak sunucudaki mevcut eşitleme verilerinin üzerine yazılacaktır", + "legacyNotice": "Eski uzak veriler algılandı. Bu yükleme, yeni v2/db-v6 yoluna yazacak ve eski yolun üzerine yazılmayacaktır.", + "confirm": "Yüklemeyi Onayla" + } + }, + "syncType": { + "label": "Eşitleme Türü", + "webdav": "WebDAV", + "s3": "S3 Uyumlu" + }, + "s3Sync": { + "presets": { + "label": "Sağlayıcı", + "awsS3": "AWS S3", + "awsS3Hint": "IAM Erişim Anahtarını s3:PutObject/GetObject/HeadObject izinleriyle kullanın. Bölge: us-east-1, ap-northeast-1 vb.", + "minio": "MinIO", + "minioHint": "Özel uç nokta gerekli, ör. http://minio.local:9000. Bölgesi 'us-east-1' olabilir.", + "r2": "Cloudflare R2", + "r2Hint": "Uç nokta: https://.r2.cloudflarestorage.com. Bölge: 'auto'.", + "oss": "Alibaba Bulut OSS", + "ossHint": "Bitiş noktası: https://oss-.aliyuncs.com. Bölge: cn-hangzhou, cn-shanghai, vb.", + "cos": "Tencent Bulut COS", + "cosHint": "Uç nokta: https://cos..myqcloud.com. Bölge: ap-guangzhou, ap-beijing vb.", + "obs": "Huawei OBS'si", + "obsHint": "Bitiş noktası: https://obs..myhuaweicloud.com. Bölge: cn-north-4, cn-east-3 vb.", + "custom": "S3 Uyumlu (Özel)", + "customHint": "S3 uyumlu herhangi bir hizmet. Özel uç nokta gerekli." + }, + "region": "Bölge", + "regionPlaceholder": "örneğin us-east-1", + "bucket": "Bucket", + "bucketPlaceholder": "örneğin my-cc-switch-bucket", + "accessKeyId": "Erişim Anahtarı Kimliği", + "accessKeyIdPlaceholder": "örneğin AKIA...", + "secretAccessKey": "Gizli Erişim Anahtarı", + "secretAccessKeyPlaceholder": "Mevcut sırrı korumak için değiştirmeden bırakın", + "endpoint": "Uç nokta (AWS için isteğe bağlı)", + "endpointHint": "Çoğu S3 uyumlu hizmet için gereklidir", + "endpointPlaceholder": "örneğin https://s3-compatible.example.com", + "remoteRoot": "Uzak Kök Dizini", + "remoteRootDefault": "Varsayılan: cc-switch-sync", + "profile": "Eşitleme profili adı", + "profileDefault": "Varsayılan: varsayılan", + "autoSync": "Otomatik eşitleme", + "autoSyncHint": "Etkinleştirildiğinde, her veritabanı değişikliği otomatik bir S3 yüklemesini tetikler.", + "enabled": "S3 Eşitlemeunu Etkinleştir", + "enabledHint": "Manuel ve otomatik bulut işlemleri için S3 eşitlemeunu açın.", + "mutualExclusionTitle": "Eşitleme Türünü Değiştir", + "mutualExclusionMessage": "S3 eşitlemeunun etkinleştirilmesi mevcut WebDAV eşitlemeunu devre dışı bırakacaktır. Devam etmek?", + "mutualExclusionMessageReverse": "WebDAV eşitlemeunun etkinleştirilmesi mevcut S3 eşitlemeunu devre dışı bırakacaktır. Devam etmek?", + "mutualExclusionFailed": "Eşitleme türü değiştirilemedi: {{error}}", + "testConnection": "Bağlantıyı Test Et", + "connectionOk": "S3 bağlantısı başarılı", + "test": "Bağlantıyı Test Et", + "testing": "Test ediliyor...", + "testSuccess": "S3 bağlantısı başarılı", + "testFailed": "S3 bağlantısı başarısız oldu: {{error}}", + "save": "Yapılandırmayı Kaydet", + "saving": "Kaydediliyor...", + "saveFailed": "Yapılandırma kaydedilemedi: {{error}}", + "saveAndTestSuccess": "Yapılandırma kaydedildi, S3 bağlantısı tamam", + "saveAndTestFailed": "Yapılandırma kaydedildi ancak S3 bağlantı testi başarısız oldu: {{error}}", + "upload": "Buluta Yükle", + "uploading": "Yükleniyor...", + "uploadSuccess": "S3'e yüklendi", + "uploadFailed": "S3 yüklemesi başarısız oldu: {{error}}", + "autoSyncFailedToast": "S3 otomatik eşitlemeu başarısız oldu: {{error}}", + "download": "Buluttan indir", + "downloading": "İndiriliyor...", + "downloadSuccess": "S3'ten indirildi ve geri yüklendi", + "downloadFailed": "S3 indirme işlemi başarısız oldu: {{error}}", + "lastSync": "Son eşitleme: {{time}}", + "autoSyncLastErrorTitle": "Son S3 otomatik eşitlemeu başarısız oldu", + "autoSyncLastErrorHint": "Lütfen ağ veya S3 ayarlarını kontrol edin. Otomatik eşitleme gelecekteki değişikliklerde yeniden denenecek.", + "missingBucket": "Lütfen S3 bucket adını girin", + "noRemoteData": "S3 paketinde eşitleme verisi bulunamadı", + "incompatibleVersion": "Uzak veriler uyumlu değil (sürüm {{version}}). Bu istemci v2 / db-v6 protokolünü destekler.", + "unsaved": "Kaydedilmemiş", + "saved": "Kaydedildi", + "unsavedChanges": "Lütfen önce yapılandırmayı kaydedin", + "saveBeforeSync": "Yüklemeyi/indirmeyi etkinleştirmek için önce yapılandırmayı kaydedin.", + "fetchingRemote": "Uzak bilgiler getiriliyor...", + "fetchRemoteFailed": "Uzak bilgiler getirilemedi. Lütfen yapılandırmayı ve ağı kontrol edin.", + "notConfigured": "S3 eşitlemeu yapılandırılmadı", + "disabled": "S3 eşitlemeu devre dışı", + "confirmDownload": { + "title": "S3'ten geri yükleme", + "deviceName": "Yükleyen:", + "createdAt": "Yüklenme tarihi:", + "artifacts": "İçindekiler", + "warning": "Bu, tüm yerel verilerin ve beceri yapılandırmalarının üzerine yazacaktır", + "confirm": "Geri Yüklemeyi Onayla" + }, + "confirmUpload": { + "title": "S3'e yükle", + "content": "Aşağıdakiler S3 paketiyle eşitle edilecek:", + "dbItem": "Veritabanı (tüm sağlayıcı yapılandırmaları ve verileri)", + "skillsItem": "Beceriler (tüm özel beceriler)", + "targetPath": "Hedef nesne yolu", + "existingData": "Mevcut bulut verileri", + "deviceName": "Yükleyen:", + "createdAt": "Yüklenme tarihi:", + "warning": "Bu, S3 yolundaki mevcut eşitleme verilerinin üzerine yazacaktır", + "confirm": "Yüklemeyi Onayla" + } + }, + "autoReload": "Veriler yenilendi", + "languageOptionChinese": "简体中文", + "languageOptionTraditionalChinese": "繁體中文", + "languageOptionEnglish": "English", + "languageOptionJapanese": "日本語", + "languageOptionTurkish": "Türkçe (topluluk çevirisi)", + "windowBehavior": "Pencere Davranışı", + "windowBehaviorHint": "Pencere simge durumuna küçültme ve Claude eklenti entegrasyon ilkelerini yapılandırın.", + "launchOnStartup": "Başlangıçta Başlat", + "launchOnStartupDescription": "Sistem başlatıldığında CC Switch'yi otomatik olarak çalıştır", + "silentStartup": "Sessiz Başlangıç", + "silentStartupDescription": "Ana pencereyi göstermeden arka plan modunda başlat", + "autoLaunchFailed": "Otomatik başlatma ayarlanamadı", + "minimizeToTray": "Kapatıldığında tepsiye küçült", + "minimizeToTrayDescription": "İşaretlendiğinde kapat düğmesine basıldığında sistem tepsisinde gizlenir, aksi halde uygulama doğrudan çıkar.", + "useAppWindowControls": "Uygulama düzeyinde pencere kontrollerini etkinleştir", + "useAppWindowControlsDescription": "Uygulama başlığındaki yerleşik küçültme, büyütme/geri yükleme ve kapatma düğmelerini kullanın.", + "enableClaudePluginIntegration": "Claude Code uzantısına uygula", + "enableClaudePluginIntegrationDescription": "Etkinleştirildiğinde VS Code Claude Code uzantı sağlayıcısı bu uygulamayla geçiş yapacak", + "skipClaudeOnboarding": "Claude Code ilk çalıştırma onayını atla", + "skipClaudeOnboardingDescription": "İlk başlatmada Claude Code, bir tema seçmenizi ve bir Anthropic hesabında oturum açmanızı isteyen bir katılım akışı çalıştırır. Üçüncü taraf bir sağlayıcı kullanıyorsanız bu oturum açma işlemine ihtiyacınız yoktur; bu nedenle, bunu açmak doğrudan atlar. ~/.claude.json'a hasCompletedOnboarding: true yazılarak çalışır; kapatıldığında bu alan kaldırılır ve bir sonraki başlatmada katılım yeniden görünür.", + "codexAuth": "Codex Uygulama Geliştirmeleri", + "preserveCodexOfficialAuthOnSwitch": "Doğrudan geçişler için resmi giriş bilgilerini koruyun", + "preserveCodexOfficialAuthOnSwitchDescription": "Yerel yönlendirme kapalıyken üçüncü taraf anahtarları kontrol eder. Devralma yönlendirmesi her zaman Codex resmi giriş bilgilerini korur.", + "unifyCodexSessionHistory": "Birleşik Codex oturum geçmişi", + "unifyCodexSessionHistoryDescription": "Yalnızca Codex CLI'yi etkiler: devam edilebilir oturum listesi yalnızca mevcut sağlayıcının oturumlarını gösterir. Etkinleştirildiğinde resmi abonelik, paylaşılan \"özel\" sağlayıcı kimliği altında çalışır, böylece resmi ve üçüncü taraf oturumları tek bir listede görünür. Codex masaüstü uygulaması, yeni bir güncellemeden bu yana tüm oturumları gösterebilir, dolayısıyla yalnızca masaüstü kullanıcılarının buna ihtiyacı yoktur. İsteğe bağlı olarak mevcut resmi oturumları (öncelikle yedeklenen) taşıyabilir ve kapattığınızda bunları yedeklemeden geri yükleyebilirsiniz. Not: eski bir oturumun sağlayıcılar arasında sürdürülmesi başarısız olabilir, çünkü encrypted_content mantığının şifresi yalnızca onu oluşturan arka uç tarafından çözülebilir.", + "codexStackClassicSubagents": "Birleştirmedaki klasik alt ajan araçları", + "codexStackClassicSubagentsDescription": "Codex birleştirme modunda, modeli ana ajandan farklı bir sağlayıcıdan gelen bir alt ajan, görevini okuyamayabilir: daha yeni Codex alt ajan araçları, ana ajannın sağlayıcısının görevi şifrelemesini sağlar ve başka hiçbir sağlayıcı bunun şifresini çözemez. Etkinleştirildiğinde, toplanan her model, görevi düz metin olarak ileten klasik Codex alt ajan araçlarını kullanır; takas, followup_task ve interrupt_agent gibi daha yeni özelliklerin kaybedilmesidir. Yalnızca birleştirme modunu etkiler; Değişikliğin etkili olması için Codex uygulamasını yeniden başlatın.", + "codexStackClassicSubagentsForcedV2": "Codex config.toml, bu ayara göre öncelikli olan [features] multi_agent_v2'yi açar, dolayısıyla hiçbir etkisi olmaz.", + "codexSessionCompression": "Eski Codex oturumlarını sıkıştır", + "codexSessionCompressionDescription": "Codex açıkken, her başlatıldığında arka planda 7 gün boyunca değişmeyen oturum dosyalarını sıkıştırır ve bu da çok fazla disk alanı tasarrufu sağlar. Codex, devam ettiğinizde oturumun sıkıştırmasını otomatik olarak açar. CC Switch hala sıkıştırılmış oturumları listeliyor ve sayıyor; liste yalnızca son yanıtlarının önizlemesini göstermiyor. Bu, halen geliştirilmekte olan bir Codex özelliğidir: Codex, açıkken her başlangıçta bir bildirim gösterir. Yeni bir Codex sürümü gerektirir ve Codex yeniden başlatıldıktan sonra etkili olur. Kapatıldığında sıkıştırma durdurulur; zaten sıkıştırılmış olan oturumlar olduğu gibi kalır.", + "codexSessionCompressionUsage": "Oturumlar şu anda {{size}} kullanıyor", + "codexSessionCompressionFailed": "Codex oturum sıkıştırma ayarı değiştirilemedi", + "unifyCodexHistoryRestoreCompleted": "Yedeklemeden geri yüklenen resmi oturum geçmişi ({{files}} oturum dosyaları, {{rows}} dizin satırları)", + "unifyCodexHistoryRestoreFailed": "Resmi oturum geçmişi geri yüklenemedi, lütfen tekrar deneyin", + "unifyCodexHistoryRestoreNothing": "Geçerli Codex dizini için geri yüklenebilir geçiş yedeği yok", + "unifyCodexHistoryRestoreSkippedToggleOn": "Birleşik oturum geçmişi yeniden etkinleştirildi; geri yükleme atlandı", + "appVisibility": { + "title": "Ana Sayfa Ekranı", + "description": "Ana sayfada hangi uygulamaların gösterileceğini seçin", + "claudeDesc": "Anthropic Claude Code CLI", + "codexDesc": "OpenAI Codex CLI", + "geminiDesc": "Google Gemini CLI", + "opencodeDesc": "OpenCode CLI", + "showProfileSwitcher": "Proje değiştiriciyi göster", + "showProfileSwitcherDescription": "Proje değiştiriciyi ana sayfa başlığında göster", + "showProviderSearch": "Sağlayıcı aramasını göster", + "showProviderSearchDescription": "Sağlayıcıları ada, notlara, web sitesine veya API adresine göre bulmak için sağlayıcı sayfasının üst kısmında bir arama düğmesi gösterin. Gizlendiğinde, ⌘F / Ctrl+F yine de aramayı açar" + }, + "terminal": { + "title": "Tercih Edilen Terminal", + "description": "Terminal düğmesine tıklandığında hangi terminal uygulamasının kullanılacağını seçin", + "fallbackHint": "Seçilen terminal kullanılamıyorsa sistem varsayılanı kullanılacaktır", + "options": { + "macos": { + "terminal": "Terminal.app", + "iterm2": "iTerm2", + "alacritty": "Alacritty", + "kitty": "Kitty", + "ghostty": "Ghostty", + "otty": "Otty", + "wezterm": "WezTerm", + "kaku": "kaku", + "warp": "Warp" + }, + "windows": { + "cmd": "Komut İstemi", + "powershell": "PowerShell", + "wt": "Windows Terminali" + }, + "linux": { + "gnomeTerminal": "GNOME Terminali", + "konsole": "Konsole", + "xfce4Terminal": "Xfce4 Terminali", + "alacritty": "Alacritty", + "kitty": "Kitty", + "ghostty": "Ghostty" + } + } + }, + "configDirectoryOverride": "Yapılandırma Dizinini Geçersiz Kılma (Gelişmiş)", + "configDirectoryDescription": "WSL gibi ortamlarda Claude Code veya Codex kullanırken, sağlayıcı verilerini ana ortamla tutarlı tutmak için yapılandırma dizinini WSL'deki dizine manuel olarak belirtebilirsiniz.", + "appConfigDir": "CC Switch Yapılandırma Dizini", + "appConfigDirDescription": "CC Switch yapılandırması için depolama konumunu özelleştirin (yapılandırma eşitlemeunu etkinleştirmek için bulut eşitleme klasörünü işaretleyin)", + "browsePlaceholderApp": "örneğin, C:\\Users\\Administrator\\.cc-switch", + "claudeConfigDir": "Claude Code Yapılandırma Dizini", + "claudeConfigDirDescription": "Claude yapılandırma dizinini (settings.json) geçersiz kılın. Özel dizinler .claude.json'u (MCP) dizinin içinde saklar; varsayılan ~/.claude dizini Claude Code'nin bölünmüş ~/.claude.json yolunu korur.", + "codexConfigDir": "Codex Yapılandırma Dizini", + "codexConfigDirDescription": "Codex yapılandırma dizinini geçersiz kılın.", + "geminiConfigDir": "Gemini Yapılandırma Dizini", + "geminiConfigDirDescription": "Gemini yapılandırma dizinini (.env) geçersiz kılın.", + "grokConfigDir": "Grok Build Yapılandırma Dizini", + "grokConfigDirDescription": "Grok Build yapılandırma dizinini (config.toml) geçersiz kılın.", + "opencodeConfigDir": "OpenCode Yapılandırma Dizini", + "opencodeConfigDirDescription": "OpenCode yapılandırma dizinini (opencode.json / opencode.jsonc) geçersiz kılın.", + "openclawConfigDir": "OpenClaw Yapılandırma Dizini", + "openclawConfigDirDescription": "OpenClaw yapılandırma dizinini (openclaw.json) geçersiz kılın.", + "hermesConfigDir": "Hermes Yapılandırma Dizini", + "hermesConfigDirDescription": "Hermes yapılandırma dizinini (config.yaml) geçersiz kılın.", + "piConfigDir": "Pi Yapılandırma Dizini", + "piConfigDirDescription": "Pi yapılandırma dizinini (models.json, talimat dosyaları, istemler, beceriler ve oturumlar) geçersiz kılın.", + "browsePlaceholderClaude": "ör. /home//.claude", + "browsePlaceholderCodex": "ör. /home//.codex", + "browsePlaceholderGemini": "ör., /home//.gemini", + "browsePlaceholderGrok": "ör., /home//.grok", + "browsePlaceholderOpencode": "ör. /home//.config/opencode", + "browsePlaceholderOpenclaw": "ör. /home//.openclaw", + "browsePlaceholderHermes": "ör. /home//.hermes", + "browsePlaceholderPi": "ör. /home//.pi/agent", + "browseDirectory": "Dizine Göz Atın", + "resetDefault": "Varsayılan dizine sıfırla (kaydettikten sonra etkili olur)", + "checkForUpdates": "Güncellemeleri Kontrol Et", + "updateTo": "v{{version}}'ye güncelleme", + "updating": "Güncelleniyor...", + "checking": "Kontrol ediliyor...", + "upToDate": "Güncel", + "aboutHint": "Sürüm bilgilerini ve güncelleme durumunu görüntüleyin.", + "portableMode": "Taşınabilir mod: Güncellemeler manuel olarak indirilmeyi gerektirir.", + "updateAvailable": "Yeni sürüm mevcut: {{version}}", + "updateBadge": "Güncelleme mevcut", + "updateFailed": "Güncelleme yüklemesi başarısız oldu, indirme sayfası açılmaya çalışıldı.", + "checkUpdateFailed": "Güncellemeler kontrol edilemedi. Lütfen daha sonra tekrar deneyin.", + "openReleaseNotesFailed": "Sürüm notları açılamadı", + "releaseNotes": "Sürüm Notları", + "viewReleaseNotes": "Bu sürümün sürüm notlarını görüntüle", + "viewCurrentReleaseNotes": "Mevcut sürüm sürüm notlarını görüntüle", + "officialWebsite": "Resmi Web Sitesi", + "github": "GitHub", + "starPrompt": "CC Switch size yardımcı olduysa lütfen GitHub’da bize yıldız verin — bu bizim için çok şey ifade ediyor", + "starOnGithub": "GitHub’da yıldız", + "manualInstallCommands": "Manuel Kurulum Komutları", + "oneClickInstallHint": "Claude Code / Codex / Gemini CLI / Grok Build / OpenCode / OpenClaw / Hermes / Pi / MiniMax Code'yi yükleyin veya yükseltin", + "localEnvCheck": "Yerel ortam kontrolü", + "updateAllTools": "Tümünü Güncelle ({{count}})", + "currentVersion": "Güncel Sürüm", + "latestVersion": "Son Sürüm", + "updateAvailableShort": "Güncelle", + "toolInstall": "Yükle", + "toolUpdate": "Güncelle", + "toolReady": "Hazır", + "toolActionDone": "{{action}}, {{count}} takım(lar)ı için tamamlandı", + "toolActionPartial": "{{action}}, {{succeeded}} için başarılı oldu, {{failed}} için başarısız oldu", + "toolActionFailed": "Yükleme/güncelleme komutu başarısız oldu", + "toolActionInProgress": "Kurulum veya güncelleme halen devam ediyor", + "toolActionInProgressDetail": "{{tool}} için bir kurulum veya güncelleme zaten arka planda gerçekleştiriliyor. Lütfen bitmesini bekleyin; tekrar başlatmaya gerek yoktur.", + "toolNotRunnable": "Yüklendi ancak çalıştırılamıyor (sürüm algılanmadı)", + "toolActionVersionUnchangedTitle": "Sürüm değişmedi", + "toolActionVersionUnchanged": "Hala {{version}}'de (en son: {{latest}}). Güncelleyici, güncellemeyi uygulamadan başarı bildirmiş olabilir.", + "toolActionInstalledNotRunnable": "Yüklendi ancak mevcut ortamda çalışamıyor; lütfen kontrol edin", + "installedNotRunnable": "Yüklendi · çalıştırılamıyor", + "toolCheckEnv": "Ortamı kontrol edin", + "toolDiagnose": "Yüklemeleri teşhis edin", + "toolDiagnosing": "Teşhis ediliyor…", + "toolConflictTitle": "Birden fazla kurulum algılandı", + "toolConflictHint": "Komut satırı Varsayılan olarak işaretlenmiş olanı kullanır; bir yükseltme diğerine yazılmış olabilir.", + "toolConflictDefault": "Varsayılan", + "toolConflictNotRunnable": "çalıştırılamıyor", + "toolDiagnoseNoConflict": "Çakışan kurulum bulunamadı", + "toolDiagnoseConflicts": "{{count}} araçlarının birden fazla kurulumu vardır; listeler satırlarında genişletilir", + "toolDiagnoseFailed": "Teşhis başarısız oldu", + "toolUpgradeConfirmTitle": "Yükseltme hedefini onaylayın", + "toolUpgradeConfirmHint": "Birden fazla kurulum algılandı. Bu yükseltme hepsini güncellemeyecektir; Gerçekte neyi hedeflediğini öğrenmek için aşağıdaki her araca bakın.", + "toolUpgradeWillRun": "Çalıştırılacak:", + "toolUpgradeConfirmBtn": "Yükseltmeyi onayla", + "toolUpgradeUnanchoredHint": "Komut satırınızın hangi yüklemeyi kullandığı belirlenemiyor; varsayılan yükseltme komutunu çalıştıracaktır (PATH'deki ilk npm'ye yüklenebilir).", + "toolUpgradeUnmanagedTitle": "Bu araçların yükseltilmesi atlandı", + "toolUpgradeUnmanagedDetail": "{{tool}} ({{path}}), npm veya tanınan bir yükleyici tarafından kurulmadığından CC Switch, onu nasıl yükselteceğini söyleyemez. Kurulum şeklinizi yükseltin (örn. Winget, Scoop veya resmi kurulum betiğini yeniden çalıştırın).", + "envBadge": { + "wsl": "WSL", + "windows": "Windows", + "macos": "macOS", + "linux": "Linux" + }, + "wslShell": "Kabuk", + "wslShellFlag": "Bayrak", + "installCommandsCopied": "Kurulum komutları kopyalandı", + "installCommandsCopyFailed": "Kopyalama başarısız oldu, lütfen manuel olarak kopyalayın.", + "importFailedError": "Yapılandırma içe aktarılamadı: {{message}}", + "exportFailedError": "Yapılandırmayı dışa aktarma başarısız oldu:", + "restartRequired": "Yeniden Başlatma Gerekli", + "restartRequiredMessage": "CC Switch yapılandırma dizininde değişiklik yapılması, etkili olması için uygulamanın yeniden başlatılmasını gerektirir. Şimdi yeniden başlatılsın mı?", + "restartNow": "Şimdi Yeniden Başlat", + "restartLater": "Daha Sonra Yeniden Başlat", + "restartFailed": "Uygulama yeniden başlatılamadı. Lütfen manuel olarak kapatıp yeniden açın.", + "devModeRestartHint": "Geliştirici Modu: Otomatik yeniden başlatma desteklenmiyor, lütfen uygulamayı manuel olarak yeniden başlatın.", + "saving": "Kaydediliyor...", + "globalProxy": { + "label": "Küresel Vekil", + "hint": "Tüm istekleri proxy olarak gönderin (API, Beceri indirme vb.). Yerel yönlendirme etkinleştirildiğinde uygulama trafiği de bu proxy üzerinden yönlendirilir. Doğrudan bağlantı için boş bırakın.", + "username": "Kullanıcı adı (isteğe bağlı)", + "password": "Şifre (isteğe bağlı)", + "test": "Bağlantıyı Test Et", + "scan": "Yerel Proxy'leri Tara", + "clear": "Temizle", + "scanFailed": "Tarama başarısız oldu: {{error}}", + "saved": "Proxy ayarları kaydedildi", + "saveFailed": "Kaydetme başarısız oldu: {{error}}", + "testSuccess": "Bağlı! Gecikme {{latency}}ms", + "testFailed": "Bağlantı başarısız oldu: {{error}}", + "pricingDefaultsTitle": "Fiyatlandırma Varsayılanları", + "pricingDefaultsDescription": "Her uygulamanın fiyatlandırmanın istek modeline mi yoksa yanıt modeline göre mi eşleşeceğini seçin. Yalnızca yerel yönlendirmeden geçen istekler için geçerlidir.", + "pricingAppLabel": "Uygulama", + "pricingModelSourceLabel": "Fiyatlandırma Modeli Kaynağı", + "pricingModelSourceRequest": "İstek modeli", + "pricingModelSourceResponse": "Yanıt modeli", + "pricingSave": "Fiyatlandırma Varsayılanlarını Kaydet", + "pricingSaved": "Fiyatlandırma varsayılanları kaydedildi", + "pricingSaveFailed": "Fiyatlandırma varsayılanları kaydedilemedi: {{error}}", + "pricingLoadFailed": "Fiyatlandırma varsayılanları yüklenemedi: {{error}}" + }, + "saveFailedGeneric": "Kaydetme başarısız oldu, lütfen tekrar deneyin", + "sections": { + "general": "Genel", + "appConfig": "Uygulama yapılandırması", + "routing": "Yerel yönlendirme", + "network": "Ağ", + "data": "Veri", + "about": "Hakkında" + }, + "appConfig": { + "configDir": "Yapılandırma dizini" + }, + "routing": { + "service": "Hizmet" + }, + "data": { + "location": "Konum" + } + }, + "apps": { + "claude": "Claude", + "claudeCode": "Claude Code", + "claudeDesktop": "Claude Desktop", + "claude-desktop": "Claude Desktop", + "codex": "Codex", + "gemini": "Gemini", + "grokbuild": "Grok Build", + "opencode": "OpenCode", + "openclaw": "OpenClaw", + "hermes": "Hermes", + "pi": "Pi", + "mcode": "MiniMax Code" + }, + "mcode": { + "empty": { + "title": "Henüz özel sağlayıcı yok", + "description": "MiniMax hesabınızda oturum açma işleminiz MiniMax Code'nin kendisi tarafından yönetildiğinden içe aktarılacak hiçbir şey yoktur. Zaten config.yaml'de bulunan özel sağlayıcılar burada otomatik olarak görünür. Ön ayar veya özel sağlayıcı eklemek için sağ üst köşedeki + düğmesini kullanın." + } + }, + "pi": { + "empty": { + "title": "Henüz API anahtar sağlayıcısı yok", + "description": "Ön ayar veya özel sağlayıcı eklemek için sağ üst köşedeki + düğmesini kullanın." + }, + "provider": { + "enabled": "Pi'de etkinleştirildi", + "enableFailed": "Bu sağlayıcı Pi'de etkinleştirilemedi", + "removed": "Pi'den kaldırıldı", + "writeConflict": "Başka bir işlem Pi'nin yapılandırmasını güncellemektir. Kısa süre sonra tekrar deneyin." + }, + "form": { + "providerKey": "Sağlayıcı anahtarı", + "providerKeyRequired": "Sağlayıcı anahtarı gerekli", + "selectPresetRequired": "Önce bir ön ayar veya özel konfigürasyon seçin", + "fixJsonFirst": "Yapılandırılmış alanları düzenlemeden önce aşağıdaki JSON yapılandırmasını düzeltin.", + "nameRequired": "Görünen ad gerekli", + "credential": "API Anahtarı", + "credentialRequired": "Bu ön ayar için API anahtarını girin", + "absoluteHttpUrlRequired": "{{label}}, mutlak bir HTTP veya HTTPS URL'si olmalıdır", + "positiveNumberRequired": "{{label}} 0'dan büyük bir sayı olmalıdır", + "models": "Model konfigürasyonu", + "noModels": "Yapılandırılmış model yok", + "addModel": "Model ekle", + "removeModel": "Modeli kaldır", + "modelId": "Model Kimliği", + "modelIdRequired": "{{index}} modelinin bir kimliğe ihtiyacı var", + "modelName": "Görünen ad", + "modelNameRequired": "{{index}} modelinin görünen adı gerekiyor", + "modelNamePlaceholder": "Görünen ad", + "toggleModelDetails": "Model ayrıntılarını değiştir", + "reasoning": "Genişletilmiş düşünmeyi destekler", + "imageInput": "Görüntü girişini destekler", + "thinkingLevelsLabel": "Düşünme seviyeleri", + "customizeThinkingLevels": "Özelleştir", + "thinkingLevelDefault": "Pi varsayılan", + "thinkingLevelUnsupported": "Kullanılamıyor", + "thinkingLevelValue": "{{level}} için yukarı akış değeri", + "editThinkingLevel": "{{level}} düzeyini düzenle", + "thinkingLevelFollowDefault": "Pi varsayılanını takip edin", + "thinkingLevelMapTo": "Harita", + "thinkingLevelMarkUnavailable": "Bu seviye mevcut değil", + "thinkingLevelMapInvalid": "Düşünme seviyeleri yalnızca Pi'nin yerel anahtarlarını dize veya boş değerlerle kullanabilir.", + "thinkingLevels": { + "off": "Kapalı", + "minimal": "Asgari", + "low": "Düşük", + "medium": "Orta", + "high": "Yüksek", + "xhigh": "Ekstra yüksek", + "max": "Maksimum" + }, + "contextWindow": "Bağlam penceresi", + "maxTokens": "Maksimum çıkış tokenları", + "compatibility": "Uyumluluk", + "compatibilityHint": "Uyumlu veya yerel uç noktalar için istek davranışını ayarlayın.", + "addCompatibilityOption": "Ekle", + "noCompatibilityOptions": "Hiçbir uyumluluk seçeneği yapılandırılmadı", + "optionKey": "Seçenek", + "optionValue": "Değer", + "removeCompatibilityOption": "Uyumluluk seçeneğini kaldır", + "effectiveApiRequired": "{{id}} modelinin doğrudan veya sağlayıcıdan bir API'ye ihtiyacı var", + "effectiveBaseUrlRequired": "{{id}} modelinin doğrudan veya sağlayıcıdan bir temel URL'ye ihtiyacı var", + "duplicateModel": "Model Kimliği {{id}} kopyalandı", + "modelRequired": "En az bir model ekleyin", + "providerKeyDuplicate": "Bu sağlayıcı anahtarı zaten mevcut" + }, + "current": { + "readFailed": "Pi'nin sağlayıcı yapılandırması okunamadı", + "stateUnavailableHint": "CC Switch, Pi'nin sağlayıcı yapılandırmasını okuyabilene kadar sağlayıcı değişiklikleri devre dışı bırakılır." + }, + "prompts": { + "globalTab": "Kütüphane", + "systemTab": "Sistem istemi", + "templatesTab": "Şablonlar", + "usePromptSuccess": "Global AGENTS.md güncellendi", + "stopUsingSuccess": "Global AGENTS.md kaldırıldı", + "systemAppend": "Sistem ekleme", + "systemAppendDescription": "Pi'nin yerleşik temel isteminden sonra eklendi", + "systemOverride": "Sistem değişimi", + "systemOverrideDescription": "Pi'nin yerleşik temel isteminin yerine geçer", + "systemOverrideWarning": "SYSTEM.md, Pi'nin yerleşik temel isteminin yerini alır. Temel talimatların tam kontrolüne ihtiyacınız olmadığı sürece APPEND_SYSTEM.md'yi kullanın.", + "recommended": "Önerilen", + "configuredEmpty": "Yapılandırılmış ancak boş", + "notConfigured": "Yapılandırılmadı", + "unavailable": "Kullanılamıyor", + "instructionPlaceholder": "Pi için indirim", + "blankInstruction": "Boş olmayan bir içerik girin. Kullanmayı durdurmak için sol alttaki Dosyayı sil'e tıklayın", + "saveAndConfigure": "Kaydet ve yapılandır", + "activateOverrideTitle": "{{filename}} yapılandırılsın mı?", + "activateOverrideMessage": "{{filename}} oluşturmak, Pi'nin yerleşik temel isteminin yerine geçer. Pi hâlâ kendi kurallarına göre içerik, AGENTS.md, Beceriler ve diğer kaynakları eklemeye devam ediyor.", + "fileSaved": "{{filename}} kaydedildi", + "saveFailed": "Pi talimat dosyası kaydedilemedi", + "deleteFailed": "Pi talimat dosyası silinemedi", + "reloadNotice": "Açık Pi oturumları değişiklikleri anında yüklemez; oturum boştayken /reload komutunu çalıştırın. Yeni oturumlar otomatik olarak okur.", + "templatesDescription": "Kaydedilen şablonlar Pi içinde /command-name olarak kullanılabilir. Ayrıca etkinleştirmeniz gerekmez.", + "newTemplate": "Yeni şablon", + "editTemplate": "Düzenle /{{slug}}", + "templateCommand": "Eğik çizgi komutu", + "templateSlug": "Tek kelime, ör. gözden geçirmek", + "templateSlugInvalid": "Tek bir kelime kullanın: harfler, rakamlar, - _ . — / \\ : * ? gibi boşluk veya karakter yok", + "templateSlugExists": "/{{slug}} zaten mevcut; başka bir isim seç", + "templateDescription": "Notlar", + "templateDescriptionPlaceholder": "İsteğe bağlı, şablonun açıklamasına yazılır", + "templateContent": "Şablon metni", + "templateContentPlaceholder": "Pi'nin genişleyeceğine dair işaretleme", + "templateSyntax": "Şablon metni yazma", + "templateSyntaxDescription": "Bağımsız değişkenler için $1, $2, $@ veya $ARGUMENTS kullanın; ön maddeyle başlayabilirsiniz (açıklama, argüman-ipucu).", + "createTemplate": "Şablon oluştur", + "templateCreated": "Oluşturuldu /{{slug}}", + "templateSaved": "/{{slug}} kaydedildi", + "templateLoadFailed": "Pi bilgi istemi şablonları yüklenemedi", + "templateSaveFailed": "Pi bilgi istemi şablonu kaydedilemedi", + "templateDeleteFailed": "Pi bilgi istemi şablonu silinemedi", + "searchTemplates": "Komut veya metin arayın", + "noTemplates": "Henüz şablon yok", + "noTemplatesDescription": "Kaydettikten sonra /command yazarak Pi'de çalıştırın.", + "noTemplateResults": "\"{{query}}\" ile eşleşen şablon komutu, not veya metin yok", + "kindLabel": "Pi bilgi istemi türü", + "libraryLabel": "Pi bilgi istemi kitaplığı", + "systemFilesLabel": "Pi sistem bilgi istemi dosyaları", + "templatesLabel": "Pi bilgi istemi şablonları", + "externalTitle": "AGENTS.md, CC Switch dışında değiştirildi", + "externalDetail": "İçeriği ({{size}}) her kitaplık isteminden farklıdır, dolayısıyla hiçbiri etkin olarak gösterilmez. Başka bir tane etkinleştirilmeden önce kitaplığa kaydedilir.", + "saveToLibrary": "Kitaplığa kaydet", + "reloadAfterDelete": "Açık Pi oturumları, boştayken /reload komutunu çalıştırdığınızda değişikliği alır.", + "configuredSize": "Yapılandırılmış · {{size}}", + "create": "Oluştur", + "createFile": "{{filename}}'yi oluşturun", + "editFile": "{{filename}}'yi düzenleyin", + "saveAndConfigureEllipsis": "Kaydet ve yapılandır", + "deleteFile": "Dosyayı sil", + "appendDeleted": "APPEND_SYSTEM.md silindi; Pi artık onu eklemiyor", + "overrideDeleted": "SYSTEM.md silindi; Pi yerleşik temel istemine geri döndü", + "deletedUndoable": "Geri al, dosyayı olduğu gibi geri yazar.", + "deletedBlank": "Dosya boş olduğundan bu işlem geri alınamaz.", + "fileRestored": "~/.pi/agent/{{filename}} geri yazdı", + "templateSlugRequired": "Bir komut adı girin, ör. gözden geçirmek", + "templateSaveTo": "{{path}} konumuna kaydedildi", + "templateRename": "/{{from}}'den /{{to}}'ye yeniden adlar kaydediliyor", + "searchTemplatesLabel": "Şablonlarda ara", + "copyCommand": "Komutu kopyala", + "copiedCommand": "Kopyalandı /{{slug}}", + "templateDeletedUndo": "Silindi /{{slug}}; Pi artık bu komuta sahip değil", + "templateDeletedSub": "Geri al, istemleri/{{slug}}.md dosyasını olduğu gibi geri yazar.", + "templateRestored": "~/.pi/agent/prompts/{{slug}}.md geri yazdı" + } + }, + "appSwitcher": { + "more": "Daha fazla uygulama" + }, + "grokBuild": { + "apiBackend": "API arka uç", + "contextWindow": "Bağlam penceresi", + "contextWindowInvalid": "Bağlam penceresi pozitif bir tam sayı olmalıdır", + "profile": "Müşteri modeli profili", + "rawConfig": "config.toml", + "invalidToml": "Geçersiz config.toml: {{error}}", + "defaultModelPlaceholder": "örneğin grok-4.5", + "defaultModelHint": "Grok Build modeli varsayılan olarak talep eder; istediğiniz zaman değiştirin.", + "reasoningEffortHint": "Yukarı akış, düşük/yüksek/maks. gibi düşünme derinliğini desteklediğinde açın. Ayrıca düşünme modunu açar ve isteğin akıl yürütme çabasını yukarı akış Sohbet parametresine eşler.", + "maxOutputTokensHint": "Varsayılan sınır olan 8192, uzun yanıtları veya derin düşünmeyi engelleyebilir. Bu değer Anthropic'nin max_tokens'ı olarak gönderilir.", + "keyFieldsHint": "Sağlayıcıyı takip etmek için varsayılan model (models.default) ve işaret ettiği model tablosu; geri kalan her şey Grok Build genel ayarlarıdır ve kaydettikten sonra her sağlayıcı için geçerlidir.", + "inactiveFieldsHint": "Bu sağlayıcıya daha eski bir sürümle kaydedilmiş; geçiş artık bunları uygulamamaktadır. TOML'yi kopyalamak ve ihtiyacınız varsa yukarıya yapıştırmak için birine tıklayın.", + "inactiveFieldCopied": "Kopyalandı", + "routeOnlySettingsHint": "Aşağıdaki iki ayar yalnızca yönlendirme modunda geçerlidir." + }, + "sessionManager": { + "searchPlaceholder": "Başlıkları, klasörleri, ilk/son mesajları veya oturum kimliklerini arayın", + "searchSessions": "Oturumları ara", + "sessionList": "Oturumlar", + "unknownDirectory": "Bilinmeyen dizin", + "batchDeleting": "Siliniyor...", + "loadingSessions": "Oturumlar yükleniyor...", + "piRelativeSessionDir": "Pi sessionDir, Pi'nin başlatıldığı dizine göredir, dolayısıyla genel bir tarayıcı onu güvenli bir şekilde numaralandıramaz. Burada tüm Pi oturumlarına göz atmak için mutlak bir sessionDir ayarlayın:", + "piDiscoveryUnavailable": "Pi oturumları incelenemedi: {{error}}", + "copyResumeCommand": "Oturuma devam etme komutunu kopyala", + "resumeCommandCopied": "Devam komutu kopyalandı", + "copySourcePath": "Kaynak dosya yolunu kopyala", + "sourcePathCopied": "Kaynak dosya yolu kopyalandı", + "deleteConfirmAction": "Oturumu sil", + "sessionDeleted": "Oturum silindi", + "deleteFailed": "Oturum silinemedi: {{error}}", + "batchDeleteSuccess": "{{count}} oturumları silindi", + "batchDeleteFailed": "{{failed}} oturumları silinemedi", + "batchDeleteRequestFailed": "Toplu silme başarısız oldu. Lütfen daha sonra tekrar deneyin.", + "loadingMessages": "Transkript yükleniyor...", + "emptySession": "Bu oturumda gösterilecek mesaj yok", + "justNow": "Az önce", + "minutesAgo": "{{count}} dakika önce", + "hoursAgo": "{{count}} saat önce", + "daysAgo": "{{count}} gün önce", + "roleSystem": "Sistem", + "roleTool": "Araç", + "noResumeCommand": "Bu oturum sürdürülemez", + "messageCopied": "Mesaj kopyalandı", + "expandContent": "Tüm içeriği genişlet", + "collapseContent": "Daralt", + "helpTitle": "Oturumların nereden geldiği", + "helpBody": "CC Switch, her uygulamanın bu bilgisayarda tuttuğu oturum kayıtlarını okur. ⋯ menüsündeki “Oturumların nerede saklandığı” konusuna bakın. Claude Desktop'nin kendine ait oturum kaydı yoktur.", + "moreActions": "Daha fazla oturum eylemi", + "refreshList": "Listeyi yenile", + "listRefreshed": "Oturum listesi yenilendi", + "selectMany": "Birden fazla seç", + "preferredTerminal": "Tercih edilen terminal", + "whereMenu": "Oturumların depolandığı yer", + "whereTitle": "Oturumların depolandığı yer", + "whereLead": "CC Switch bu konumlardaki oturumları okur. Claude Desktop'nin kendine ait oturum kaydı yoktur.", + "whereNote": "Ayarlar'da özel bir yapılandırma dizinine sahip uygulamalar bu dizinden okunur.", + "appPrefix": "Uygulama:", + "chooseApp": "Uygulamayı seçin", + "allApps": "Tüm uygulamalar", + "noSessionsCount": "Yok", + "clearSearch": "Aramayı temizle", + "foundCount": "{{count}} oturumları bulundu", + "groupBy": "Gruplandırma ölçütü", + "groupByTime": "zamana göre", + "groupByProject": "Projeye göre", + "desktopNote": "Claude Desktop'nin kendine ait oturum kaydı yoktur. Claude Code oturumları gösteriliyor.", + "matchCount": "{{count}} eşleştirme oturumları", + "totalCount": "{{count}} oturumları", + "selectAllMatches": "Tüm eşleşmeleri seç", + "clearSelectionShort": "Temizle", + "exitSelection": "Seçim tamamlandı", + "selectedSessions": "{{count}} oturumları seçildi", + "noneSelected": "Hiçbir oturum seçilmedi", + "hiddenSelected": "· {{count}} mevcut sonuçlarda yok", + "deleteCountEllipsis": "{{count}} oturumlarını silin", + "deleteSessionEllipsis": "Oturumları sil", + "deleteEllipsis": "Sil", + "selectSessionLabel": "{{title}}'yi seçin", + "mcodeDeleteHint": "MiniMax Code'de silin", + "groupMeta": "{{count}} oturumları · {{time}}", + "bucketToday": "Bugün", + "bucketYesterday": "Dün", + "bucketThisWeek": "Bu hafta", + "bucketEarlier": "Daha önce", + "lastPrefix": "Son: {{text}}", + "archived": "Arşivlendi", + "rowTimes": "Son aktif {{last}} · {{created}} oluşturuldu", + "resumeIn": "{{terminal}}'de devam ettir", + "resumeInFor": "{{terminal}}'de {{title}}'yi devam ettirin", + "copyResumeFor": "“{{title}}” için devam ettirme komutunu kopyalayın", + "resumeCopiedNoLaunch": "Devam komutu kopyalandı. Bu platformda tek tıklamayla devam etme özelliği mevcut değildir; proje klasöründeki bir terminale yapıştırın.", + "moreFor": "{{title}} için daha fazla eylem", + "copySessionId": "Oturum kimliğini kopyala", + "sessionIdCopied": "Oturum kimliği kopyalandı", + "hermesLimit": "Hermes yalnızca en son 500 oturumu gösterir", + "emptyApp": "Henüz {{app}} oturumu yok", + "emptyAll": "Henüz oturum yok", + "emptyAppHint": "CC Switch, {{path}}'den oturum verilerini okur", + "emptySearch": "“{{query}}” ile eşleşen oturum başlığı, klasör veya ilk/son mesaj yok", + "clearSearchAction": "Aramayı temizle", + "backToList": "Oturumlara geri dön", + "back": "Geri", + "sessionOf": "{{app}} oturumu", + "prevSession": "Önceki oturum", + "nextSession": "Sonraki oturum", + "prevShort": "Önceki", + "nextShort": "Sonraki", + "copyPathAria": "{{path}} yolunu kopyala", + "copyPathTitle": "Yolu kopyala", + "pathCopied": "{{path}} kopyalandı", + "messageCount": "{{count}} mesajları", + "moreResumeOptions": "Devam etmenin diğer yolları", + "copyCdResume": "“Cd ve devam ettir” komutunu kopyalayın", + "cdResumeCopied": "“cd ve devam ettir” komutu kopyalandı", + "changeTerminal": "Tercih edilen terminali değiştir", + "changeTerminalAction": "Terminali değiştir", + "codexResumeNote": "Sağlayıcı değiştirildikten sonra eski oturumlar sürdürülemeyebilir: Codex, geçmişi sağlayıcı başına ayrı olarak tutar.", + "noResumeOpenclaw": "OpenClaw oturumları ağ geçidi tarafından yönetilir ve bir terminalde sürdürülemez", + "noResumeHermes": "Hermes oturumlarının komut satırından sürdürülmesi henüz desteklenmiyor", + "launchedIn": "{{terminal}}'de devam komutunu çalıştırdı", + "launchFailed": "{{terminal}} açılamadı: {{error}}. Devam komutu kopyalandı; herhangi bir terminale yapıştırın.", + "onlyChat": "Yalnızca sohbet", + "questions": "İstemler", + "questionsMenu": "İsteme atla", + "findInSession": "Oturumda bul", + "findShort": "Bul", + "findLabel": "Metin bul", + "findPrev": "Önceki maç", + "findNext": "Sonraki maç", + "findClose": "Bulmayı kapat", + "copyAsMarkdown": "Markdown olarak kopyala", + "markdownCopied": "Konuşma Markdown olarak kopyalandı", + "reload": "Yeniden yükle", + "reloaded": "Oturum yeniden yüklendi", + "readFailed": "Bu oturum okunamadı", + "you": "sen", + "copyQuestion": "Bu istemi kopyala", + "copyReply": "Bu yanıtı kopyala", + "copyShort": "Kopyala", + "copyCode": "Kodu kopyala", + "codeCopied": "Kod kopyalandı", + "codeRegion": "{{lang}} kodu", + "toolCalls": "Araç çağrıları:", + "toolOutput": "Takım çıkışı · {{size}} karakterleri", + "toolOutputRegion": "Takım çıkışı", + "toolOutputMore": "{{count}} daha fazla satır", + "showAll": "Tümünü göster", + "jumpLatest": "En son mesaja atla", + "latest": "En son", + "deleteOneTitle": "“{{title}}” oturumu silinsin mi?", + "deleteManyTitle": "{{count}} oturumları silinsin mi?", + "deleteLead": "Çöp Kutusu atlanarak diskten kalıcı olarak silinecekler. Bu geri alınamaz.", + "deleteAppCount": "{{app}} ({{count}})", + "deleteManyAction": "{{count}} oturumlarını silin", + "consequenceClaude": "Oturum dosyasını ve aynı isimli klasörü siler. Claude Code'nin Aracılar paneli yine de listeleyebilir.", + "consequenceCodex": "Yalnızca bu oturum dosyasını siler. Codex masaüstü uygulaması uygulamayı hâlâ listeleyebilir ve devam edilemeyeceğini söyleyebilir.", + "consequenceGrok": "Bu oturumun tüm klasörünü siler.", + "consequenceGeneric": "{{app}}'nin yerel kayıtlarından kalıcı olarak kaldırıldı.", + "sessionDeletedNamed": "Silinen oturum “{{title}}”", + "remoteImage": "Uzak görüntü", + "reader": { + "timelineSummary": "Adımlar · {{steps}}", + "summaryCommands": "{{count}} komutları", + "summaryFiles": "{{count}} dosyaları değiştirildi", + "summaryErrors": "{{count}} başarısız oldu", + "summaryDuration": "⏱{{duration}}", + "summaryTokens": "{{tokens}} tok", + "expandTimeline": "Adımları genişlet", + "collapseTimeline": "Adımları daralt", + "expandAllTimelines": "Tüm adımları genişlet", + "moreFailures": "{{count}} daha başarısız oldu", + "stepExpand": "{{title}} ayrıntılarını göster", + "stepCollapse": "Gizle", + "status": { + "success": "Başarılı", + "error": "Başarısız", + "interrupted": "Kesintiye uğradı", + "pending": "Çalışıyor", + "unknown": "Bilinmiyor" + }, + "exitCode": "{{code}}'den çık", + "lines": "{{count}} hatları", + "moreLines": "{{count}} daha fazla satır", + "showAll": "Tümünü göster", + "loadMore": "Daha fazlasını yükle", + "tooLarge": "İçerik 2 MB'ı aşıyor. Kaynak dosya yolunu kopyalayın ve yerel olarak görüntüleyin.", + "loading": "Yükleniyor…", + "loadFailed": "İçeriğin tamamı yüklenemedi", + "params": "Girdi", + "output": "Çıktı", + "diff": "Değişiklikler", + "thinking": { + "claude": "Düşünüyorum…", + "codex": "muhakeme", + "gemini": "Düşünceler", + "opencode": "Düşünce", + "pi": "Düşünüyorum…", + "generic": "Düşünme" + }, + "thinkingMeta": "{{chars}} karakterleri · {{duration}}", + "thinkingChars": "{{chars}} karakterleri", + "thinkingRedacted": "Görünmüyor düşünmek", + "note": "Not", + "noteExpand": "Notun tamamını göster", + "noFinalReply": "Bu aşamada son yanıt yok", + "turnAborted": "Kesintiye uğradı", + "event": { + "compaction": "Bağlam sıkıştırılmış", + "modelChange": "Model {{model}} olarak değiştirildi", + "thinkingLevel": "Düşünme seviyesi: {{level}}", + "hookError": "Hook başarısız oldu", + "prLink": "Bağlantılı Halkla İlişkiler #{{number}}", + "prLinkPlain": "PR bağlantılı", + "slashCommand": "{{command}} koştu", + "subAgent": "Alt ajan {{name}}" + }, + "injectedToggle": "Enjekte edilen bağlamı göster", + "injectedRow": "Bağlam · {{label}} · {{chars}} karakterleri", + "image": { + "alt": "Resim {{index}}", + "open": "Daha büyük görüntüle", + "close": "Resmi kapat", + "copy": "Resmi kopyala", + "copied": "Resim kopyalandı", + "failed": "Resim yüklenemedi", + "loadRemote": "Uzak görüntüyü yükle", + "fit": "Pencereye sığdır", + "actualSize": "Gerçek boyut" + }, + "link": { + "openExternal": "{{url}}'yi tarayıcıda açın" + }, + "path": { + "copy": "Yolu kopyala", + "reveal": "Finder'da Göster" + }, + "merged": { + "explored": "{{files}} dosyalarını okuyun, {{searches}} kez arandı", + "mcpTimes": "{{server}} {{count}} kez çağrıldı" + }, + "turnsCount": "{{turns}} dönüşleri · {{messages}} mesajları", + "questionsCount": "{{count}} istemleri", + "toolsCount": "{{count}} araç çağrıları", + "usage": { + "tokens": "{{tokens}} tokenleri", + "detail": "{{requests}} istekleri · API fiyatlarıyla tahmin edilmiştir\nGiriş {{input}} · Çıkış {{output}}\nÖnbelleğe yazma {{cacheWrite}} · Önbelleğe okuma {{cacheRead}}" + }, + "loadingProgress": "Yüklendi {{loaded}} / {{total}}", + "verb": { + "run": "Çalıştır", + "read": "Oku", + "search": "Ara", + "edit": "Düzenle", + "write": "Yaz", + "web": "ağ", + "mcp": "MCP", + "agent": "Alt ajan", + "ask": "Sor", + "todo": "Yapılacaklar", + "other": "Araç", + "output": "Takım çıkışı" + }, + "copyTurn": "Bu dönüşü kopyala", + "turnCopied": "Bu sıra kopyalandı", + "copyWithThinking": "Kopyalarken düşünmeyi dahil edin", + "filterAll": "Tümü", + "filterChat": "Sohbet", + "filterChanges": "Değişiklikler", + "filterLabel": "Görüntüle", + "exportMarkdown": "Markdown dosyası olarak dışa aktar", + "exportShort": "Dışa aktar", + "exported": "{{path}}'ye aktarıldı", + "exportFailed": "Dışa aktarma başarısız oldu: {{error}}", + "conversationRegion": "Konuşma içeriği", + "outlineTitle": "Konuşma", + "outlineToggle": "Konuşma taslağı", + "outlineEmptyQuestion": "(yalnızca görseller)", + "outlineSteps": "{{count}} adımları", + "outlineFailed": "Başarısız adımlar var", + "outlineAborted": "Kesintiye uğradı", + "outlineNoReply": "Yanıt yok", + "viewOptions": "Görüntüleme seçenekleri", + "noChanges": "Bu oturumda dosya değişikliği yok", + "rawMatch": "Kaynaktaki eşleşmeler", + "expandContent": "İçeriğin tamamını göster", + "collapseContent": "Daralt" + } + }, + "console": { + "providerSwitchReceived": "Alınan sağlayıcı değiştirme etkinliği:", + "setupListenerFailed": "Sağlayıcı değiştirme dinleyicisi kurulamadı:", + "updateProviderFailed": "Güncelleme sağlayıcısı başarısız oldu:", + "autoImportFailed": "Otomatik içe aktarma varsayılan yapılandırması başarısız oldu:", + "openLinkFailed": "Bağlantı açılamadı:", + "getVersionFailed": "Sürüm bilgisi alınamadı:", + "loadSettingsFailed": "Ayarlar yüklenemedi:", + "getConfigPathFailed": "Yapılandırma yolu alınamadı:", + "getConfigDirFailed": "Yapılandırma dizini alınamadı:", + "detectPortableFailed": "Taşınabilir mod algılanamadı:", + "saveSettingsFailed": "Ayarlar kaydedilemedi:", + "updateFailed": "Güncelleme başarısız oldu:", + "checkUpdateFailed": "Güncelleme kontrolü başarısız oldu:", + "openConfigFolderFailed": "Yapılandırma klasörü açılamadı:", + "selectConfigDirFailed": "Yapılandırma dizini seçilemedi:", + "getDefaultConfigDirFailed": "Varsayılan yapılandırma dizini alınamadı:", + "openReleaseNotesFailed": "Sürüm notları açılamadı:" + }, + "providerForm": { + "supplierName": "Sağlayıcı Adı", + "supplierNameRequired": "Sağlayıcı Adı *", + "supplierNamePlaceholder": "ör. Anthropic Resmi", + "websiteUrl": "Web sitesi URL'si", + "websiteUrlPlaceholder": "https://example.com (isteğe bağlı)", + "apiEndpoint": "API Uç Nokta", + "apiEndpointPlaceholder": "https://your-api-endpoint.com", + "codexApiEndpointPlaceholder": "https://your-api-endpoint.com/v1", + "manageAndTest": "Yönet ve Test Et", + "configContent": "Yapılandırma İçeriği", + "officialNoApiKey": "Resmi oturum açma API Anahtarını gerektirmez, doğrudan kaydedin", + "codexOfficialNoApiKey": "Resmi API Anahtarı gerektirmez, doğrudan kaydedin", + "codexApiKeyAutoFill": "Sadece burayı doldurun, aşağıdaki auth.json otomatik olarak doldurulacaktır.", + "apiKeyAutoFill": "Sadece burayı doldurun, aşağıdaki yapılandırma otomatik olarak doldurulacaktır.", + "cnOfficialApiKeyHint": "💡 Yalnızca API Anahtarını doldurmanız yeterlidir, bitiş noktası önceden ayarlanmıştır", + "aggregatorApiKeyHint": "💡 Yalnızca API Anahtarını doldurmanız yeterlidir, bitiş noktası önceden ayarlanmıştır", + "thirdPartyApiKeyHint": "💡 Yalnızca API Anahtarını doldurmanız yeterlidir, bitiş noktası önceden ayarlanmıştır", + "customApiKeyHint": "💡 Özel yapılandırma, gerekli tüm alanların manuel olarak doldurulmasını gerektirir", + "omoHint": "💡 OMO yapılandırması, Aracı modeli atamalarını yönetir ve hem oh-my-openagent.jsonc hem de oh-my-opencode.jsonc'yi destekler", + "officialHint": "💡 Resmi sağlayıcı tarayıcı girişini kullanıyor, API Anahtarına gerek yok", + "providerKeyStatusLoading": "Sağlayıcı tanımlayıcı durumu hâlâ yükleniyor. Lütfen kısa süre sonra tekrar deneyin.", + "getApiKey": "API Anahtarını Alın", + "partnerPromotion": { + "kimi": "Yeni Kimi kullanıcıları ilk başarılı yüklemelerinin %10'unu 1.000 CNY'ye kadar bonus API kredisi olarak geri alırlar.", + "a6api": "A6API, piyasadaki en düşük fiyatı otomatik olarak seçen, yerleşik gerçek zamanlı fiyat sıralama tablosuna sahip bir token birleştirme platformudur. Sorunsuz ve istikrarlı, kullanımı basit ve sıkıcı fiyat karşılaştırmalarına son. Ücretsiz deneme kredilerinden yararlanmak için şimdi kaydolun!", + "sudocode": "Bir SudoCode anahtarıyla Claude Code ve Claude Desktop, Claude Opus 5'i kullanırken Codex, GPT-5.6'yı kullanır. Kaydolun, 726213516 numaralı QQ grubuna katılın ve 10 CNY tutarında deneme kredisi talep etmek için grup sahibiyle iletişime geçin.", + "code0": "code0.ai, Claude Code, Codex ve Gemini'yi destekleyen, geliştiricilere yönelik bir AI kodlama hizmeti platformudur. CC Switch kullanıcılarına özel: ücretsiz deneme kredisi talep etmek için resmi web sitesi aracılığıyla destek ekibiyle iletişime geçin!", + "packycode": "PackyCode, CC Switch’in resmi ortağıdır. Bu bağlantıyı kullanarak kaydolun ve %10 indirimden yararlanmak için şarj sırasında \"cc-switch\" promosyon kodunu girin", + "apikeyfun": "APIKEY.FUN, CC Switch kullanıcıları için özel bir fırsat sunuyor. Kalıcı %5'e varan yükleme indirimlerinden yararlanmak için özel bağlantı aracılığıyla kaydolun.", + "apinebula": "APINEBULA, CC Switch kullanıcılarına özel bir indirim sunuyor: bağlantıyı kullanarak kaydolun ve %10 indirimden yararlanmak için ilk yükleme sırasında \"ccswitch\" promosyon kodunu girin.", + "patewayai": "PatewayAI, CC Switch kullanıcılarına özel avantajlar sunuyor. 3$ kredi almak için bu bağlantı üzerinden kaydolun.", + "claudeapi": "ClaudeAPI, CC Switch kullanıcılarına özel avantajlar sunuyor. Test kredilerini talep etmek için bu bağlantı aracılığıyla kaydolun.", + "claudecn": "ClaudeCN, kayıtlı bir şirket tarafından işletilen, kurumsal satın alma süreçlerini kurumsal ödemeler, sözleşmeler ve uyumluluk garantileriyle destekleyen kurumsal düzeyde bir yapay zeka ağ geçididir.", + "runapi": "RunAPI, CC Switch kullanıcılarına özel avantajlar sunar. Bu bağlantı aracılığıyla kaydolun ve ilk yüklemenizde %10 indirimin keyfini çıkarın.", + "opencode_go": "OpenCode Go, çeşitli kodlama modellerine abonelik erişimi sunar. Plan ayrıntılarını görüntüleyin ve bu bağlantı aracılığıyla abone olun.", + "dmxapi": "Claude Code özel modeli şimdi %66 İNDİRİM!", + "cubence": "Cubence, CC Switch’in resmi ortağıdır. Bu bağlantıyı kullanarak kaydolun ve her yüklemede %10 indirim kazanmak için yükleme sırasında \"CCSWITCH\" promosyon kodunu girin", + "aigocode": "AIGoCode, CC Switch’in resmi ortağıdır. Bu bağlantıyı kullanarak kaydolun ve ilk yüklemenizde %10 bonus kredi kazanın!", + "rightcode": "RightCode, CC Switch’in resmi ortağıdır. Bu bağlantıyı kullanarak kaydolun ve her yüklemede %5 bonus kredi kazanın!", + "aicodemirror": "AICodeMirror, CC Switch’in resmi ortağıdır. %20 indirimden yararlanmak için bu bağlantıyı kullanarak kaydolun!", + "aicoding": "AI Coding, CC Switch kullanıcılarına özel bir indirim sunuyor — ilk yüklemenizde %10 indirim!", + "crazyrouter": "CrazyRouter, CC Switch kullanıcılarına özel bir bonus sunuyor - ilk yüklemenizde %30 ekstra kredi!", + "sssaicode": "SSAI Kodu, CC Switch kullanıcılarına özel bir bonus sunuyor - her yüklemede 10$ ekstra kredi!", + "siliconflow": "SiliconFlow, CC Switch’in resmi ortağıdır", + "ucloud": "Compshare, CC Switch kullanıcılarına özel bir bonus sunuyor — 5 Yen platform deneme kredisi almak için bu bağlantı aracılığıyla kaydolun!", + "micu": "Micu, CC Switch’in resmi ortağıdır", + "shengsuanyun": "Shengsuanyun, CC Switch kullanıcılarına özel avantajlar sunuyor. Bu bağlantı aracılığıyla kaydolan yeni kullanıcılar, 10 ¥ ücretsiz kredi ve ilk yüklemede %10 bonus kazanır!", + "doubaoseed": "DouBao, CC Switch kullanıcıları için özel avantajlar sunar: tüm DouBao metin modelleri için 500 bin token çıkarım kredisi ve 5 milyon token ücretsiz Sedance 2.0 kredisi almak için bu bağlantı aracılığıyla kaydolun.", + "volcengine_agentplan": "Volcengine Ark Ajan Planı, CC Switch kullanıcıları için özel avantajlar sunar: bu bağlantı aracılığıyla abone olun ve yeni müşteriler ilk iki ay için %75 indirimin yanı sıra 6J6FV5N2 özel davet koduyla ekstra %5 indirimden yararlansın — ayda 9,4 ¥ gibi düşük bir fiyat!", + "volcengine_codingplan": "Volcengine Ark Kodlama Planı, CC Switch kullanıcılarına özel avantajlar sunar: bu bağlantı aracılığıyla abone olun ve yeni müşteriler ilk iki ay için %75 indirimin yanı sıra 6J6FV5N2 özel davet koduyla ekstra %5 indirimden yararlansın - ayda 9,4 ¥ gibi düşük bir fiyatla!", + "byteplus": "Model başına 500.000 token ücretsiz çıkarım kotası almak için bu bağlantı aracılığıyla kaydolun.", + "ccsub": "CCSub, istikrarlı, uygun fiyatlı bir AI API aktarıcısıdır; Claude.ai ve OpenAI abonelikleri için doğrudan API maliyetinin ~%30'u karşılığında tüm modeller için tek bir anahtarla değiştirilebilen bir alternatiftir.", + "subrouter": "SubRouter, bir anahtarın birden fazla modele ve sağlayıcıya erişmesine olanak tanıyan bir AI aktarma toplayıcıdır.", + "qiniu": "Qiniu Cloud, çok protokollü bir yapay zeka aktarımıdır: yerel Claude, GPT ve Gemini modelleri için tek bir anahtar; Anthropic, OpenAI ve Gemini API'lerinin tümü desteklenir.", + "fenno": "Fenno.ai, geniş bir ana akım model yelpazesine erişmenizi sağlayan istikrarlı, verimli bir API rölesidir. Özel CC Switch teklifi: Bu bağlantı aracılığıyla 7 gün geçerli, 50$ kredi değerindeki 1,99$ Deneme Planına abone olun!", + "zetaapi": "ZetaAPI gerçek, bozulmamış modelleri resmi fiyatlandırmanın %35'i kadar düşük bir fiyatla sunar. Özel CC Switch teklifi: bu bağlantı aracılığıyla kaydolun ve ilk yüklemenizde %10 indirim için CC-SWITCH promosyon kodunu kullanın!", + "teamorouter": "TeamoRouter, %90'a varan indirimlerle kurumsal düzeyde bir Agentic LLM ağ geçididir. CC Switch kullanıcılarına özel avantajlar sunar: ilk yüklemenizde %10 indirim için bu bağlantı aracılığıyla yeni bir kullanıcı olarak kaydolun!", + "ppio": "PPIO, Çin'in önde gelen bağımsız Aracı Bulut sağlayıcısıdır ve her amiral gemisi açık kaynak modeline tek bir API anahtarı aracılığıyla hizmet verir. 10 ¥ değerinde kredi kuponu almak için bu bağlantı aracılığıyla kaydolun ve kimlik doğrulamayı tamamlayın.", + "xycai": "XycAi kurumsal düzeyde bir token fabrikasıdır: 200'den fazla global modele tek tıklamayla erişim, otomatik SLA telafisi ve anormal önbellek ücretleri için %100 geri ödeme!", + "9527code": "9527 CODE, Claude Code, Codex ve diğer ana akım modeller için hızlı, kararlı aktarma sağlayan kurumsal düzeyde, tam özellikli bir yapay zeka aktarma platformudur. Bir yıllık sürekli çalışma, %99,9 hizmet istikrarı ve 7×24 insan teknik desteği. Yeni kullanıcılar sınırsız yönlendirme para iadesiyle deneme kredisi için destekle iletişime geçebilir!", + "soleapi": "SoleAPI, geliştiriciler ve kuruluşlar için bir yapay zeka modeli ağ geçididir: bir API anahtarı, gerçek zamanlı akıllı yönlendirme, milisaniyelik yedek sağlayıcıya geçiş, %99,99 kullanılabilirlik ve 7/24 destek ile OpenAI ve Anthropic protokolleriyle yerel olarak uyumlu, Claude, GPT ve Gemini dahil 30'dan fazla lider modele ulaşır. Ücretsiz deneme kredileri ve yükleme yapan arkadaşlarınızı davet ederek devam eden para iadesi için yönlendirme bağlantısı aracılığıyla kaydolun!", + "fluxa": "FluxA ve Baidu AI Cloud, AI ajanlerinin modelleri, API'leri ve araçları kendi başlarına satın almasına, yönetmesine ve kullanmasına olanak tanıyan AgenticPlan'ı ortaklaşa başlattı. DeepSeek V4, GLM 5.2 ve Kimi gibi amiral gemisi modellerinde %40'a varan indirim sağlayan Baidu Qianfan TokenPlan'ın yanı sıra arama, veri kazıma, sosyal medya, finans, kripto, görüntü oluşturma ve video için 13.000'den fazla ücretli API'nin kilidini açan bonus FluxA AgentMarket API kredilerini içerir.", + "88api": "88API, bir Hong Kong şirketi tarafından işletilen ve metin, görüntü, konuşma ve video modellerine birleşik erişim sağlayan tek noktadan çok modelli bir API platformudur. Başlıca uluslararası ödeme yöntemlerini kabul eder, fatura düzenleyebilir ve kurumsal düzeyde istikrarlı hizmet sağlar. Bonus kredileri almak için özel bağlantı üzerinden kaydolun!" + }, + "presets": { + "ucloud": "Compshare", + "ucloudCoding": "Compshare Kodlama Planı", + "shengsuanyun": "Shengsuanyun", + "qiniu": "Qiniu", + "doubaoseed": "Volcengine Doubao", + "openrouter": "OpenRouter", + "deepseek": "DeepSeek", + "together": "Birlikte Yapay Zeka", + "tuzi": "Tu-zi", + "yylx": "YYLX" + }, + "parameterConfig": "Parametre Yapılandırması - {{name}} *", + "mainModel": "Ana Model (isteğe bağlı)", + "mainModelPlaceholder": "örneğin GLM-4.6", + "fastModel": "Hızlı Model (isteğe bağlı)", + "fastModelPlaceholder": "örneğin, GLM-4.5-Air", + "modelHint": "💡 Sağlayıcının varsayılan modelini kullanmak için boş bırakın", + "apiHint": "💡 Claude API uyumlu hizmet uç noktasını doldurun, sondaki eğik çizgiden kaçının", + "apiHintOAI": "💡 OpenAI Sohbet Tamamlamaları uyumlu hizmet uç noktasını doldurun, sondaki eğik çizgiden kaçının", + "apiHintGeminiNative": "💡 https://generativelanguage.googleapis.com veya https://generativelanguage.googleapis.com/v1beta; gibi bir Gemini Yerel temel URL'yi tercih edin; proxy, modelleri/*:generateContent'i otomatik olarak ekleyecektir", + "codexApiHint": "💡 OpenAI Yanıt formatıyla uyumlu hizmet uç noktasını doldurun", + "fillSupplierName": "Lütfen sağlayıcı adını girin", + "fillConfigContent": "Lütfen yapılandırma içeriğini doldurun", + "fillParameter": "Lütfen {{label}}'yi doldurun", + "fillTemplateValue": "Lütfen {{label}}'yi doldurun", + "endpointRequired": "Resmi olmayan sağlayıcılar için API uç noktası gereklidir", + "apiKeyRequired": "Resmi olmayan sağlayıcılar için API Anahtarı gereklidir", + "softValidation": { + "title": "Yapılandırmada aşağıdaki sorunlar var", + "hint": "Yine de kaydedilsin mi? Bu sağlayıcıya geçiş başarısız olabilir; bunları daha sonra doldurabilirsiniz.", + "saveAnyway": "Yine de kaydet" + }, + "configJsonError": "Yapılandırma JSON biçim hatası, lütfen sözdizimini kontrol edin", + "authJsonRequired": "auth.json bir JSON nesnesi olmalıdır", + "authJsonError": "auth.json biçim hatası, lütfen JSON sözdizimini kontrol edin", + "fillAuthJson": "Lütfen auth.json yapılandırmasını doldurun", + "fillApiKey": "Lütfen OPENAI_API_KEY'i doldurun", + "visitWebsite": "{{url}}'yi ziyaret edin", + "anthropicModel": "Ana Model", + "anthropicSmallFastModel": "Hızlı Model", + "apiFormat": "Yukarı Akış Formatı", + "customUserAgent": "Özel Kullanıcı Aracısı", + "customUserAgentInvalid": "Kullanıcı Aracısı kontrol karakterleri (ör. satır sonları) içermemelidir; aksi takdirde göz ardı edilecektir.", + "customUserAgentPresets": "Ön ayarlar", + "localProxyRequestOverrides": "Yerel proxy isteği geçersiz kılmaları", + "localProxyRequestOverridesInvalid": "Yerel proxy isteği biçim hatasını geçersiz kılıyor: {{error}}", + "localProxyHeaderOverrides": "Başlık geçersiz kılmaları", + "localProxyHeaderOverridesInvalidDetail": "Başlık format hatasını geçersiz kılıyor: {{error}}", + "localProxyBodyOverrides": "Gövde geçersiz kılmaları", + "localProxyBodyOverridesInvalidDetail": "Gövde geçersiz kılma biçimi hatası: {{error}}", + "fullUrlLabel": "Tam URL", + "fullUrlHelp": "Yalnızca standart olmayan bir uç nokta yoluna sahip ağ geçitleri için: istek URL'sinin tamamını girin; yönlendirme bunu bir yol eklemeden olduğu gibi kullanır. Doğrudan modda kullanılamaz.", + "fullUrlHelpGeminiNative": "Gemini Yerel ile standart Gemini URL'leri model başına normalleştirilir ve özel bir geçişin tam URL'si yalnızca sorgu parametreleri eklendiğinde olduğu gibi kullanılır. Doğrudan modda kullanılamaz.", + "apiFormatAnthropic": "Anthropic Mesajlar (Yerel)", + "apiFormatOpenAIChat": "OpenAI Sohbet Tamamlamaları (Yönlendirme gerektirir)", + "apiFormatOpenAIResponses": "OpenAI Yanıtları API (Yönlendirme gerektirir)", + "apiFormatGeminiNative": "Gemini yerel generateContent (Yönlendirme gerekir)", + "codexApiFormatResponses": "OpenAI Yanıtları API (Yerel)", + "codexApiFormatOpenAIChat": "OpenAI Sohbet Tamamlamaları (Yönlendirme gerektirir)", + "codexApiFormatHint": "Bu sağlayıcı tarafından gerçekten desteklenen Codex API biçimini seçin; yapılandırma, daha yeni Codex sürümleri için Yanıtlar'da kalırken Sohbet Tamamlamaları yerel yönlendirme yoluyla dönüştürülür.", + "authField": "Kimlik Doğrulama Alanı", + "authFieldAuthToken": "ANTHROPIC_AUTH_TOKEN (Varsayılan)", + "authFieldApiKey": "ANTHROPIC_API_KEY", + "authFieldHint": "Doğrudan modda bu, settings.json'a yazılan değişken adıdır; Yönlendirme yoluyla AUTH_TOKEN, Taşıyıcı olarak yukarı yönde ve API_KEY, x-api-key olarak gönderilir.", + "apiHintResponses": "💡 OpenAI Yanıtlarını doldurun API uyumlu hizmet uç noktası, sondaki eğik çizgiden kaçının", + "anthropicDefaultHaikuModel": "Varsayılan Haiku Modeli", + "anthropicDefaultSonnetModel": "Varsayılan Sonnet Modeli", + "anthropicDefaultOpusModel": "Varsayılan Opus Modeli", + "modelPlaceholder": "", + "smallModelPlaceholder": "", + "haikuModelPlaceholder": "", + "modelHelper": "İsteğe bağlı: Kullanılacak varsayılan Claude modelini belirtin, sistem varsayılanını kullanmak için boş bırakın.", + "modelMappingLabel": "Model Eşleme", + "modelMappingHint": "Görünen adlar yalnızca /model menüsünü etkiler; 1M yalnızca bir Claude Code bağlam yeteneği bildirimidir.", + "stackModelsLabel": "Modeller", + "addStackModel": "Manuel olarak ekle", + "stackModelDefaultHelp": "Bu modeller Claude Code'nin /model menüsünde görünür ve bir tanesini seçtiğinizde istekler doğrudan bu sağlayıcıya gönderilir. İlk satır varsayılan modeldir ve bu kartın ANTHROPIC_MODEL'i olarak da yazılır.", + "stackModelsEmpty": "Yapılandırılmış model yok: Bu sağlayıcı, birleştirmeya eklendikten sonra model seçicide görünmeyecek", + "stackModelPlaceholder": "örneğin deepseek-v4-pro", + "stackModelDefault": "Varsayılan model", + "stackLayout": { + "noModels": "Model listesi boş: Bu sağlayıcı, birleştirmeya eklendikten sonra model seçicide görünmeyecek" + }, + "modelRoleLabel": "Model rolü", + "modelRoleSonnet": "Sonnet", + "modelRoleOpus": "Opus", + "modelRoleFable": "Fable", + "modelRoleHaiku": "Haiku", + "modelRoleSubagent": "Alt ajan", + "modelDisplayNameLabel": "Görünen ad", + "modelDisplayNamePlaceholder": "örneğin DeepSeek V4 Pro", + "modelNoDisplayName": "/modelde gösterilmiyor", + "requestModelLabel": "İstenilen model", + "modelOneMHeader": "1 milyon beyan edin", + "modelOneMLabel": "1 milyon", + "fallbackModelLabel": "Varsayılan geri dönüş modeli", + "fallbackModelHelpDirect": "ANTHROPIC_MODEL'e yazıldı: Claude Code ana modeliyle başlıyor. Arka plan görevleri bunun yerine Haiku katmanını kullanır.", + "fallbackModelHelp": "Bu modelde Sonnet, Opus, Fable veya Haiku katmanıyla eşleşmeyen istekler yukarı yönde gönderilir.", + "fallbackModelHaikuMissing": "Haiku katmanı boş: arka plan görevleri, üçüncü taraf uç noktalarının reddedebileceği orijinal Claude model adını yukarı akışa gönderecektir.", + "fallbackModelMissing": "Boş: Herhangi bir katmanla eşleşmeyen istekler, orijinal Claude model adını yukarı akışa gönderir ve başarısız olabilir.", + "quickSetModels": "Hızlı Ayar", + "quickSetSuccess": "Tüm rollere uygulanan model adı", + "advancedOptionsToggle": "Gelişmiş Seçenekler", + "categoryOfficial": "Resmi", + "categoryCnOfficial": "Açık Kaynak Resmi", + "categoryAggregation": "Birleştirme", + "categoryThirdParty": "Üçüncü Taraf", + "fetchModels": "Modelleri Getir", + "fetchingModels": "Getiriliyor...", + "searchModelPlaceholder": "Modelleri ara...", + "searchModelEmpty": "Eşleşen model yok.", + "searchModelAriaLabel": "Modeli seçin", + "fetchModelsSuccess": "Bulunan {{count}} modelleri", + "modelMetadataFilled": "{{model}} için bağlam penceresi ve diğer parametrelerle doldurulmuştur (kaynak: {{source}}). Lütfen tekrar kontrol edin.", + "modelMetadataFilledMany": "{{count}} modelleri için bağlam penceresi ve diğer parametrelerle doldurulmuştur (kaynak: {{source}}). Lütfen tekrar kontrol edin.", + "modelMetadataSourcePreset": "önceden ayarlanmış", + "modelMetadataSourceBoth": "ön ayar ve models.dev", + "modelPicker": { + "title": "Modelleri seçin", + "lead": "İşaretli modeller listeye eklenir; bir modelin işaretini kaldırmak onu listeden kaldırır.", + "refresh": "Tekrar getir", + "selectAll": "Tümünü seç", + "selectNone": "Hiçbirini seçme", + "selectedCount": "{{total}}'den {{selected}} seçildi", + "reasoning": "muhakeme", + "image": "Resim", + "onlySelected": "Yalnızca seçili", + "notInProvider": "Sağlayıcının listesinde değil", + "fromProvider": "Sağlayıcıdan", + "apply": "Uygula" + }, + "fetchModelsFailed": "Modeller getirilemedi", + "fetchModelsEmpty": "Hiçbir model bulunamadı", + "fetchModelsNeedApiKey": "Lütfen önce API Anahtarını doldurun", + "fetchModelsNeedEndpoint": "Lütfen önce API uç noktasını doldurun", + "fetchModelsNeedConfig": "Lütfen önce API uç noktasını ve API Anahtarını doldurun", + "fetchModelsAuthFailed": "API Anahtarı geçersiz veya izni yok", + "fetchModelsNotSupported": "Bu sağlayıcı model listesinin getirilmesini desteklemiyor", + "fetchModelsEndpointNotFound": "Ulaşılabilir model uç noktası bulunamadı. Lütfen Temel URL'yi kontrol edin veya sağlayıcının bu API'yi gösterip göstermediğini onaylayın.", + "fetchModelsTimeout": "İstek zaman aşımına uğradı, lütfen ağ bağlantısını kontrol edin", + "requiredFields": "Lütfen sağlayıcı adını, API uç noktasını, API Anahtarını ve modelini girin", + "customUserAgentHelp": "Sağlayıcıya iletilen isteklerin Kullanıcı Aracısını değiştirir.", + "localProxyRequestOverridesHelp": "Format dönüştürme sonrasındaki yukarı akış isteği için geçerlidir.", + "apiFormatHelp": "Sağlayıcının yerel olarak desteklediği protokolü seçin: Anthropic Mesajlar, dönüştürme yapılmadan olduğu gibi iletilir; yönlendirme diğer üçünü Anthropic Mesajlarına dönüştürür.", + "directModeFormatInUse": "Bu kart doğrudan modda kullanılıyor: bu formatta kaydedilmesi isteklerin başarısız olmasına neden olur. Önce yönlendirmeye veya Birleştirme'ya geçin.", + "directModeFormatSwitch": "Bu biçim doğrudan modda çalışmaz; Bu kartı kullanmak için yönlendirmeye veya Birleştirme'ya geçin." + }, + "copilot": { + "authSection": "GitHub Copilot Kimlik Doğrulaması", + "authStatus": "Kimlik Doğrulama Durumu", + "authenticated": "{{username}} olarak kimliği doğrulandı", + "notAuthenticated": "Kimliği doğrulanmadı", + "loginWithGitHub": "GitHub ile giriş yapın", + "githubAccount": "GitHub hesabı", + "manageAccounts": "Hesapları yönet", + "loginRequired": "Lütfen önce GitHub Copilot'de oturum açın", + "statusLoading": "Hesap durumu yükleniyor...", + "statusUnavailable": "Durum kullanılamıyor", + "statusLoadFailed": "GitHub Copilot hesap durumu yüklenemedi. Lütfen tekrar deneyin.", + "waitingForAuth": "Yetki bekleniyor...", + "enterCode": "Lütfen kodu tarayıcınıza girin:", + "logout": "Oturumu kapat", + "authSuccess": "GitHub Copilot kimlik doğrulaması başarılı", + "authFailed": "Kimlik doğrulama başarısız oldu: {{error}}", + "authTimeout": "Kimlik doğrulama zaman aşımına uğradı, lütfen tekrar deneyin", + "tokenExpired": "Belirtecin süresi doldu, lütfen yeniden kimlik doğrulaması yapın", + "accountCount": "{{count}} hesap(lar)ı", + "selectAccount": "Hesap Seçin", + "selectAccountPlaceholder": "Bir GitHub hesabı seçin", + "useDefaultAccount": "Varsayılan hesabı kullan", + "loggedInAccounts": "Oturum açmış hesaplar", + "defaultAccount": "Varsayılan", + "selected": "Seçildi", + "removeAccount": "Hesabı kaldır", + "setAsDefault": "Varsayılan olarak ayarla", + "addAnotherAccount": "Başka bir hesap ekle", + "retry": "Yeniden dene", + "copyCode": "Kodu kopyala", + "migrationFailed": "Eski kimlik doğrulama geçişi başarısız oldu: {{error}}", + "loadModelsFailed": "Copilot modelleri yüklenemedi", + "deploymentType": "GitHub Dağıtım Türü", + "deploymentGitHubCom": "GitHub.com", + "deploymentEnterprise": "GitHub Kurumsal Sunucu", + "enterpriseDomainPlaceholder": "örneğin şirket.ghe.com" + }, + "codexOauth": { + "authStatus": "Kimlik doğrulama durumu", + "notAuthenticated": "Kimliği doğrulanmadı", + "loginWithChatGPT": "ChatGPT ile oturum açın", + "loginRequired": "Lütfen önce ChatGPT'de oturum açın", + "statusLoading": "Hesap durumu yükleniyor...", + "statusUnavailable": "Durum kullanılamıyor", + "statusLoadFailed": "ChatGPT hesap durumu yüklenemedi. Lütfen tekrar deneyin.", + "waitingForAuth": "Yetki bekleniyor...", + "enterCode": "Kodu tarayıcınıza girin:", + "accountCount": "{{count}} hesap(lar)ı", + "selectAccount": "Hesap seçin", + "chatgptAccount": "ChatGPT hesabı", + "accountToUse": "Kullanılacak hesap", + "signInMethod": "Oturum açma yöntemi", + "manageAccounts": "Hesapları yönet", + "selectAccountPlaceholder": "Bir ChatGPT hesabı seçin", + "officialAccountPlaceholder": "Bir oturum açma yöntemi seçin", + "addOrManageAccounts": "ChatGPT hesaplarını ekleyin veya yönetin", + "explicitSelectionRequired": "Bir oturum açma yöntemi seçin", + "useDefaultAccount": "Varsayılan hesabı kullan", + "noneOptionLabel": "Codex girişini takip edin", + "reauthDescription": "Tarayıcı oturum açma davranışına uyum sağlamak için bu hesapların, gerekli oturum açma kimlik bilgilerini (id_token) geri yüklemek üzere yeniden oturum açması gerekir. Yeniden kimlik doğrulaması yapıldıktan sonra yönetilen bağlama için kullanılabilirler.", + "reauthBadge": "Yeniden giriş yapılması gerekiyor", + "reauthLogin": "Yeniden giriş yap", + "reauthSelectHint": "Yönetilen bağlamayı etkinleştirmek için bu hesabın tekrar oturum açması gerekiyor.", + "reauthNow": "Şimdi yeniden giriş yapın", + "duplicateAccount": "Bu ChatGPT hesabı zaten eklenmiş. Mevcut hesabı kullanın.", + "loggedInAccounts": "Oturum açmış hesaplar", + "defaultAccount": "Varsayılan", + "selected": "Seçildi", + "removeAccount": "Hesabı kaldır", + "setAsDefault": "Varsayılan olarak ayarla", + "addAnotherAccount": "Başka bir hesap ekle", + "logoutAll": "Tüm hesaplardan çıkış yapın", + "retry": "Yeniden dene", + "copyCode": "Kodu kopyala", + "fastMode": "FAST modu", + "fastModeDescription": "Daha düşük gecikme süresi için service_tier=\"priority\" gönderin. Varsayılan olarak kapalı — etkinleştirilmesi ChatGPT kotanızı daha yüksek oranda tüketir." + }, + "xaiOauth": { + "authStatus": "xAI OAuth kimlik doğrulaması", + "accountCount": "Kullanılabilir hesaplar: {{count}}", + "reauthRequired": "Oturum açmanız gerekiyor", + "notAuthenticated": "Kimliği doğrulanmadı", + "selectAccount": "Hesap seçin", + "selectAccountPlaceholder": "Bir xAI hesabı seçin", + "useDefaultAccount": "Varsayılan hesabı kullan", + "accounts": "xAI hesapları", + "defaultAccount": "Varsayılan", + "expired": "Kimlik bilgilerinin süresi doldu", + "setAsDefault": "Varsayılan olarak ayarla", + "removeAccount": "Hesabı kaldır", + "addOrReauth": "Hesap ekleyin veya tekrar oturum açın", + "login": "xAI ile oturum açın", + "waitingForAuth": "xAI yetkilendirmesi bekleniyor…", + "enterCode": "Tarayıcı otomatik olarak doldurmadıysa şunu girin:", + "retry": "Yeniden dene", + "logoutAll": "Tüm xAI hesaplarını silin", + "loginRequired": "Önce bir xAI hesabında oturum açın" + }, + "managedAuth": { + "accountRemoved": "Hesap silindi", + "selectedAccountNeedsReauth": "Bağlı hesap eksik veya tekrar oturum açmanız gerekiyor", + "selectedAccountUnavailable": "Bağlı hesap eksik veya tekrar oturum açmanız gerekiyor. Başka bir hesap seçin.", + "usedBy": "{{count}} sağlayıcı(lar)ı tarafından kullanılır", + "usedByTitle": "Kullanan: {{names}}", + "remove": { + "titleOne": "“{{login}}” hesabı silinsin mi?", + "titleAll": "Tüm {{service}} hesapları silinsin mi?", + "leadOne": "Bu, CC Switch’in bu hesap için tuttuğu oturum açma kimlik bilgilerini siler. Bu geri alınamaz.", + "leadAll": "Bu, CC Switch’in bu {{count}} hesapları için tuttuğu oturum açma kimlik bilgilerini siler. Bu geri alınamaz.", + "brokenOne": "Bu sağlayıcılar, siz tekrar oturum açana veya başka bir hesap seçene kadar çalışmayı durduracaktır:", + "brokenAll": "Bu sağlayıcılar siz tekrar oturum açana kadar çalışmayı durduracak:", + "moved": "Bu sağlayıcılar varsayılan hesabı kullanır ve yeni varsayılana geçer:", + "noneOne": "Bu hesabı hiçbir sağlayıcı kullanmıyor.", + "noneAll": "Bu hesapları hiçbir sağlayıcı kullanmaz.", + "confirmOne": "Hesabı sil", + "confirmAll": "{{count}} hesaplarını silin", + "appSeparator": ":", + "nameSeparator": "," + } + }, + "endpointTest": { + "title": "API Uç Nokta Yönetimi", + "endpoints": "uç noktalar", + "autoSelect": "Otomatik Seçim", + "testSpeed": "Test et", + "testing": "Test etme", + "addEndpointPlaceholder": "https://api.example.com", + "done": "Tamam", + "noEndpoints": "Uç nokta yok", + "failed": "Başarısız", + "enterValidUrl": "Lütfen geçerli bir URL girin", + "invalidUrlFormat": "Geçersiz URL biçimi", + "onlyHttps": "Yalnızca HTTP/HTTPS desteklenir", + "urlExists": "Bu URL zaten mevcut", + "saveFailed": "Kaydetme başarısız oldu, lütfen tekrar deneyin", + "loadEndpointsFailed": "Özel uç noktalar yüklenemedi:", + "addEndpointFailed": "Özel uç nokta eklenemedi:", + "removeEndpointFailed": "Özel uç nokta kaldırılamadı:", + "removeFailed": "Kaldırma başarısız oldu: {{error}}", + "updateLastUsedFailed": "Uç noktanın son kullanıldığı zaman güncellenemedi", + "pleaseAddEndpoint": "Lütfen önce bir uç nokta ekleyin", + "testUnavailable": "Hız testi kullanılamıyor", + "noResult": "Sonuç döndürülmedi", + "testFailed": "Hız testi başarısız oldu: {{error}}", + "empty": "Uç nokta yok" + }, + "codexConfig": { + "authJson": "auth.json (JSON) *", + "authJsonPlaceholder": "{\n \"OPENAI_API_KEY\": \"sk-your-api-key-here\"\n}", + "authJsonHint": "Codex auth.json yapılandırma içeriği", + "authJsonStorageHint": "Yönlendirme modunda bu, canlı auth.json'u değil, depolanan kimlik doğrulamasını gösterir.", + "configToml": "config.toml (TOML)", + "configTomlHint": "Codex config.toml yapılandırma içeriği", + "configTomlStorageHint": "Yönlendirme modunda bu, canlı config.toml'yi değil, depolanan yapılandırmayı gösterir.", + "proxyTakeoverStorageNotice": "💡 Bu uygulama Yönlendirme modundadır. Saklanan sağlayıcı yapılandırmasını düzenliyorsunuz; canlı yapılandırma, yönlendirme hizmeti tarafından geçici olarak yönetilir.", + "enableRemoteCompaction": "Uzaktan sıkıştırmayı etkinleştir", + "remoteCompactionHint": "Etkinleştirildiğinde, aktif model_providers giriş adı OpenAI olarak yazılır, böylece Codex uzaktan sıkıştırmayı deneyebilir.", + "apiUrlLabel": "API İstek URL'si", + "saveFailed": "Kaydetme başarısız oldu: {{error}}", + "upstreamFormatLabel": "Yukarı Akış Formatı", + "upstreamFormatAuto": "Otomatik (model yetenekleri)", + "upstreamFormatCopilotResponses": "Yanıtlar (yönlendirme gerekli)", + "upstreamFormatCopilotHint": "Otomatik, model desteklediğinde Yanıtları, aksi takdirde Sohbet Tamamlamalarını tercih eder. Açıkça bir protokol de seçebilirsiniz.", + "upstreamFormatHint": "Sağlayıcının yerel olarak desteklediği protokolü seçin: Yanıtlar, dönüşüm olmadan olduğu gibi iletilir; yönlendirme, Sohbet veya Anthropic'yi Yanıtlara dönüştürür.", + "upstreamFormatChat": "Sohbet Tamamlamaları (dönüşüm gerekli)", + "upstreamFormatResponses": "Yanıtlar (yerel)", + "upstreamFormatAnthropic": "Anthropic Mesajlar (dönüştürme gerekli)", + "anthropicAuthFieldLabel": "Kimlik doğrulama alanı", + "anthropicAuthFieldAuthToken": "ANTHROPIC_AUTH_TOKEN (Yetkilendirme)", + "anthropicAuthFieldApiKey": "ANTHROPIC_API_KEY (x-api-key)", + "anthropicAuthFieldHint": "Ağ geçidinin API anahtarını okuduğu başlığı seçin. Sadece bir tane gönderilir.", + "impersonateClaudeCodeLabel": "Claude Code istemcisini taklit edin", + "impersonateClaudeCodeHint": "Ağ geçidi yalnızca Claude Code'yi kabul ettiğinde açılır: Claude Code'nin istek başlıklarını gönderir ve kimliğini sistem isteminin ilk satırına koyar.", + "maxOutputTokensLabel": "Maksimum çıkış tokenları", + "maxOutputTokensPlaceholder": "Varsayılan 8192'yi kullanmak için boş bırakın", + "maxOutputTokensHint": "Codex hiçbir çıkış sınırı göndermez, dolayısıyla varsayılan 8192 uzun cevapları veya derin düşünmeyi kesebilir. Bu değer Anthropic'nin max_tokens'ı olarak gönderilir.", + "promptCacheRoutingLabel": "İstemi önbellek yönlendirmesi", + "promptCacheRoutingAuto": "Otomatik (önerilir)", + "promptCacheRoutingEnabled": "Etkin", + "promptCacheRoutingDisabled": "Devre dışı", + "promptCacheRoutingHint": "Otomatik: prompt_cache_key'i yalnızca bilinen uyumlu yukarı akışlara gönder. Açık: diğer uyumlu ağ geçitleri için. Kapalı: Bilinmeyen alanları reddeden katı ağ geçitlerinden 400'lerden kaçının.", + "contextWindow1M": "1 Milyon Bağlam Penceresi", + "contextWindowPlaceholder": "örneğin 128000", + "autoCompactLimit": "Otomatik Sıkıştırma Limiti", + "autoCompactLimitPlaceholder": "örneğin 90000", + "defaultModelLabel": "Varsayılan Model", + "defaultModelPlaceholder": "örneğin gpt-5.6-sol", + "defaultModelHint": "Codex modeli varsayılan olarak talep eder. Bir model listesi eklediğinizde ilk satırı varsayılan model olur.", + "subagentModelLabel": "Alt Aracı Modeli", + "subagentModelPlaceholder": "Ana modeli takip etmek için boş bırakın", + "subagentReasoningEffortLabel": "Alt-ajanın muhakeme çabası", + "subagentReasoningEffortDefault": "Varsayılan efor", + "subagentModelHint": "Codex alt ajanlarının varsayılan olarak kullandığı model ve akıl yürütme çabası. Boş ana ajanyı takip eder; bir model tek başına kendi varsayılan eforunu kullanır. Alt aracıların ana modeli takip ettiği Birleştirme modunda yoksayılır.", + "subagentModelNotInCatalog": "Bu model model listesinde yok: Codex bağlam penceresini alamıyor ve yönlendirme istekleri Chat / Anthropic'ye dönüştürdüğünde bunun yerini varsayılan model alıyor.", + "modelListHint": "Değişikliklerden sonra Codex uygulamasını yeniden başlatın.", + "modelListDefaultHelp": "Bu modeller Codex'nin /model menüsünde görünür; ilk satır varsayılan modeldir. Adını resmi bir GPT modelinden alan satırlar resmi girişi kullanır, dolayısıyla görünen adları, pencereleri ve akıl yürütme düzeyleri göz ardı edilir.", + "addCatalogModel": "Manuel olarak ekle", + "modelListTitle": "Modeller", + "stackModelDefaultHelp": "Bu modeller Codex'nin /model menüsünde görünür ve bir tanesini seçtiğinizde istekler doğrudan bu sağlayıcıya gönderilir. İlk satır, bu sağlayıcı varsayılan iken kullanılan varsayılan modeldir.", + "defaultModelNotInList": "Varsayılan model {{model}} listede yok: Codex hala varsayılan olarak bunu istiyor, ancak /model bunu göstermiyor.", + "addToModelList": "Listeye ekle", + "modelListEmpty": "Yapılandırılmış model yok: Birleştirme modunda yalnızca aşağıdaki varsayılan model yayınlanır.", + "catalogDisplayNamePlaceholder": "örneğin DeepSeek V4 Flash", + "catalogModelPlaceholder": "ör. deepseek-v4-flash", + "catalogColumnDisplay": "Menü Görünen Adı", + "catalogColumnModel": "Fiili Talep Modeli", + "catalogColumnContext": "Bağlam Penceresi", + "catalogColumnReasoning": "Muhakeme Seviyeleri", + "reasoningLevelsNotSet": "Ayarlanmadı", + "reasoningLevelsSearch": "Akıl yürütme düzeylerini arayın...", + "reasoningLevelsEmpty": "Seviye yok", + "defaultReasoningLevelLabel": "Varsayılan seviye", + "defaultReasoningLevelPlaceholder": "Otomatik", + "defaultReasoningLevelTip": "Varsayılan seviye: {{level}}", + "reasoningModeToggle": "Düşünme Modunu Destekler", + "reasoningModeHint": "Yukarı akış Chat API düşünmeyi açıp kapatabildiğinde açın. Kimi, GLM ve Qwen genellikle bunu yapabilir.", + "reasoningEffortToggle": "Muhakeme Çabasını Destekler", + "reasoningEffortHint": "Yukarı akış, düşük/yüksek/maks. gibi düşünme derinliğini desteklediğinde açın. Ayrıca düşünme modunu açar ve Codex'nin muhakeme çabasını yukarı akış Sohbet parametresine eşler.", + "reasoningGroupTitle": "Muhakeme Yeteneği", + "keyFieldsHint": "Uç nokta, anahtar, model, akıl yürütme çabası, bağlam penceresi ve uyumluluk anahtarları sağlayıcıyı takip eder; geri kalan her şey, kaydedildikten sonra her sağlayıcı için geçerli olan genel bir Codex ayarıdır.", + "inactiveFieldsHint": "Bu sağlayıcıya daha eski bir sürümle kaydedilmiş; geçiş artık bunları uygulamamaktadır. TOML'yi kopyalamak ve ihtiyacınız varsa yukarıya yapıştırmak için birine tıklayın.", + "inactiveFieldCopied": "Kopyalandı", + "upstreamFormatCopilotRouteHint": "Her mod, Copilot hesap kimlik bilgilerini içeren yönlendirmeyi gerektirir. Seçtiğiniz bir protokol, onu desteklemeyen modeller için açıkça başarısız olur.", + "maxOutputTokensWarning": "Modelin veya ağ geçidinin gerçek çıkış sınırını aşmayın, aksi halde istekler 400 değerini döndürür.", + "routeOnlySettingsHint": "Aşağıdaki iki ayar yalnızca yönlendirme ve Birleştirme modlarında geçerlidir." + }, + "geminiConfig": { + "envFile": "Ortam Değişkenleri (.env)", + "envFileHint": "Gemini ortam değişkenlerini .env formatında yapılandırma", + "configJson": "Ayarlar dosyası (settings.json)", + "configJsonHint": "Gemini CLI'nin settings.json'u (MCP sunucuları MCP panelinde yönetilir)", + "keyFieldsHint": "Uç nokta, anahtar, model adı ve kimlik doğrulama türü sağlayıcıyı takip eder; diğer ortam değişkenleri ve settings.json, Gemini CLI genel ayarlarıdır ve kaydedildikten sonra her sağlayıcı için geçerlidir.", + "inactiveFieldsHint": "Bu sağlayıcıya daha eski bir sürümle kaydedilmiş; geçiş artık bunları uygulamamaktadır. Yukarıya eklemek için birini tıklayın; kaydettikten sonra her sağlayıcı için geçerlidir.", + "addToGlobalSettings": "Genel ayarlara ekle" + }, + "opencode": { + "npmPackage": "API Biçimi", + "nativeConfigHint": "Yerel OpenCode V2 yapılandırmasını aşağıdaki JSON olarak düzenleyin. Kaydederken sağlayıcı ve model alanları korunur.", + "selectPackage": "API biçimini seçin", + "npmPackageHint": "AI hizmeti için API formatını seçin", + "builtinDefaults": "OpenCode yerleşik sağlayıcı varsayılanlarını kullanın", + "customProviderRequired": "Yeni bir sağlayıcı kimliği, bir npm paketi ve en az bir model gerektirir. Yalnızca canlı yapılandırmadaki mevcut bir kimlik varsayılanları devralabilir.", + "duplicateRequiresDefinition": "Bu sağlayıcıda bir npm paketi veya model tanımı eksik ve doğrudan kopyalanamıyor. Özel sağlayıcı olarak kopyalamadan önce bir npm paketi ve en az bir model belirtin.", + "duplicateRequiresNativeDefinition": "Bu yerel V2 sağlayıcısında paket veya model tanımları eksik ve doğrudan kopyalanamıyor. Yeni bir kimlik altına kopyalamadan önce bir paket ve en az bir model ekleyin.", + "nativeCustomProviderRequired": "Yeni sağlayıcı kimliği bir paket ve en az bir model gerektirir. Yalnızca canlı yapılandırmadaki mevcut bir kimlik varsayılanları devralabilir.", + "baseUrl": "Temel URL", + "baseUrlHint": "Özel API uç nokta URL'si", + "models": "Modeller", + "modelsHint": "Mevcut modelleri ve görünen adlarını yapılandırın", + "addModel": "Manuel olarak ekle", + "modelId": "Model Kimliği", + "modelName": "Görünen Ad", + "noModels": "Yapılandırılmış model yok", + "modelsRequired": "Lütfen en az bir model ekleyin", + "toggleModelDetails": "Model ayrıntılarını değiştir", + "providerKey": "Sağlayıcı Anahtarı", + "providerKeyPlaceholder": "my-provider", + "providerKeyHint": "Yapılandırma dosyasındaki benzersiz tanımlayıcı. Yalnızca küçük harf, rakam ve kısa çizgi kullanın.", + "providerKeyLockedHint": "Bu sağlayıcı zaten uygulama yapılandırmasına eklendiğinden anahtarı artık değiştirilemez.", + "providerKeyRequired": "Sağlayıcı anahtarı gerekli", + "providerKeyDuplicate": "Bu anahtar zaten kullanılıyor", + "providerKeyInvalid": "Geçersiz biçim. Yalnızca küçük harf, rakam ve kısa çizgi kullanın.", + "headers": "Başlıklar", + "headersHint": "HTTP-Referer veya X-Title gibi sağlayıcı istekleriyle birlikte gönderilen isteğe bağlı HTTP başlıkları.", + "addHeader": "Başlık ekle", + "headerName": "Başlık", + "headerValue": "Değer", + "headerNamePlaceholder": "X-Başlığı", + "headerValuePlaceholder": "CC Switch", + "removeHeader": "Başlığı kaldır", + "noHeaders": "Özel başlık yapılandırılmadı", + "extraOptions": "Ekstra Seçenekler", + "extraOptionsHint": "Timeout, setCacheKey vb. gibi ekstra SDK seçeneklerini yapılandırın. Değerler uygun türlere (sayı, boolean vb.) göre otomatik olarak ayrıştırılır.", + "addExtraOption": "Ekle", + "extraOptionKey": "Anahtar", + "extraOptionValue": "Değer", + "extraOptionKeyPlaceholder": "timeout", + "extraOptionValuePlaceholder": "600000", + "noExtraOptions": "Hiçbir ekstra seçenek yapılandırılmadı", + "noModelOptions": "Model seçenekleri, eklemek için +'ya tıklayın", + "modelLimits": "Token Limitleri", + "limitContext": "Bağlam", + "limitOutput": "Çıktı", + "modelExtraFields": "Model Özellikleri", + "noModelExtraFields": "Model özellikleri (varyantlar, maliyet vb.), eklemek için + işaretine tıklayın", + "modelExtraFieldKeyPlaceholder": "variants", + "sdkOptions": "SDK Seçenekleri", + "modelOptionKeyPlaceholder": "provider", + "modelOptionValuePlaceholder": "{\"order\": [\"baseten\"]}" + }, + "providerPreset": { + "label": "Sağlayıcı Ön Ayarı", + "custom": "Özel Yapılandırma", + "other": "Diğer", + "hint": "Bir ön ayar seçtikten sonra aşağıdaki alanları ayarlamaya devam edebilirsiniz.", + "searchTooltip": "Ön ayarları arayın", + "searchAriaLabel": "Sağlayıcı ön ayarlarında arama yapın", + "searchPlaceholder": "Adı veya URL'yi arayın, ör. kimi, zhipu, açık yönlendirici", + "sortAriaLabel": "Ön ayarlı sıralamayı değiştir", + "sortNameAscTooltip": "A'dan Z'ye ada göre sırala", + "sortOriginalTooltip": "Orijinal siparişi geri yükle", + "noSearchResults": "Aramanızla eşleşen hiçbir sağlayıcı ön ayarı yok.", + "clearSearch": "Aramayı temizle", + "categoriesLabel": "Önceden ayarlanmış kategoriler", + "group": { + "all": "Tümü", + "login": "Hesapta oturum açma", + "vendor": "Model satıcıları", + "thirdparty": "Üçüncü taraf platformlar", + "cloud": "Bulut sağlayıcıları", + "plugin": "Eklenti yapılandırmaları", + "universal": "Evrensel sağlayıcılar" + }, + "crossApp": "Uygulamalar genelinde", + "groupHint": { + "login": "API anahtarı yok: mevcut bir hesapla oturum açın. Claude dışındaki her şey yönlendirmeden geçer.", + "vendor": "Satıcıların kendi API'leri ve kodlama planları. Satıcının Çin sitesi, global sitesi ve planları aynı satırı paylaşıyor; Bir sonraki adımda sürümü seçin.", + "thirdparty": "Birçok modeli bir araya getiren veya resmi modellerin yeniden satışını yapan platformlar.", + "cloud": "Bulut sağlayıcı hesabına sahip modelleri arayın.", + "plugin": "OpenCode eklentileri için model atama yapılandırmaları.", + "universal": "Bir kez yapılandırın, Claude Code, Codex ve Gemini CLI ile eşitle edin." + }, + "noResults": "\"{{query}}\" için hiçbir şey bulunamadı", + "noResultsHint": "Özel bir yapılandırma kullanabilir ve istek URL'sini ve API anahtarını kendiniz doldurabilirsiniz.", + "useCustom": "Özel bir yapılandırmayla ekle", + "customDetail": "İstek URL'sini ve API anahtarını kendiniz doldurun", + "customBar": "Özel yapılandırma · her alanı kendiniz doldurun", + "change": "Değiştir", + "backToPick": "Ön ayarlara geri dön", + "universalDetail": "Claude Code, Codex, Gemini CLI ile eşitle edildi", + "manageUniversal": "Mevcut evrensel sağlayıcıları yönetin ›", + "loginWith": { + "claude": "Claude hesabıyla oturum açın", + "chatgpt": "ChatGPT hesabıyla oturum açın", + "github": "GitHub hesabıyla oturum açın", + "xai": "Bir xAI hesabıyla oturum açın", + "google": "Google hesabıyla oturum açın" + }, + "versionCount": "{{domain}} · {{n}} versiyonları", + "matchedVersion": "{{name}} ile eşleşir", + "matchedVersions": "{{name}} ve {{more}} ile eşleşir daha fazla", + "versionLabel": "Sürüm", + "family": { + "volcengine": "Volcengin", + "tencent": "Tencent Bulutu" + }, + "version": {}, + "switchVersionTitle": "{{version}}'ye geçilsin mi?", + "switchVersionMessage": "Yeni sürüm için form yeniden doldurulacaktır. Girdiğiniz API anahtarı ve diğer değişiklikler silinecektir.", + "switchVersionConfirm": "Geçiş yap", + "plan": { + "payg": "Kullandığın kadar öde", + "coding": "Kodlama aboneliği", + "codingPlan": "Kodlama Planı", + "agentPlan": "Ajan Planı", + "tokenPlan": "Token Planı", + "enterpriseLite": "Kurumsal Lite", + "enterprisePro": "Kurumsal Pro", + "stepPlan": "Adım Planı", + "aksk": "AKSK", + "apiKey": "API Anahtarı" + }, + "region": { + "cn": "Çin", + "intl": "Küresel" + }, + "planLabel": "Planı", + "regionLabel": "Bölge" + }, + "usage": { + "title": "Kullanım İstatistikleri", + "subtitle": "Yapay zeka modeli kullanımını ve maliyet istatistiklerini görüntüleyin", + "today": "24 Saat", + "last7days": "7 Gün", + "last30days": "30 Gün", + "presetToday": "Bugün", + "preset1d": "Son 24 saat", + "preset7d": "Son 7 gün", + "preset14d": "Son 14 gün", + "preset30d": "Son 30 gün", + "presetAll": "Tümü", + "totalRequests": "Toplam İstekler", + "totalCost": "Toplam Maliyet", + "cost": "Maliyet", + "unpriced": "Fiyatlandırılmamış", + "perMillion": "(milyon başına)", + "trends": "Kullanım Trendleri", + "rangeToday": "Son 24 saat (saatlik)", + "rangeLast7Days": "Son 7 gün", + "rangeLast30Days": "Son 30 gün", + "totalTokens": "Yeni Tokenlar (Giriş+Çıkış)", + "cacheTokens": "Önbellek Belirteçleri", + "realTotal": "İşlenen Tokenlar", + "realTotalHint": "Giriş + Çıkış + Önbelleğe Yazma + Önbelle Okuma", + "freshInput": "Taze Giriş", + "cacheHitRate": "Önbellek İsabet Oranı", + "requestLogs": "Günlük Talep Et", + "providerStats": "Sağlayıcı İstatistikleri", + "modelStats": "Model İstatistikleri", + "time": "Zaman", + "provider": "Sağlayıcı", + "billingModel": "Faturalandırma Modeli", + "inputTokens": "Girdi", + "outputTokens": "Çıktı", + "cacheReadTokens": "Önbellek İsabeti", + "cacheCreationTokens": "Önbellek Oluşturma", + "timingInfo": "Süre/TTFT", + "status": "Durum", + "multiplier": "Çarpan", + "requestModel": "Talep Modeli", + "responseModel": "Tepki Modeli", + "noData": "Veri yok", + "unknownProvider": "Bilinmeyen Sağlayıcı", + "sessionProvider": { + "short": "Oturum günlükleri", + "label": "{{app}} · Oturum günlükleri", + "hint": "Yönlendirme kapalıyken istemcinin oturum günlüklerini okuyun, böylece sağlayıcı birbirinden ayırt edilemez" + }, + "stream": "Akış", + "nonStream": "Yayın dışı", + "source": "Kaynak", + "requestsLabel": "istekler", + "costLabel": "toplam maliyet", + "appFilter": { + "all": "Tümü", + "claude": "Claude Code", + "codex": "Codex", + "gemini": "Gemini", + "opencode": "OpenCode", + "grokbuild": "Grok Build", + "pi": "Pi", + "mcode": "MiniMax Code", + "label": "Uygulamaya göre filtrele" + }, + "rawInputLabel": "Ham", + "sessionSync": { + "title": "Oturum Günlüklerini Otomatik Tarama", + "description": "Kullanımı izlemek için her istemcinin yerel oturum günlüklerini periyodik olarak tarar; kapalıyken günlükler yalnızca manuel eşitlemeda taranır", + "syncNow": "Şimdi Senkronize Et", + "syncCompleted": "Eşitleme tamamlandı: {{imported}} içe aktarıldı, {{files}} dosyaları tarandı, {{errors}} hataları", + "syncFailed": "Oturum kullanımı eşitlemeu başarısız oldu: {{error}}" + }, + "rebuildCodex": { + "title": "Codex Kullanım Bakımı", + "description": "Yerel kullanıma sunma günlüklerinden Codex oturum kullanımını yeniden oluşturun", + "warning": "Öncelikle veritabanı yedeklenir. Kaynağı JSONL silinen geçmiş yeniden içe aktarılamaz.", + "action": "Codex Kullanımını Yeniden Oluşturun", + "confirmTitle": "Codex kullanımı yeniden oluşturulsun mu?", + "confirmMessage": "Bu, mevcut Codex oturum ayrıntılarını ve birleştirmeları temizler, ardından bunları yerel Codex günlüklerinden tekrar içe aktarır.\n\nSilinen günlüklerle geçmiş kaybolacak. Ana kullanıma sunumu eksik olan çatallar ertelenecektir.", + "confirmAction": "Yedekleme ve Yeniden Oluşturma", + "completed": "Yeniden oluşturma tamamlandı: {{imported}} içe aktarıldı, {{errors}} hataları, {{suspected}} şüpheli kopyalar, {{deferred}} ertelenmiş dosyalar", + "failed": "Codex kullanımı yeniden oluşturulamadı: {{error}}", + "actionEllipsis": "Codex Kullanımını Yeniden Oluşturun" + }, + "totalRecords": "Toplam {{total}} kayıtları", + "goToPage": "Git", + "pageInputPlaceholder": "Sayfa", + "modelPricing": "Model Fiyatlandırması", + "loadPricingError": "Fiyatlandırma verileri yüklenemedi", + "modelPricingDesc": "Her model için token maliyetlerini yapılandırma", + "noPricingData": "Fiyatlandırma verisi yok. Model fiyatlandırma yapılandırmasını eklemek için \"Ekle\"yi tıklayın.", + "model": "Model", + "pricingModel": "Fiyatlandırma Modeli", + "displayName": "Görünen Ad", + "inputCost": "Girdi Maliyeti", + "outputCost": "Çıktı Maliyeti", + "cacheReadCost": "Önbellek İsabeti", + "cacheWriteCost": "Önbellek Oluşturma", + "deleteConfirmTitle": "Silmeyi Onayla", + "deleteConfirmDesc": "Bu model fiyatını silmek istediğinizden emin misiniz? Bu eylem geri alınamaz.", + "queryFailed": "Sorgu başarısız oldu", + "refreshUsage": "Kullanımı yenile", + "planUsage": "Kullanım planı", + "invalid": "Süresi doldu", + "total": "Toplam:", + "used": "Kullanılan:", + "remaining": "Kalan:", + "justNow": "Az önce", + "minutesAgo": "{{count}} dakika önce", + "hoursAgo": "{{count}} saat önce", + "daysAgo": "{{count}} gün önce", + "multiplePlans": "{{count}} planları", + "expand": "Genişlet", + "collapse": "Daralt", + "modelIdPlaceholder": "ör. claude-3-5-sonnet-20241022", + "displayNamePlaceholder": "örneğin Claude 3.5 Sonnet", + "appType": "Uygulama Türü", + "statusCode": "Durum Kodu", + "allSources": "Tüm Kaynaklar", + "allModels": "Tüm Modeller", + "filterBySource": "Kaynağa göre filtrele", + "filterByModel": "Modele göre filtrele", + "refreshInterval": "Otomatik yenileme aralığı", + "refreshOff": "Kapalı", + "timeRange": "Zaman Aralığı", + "customRange": "Takvim Filtresi", + "customRangeHint": "Hem tarih hem de saati destekler", + "startTime": "Başlangıç Zamanı", + "endTime": "Bitiş Zamanı", + "liveEndTime": "Bitiş zamanı şimdiki zamanı takip eder", + "liveEndTimeNow": "Şimdi", + "input": "Girdi", + "output": "Çıktı", + "cacheWrite": "Yaratılış", + "cacheWriteNotReported": "OpenAI protokolü önbellek oluşturmayı ayırt etmez; yalnızca önbellek isabetleri raporlanır", + "cacheWritePartial": "Bazı protokoller (örneğin OpenAI) önbellek oluşturulmasını bildirmez; değer eksik olabilir", + "cacheRead": "Vur", + "baseCost": "Baz", + "costMultiplier": "Maliyet Çarpanı", + "withMultiplier": "çarpanlı", + "requestDetail": "Talep Detayı", + "requestNotFound": "İstek bulunamadı", + "requestLoadFailed": "İstek ayrıntıları yüklenemedi", + "basicInfo": "Temel Bilgiler", + "tokenUsage": "Token Kullanımı", + "cacheCreationCost": "Önbellek Oluşturma Maliyeti", + "costBreakdown": "Maliyet Dağılımı", + "performance": "Performans", + "latency": "Gecikme", + "errorMessage": "Hata Mesajı", + "requests": "İstekler", + "tokens": "Tokenlar", + "avgCost": "Ortalama Maliyet", + "avgLatency": "Ortalama Gecikme", + "successRate": "Başarı Oranı", + "requestId": "Talep Kimliği", + "never": "Asla", + "modelId": "Model Kimliği", + "modelIdRequired": "Model kimliği gerekli", + "inputCostPerMillion": "Girdi Maliyeti (milyon token başına, ABD Doları)", + "outputCostPerMillion": "Çıktı Maliyeti (milyon token başına, ABD Doları)", + "invalidPrice": "Fiyat negatif olmamalıdır", + "invalidTimeRange": "Lütfen tam başlangıç/bitiş zamanını seçin", + "invalidTimeRangeOrder": "Başlangıç zamanı bitiş zamanından sonra olamaz", + "timeRangeTooLarge": "Zaman aralığı çok geniş, lütfen daraltın", + "addPricing": "Fiyatlandırma Ekle", + "editPricing": "Fiyatlandırmayı Düzenle", + "pricingAdded": "Fiyatlandırma eklendi", + "pricingUpdated": "Fiyatlandırma güncellendi", + "importFromModelsDev": "models.dev'den içe aktar", + "modelsDevHint": "Manuel girişi atlayın; models.dev'den model fiyatlandırmasını seçin", + "modelsDevPickerTitle": "Models.dev'den İçe Aktarma Fiyatlandırması", + "modelsDevPickerDesc": "İçe aktarılacak bir model seçin (milyon token başına ABD doları cinsinden fiyatlar). Her içe aktarmada bir model.", + "modelsDevSearchPlaceholder": "Modelleri veya sağlayıcıları arayın (tam arama)...", + "modelsDevAllProviders": "Tüm sağlayıcılar", + "modelsDevLoadError": "models.dev verileri yüklenemedi", + "modelsDevRetry": "Yeniden dene", + "modelsDevImportButton": "İçe aktar", + "modelsDevImporting": "İçe aktarılıyor...", + "modelsDevImported": "{{name}} için içe aktarılan fiyatlandırma", + "modelsDevNoResults": "Eşleşen model yok", + "modelsDevTruncated": "{{total}} sonuçlarının ilk {{shown}}'si gösteriliyor — aramanızı hassaslaştırın", + "modelsDevDefaultHint": "En son piyasaya sürülen {{shown}} modelleri gösteriliyor ({{total}}'nin) — tümünü aramak için yazın", + "modelsDevAutoSync": { + "title": "Otomatik models.dev fiyatlandırma eşitlemeu", + "description": "Etkinleştirildiğinde, CC Switch piyasaya sürüldüğünde seçilen fiyatları periyodik olarak alın ve bunları yerel fiyatlandırma dosyanızda saklayın.", + "enabled": "Etkin", + "disabled": "Devre dışı", + "enableConfirmTitle": "Otomatik fiyatlandırma eşitlemeu etkinleştirilsin mi?", + "enableConfirmMessage": "Etkinleştirmenin ardından CC Switch, seçili modellerin fiyatlarını başlatıldığında models.dev'den periyodik olarak güncelleyecektir (en fazla 6 saatte bir). Aynı model kimliğine sahip yerleşik ve manuel olarak yapılandırılmış fiyatların üzerine yazılacaktır.", + "enableConfirmAction": "Otomatik eşitlemeu etkinleştir", + "configure": "Modelleri seçin", + "configureTitle": "Otomatik fiyatlandırma eşitlemeu için modelleri seçin", + "configureDescription": "Otomatik olarak güncellenecek modelleri arayın ve filtreleyin. Seçimleriniz yerel olarak depolanır.", + "commonModels": "Yaygın modelleri otomatik olarak dahil et", + "commonModelsDescription": "{{count}} en yeni Claude, GPT, Gemini, Grok, DeepSeek, Qwen, MiMo, LongCat, Kimi, MiniMax ve GLM modellerini seçer.", + "selectFiltered": "Filtrelenmiş olanı seçin ({{count}})", + "clearFiltered": "Filtrelenenleri temizle", + "selectedCount": "{{count}} modelleri seçildi", + "selectionHint": "Aynı normalleştirilmiş model kimliğine sahip seçimler bir kez içe aktarılır.", + "commonBadge": "Ortak", + "selectionSaved": "Otomatik fiyatlandırma seçimi kaydedildi", + "syncSuccess": "Fiyatlandırma eşitlemeu tamamlandı: {{imported}} modelleri kontrol edildi, {{changed}} güncellendi", + "syncFailed": "Fiyatlandırma eşitlemeu başarısız oldu: {{error}}", + "configLoadFailed": "Yerel fiyatlandırma yapılandırması yüklenemedi: {{error}}", + "neverSynced": "Asla", + "lastSync": "Son eşitleme", + "commonStatus": "Ortak modeller", + "lastError": "Son otomatik eşitleme başarısız oldu: {{error}}", + "localFile": "Yerel fiyatlandırma dosyası", + "openFolder": "Klasörü aç", + "openFolderFailed": "Yerel fiyatlandırma klasörü açılamadı: {{error}}", + "reloadLocalFile": "Dosyayı yeniden yükle", + "localFileReloaded": "Yerel fiyatlandırma dosyası yeniden yüklendi", + "localFileReloadFailed": "Yerel fiyatlandırma dosyası yeniden yüklenemedi: {{error}}", + "syncNow": "Şimdi eşitle et" + }, + "cacheReadCostPerMillion": "Önbellek Okuma Maliyeti (milyon token başına, USD)", + "cacheCreationCostPerMillion": "Önbellek Yazma Maliyeti (milyon token başına, USD)", + "syncStatus": { + "auto": "Oturum günlükleri · otomatik tarama", + "justNow": "Oturum günlükleri · az önce eşitle edildi", + "minutesAgo": "Oturum günlükleri · {{count}} dakika önce eşitle edildi", + "off": "Oturum günlükleri · otomatik tarama kapalı", + "tipAuto": "Oturum günlükleri her 60 saniyede bir taranır", + "tipOff": "Oturum günlükleri yalnızca manuel olarak eşitlediğinizde taranır" + }, + "refreshMenu": { + "label": "{{seconds}}'leri otomatik olarak yenile", + "off": "Otomatik yenileme kapalı", + "seconds": "{{seconds}}'ler" + }, + "dataSources": "Veri kaynakları", + "providerFilter": { + "label": "Sağlayıcı", + "all": "Tüm sağlayıcılar", + "title": "Sağlayıcıya göre filtrele" + }, + "modelFilter": { + "label": "Model", + "title": "Modele göre filtrele (sağlayıcı filtresini takip eder)" + }, + "metrics": { + "label": "Metrikler", + "more": "Daha fazla metrik", + "realTotalHelpTitle": "Toplam tokenlar nasıl sayılır?", + "realTotalHelp": "Yeni giriş + çıkış + önbellek yazma + önbellek isabetleri. Yeni giriş önbelleği hariç tutar; bazı protokoller (OpenAI gibi) önbellek yazma işlemlerini raporlamaz, dolayısıyla bu kısım düşük olabilir.", + "hitRateHelpTitle": "Önbellek isabet oranı nasıl hesaplanır?", + "hitRateHelp": "Önbellek isabetleri ÷ (yeni girdi + önbellek yazmaları + önbellek isabetleri)." + }, + "heatmap": { + "title": "Kullanım ısı haritası", + "subtitle": "Son 53 haftadaki günlük kullanım; Daha önceki kullanım 53 haftalık aralıklarla devam ediyor ve gölgeleme aralıklar arasında karşılaştırılabilir", + "spanSummary": "{{tokens}} tokenleri · {{requests}} istekleri · {{cost}}", + "showMore": "Daha fazlasını göster", + "showLess": "Daha az göster", + "less": "Daha az", + "more": "Diğer" + }, + "trend": { + "title": "Kullanım eğilimi · {{range}}", + "metricLabel": "Trend metriği", + "requests": "İstekler", + "tokens": "Tokenlar", + "cost": "Maliyet", + "requestsLegend": "İstekler" + }, + "tabs": { + "label": "Ayrıntılar", + "providers": "Sağlayıcılar", + "models": "Modeller", + "pricing": "Fiyatlandırma" + }, + "sortedByRequests": "İsteklere göre sıralandı", + "app": "Uygulama", + "speed": "Hız", + "speedValue": "{{value}} tok/sn", + "speedEstimatedValue": "≈ {{value}} tok/s", + "speedHelpTitle": "Hız nasıl hesaplanır?", + "speedHelp": "İlk token’dan yanıtın sonuna kadar saniyede üretilen çıktı token’ı sayısı. Yalnızca yönlendirme hizmetinden geçen ve en az 100 çıktı token’ı içeren istekler hesaba katılır; akıl yürütme verilerini gizleyen modellerde bu bir yaklaşımdır. ≈ işaretli değer, yönlendirme kapalıyken oturum günlüğü zamanlarından tahmin edilir: ilk token’ı bekleme süresi de dahil olduğundan daha düşük görünür. Yalnızca en az 200 çıktı token’ı içeren istekler için tahmin yapılır.", + "speedSumHelpTitle": "Genel hız nasıl hesaplanır?", + "speedSumHelp": "Toplam çıktı tokenlarının istek başına ortalama hızlara değil, toplam üretim süresine bölünmesiyle kısa istekler çarpıklık yaratmaz. Yalnızca yönlendirme hizmeti aracılığıyla yapılan ve en az 100 çıkış tokenu içeren istekler sayılır. ≈ içeren bir değer, oturum günlüklerinden tahmin edilir (ilk token için beklemeyi içerir ve yalnızca en az 200 çıkış tokenu sayımına sahip istekler içerir) ve yalnızca satırda yönlendirilmiş veri bulunmadığında gösterilir.", + "timingTip": "Süre {{duration}} · ilk token {{ttft}}", + "estimatedTimingTip": "{{duration}}'ler hakkında (ilk tokenun beklenmesi de dahil olmak üzere oturum günlüğü zaman damgalarından tahmin edilir)", + "cacheTip": "Önbellek {{read}}'ye ulaşıyor · önbellek {{write}} yazıyor", + "openRequestDetail": "İstek ayrıntılarını görüntüle: {{time}} {{provider}}", + "prevPage": "Önceki sayfa", + "nextPage": "Sonraki sayfa", + "statusFilter": { + "all": "Tüm durum kodları" + }, + "detail": { + "tokensTitle": "Token kullanımı", + "costTitle": "Maliyet dökümü (USD)", + "performance": "Performans", + "source": "Kaynak", + "sourceProxy": "Yönlendirme hizmeti · durumu {{code}}", + "sourceSession": "Oturum günlüğü", + "total": "Toplam", + "firstToken": "İlk token", + "duration": "Süre", + "durationEstimated": "Süre (tahmini)", + "speedTooFew": "100 çıkış tokenunun altında, yani hız yok", + "speedEstimateTooFew": "Çıkış tokenu 200'ün altında olduğundan tahmin yok", + "noTimingSession": "Oturum günlüklerinde zamanlama verisi yok", + "noFirstToken": "İlk token zamanlaması yok, dolayısıyla hız yok", + "providerId": "Sağlayıcı kimliği", + "firstTokenEstimated": "İlk token (tahmini)" + }, + "sources": { + "scanTitle": "Oturum günlüklerini otomatik olarak tara", + "scanHelpTitle": "Oturum günlükleri nedir?", + "scanHelp": "Konuşma, bu bilgisayara yazılan her uygulamanın kaydını tutar. CC Switch bunların kullanımını okur, böylece yönlendirme olmadan bile veri alırsınız.", + "coverage": "7 uygulamayı kapsar: {{apps}}", + "cadenceOn": "Başlangıçta bir kez, ardından her 60 saniyede bir tarar", + "cadenceOff": "Otomatik tarama kapalı; günlükler yalnızca Şimdi Eşitle'ye tıkladığınızda taranır", + "unsupported": "Hermes ve OpenClaw henüz kullanım istatistiklerini desteklemiyor", + "loggingHelpTitle": "Kayıt isteği kullanımı ne işe yarar?", + "loggingHelp": "Yönlendirme hizmeti aracılığıyla yapılan her istek, durum kodu, süresi ve ilk tokena kadar geçen süre ile birlikte kaydedilir.", + "on": "Açık", + "off": "Kapalı", + "editLogging": "“İstek kullanımını kaydet” seçeneğini değiştirin", + "codexHelpTitle": "Codex kullanım bakımı ne işe yarar?", + "lastSynced": "son eşitleme: {{time}}" + }, + "empty": { + "title": "Henüz kullanım verisi yok", + "body": "Oturum günlüklerinden ve yönlendirme hizmeti aracılığıyla gelen isteklerden kullanım burada gösterilir.", + "configurePricing": "Model fiyatlandırmasını yapılandırma" + }, + "pricing": { + "modelsDevTitle": "modeller.dev eşitlemeu · {{status}}", + "modelsDevHelpTitle": "models.dev eşitlemeu nasıl çalışır?", + "modelsDevHelp": "Başlangıçta seçilen modellerin en son fiyatlarını en fazla 6 saatte bir getirir; ortak modeller otomatik olarak dahil edilebilir.", + "lastSync": "Son eşitle edilen {{time}}", + "commonIncluded": "ortak modelleri içerir", + "moreActions": "Daha fazla fiyatlandırma işlemi", + "billingHelpTitle": "Faturalandırma varsayılanlarının neyi kontrol ettiği", + "billingHelp": "Yalnızca yönlendirme hizmeti aracılığıyla yapılan istekler için geçerlidir. Oturum günlüklerinden içe aktarılan kullanım, günlüğe kaydedilen modele göre fiyatlandırılır.", + "byResponse": "Yanıt modeline göre fiyatlandırılır", + "byRequest": "Talep modeline göre fiyatlandırılır", + "edit": "Değiştir", + "tableTitle": "Model fiyatlandırması · {{count}}", + "costHelpTitle": "Maliyet nasıl hesaplanır?", + "costHelp": "Her istek modeline göre fiyatlandırılır: yeni giriş, çıkış, önbellek isabetleri ve önbellek yazma işlemlerinin her biri birim fiyatıyla çarpılır ve toplanır.", + "unit": "USD / 1 milyon token", + "editAria": "{{name}} için fiyatlandırmayı düzenleyin", + "deleteAria": "{{name}} için fiyatlandırmayı sil", + "cacheWrite": "Önbelleğe yazma" + }, + "prevMonth": "Önceki ay", + "nextMonth": "Gelecek ay", + "firstToken": "İlk token", + "firstTokenHelpTitle": "İlk token süresi", + "firstTokenHelp": "Yönlendirme hizmetinin isteği aldığı andan sağlayıcının çıktı üretmeye başladığı ana kadar geçen süre. ≈ işaretli değer, yönlendirme kapalıyken oturum günlüğü zamanlarından hesaplanır: önceki günlük satırının yazıldığı andan başladığı için istemcinin isteği hazırlama süresini de içerir ve daha yüksek görünür. Claude Code’da yalnızca yanıt düşünme ile başladığında; Codex’te yalnızca yeni günlüklerde ve yanıt bir araç çağrısıyla başlamadığında hesaplanabilir.", + "firstTokenSumHelpTitle": "İlk token süresi nasıl hesaplanır?", + "firstTokenSumHelp": "Yönlendirme hizmetinin isteği aldığı andan sağlayıcının çıktı üretmeye başladığı ana kadar geçen süre. Satır, isteklerin medyanını gösterir; böylece ara sıra yavaşlayan bir istek (kuyruk, soğuk başlangıç) değeri yükseltmez. Yalnızca yönlendirme hizmetinden geçen başarılı akış istekleri hesaba katılır; 30 günden eski ve günlük toplamlara dahil edilmiş istekler sayılmaz. ≈ işaretli değer oturum günlüklerinden türetilir (daha yüksek görünür ve yalnızca bazı isteklerde hesaplanabilir); yalnızca satırda yönlendirilmiş istek verisi yoksa gösterilir.", + "estimatedTimingTipWithFirstToken": "Yaklaşık {{duration}} sn · ilk token yaklaşık {{ttft}} sn (oturum günlüğü zamanlarından tahmin edildi)" + }, + "usageScript": { + "title": "Kullanım Sorgusunu Yapılandır", + "enableUsageQuery": "Kullanım sorgusunu etkinleştir", + "presetTemplate": "Önceden ayarlanmış şablon", + "requestUrl": "URL'yi talep et", + "requestUrlPlaceholder": "örneğin https://api.example.com", + "method": "HTTP yöntemi", + "templateCustom": "Özel", + "templateGeneral": "Genel", + "templateNewAPI": "YeniAPI", + "templateCopilot": "GitHub Copilot", + "templateTokenPlan": "Token Planı", + "templateBalance": "Resmi", + "templateOfficialSubscription": "Resmi Abonelik", + "copilotAutoAuth": "Otomatik OAuth kimlik doğrulaması, manuel kimlik bilgilerine gerek yok", + "tokenPlanHint": "Token Planı kotasını sorgulamak için sağlayıcının API Anahtarını ve Temel URL'sini otomatik olarak kullanır", + "balanceHint": "Hesap bakiyesini sorgulamak için sağlayıcının API Anahtarını otomatik olarak kullanır", + "officialSubscriptionHint": "Yerel CLI OAuth kimlik bilgilerini okur ve abonelik kotasını sorgulamak için resmi API'yi çağırır. Varsayılan olarak devre dışıdır ve yalnızca siz etkinleştirdikten sonra istekte bulunur.", + "resetDate": "Tarihi sıfırla", + "premiumRequests": "Prim Talepleri", + "credentialsConfig": "Kimlik bilgileri", + "credentialsHint": "Sağlayıcı yapılandırmasını kullanmak için boş bırakın", + "optional": "isteğe bağlı", + "apiKeyPlaceholder": "Sağlayıcının API Anahtarını kullanmak için boş bırakın", + "baseUrlPlaceholder": "Sağlayıcının temel URL'sini kullanmak için boş bırakın", + "baseUrl": "Temel URL", + "accessToken": "Erişim Tokenu", + "accessTokenPlaceholder": "'Güvenlik Ayarları'nda oluşturun", + "userId": "Kullanıcı Kimliği", + "userIdPlaceholder": "ör. 114514", + "accessKeyId": "Erişim Anahtarı Kimliği", + "secretAccessKey": "GizliErişimAnahtarı", + "volcengineAkSkHint": "Volcengine kullanım sorgusu, hesap düzeyinde bir Erişim Anahtarı Kimliği/Gizlisi gerektirir (çıkarım API anahtarından farklı). Bunları Volcengine konsolunda sağ üstteki hesap menüsü → 'API Erişim Anahtarları' aracılığıyla oluşturun.", + "volcengineKeyConsoleLink": "Anahtarları şu adreste oluşturun:", + "zhipuTeamHint": "Zhipu ekip planı kullanım sorgusu, ekip API anahtarına (bu sağlayıcının kimlik bilgilerini yeniden kullanır) + kuruluş kimliği + proje kimliğine (bigmodel-organization / bigmodel-project istek başlıkları olarak gönderilir) ihtiyaç duyar. Ekip yönetici konsolunun kullanım sayfası URL'sinde kuruluş ve proje kimliklerini bulun.", + "zhipuTeamConsoleLink": "Takım kullanım sayfası:", + "organizationId": "Kuruluş Kimliği", + "organizationIdPlaceholder": "örneğin kuruluş-xxxxxx", + "projectId": "Proje Kimliği", + "projectIdPlaceholder": "örneğin proje-xxxxxx", + "defaultPlan": "Varsayılan Plan", + "queryFailedMessage": "Sorgu başarısız oldu", + "queryScript": "Sorgu betiği (JavaScript)", + "timeoutSeconds": "Zaman aşımı (saniye)", + "headers": "Başlıklar", + "body": "Vücut", + "timeoutHint": "Aralık: 2-30 saniye", + "timeoutMustBeInteger": "Zaman aşımı bir tamsayı olmalıdır; ondalık kısım göz ardı edilir", + "timeoutCannotBeNegative": "Zaman aşımı negatif olamaz", + "autoIntervalMinutes": "Otomatik sorgu aralığı (dakika, devre dışı bırakmak için 0)", + "autoQueryInterval": "Otomatik Sorgu Aralığı (dakika)", + "autoQueryIntervalHint": "Devre dışı bırakmak için 0; 5-60 dakika önerilir", + "intervalMustBeInteger": "Aralık bir tamsayı olmalıdır; ondalık kısım göz ardı edilir", + "intervalCannotBeNegative": "Aralık negatif olamaz", + "intervalAdjusted": "Aralık {{value}} dakikaya ayarlandı", + "scriptHelp": "Senaryo yazma talimatları:", + "configFormat": "Yapılandırma formatı:", + "commentOptional": "isteğe bağlı", + "commentResponseIsJson": "yanıt, API tarafından döndürülen JSON verileridir", + "extractorFormat": "Çıkarıcı dönüş formatı (tüm alanlar isteğe bağlıdır):", + "tips": "💡 İpuçları:", + "testing": "Test ediliyor...", + "testScript": "Test komut dosyası", + "format": "Biçim", + "saveConfig": "Yapılandırmayı kaydet", + "scriptEmpty": "Komut dosyası yapılandırması boş olamaz", + "mustHaveReturn": "Komut dosyası return ifadesini içermelidir", + "testSuccess": "Test başarılı!", + "testFailed": "Test başarısız oldu", + "formatSuccess": "Biçimlendirme başarılı", + "formatFailed": "Biçimlendirme başarısız oldu", + "supportedVariables": "Desteklenen Değişkenler", + "variablesHint": "Desteklenen değişkenler: {{apiKey}}, {{baseUrl}} | çıkarıcı işlevi API yanıtını alır JSON nesnesi", + "scriptConfig": "Yapılandırma isteği", + "extractorCode": "Çıkarıcı kodu", + "extractorHint": "Dönüş nesnesi kalan kota alanlarını içermelidir", + "fieldIsValid": "• isValid: Boolean, planın geçerli olup olmadığı", + "fieldInvalidMessage": "• invalidMessage: Dize; geçerliliğin neden sona erdiğini belirtir (isValid false olduğunda gösterilir)", + "fieldRemaining": "• remaining: Sayı, kalan kota", + "fieldUnit": "• unit: Dize, birim (ör. \"USD\")", + "fieldPlanName": "• planName: Dize, plan adı", + "fieldTotal": "• total: Sayı, toplam kota", + "fieldUsed": "• used: Sayı, kullanılan kota", + "fieldExtra": "• extra: Dize, özel ekran metni", + "tip1": "• {{apiKey}} ve {{baseUrl}} değişkenleri otomatik olarak değiştirilir", + "tip2": "• Çıkarıcı işlevi korumalı alan ortamında çalışır, ES2020+ sözdizimini destekler", + "tip3": "• Nesne değişmez ifadesini oluşturmak için tüm yapılandırmanın () içine sarılması gerekir", + "templateSub2API": "Sub2API" + }, + "dbUpgrade": { + "title": "Veritabanı sürümü çok yeni", + "description": "Bu veritabanı CC Switch’in daha yeni bir sürümü tarafından oluşturuldu. Devam etmek için uygulamayı yükseltin. Yükseltme verilerinizi silmez.", + "versionInfo": "Veritabanı v{{db}} · Uygulama v{{supported}}'yi destekliyor", + "dbPath": "Veritabanı dosyası", + "checking": "Mevcut güncellemeler kontrol ediliyor…", + "updateAvailable": "Sürüm v{{version}} mevcuttur; yükseltme devam etmenize izin verecektir.", + "incompatibleTitle": "Yükseltme bunu düzeltmez", + "incompatibleDescription": "Zaten en son sürümü kullanıyorsunuz ancak veritabanı (v{{db}}) hala bu uygulamanın desteklediğinden (v{{supported}}) daha yeni. Büyük olasılıkla üçüncü taraf bir istemci veya daha yeni bir yapı tarafından oluşturulmuş olduğundan, resmi uygulamayı yükseltmek onu uyumlu hale getiremez.", + "preparing": "Güncelleme hazırlanıyor…", + "downloading": "Güncelleme indiriliyor…", + "upgradeNow": "Uygulamayı yükselt", + "retry": "Yükseltmeyi yeniden dene", + "openReleases": "Sürümler sayfasını aç", + "openConfigDir": "Yapılandırma klasörünü aç", + "quit": "Çık" + }, + "errors": { + "usage_query_failed": "Kullanım sorgusu başarısız oldu", + "configLoadFailedTitle": "Yapılandırma Yükleme Başarısız Oldu", + "configLoadFailedMessage": "Yapılandırma dosyası okunamıyor:\n{{path}}\n\nHata ayrıntıları:\n{{detail}}\n\nLütfen JSON'nin geçerli olup olmadığını kontrol edin veya aynı dizindeki bir yedekleme dosyasından (örn. config.json.bak) geri yükleyin.\n\nBu sorunu düzeltebilmeniz için uygulamadan çıkılacaktır.", + "frontendCrashTitle": "Arayüzde bir şeyler ters gitti", + "frontendCrashMessage": "Hatayı uygulama tanılama günlüğüne yazma girişiminde bulunuldu. Arayüzü yeniden yükleyin ve sorun devam ederse sorunu açarken günlüğü ekleyin.", + "reloadInterface": "Arayüzü yeniden yükle" + }, + "presetSelector": { + "title": "Konfigürasyon Türünü Seçin", + "custom": "Özel", + "customDescription": "Sağlayıcıyı manuel olarak yapılandırın, tam yapılandırma gerektirir", + "officialDescription": "Resmi giriş, API Anahtarına gerek yok", + "presetDescription": "Önceden ayarlanmış yapılandırmayı kullanın, yalnızca API Anahtarı gerekir" + }, + "mcp": { + "title": "MCP Yönetimi", + "import": "İçe aktar", + "importExisting": "Mevcut Olanı İçe Aktar", + "addMcp": "MCP'yi ekleyin", + "claudeTitle": "Claude Code MCP Yönetimi", + "codexTitle": "Codex MCP Yönetimi", + "geminiTitle": "Gemini MCP Yönetimi", + "unifiedPanel": { + "title": "MCP Sunucu Yönetimi", + "addServer": "Sunucu Ekle", + "editServer": "Sunucuyu Düzenle", + "deleteServer": "Sunucuyu Sil", + "deleteConfirm": "\"{{id}}\" sunucusunu silmek istediğinizden emin misiniz? Bu eylem geri alınamaz.", + "noServers": "Henüz sunucu yok", + "enabledApps": "Etkin Uygulamalar", + "noImportFound": "İçe aktarılacak MCP sunucusu bulunamadı. Tüm sunucular zaten CC Switch tarafından yönetilmektedir.", + "importSuccess": "{{count}} MCP sunucuları başarıyla içe aktarıldı", + "searchPlaceholder": "MCP adını, açıklamasını, etiketini veya komutunu arayın...", + "searchAriaLabel": "Yönetilen MCP sunucularını arayın", + "noSearchResults": "Aramanızla eşleşen MCP sunucusu yok", + "apps": { + "claude": "Claude", + "codex": "Codex", + "gemini": "Gemini", + "grokbuild": "Grok Build", + "opencode": "OpenCode", + "openclaw": "OpenClaw", + "hermes": "Hermes", + "mcode": "MiniMax Code" + } + }, + "userLevelPath": "Kullanıcı düzeyinde MCP yolu", + "serverList": "Sunucular", + "loading": "Yükleniyor...", + "empty": "MCP sunucusu yok", + "emptyDescription": "İlk MCP sunucunuzu eklemek için sağ üstteki düğmeye tıklayın", + "add": "MCP'yi ekleyin", + "addServer": "MCP'yi ekleyin", + "editServer": "MCP'yi düzenleyin", + "addClaudeServer": "Claude Code MCP'yi ekleyin", + "editClaudeServer": "Claude Code MCP'yi düzenleyin", + "addCodexServer": "Codex MCP'yi ekleyin", + "editCodexServer": "Codex MCP'yi düzenleyin", + "configPath": "Yapılandırma Yolu", + "serverCount": "{{count}} MCP sunucuları yapılandırılmış", + "enabledCount": "{{count}} etkin", + "template": { + "fetch": "Hızlı Şablon: mcp-fetch" + }, + "form": { + "title": "MCP Başlığı (Benzersiz)", + "titlePlaceholder": "my-mcp-server", + "name": "Görünen Ad", + "namePlaceholder": "ör. mcp-server-time", + "enabledApps": "Uygulamaları Etkinleştir", + "noAppsWarning": "En az bir uygulama seçilmelidir", + "description": "Açıklama", + "descriptionPlaceholder": "İsteğe bağlı açıklama", + "tags": "Etiketler (virgülle ayrılmış)", + "tagsPlaceholder": "stdio, zaman, yardımcı program", + "homepage": "Ana sayfa", + "homepagePlaceholder": "https://example.com", + "docs": "Dokümanlar", + "docsPlaceholder": "https://example.com/docs", + "additionalInfo": "Ek Bilgi", + "jsonConfig": "Tam JSON Yapılandırması", + "jsonConfigOrPrefix": "Tam JSON yapılandırması veya kullanımı", + "tomlConfigOrPrefix": "Tam TOML yapılandırması veya kullanımı", + "jsonPlaceholder": "{\n \"type\": \"stdio\",\n \"command\": \"uvx\",\n \"args\": [\"mcp-server-fetch\"]\n}", + "tomlConfig": "Tam TOML Yapılandırması", + "tomlPlaceholder": "type = \"stdio\"\ncommand = \"uvx\"\nargs = [\"mcp-server-fetch\"]", + "useWizard": "Yapılandırma Sihirbazı", + "syncOtherSide": "{{target}}'ye aynalama", + "syncOtherSideHint": "Aynı ayarları {{target}}'ye uygulayın; aynı kimliğe sahip mevcut girişlerin üzerine yazılacaktır.", + "willOverwriteWarning": "{{target}}'deki mevcut yapılandırmanın üzerine yazacak" + }, + "wizard": { + "title": "MCP Yapılandırma Sihirbazı", + "hint": "MCP sunucusunu hızla yapılandırın ve JSON yapılandırmasını otomatik olarak oluşturun", + "type": "Tür", + "typeStdio": "stdio", + "typeHttp": "http", + "typeSse": "sse", + "command": "Komut", + "commandPlaceholder": "npx veya uvx", + "args": "Argümanlar", + "argsPlaceholder": "arg1\narg2", + "env": "Ortam Değişkenleri", + "envPlaceholder": "KEY1=value1\nKEY2=value2", + "url": "URL'si", + "urlPlaceholder": "https://api.example.com/mcp", + "urlRequired": "Lütfen URL'yi girin", + "headers": "Başlıklar (isteğe bağlı)", + "headersPlaceholder": "Yetkilendirme: Taşıyıcı your_token_here\nİçerik Türü: application/json", + "preview": "Yapılandırma Önizlemesi", + "apply": "Yapılandırmayı Uygula" + }, + "id": "Tanımlayıcı (benzersiz)", + "type": "Tür", + "command": "Komut", + "validateCommand": "Komutu Doğrula", + "args": "Argümanlar", + "argsPlaceholder": "örneğin, mcp-server-fetch --help", + "env": "Ortam (her satıra bir tane, ANAHTAR=DEĞER)", + "envPlaceholder": "FOO=bar\nHELLO=world", + "reset": "Sıfırla", + "msg": { + "saved": "Kaydedildi", + "deleted": "Silindi", + "enabled": "Etkin", + "disabled": "Devre dışı", + "templateAdded": "Şablon eklendi" + }, + "error": { + "idRequired": "Lütfen tanımlayıcıyı girin", + "idExists": "Tanımlayıcı zaten mevcut. Lütfen başka bir tane seçin.", + "jsonInvalid": "Geçersiz JSON biçimi", + "tomlInvalid": "Geçersiz TOML biçimi", + "commandRequired": "Lütfen komutu girin", + "singleServerObjectRequired": "Lütfen tek bir MCP sunucu nesnesi yapıştırın (üst düzey mcpServers alanını dahil etmeyin)", + "saveFailed": "Kaydetme başarısız oldu", + "deleteFailed": "Silinemedi" + }, + "validation": { + "ok": "Komut mevcut", + "fail": "Komut bulunamadı" + }, + "confirm": { + "deleteTitle": "MCP Sunucusunu Sil", + "deleteMessage": "MCP sunucusu \"{{id}}\"yi silmek istediğinizden emin misiniz? Bu eylem geri alınamaz." + }, + "presets": { + "title": "MCP Türünü Seçin", + "enable": "Etkinleştir", + "enabled": "Etkin", + "installed": "Yüklendi", + "docs": "Dokümanlar", + "requiresEnv": "env gerektirir", + "fetch": { + "name": "mcp-server-fetch", + "description": "Evrensel HTTP istek aracı, GET/POST ve diğer HTTP yöntemlerini destekler; hızlı API istekleri ve web verilerini kazıma için uygundur" + }, + "time": { + "name": "mcp-server-time", + "description": "Geçerli saati, saat dilimi dönüştürmeyi ve tarih hesaplama özelliklerini sağlayan saat sorgulama aracı" + }, + "memory": { + "name": "@modelcontextprotocol/server-memory", + "description": "Yapay zekanın konuşmalardan önemli bilgileri hatırlamasına yardımcı olmak için varlıkları, ilişkileri ve gözlemleri destekleyen bilgi grafiği hafıza sistemi" + }, + "sequential-thinking": { + "name": "@modelcontextprotocol/server-sequential-thinking", + "description": "Yapay zekanın daha derin düşünme için karmaşık sorunları birden fazla adıma ayırmasına yardımcı olan sıralı düşünme aracı" + }, + "context7": { + "name": "@upstash/context7-mcp", + "description": "Bir anahtarla yapılandırıldığında daha yüksek limitlerle en son kütüphane dokümanlarını ve kod örneklerini sağlayan Context7 dokümantasyon arama aracı" + } + } + }, + "prompts": { + "add": "İstem Ekle", + "addTitle": "İstem ekle · {{appName}}", + "editTitle": "İstemi düzenle", + "enabled": "Etkin", + "enable": "Etkinleştir", + "loading": "Yükleniyor...", + "searchPlaceholder": "Ad, not veya metin arayın", + "searchAriaLabel": "Arama istemleri", + "noSearchResults": "\"{{query}}\" ile eşleşen bilgi istemi adı, notu veya metni yok", + "name": "İsim", + "namePlaceholder": "örneğin Takım kodlama kuralları", + "description": "Not", + "descriptionPlaceholder": "İsteğe bağlı, yalnızca CC Switch’te gösterilir", + "content": "Metin", + "contentPlaceholder": "#{{filename}}\n\nMarkdown'da {{appName}} için ayakta talimatlar…", + "loadFailed": "İstemler yüklenemedi", + "saveSuccess": "Başarıyla kaydedildi", + "saveFailed": "Kaydedilemedi", + "deleteSuccess": "Başarıyla silindi", + "deleteFailed": "Silinemedi", + "enableSuccess": "Başarıyla etkinleştirildi", + "enableFailed": "Etkinleştirilemedi", + "disableSuccess": "Başarıyla devre dışı bırakıldı", + "disableFailed": "Devre dışı bırakılamadı", + "importSuccess": "Başarıyla içe aktarıldı", + "importFailed": "İçe aktarma başarısız oldu", + "confirm": {}, + "appSelect": "Uygulamayı seçin", + "helpTitle": "İstemler nasıl etkili olur?", + "helpText": "Her uygulamanın aynı anda etkinleştirilmiş bir istemi vardır ve bu, hedef dosya haline gelir. Başka bir yerde yapılan düzenlemeler, bu sayfayı bir sonraki açışınızda etkinleştirilmiş istemin içine alınır; Henüz burada olmayan dosya içeriği, başka bir bilgi istemi etkinleştirilmeden önce \"Orijinal bilgi istemi\" olarak kaydedilir.", + "helpHermesTitle": "SOUL.md nasıl etkili olur?", + "helpHermesText": "SOUL.md, Hermes'in kişiliğidir; aynı anda bir tanesi etkinleştirilir. Başka bir yerde yapılan düzenlemeler, bu sayfayı bir sonraki açışınızda etkin olana aktarılır; Henüz burada olmayan dosya içeriği, başka bir bilgi istemi etkinleştirilmeden önce \"Orijinal bilgi istemi\" olarak kaydedilir.", + "helpPiTitle": "Pi istemleri nasıl etkili olur?", + "helpPiText": "Aynı anda bir kitaplık istemi etkinleştirilir ve AGENTS.md olur. Sistem bilgi istemi dosyaları, mevcut oldukları anda etkili olur ve şablonlar Pi'de /command yazılarak çalıştırılır; her ikisinin de etkinleştirilmesi gerekmez.", + "moreActions": "Daha fazla hızlı işlem", + "importCurrent": "Geçerli {{file}}'yi içe aktar", + "importReason": { + "missing": "{{file}} mevcut değil, dolayısıyla içe aktarılacak hiçbir şey yok", + "empty": "{{file}} boş olduğundan içe aktarılacak hiçbir şey yok", + "duplicate": "Dosya içeriği zaten listede mevcut: \"{{name}}\"" + }, + "openFolder": "İçeren klasörü aç", + "openFolderFailed": "Klasör açılamadı", + "copyFilePath": "Dosya yolunu kopyala", + "copyFolderPath": "Klasör yolunu kopyala", + "copiedPath": "{{path}} kopyalandı", + "copyFailed": "Panoya kopyalanamadı", + "appLabel": "Uygulama:", + "appNoteDesktop": "Claude Desktop, Claude Code'nin istemlerini kullanır.", + "appNoteOpenclaw": "OpenClaw, Çalışma alanı bölümündeki kendi sayfasından yönetilir.", + "targetFile": "Hedef dosya", + "targetDir": "Klasör", + "fileMissing": "dosya yok", + "fileEmpty": "boş dosya", + "searchPiLibrary": "Kitaplıkta ara", + "searchFound": "{{count}} sonuç bulundu", + "clearSearch": "Aramayı temizle", + "listLabel": "{{app}} istemleri", + "disable": "Devre dışı bırak", + "enableAria": "{{name}} öğesini etkinleştir", + "disableAria": "{{name}} öğesini devre dışı bırak", + "editAria": "{{name}}'yi düzenleyin", + "rowMoreActions": "{{name}} için diğer işlemler", + "updatedToday": "Bugün {{time}} saatinde güncellendi", + "updatedOn": "{{date}} tarihinde güncellendi", + "emptyContent": "(boş)", + "copyToApps": "Diğer uygulamalara kopyala", + "copyContent": "Metni kopyala", + "copiedContent": "\"{{name}}\" metni kopyalandı", + "deleteBlocked": "Silmeden önce devre dışı bırakın", + "emptyTitle": "Henüz {{app}} istemi yok", + "emptyTarget": "Etkinleştirilen bilgi istemi {{path}}'ye yazılır.", + "emptyFile": "{{path}}, henüz CC Switch’te olmayan {{size}} içeriğe zaten sahip", + "importExisting": "Mevcut içeriği içe aktar", + "formDescription": "{{file}}'ye yazılan ad, not ve metin", + "requiredMark": "(gerekli)", + "namePlaceholderHermes": "örneğin Dost canlısı ortak", + "nameRequired": "Bir ad girin, ör. Takım kodlama kuralları", + "nameRequiredHermes": "Bir ad girin, ör. Dost canlısı ortak", + "contentPlaceholderHermes": "# SOUL.md\n\nHermes'in Markdown'daki kişiliği: ses tonu, konuşma şekli, nelerden kaçınmalı…", + "charCount": "{{chars}} karakterleri · {{size}}", + "mcodeTooLarge": "MiniMax Code istemleri en fazla 32 KB (UTF-8 bayt) olabilir. Bu {{size}}; kaydetmeden önce kırpın", + "addSubmit": "Ekle", + "saveAndOverwrite": "{{file}}'yi kaydedin ve üzerine yazın", + "saveAndWritePi": "AGENTS.md'yi kaydedin ve yazın", + "copyDialog": { + "title": "\"{{name}}\" dosyasını diğer uygulamalara kopyalayın", + "lead": "Her uygulamanın kendi kopyası vardır, etkinleştirilmez. Daha sonra yapılan düzenlemeler birbirini etkilemez.", + "legend": "Kopyalanacak uygulamalar", + "sameName": "Bu isimde biri var", + "hermesNote": "SOUL.md bir kişiliktir", + "pickOne": "En az bir uygulama seçin", + "go": "{{count}} uygulamalarına kopyala", + "goNone": "Kopyala", + "failed": "{{apps}}'ye kopyalanamadı" + }, + "listSeparator": ",", + "undo": "Geri al", + "undoFailed": "Geri alınamadı: {{reason}}", + "toast": { + "joiner": ".", + "enabled": "\"{{name}}\" etkinleştirildi ve {{path}}'nin üzerine yazıldı", + "enabledPi": "\"{{name}}\" etkinleştirildi ve AGENTS.md yazıldı", + "disabled": "\"{{name}}\" devre dışı bırakıldı; {{path}} artık boş", + "disabledPi": "\"{{name}}\" devre dışı bırakıldı ve AGENTS.md silindi", + "backup": "Dosyanın önceki içeriği \"{{name}}\" olarak kaydedildi", + "hermesOn": "Yeni Hermes oturumlarında etkili olur", + "hermesOff": "Yeni Hermes oturumları yerleşik varsayılan kişiliği kullanır", + "added": "\"{{name}}\" eklendi", + "saved": "\"{{name}}\" kaydedildi", + "savedActive": "\"{{name}}\" kaydedildi ve {{path}}'nin üzerine yazıldı", + "savedActivePi": "\"{{name}}\" kaydedildi ve AGENTS.md yazıldı", + "deleted": "\"{{name}}\" silindi", + "deletedSub": "Yalnızca CC Switch’ten kaldırıldı; {{path}} değişmedi", + "deletedPiSub": "Yalnızca kitaplıktan kaldırıldı; AGENTS.md değişmedi", + "restored": "\"{{name}}\" geri yüklendi", + "imported": "{{path}}'nin içeriği içe aktarıldı; dosya değişmedi", + "importedPi": "AGENTS.md kütüphaneye kaydedildi; dosya değişmedi", + "copied": "\"{{name}}\" {{apps}}'ye kopyalandı" + } + }, + "profiles": { + "switcherAriaLabel": "Proje: {{name}}", + "switcherTooltip": { + "claude": "Projeler: Claude Code sağlayıcısını / MCP / Becerileri / bellek dosyalarını tek tıklamayla değiştirin", + "claude-desktop": "Projeler: Claude Desktop sağlayıcısını tek tıklamayla değiştirin", + "codex": "Projeler: Codex sağlayıcısını / MCP / Becerileri / bellek dosyalarını tek tıklamayla değiştirin" + }, + "none": "Proje yok", + "searchPlaceholder": "Proje ara", + "empty": "Henüz proje yok", + "createFromCurrent": "Yeni proje", + "createDescription": { + "claude": "Mevcut Claude Code sağlayıcısını, MCP'yi, Becerileri ve bellek dosyasını daha sonra geçiş yapabileceğiniz bir proje olarak kaydedin.", + "claude-desktop": "Mevcut Claude Desktop sağlayıcısını daha sonra geçiş yapabileceğiniz bir proje olarak kaydedin.", + "codex": "Geçerli Codex sağlayıcısını, MCP'yi, Becerileri ve bellek dosyası yapılandırmasını daha sonra geçiş yapabileceğiniz bir proje olarak kaydedin." + }, + "manage": "Projeleri yönet", + "manageTitle": "Projeleri Yönet", + "manageDescription": "Projeler yapılandırma anlık görüntüleridir. Projeleri değiştirdiğinizde mevcut konfigürasyon otomatik olarak ayrılmakta olduğunuz projeye kaydedilir.", + "namePlaceholder": "örneğin Geliştirme, Çizim", + "rename": "Yeniden adlandır", + "noSnapshotForScope": "Bu uygulama için henüz kaydedilmedi", + "delete": "Sil", + "deleteConfirmTitle": "Silmeyi Onayla", + "deleteConfirmMessage": "\"{{name}}\" projesini silmek istediğinizden emin misiniz? Mevcut yapılandırmanız değişmeyecek.", + "createSuccess": "Proje oluşturuldu", + "createFailed": "Proje oluşturulamadı: {{detail}}", + "updateSuccess": "Proje güncellendi", + "updateFailed": "Proje güncellenemedi: {{detail}}", + "deleteSuccess": "Proje silindi", + "deleteFailed": "Proje silinemedi: {{detail}}", + "applySuccess": "Uygulanan proje", + "applyFailed": "Proje uygulanamadı: {{detail}}", + "applyWarnings": "{{warningCount}} uyarı(lar)ıyla uygulanan proje:\n{{details}}", + "clearSuccess": "Hiçbir projeye geçilmedi" + }, + "workspace": { + "title": "Çalışma Alanı Dosyaları", + "manage": "Çalışma alanı", + "files": { + "agents": "Ajan talimatları ve kuralları", + "soul": "Ajan kişiliği ve iletişim tarzı", + "user": "Kullanıcı profili ve tercihler", + "identity": "Ajan adı ve avatarı", + "tools": "Yerel araç belgeleri", + "memory": "Uzun süreli hafıza ve kararlar", + "heartbeat": "Kalp atışı koşusu kontrol listesi", + "bootstrap": "İlk çalıştırma önyükleme ritüeli", + "boot": "Ağ geçidi yeniden başlatma kontrol listesi" + }, + "editing": "{{filename}}'yi düzenleyin", + "saveSuccess": "Başarıyla kaydedildi", + "saveFailed": "Kaydedilemedi", + "loadFailed": "Yüklenemedi", + "openDirectory": "Dosya yöneticisinde aç", + "dailyMemory": { + "title": "Günlük Hafıza", + "sectionTitle": "Günlük Hafıza", + "cardTitle": "Günlük Bellek Dosyaları", + "cardDescription": "Günlük anılara göz atın ve yönetin", + "createToday": "Bellek Ekle", + "empty": "Henüz günlük hafıza dosyası yok", + "loadFailed": "Günlük bellek dosyaları yüklenemedi", + "createFailed": "Günlük hafıza dosyası oluşturulamadı", + "deleteSuccess": "Günlük hafıza dosyası silindi", + "deleteFailed": "Günlük hafıza dosyası silinemedi", + "confirmDeleteTitle": "Günlük Hafızayı Sil", + "confirmDeleteMessage": "{{date}} için günlük hafıza silinsin mi? Bu geri alınamaz.", + "searchPlaceholder": "Tüm içeriği arayın...", + "searchScopeHint": "Tüm günlük anılarda tam metin araması. ⌘F", + "searchCloseHint": "Kapatmak için Esc", + "noSearchResults": "Aramanızla eşleşen günlük anı yok.", + "searching": "Aranıyor...", + "searchFailed": "Arama başarısız oldu", + "matchCount": "{{count}} eşleşme(ler)i" + } + }, + "openclaw": { + "backupCreated": "Yedekleme oluşturuldu: {{path}}", + "providerKey": "Sağlayıcı Anahtarı", + "providerKeyPlaceholder": "my-provider", + "providerKeyHint": "Yapılandırma dosyasındaki benzersiz tanımlayıcı. Yalnızca küçük harf, rakam ve kısa çizgi kullanın.", + "providerKeyLockedHint": "Bu sağlayıcı zaten uygulama yapılandırmasına eklendiğinden anahtarı artık değiştirilemez.", + "providerKeyRequired": "Sağlayıcı anahtarı gerekli", + "providerKeyDuplicate": "Bu anahtar zaten kullanılıyor", + "providerKeyInvalid": "Geçersiz biçim. Yalnızca küçük harf, rakam ve kısa çizgi kullanın.", + "apiProtocol": "API Protokolü", + "selectProtocol": "API Protokolünü seçin", + "apiProtocolHint": "Sağlayıcının API'si ile uyumlu protokol türünü seçin. Çoğu sağlayıcı OpenAI Tamamlamalar biçimini kullanır.", + "baseUrl": "API Uç Nokta", + "baseUrlHint": "Sağlayıcının API uç nokta adresi.", + "models": "Model Yapılandırması", + "addModel": "Model Ekle", + "selectDefaultModel": "Varsayılan Modeli Seçin", + "noModels": "Yapılandırılmış model yok", + "modelId": "Model Kimliği", + "modelIdPlaceholder": "claude-3-sonnet", + "modelName": "Görünen Ad", + "modelNamePlaceholder": "Claude 3 Sonnet", + "toggleModelDetails": "Model ayrıntılarını genişletin veya daraltın", + "removeModel": "Modeli kaldır", + "contextWindow": "Bağlam Uzunluğu", + "maxTokens": "Maksimum Çıkış Tokenları", + "reasoning": "Genişletilmiş Düşünmeyi Destekler", + "inputTypes": "Giriş Türleri", + "modelCost": "Maliyet ($/milyon token)", + "inputCost": "Girdi", + "outputCost": "Çıktı", + "cacheReadCost": "Önbellek Okuması", + "cacheWriteCost": "Önbelleğe Yazma", + "userAgent": "Kullanıcı Aracısını Gönder", + "userAgentHint": "Bazı sağlayıcılar, düzgün çalışması için bir tarayıcı Kullanıcı Aracısı başlığına ihtiyaç duyar.", + "env": { + "title": "Ortam Değişkenleri", + "description": "openclaw.json'daki ortam değişkenlerini yönetin (API anahtarları, özel değişkenler vb.)", + "editorHint": "Env bölümünün tamamını JSON olarak düzenleyin. env.vars ve env.shellEnv gibi iç içe geçmiş nesneler desteklenir.", + "objectRequired": "OpenClaw env bir JSON nesnesi olmalıdır.", + "invalidJson": "OpenClaw ortamı geçerli JSON olmalıdır.", + "empty": "OpenClaw env boş olamaz. Boş bir nesne için {} kullanın.", + "keyPlaceholder": "Değişken adı", + "valuePlaceholder": "Değer", + "add": "Değişken Ekle", + "saveSuccess": "Ortam değişkenleri kaydedildi", + "saveFailed": "Ortam değişkenleri kaydedilemedi", + "loadFailed": "Ortam değişkenleri yüklenemedi", + "duplicateKey": "Yinelenen değişken adı algılandı: {{key}}" + }, + "tools": { + "title": "Araç İzinleri", + "description": "openclaw.json'daki araç izinlerini yönetin (izin ver/reddet listeleri)", + "profile": "İzin Profili", + "profileMinimal": "Asgari", + "profileCoding": "Kodlama", + "profileMessaging": "Mesajlaşma", + "profileFull": "Tam", + "profileUnset": "Ayarlanmadı", + "unsupportedProfileTitle": "Desteklenmeyen araç profili algılandı", + "unsupportedProfileDescription": "Geçerli araçlar.profil değeri '{{value}}', desteklenen OpenClaw listesinde değil. Siz yeni bir değer seçene kadar korunacaktır.", + "unsupportedProfileLabel": "desteklenmeyen", + "allowList": "İzin Verilenler Listesi", + "denyList": "Reddet Listesi", + "patternPlaceholder": "Araç adı veya modeli", + "addAllow": "İzin Ver Ekle", + "addDeny": "Reddet Ekle", + "saveSuccess": "Araç izinleri kaydedildi", + "saveFailed": "Araç izinleri kaydedilemedi", + "loadFailed": "Araç izinleri yüklenemedi" + }, + "agents": { + "title": "Aracılar Yapılandırması", + "description": "openclaw.json'daki Agent.defaults'u yönetin (varsayılan model, çalışma zamanı parametreleri vb.)", + "modelSection": "Model Yapılandırması", + "primaryModel": "Varsayılan Model", + "primaryModelHint": "Yapılandırılmış sağlayıcıların modelleri arasından seçim yapın", + "notSet": "Ayarlanmadı", + "fallbackModels": "Geri Dönüş Modelleri", + "fallbackModelsHint": "Birincil model kullanılamadığında geri dönüşler sırayla denenir", + "addFallback": "Yedek model ekle", + "noModels": "Yapılandırılmış sağlayıcı modeli yok. Lütfen önce bir OpenClaw sağlayıcısı ekleyin.", + "notInList": "{{value}} (yapılandırılmamış)", + "runtimeSection": "Çalışma Zamanı Parametreleri", + "workspace": "Çalışma Alanı Yolu", + "timeout": "Zaman aşımı (saniye)", + "contextTokens": "Bağlam Belirteçleri", + "maxConcurrent": "Maksimum Eşzamanlı", + "legacyTimeoutTitle": "Eski zaman aşımı algılandı", + "legacyTimeoutDescription": "Bu yapılandırma hala Agent.defaults.timeout'u kullanıyor. Buraya kaydetmek onu timeoutSeconds'a taşıyacaktır.", + "saveSuccess": "Aracı yapılandırması kaydedildi", + "saveFailed": "Aracıların yapılandırması kaydedilemedi", + "loadFailed": "Aracıların yapılandırması yüklenemedi" + }, + "health": { + "title": "OpenClaw yapılandırma uyarıları algılandı", + "invalidToolsProfile": "Tools.profile desteklenmeyen bir değer içeriyor. OpenClaw şu anda minimum düzeyde, kodlama, mesajlaşma veya tam sürüm beklemektedir.", + "legacyTimeout": "Agents.defaults.timeout kullanımdan kaldırıldı. Aracılar panelini timeoutSeconds'a taşımak için kaydedin.", + "stringifiedEnvVars": "env.vars bir nesne olmalıdır, ancak geçerli değer dizelenmiş veya hatalı biçimlendirilmiş görünüyor.", + "stringifiedShellEnv": "env.shellEnv bir nesne olmalıdır, ancak geçerli değer dizelenmiş veya hatalı biçimlendirilmiş görünüyor.", + "parseFailed": "openclaw.json geçerli JSON5 olarak ayrıştırılamadı. Burada düzenlemeden önce dosyayı düzeltin." + } + }, + "hermes": { + "form": { + "baseUrl": "API Uç Nokta", + "baseUrlHint": "Bu sağlayıcının API uç nokta URL'si.", + "providerKey": "Sağlayıcı Anahtarı", + "providerKeyPlaceholder": "my-provider", + "providerKeyHint": "Yalnızca küçük harfler, sayılar ve kısa çizgiler. config.yaml dosyasında sağlayıcı adı olarak kullanılır.", + "providerKeyLockedHint": "Bu sağlayıcı Hermes yapılandırmasındadır; anahtar kilitli.", + "providerKeyRequired": "Sağlayıcı anahtarı gerekli", + "providerKeyInvalid": "Sağlayıcı anahtarı yalnızca küçük harfler, sayılar ve kısa çizgiler içerebilir", + "providerKeyDuplicate": "Bu sağlayıcı anahtarı zaten mevcut", + "apiMode": "API Modu", + "apiModeHint": "Sağlayıcı API protokolü. Uç noktanızla eşleşen formatı seçin.", + "apiModeChatCompletions": "OpenAI Sohbet Tamamlamaları", + "apiModeAnthropicMessages": "Anthropic Mesajları", + "apiModeCodexResponses": "OpenAI Yanıtları", + "apiModeBedrockConverse": "AWS Temel Converse", + "baseUrlRequired": "API uç noktası gerekli", + "baseUrlScheme": "http:// veya https:// adresi kullanın", + "baseUrlInvalid": "API uç noktası geçerli bir URL değil", + "models": "Modeller", + "addModel": "Model ekle", + "noModels": "Yapılandırılmış model yok. Bu sağlayıcıya geçmek varsayılan modeli değiştirmez.", + "modelId": "Model Kimliği", + "modelIdPlaceholder": "anthropic/claude-opus-5", + "modelName": "Görünen ad", + "modelNamePlaceholder": "Claude Opus 5", + "contextLength": "Bağlam uzunluğu", + "toggleModelDetails": "Model ayrıntılarını genişletin veya daraltın", + "removeModel": "Modeli kaldır", + "modelsHint": "Etkinleştirildiğinde ilk model Hermes varsayılanı olur.", + "rateLimitDelay": "Hız sınırı gecikmesi (saniye)", + "rateLimitDelayHint": "Ardışık istekler arasındaki saniye cinsinden minimum gecikme (isteğe bağlı). Sınırsız olarak boş bırakın." + }, + "webui": { + "open": "Hermes Web kullanıcı arayüzünü açın", + "offline": "Hermes Web kullanıcı arayüzü çalışmıyor. Önce `hermes dashboard` ile başlayın.", + "openFailed": "Hermes Web kullanıcı arayüzü açılamadı", + "launchConfirmTitle": "Hermes Kontrol Paneli çalışmıyor", + "launchConfirmMessage": "Bir terminal açın ve şimdi `hermes dashboard` ile başlatılsın mı?\n\nBaşlatma tamamlandığında tarayıcı otomatik olarak açılacaktır.\n\nTerminal, `hermes`'nin bulunamadığını veya web ekstralarının eksik olduğunu bildirirse önce şunu çalıştırın:\npip install hermes-agent[web]", + "launchConfirmAction": "Terminali aç ve başlat", + "launching": "Bir terminalde `hermes dashboard` başlatıldı.", + "launchFailed": "Terminal açılamadı" + }, + "memory": { + "disabledHint": "Hermes yeniden etkinleştirilene kadar bu belleği atlayacak", + "toggleFailed": "Bellek değiştirilemedi", + "saveSuccess": "Bellek kaydedildi. Hermes yeniden başlatıldığında veya yeni bir oturum başlatıldığında etkili olur.", + "saveFailed": "Bellek kaydedilemedi", + "loadFailed": "Bellek dosyası okunamadı", + "openConfig": "Hermes Web kullanıcı arayüzünde sınırları ayarlayın", + "fileTabs": "Bellek dosyaları", + "agentName": "Ajan Belleği", + "userName": "Kullanıcı Profili", + "agentDesc": "Notlar Hermes kendisi için saklar; sistem istemine giriyorlar", + "userDesc": "Hermes'in sizin hakkınızda bildikleri; Hermes'in sistem istemine giriyor", + "separatorRule": "Girişleri yalnızca § içeren bir satırla ayırın", + "helpTitle": "{{name}} nedir?", + "helpBody": "{{desc}}. {{rule}}.", + "enableLabel": "{{name}} öğesini etkinleştir", + "agentPlaceholder": "Acme-web projesi pnpm ve Node 22'yi kullanıyor.\n§\nDağıtımlar GitHub Eylemlerinden geçer.", + "userPlaceholder": "İsim: sekiz kat.\n§\nKısa cevapları tercih eder: önce sonuç.", + "editorLabel": "{{name}} ({{file}}) içeriği", + "unsaved": "Kaydedilmemiş değişiklikler", + "noChanges": "Kaydedilmemiş değişiklik yok", + "meterLabel": "Kalan karakterler", + "remaining": "Kalan {{limit}} karakterlerinden {{remaining}}", + "overLimitBy": "{{over}} karakterler sınırı aştı — Hermes bir sonraki yüklemede kesilecek", + "toggledOn": "{{name}} etkinleştirildi. Hermes yeniden başlatıldığında veya yeni bir oturum başlatıldığında etkili olur.", + "toggledOff": "{{name}} devre dışı. Hermes yeniden başlatıldığında veya yeni bir oturum başlatıldığında etkili olur." + } + }, + "env": { + "warning": { + "title": "Ortam Değişkeni Çakışmaları Algılandı", + "description": "Yapılandırmanızı geçersiz kılabilecek {{count}} ortam değişkenleri bulundu" + }, + "actions": { + "expand": "Ayrıntıları Görüntüle", + "collapse": "Daralt", + "selectAll": "Tümünü Seç", + "clearSelection": "Seçimi Temizle", + "deleteSelected": "Seçileni Sil ({{count}})", + "deleting": "Siliniyor..." + }, + "field": { + "value": "Değer", + "source": "Kaynak" + }, + "source": { + "userRegistry": "Kullanıcı Ortamı Değişkeni (Kayıt Defteri)", + "systemRegistry": "Sistem Ortamı Değişkeni (Kayıt Defteri)", + "systemEnv": "Sistem Ortamı Değişkeni" + }, + "delete": { + "success": "Ortam değişkenleri başarıyla silindi", + "error": "Ortam değişkenleri silinemedi" + }, + "backup": { + "location": "Yedekleme konumu: {{path}}" + }, + "confirm": { + "title": "Ortam Değişkenlerini Silmeyi Onayla", + "message": "{{count}} ortam değişkenlerini silmek istediğinizden emin misiniz?", + "backupNotice": "Silmeden önce otomatik olarak bir yedek oluşturulacaktır. Daha sonra geri yükleyebilirsiniz. Değişiklikler uygulamayı veya terminali yeniden başlattıktan sonra etkili olur.", + "confirm": "Silmeyi Onayla" + }, + "error": { + "noSelection": "Lütfen silinecek ortam değişkenlerini seçin" + } + }, + "skills": { + "manage": "Beceriler", + "title": "Beceri Yönetimi", + "description": "Claude Code/Codex/Gemini yeteneklerini genişletmek için popüler veri havuzlarındaki becerileri keşfedin ve yükleyin", + "refresh": "Yenile", + "refreshing": "Yenileniyor...", + "repoManager": "Depo Yönetimi", + "count": "{{count}} becerileri", + "empty": "Kullanılabilir beceri yok", + "emptyDescription": "Mevcut becerileri keşfetmek için beceri havuzları ekleyin", + "addRepo": "Beceri Havuzu Ekle", + "loading": "Yükleniyor...", + "installed": "Yüklendi", + "install": "Yükle", + "installing": "Yükleniyor...", + "uninstall": "Kaldır", + "uninstalling": "Kaldırılıyor...", + "view": "Görüntüle", + "noDescription": "Açıklama yok", + "loadFailed": "Yüklenemedi", + "installSuccess": "Beceri {{name}} yüklü", + "installFailed": "Yükleme başarısız oldu", + "uninstallSuccess": "Beceri {{name}} kaldırıldı", + "uninstallPiPreserved": "Pi kopyasının CC Switch tarafından yönetildiği doğrulanamadı ve yerinde bırakıldı: {{path}}", + "uninstallPiCleanupIncomplete": "Pi temizliği tamamlanamadı. Kalan bir kopya için Pi Skills dizinini manuel olarak kontrol edin.", + "uninstallFailed": "Kaldırma işlemi başarısız oldu", + "update": "Güncelle", + "updating": "Güncelleniyor...", + "updateAvailable": "Güncelle", + "updateSuccess": "Skill {{name}} en son sürüme güncellendi", + "updateFailed": "Güncelleme başarısız oldu", + "checkUpdates": "Güncellemeleri Kontrol Et", + "checkingUpdates": "Kontrol ediliyor...", + "noUpdates": "Tüm beceriler güncel", + "updateAll": "Tümünü Güncelle ({{count}})", + "updatingAll": "Güncelleniyor...", + "updateAllSuccess": "{{count}} becerileri başarıyla güncellendi", + "error": { + "skillNotFound": "Beceri bulunamadı: {{directory}}", + "missingRepoInfo": "Depo bilgileri eksik (sahip veya ad)", + "downloadTimeout": "İndirme deposu {{owner}}/{{name}} zaman aşımı ({{timeout}}'ler)", + "downloadTimeoutHint": "Lütfen ağ bağlantısını kontrol edin veya daha sonra tekrar deneyin", + "skillPathNotFound": "Beceri yolu '{{path}}' {{owner}}/{{name}} deposunda bulunamadı", + "skillDirNotFound": "Beceri dizini bulunamadı: {{path}}", + "directoryConflict": "'{{directory}}' beceri dizini zaten {{existing_repo}} tarafından kullanılıyor, {{new_repo}}'den yüklenemiyor", + "emptyArchive": "İndirilen arşiv boş", + "invalidRepoRef": "Geçersiz depo referansı: {{owner}}/{{name}}", + "archiveTooLarge": "Arşiv, {{limit_mb}} MB çıkarma sınırını aşıyor; iptal edildi", + "archiveTooManyEntries": "Arşivde çok fazla giriş var ({{count}}); sınır {{limit}}'dir", + "downloadFailed": "İndirme başarısız oldu: HTTP {{status}}", + "allBranchesFailed": "Tüm dallar başarısız oldu, denendi: {{branches}}", + "httpError": "HTTP hatası {{status}}", + "http403": "GitHub erişimi kısıtlı, muhtemelen hız sınırlı", + "http404": "Depo veya şube bulunamadı, lütfen URL'yi kontrol edin", + "http429": "Çok fazla istek var, lütfen bekleyip yeniden deneyin", + "parseMetadataFailed": "Beceri meta verileri ayrıştırılamadı", + "getHomeDirFailed": "Kullanıcı ana dizini alınamıyor", + "noSkillsInZip": "ZIP dosyasında beceri bulunamadı (SKILL.md dosyası gerektirir)", + "networkError": "Ağ hatası", + "fsError": "Dosya sistemi hatası", + "unknownError": "Bilinmeyen hata", + "suggestion": { + "checkNetwork": "Lütfen ağ bağlantısını kontrol edin", + "checkProxy": "HTTP proxy'yi yapılandırmayı düşünün", + "retryLater": "Lütfen daha sonra tekrar deneyin", + "checkRepoUrl": "Lütfen depo URL'sini ve şube adını kontrol edin", + "checkDiskSpace": "Lütfen disk alanını kontrol edin", + "checkPermission": "Lütfen dizin izinlerini kontrol edin", + "uninstallFirst": "Lütfen önce aynı ada sahip mevcut beceriyi kaldırın", + "checkZipContent": "Lütfen ZIP dosyasının geçerli beceri dizinleri içerdiğini doğrulayın (SKILL.md dosyalarıyla birlikte)" + } + }, + "repo": { + "title": "Beceri Depolarını Yönet", + "description": "GitHub beceri deposu kaynaklarını ekleme veya kaldırma", + "url": "Depo URL'si", + "urlPlaceholder": "sahibi/adı veya https://github.com/owner/name", + "branch": "Şube", + "branchPlaceholder": "ana", + "path": "Beceri Yolu", + "pathPlaceholder": "beceriler (isteğe bağlı, kök için boş bırakın)", + "add": "Depo Ekle", + "list": "Eklenen Depolar", + "empty": "Depo yok", + "invalidUrl": "Geçersiz kod deposu URL biçimi", + "addSuccess": "{{owner}}/{{name}} deposu eklendi, {{count}} becerileri algılandı", + "addFailed": "Eklenemedi", + "removeSuccess": "Depo {{owner}}/{{name}} kaldırıldı", + "removeFailed": "Kaldırılamadı", + "skillCount": "{{count}} becerileri algılandı" + }, + "search": "Arama Becerileri", + "searchPlaceholder": "Beceri adını veya deposunu arayın...", + "installedSearchPlaceholder": "Yüklü beceri adını, açıklamasını veya deposunu arayın...", + "installedSearchAriaLabel": "Yüklü becerileri arayın", + "noInstalledSearchResults": "Aramanızla eşleşen yüklü beceri yok", + "searchSource": { + "repos": "Repolar", + "skillssh": "skills.sh" + }, + "skillssh": { + "searchPlaceholder": "Skills.sh'de arama yapın (en az 2 karakter)...", + "installs": "{{count}} yükler", + "loadMore": "Daha Fazla Yükle", + "loading": "Skills.sh aranıyor...", + "noResults": "\"{{query}}\" için beceri bulunamadı", + "error": "Skills.sh araması başarısız oldu", + "poweredBy": "Skills.sh tarafından desteklenmektedir" + }, + "filter": { + "placeholder": "Duruma göre filtrele", + "all": "Tümü", + "installed": "Yüklendi", + "uninstalled": "Kurulu değil", + "repo": "Depoya göre filtrele", + "allRepos": "Tüm depolar" + }, + "noResults": "Eşleşen beceri bulunamadı", + "noInstalled": "Hiçbir beceri yüklü değil", + "noInstalledDescription": "Depolardan becerileri keşfedin ve yükleyin veya mevcut becerileri içe aktarın", + "discover": "Becerileri Keşfedin", + "import": "Mevcut Olanı İçe Aktar", + "importDescription": "CC Switch birleşik yönetimine aktarılacak becerileri seçin", + "importSuccess": "{{count}} becerileri başarıyla içe aktarıldı", + "importSelected": "Seçilenleri İçe Aktar ({{count}})", + "noUnmanagedFound": "İçe aktarılacak beceri bulunamadı. Tüm beceriler zaten CC Switch tarafından yönetilmektedir.", + "unmanagedAvailable": "İçe aktarılabilecek beceriler", + "foundIn": "Bulundu", + "local": "Yerel", + "uninstallConfirm": "\"{{name}}\" uygulamasını kaldırmak istediğinizden emin misiniz? Bu, beceriyi tüm uygulamalardan kaldıracak ve önce yerel bir yedekleme oluşturacaktır.", + "uninstallInMainPanel": "Lütfen becerileri ana panelden kaldırın", + "notFound": "Beceri bulunamadı", + "backup": { + "location": "Yedekleme konumu: {{path}}" + }, + "restoreFromBackup": { + "button": "Yedeklemeyi Geri Yükle", + "title": "Yedeklemeden Geri Yükle", + "description": "Dosyalarını yerel olarak geri yüklemek ve geçerli listeye geri eklemek için bir Skills yedeği seçin.", + "empty": "Geri yüklenecek Skills yedeği yok", + "createdAt": "Şu saatte yedeklendi:", + "path": "Yedekleme yolu", + "restore": "Geri yükle", + "restoring": "Geri yükleniyor...", + "delete": "Sil", + "deleting": "Siliniyor...", + "deleteSuccess": "{{name}} için silinmiş yedekleme", + "deleteFailed": "Beceri yedeklemesi silinemedi", + "deleteConfirmTitle": "Yedeklemeyi Sil", + "deleteConfirmMessage": "\"{{name}}\" yedeğini silmek istediğinizden emin misiniz? Bu eylem geri alınamaz.", + "success": "Beceri {{name}} yedekten geri yüklendi", + "failed": "Yedeklemeden geri yükleme başarısız oldu" + }, + "apps": { + "claude": "Claude", + "codex": "Codex", + "gemini": "Gemini", + "opencode": "OpenCode", + "openclaw": "OpenClaw" + }, + "installFromZip": { + "button": "ZIP'ten yükle", + "installing": "Yükleniyor...", + "successSingle": "Beceri {{name}} yüklü", + "successMultiple": "{{count}} becerileri başarıyla yüklendi", + "noSkillsFound": "ZIP dosyasında beceri bulunamadı (SKILL.md dosyası gerektirir)", + "skippedTitle": "Atlandı {{count}} Becerileri: klasör adı zaten kullanılıyor", + "allSkipped": "Hiçbir şey yüklü değil: ZIP'teki tüm {{count}} Becerileri önceden alınmış klasör adlarını kullanır", + "skippedItem": "{{directory}} ({{name}} tarafından kullanılır)", + "skippedBody": "{{list}}. ZIP'teki sürümü kullanmak için önce aynı adı taşıyan Skill'i kaldırın." + }, + "backToInstalled": "Kuruluma geri dön", + "moreActions": "Daha fazla Beceri eylemi", + "storageSheet": { + "title": "Depolama ve eşitleme", + "open": "Depolama ve eşitleme", + "resync": "Şimdi yeniden eşitle et", + "resyncing": "Yeniden eşitle ediliyor…", + "resyncHint": "Değişiklikler yalnızca daha sonra etkinleştirdiğiniz veya güncellediğiniz Beceriler için geçerlidir. Zaten etkin olan Becerileri değiştirmek için şimdi yeniden eşitle edin.", + "resyncDone": "Geçerli yöntemi kullanarak Beceriler her uygulamaya yeniden eşitle edildi", + "resyncPartial": "{{count}} uygulamaları tam olarak eşitle edilemedi: {{apps}}", + "resyncSkillItem": "{{directory}}: {{error}}", + "locationTitle": "Ana kopyaları saklayın", + "locationCcSwitch": "CC Switch klasörü", + "locationUnified": "Paylaşılan klasör", + "openFolder": "Aç", + "openFolderAria": "{{path}}'yi açın", + "unifiedWarning": "Codex, Gemini CLI, OpenCode ve diğerleri bu klasörü doğrudan okur, dolayısıyla uygulama başına anahtarlar artık onlara tam olarak uygulanmaz.", + "move": "Taşı ve değiştir", + "moving": "Taşınıyor…", + "moveConfirmTitle": "{{count}} Becerileri {{path}}'ye taşınsın mı?", + "moveConfirmBody": "Her ana kopya taşınır, ardından her uygulamadaki bağlantılar yeni konuma yönlendirilir. Taşıma bitene kadar CC Switch’ten ayrılmayın.", + "moveConfirmButton": "Taşı ve değiştir", + "moveDone": "{{count}} Becerileri {{path}}'ye taşındı", + "movePartial": "{{migrated}} Becerileri taşındı, {{errors}} başarısız oldu. Ayrıntılar için günlükleri kontrol edin.", + "syncTitle": "Beceriler her uygulamaya nasıl ulaşır?", + "syncAuto": "Otomatik: önce sembolik bağlantı, başarısız olursa kopyala (önerilir)", + "syncSymlink": "Yalnızca sembolik bağlantı", + "syncSymlinkDesc": "Windows'de Geliştirici Modu gerektirir", + "syncCopy": "Yalnızca kopyala", + "syncCopyDesc": "Daha fazla disk alanı kullanır; her güncellemeden sonra tekrar kopyalandı", + "moveHint": "Geçiş, {{count}} Becerilerini yeni konuma taşır." + }, + "updatesIncomplete": "Güncelleme bulunamadı ancak {{count}} depoları okunamadı" + }, + "deeplink": { + "confirmImport": "İçe Aktarma Sağlayıcısını Onayla", + "confirmImportDescription": "Aşağıdaki yapılandırma derin bağlantıdan CC Switch uygulamasını aktarılacak", + "importPrompt": "İçe Aktarma İstemi", + "importPromptDescription": "Lütfen bu sistem isteminin içe aktarılıp aktarılmayacağını onaylayın", + "importMcp": "MCP Sunucularını İçe Aktar", + "importMcpDescription": "Lütfen bu MCP Sunucularının içe aktarılıp aktarılmayacağını onaylayın", + "importSkill": "Beceri Havuzu Ekle", + "importSkillDescription": "Lütfen bu Beceri deposunun eklenip eklenmeyeceğini onaylayın", + "promptImportSuccess": "İstem başarıyla içe aktarıldı", + "promptImportSuccessDescription": "İçe aktarılan istem: {{name}}", + "mcpImportSuccess": "MCP Sunucuları başarıyla içe aktarıldı", + "mcpImportSuccessDescription": "{{count}} sunucuları başarıyla içe aktarıldı", + "mcpPartialSuccess": "Kısmi içe aktarma başarısı", + "mcpPartialSuccessDescription": "Başarılı: {{success}}, Başarısız: {{failed}}", + "skillImportSuccess": "Beceri deposu başarıyla eklendi", + "skillImportSuccessDescription": "Depo eklendi: {{repo}}", + "app": "Uygulama Türü", + "providerName": "Sağlayıcı Adı", + "homepage": "Ana sayfa", + "endpoint": "API Uç Nokta", + "apiKey": "API Anahtarı", + "icon": "Simge", + "model": "Model", + "haikuModel": "Haiku Modeli", + "sonnetModel": "Sonnet Modeli", + "opusModel": "Opus Modeli", + "multiModel": "Çok Modlu Model", + "notes": "Notlar", + "import": "İçe aktar", + "importing": "İçe aktarılıyor...", + "warning": "Lütfen içe aktarmadan önce yukarıdaki bilgilerin doğru olduğunu onaylayın. Daha sonra sağlayıcı listesinde düzenleyebilir veya silebilirsiniz.", + "parseError": "Derin bağlantı ayrıştırılamadı", + "importSuccess": "İçe aktarma başarılı", + "importSuccessDescription": "Sağlayıcı \"{{name}}\" başarıyla içe aktarıldı", + "importError": "İçe aktarma başarısız oldu", + "configSource": "Yapılandırma Kaynağı", + "configEmbedded": "Gömülü Yapılandırma", + "configRemote": "Uzaktan Yapılandırma", + "configDetails": "Yapılandırma Ayrıntıları", + "configUrl": "Yapılandırma Dosyası URL'si", + "configMergeError": "Yapılandırma dosyası birleştirilemedi", + "primaryEndpoint": "Birincil", + "mcp": { + "title": "MCP Sunucularını Toplu İçe Aktarma", + "targetApps": "Hedef Uygulamalar", + "serverCount": "MCP Sunucuları ({{count}})", + "enabledWarning": "İçe aktarmanın ardından yapılandırmalar belirtilen tüm uygulamalara hemen yazılacaktır", + "command": "Komut", + "args": "Argümanlar", + "env": "Zarf", + "url": "URL'si" + }, + "prompt": { + "title": "Sistem İstemini İçe Aktar", + "app": "Uygulama", + "name": "İsim", + "description": "Açıklama", + "contentPreview": "İçerik Önizlemesi", + "enabledWarning": "İçe aktarmanın ardından bu istem hemen etkinleştirilecek ve diğer istemler devre dışı bırakılacak", + "enableAfterImport": "İçe aktardıktan sonra etkinleştir" + }, + "skill": { + "title": "Claude Beceri Deposu Ekle", + "repo": "GitHub Deposu", + "directory": "Hedef Dizin", + "branch": "Şube", + "skillsPath": "Beceri Yolu", + "hint": "Bu, Beceri deposunu listeye ekleyecektir.", + "hintDetail": "Ekledikten sonra, Beceri yönetimi sayfasından belirli Becerileri yükleyebilirsiniz." + }, + "usageScript": "Kullanım Sorgusu", + "usageScriptEnabled": "Etkin", + "usageScriptDisabled": "Devre dışı", + "usageScriptCode": "Komut dosyası kodu", + "usageScriptWarning": "Bu, etkinleştirildikten sonra kullanım sorgulandığında çalışan JavaScript'tir. Yalnızca kaynağa güveniyorsanız içe aktarın.", + "usageApiKey": "Kullanım API Anahtarı", + "usageBaseUrl": "Kullanım Sorgu URL'si", + "usageAccessToken": "Kullanım Erişim Tokenu", + "usageUserId": "Kullanım Kullanıcı Kimliği", + "usageAutoInterval": "Otomatik Sorgulama", + "usageAutoIntervalValue": "Her {{minutes}} dakikada bir", + "risk": { + "envHijack": "Bu yapılandırma, yükleme kodunun işlenme biçimini değiştiren ortam değişkenlerini ayarlar (örneğin, kitaplıkları enjekte etme veya CA sertifikalarını değiştirme). Yalnızca güvendiğiniz bir kaynaktan içe aktarın.", + "privateEndpoint": "Bu adres localhost'a veya özel bir ağa işaret eder. Kendi yerel hizmetiniz olmadığı sürece ithalat yapmayın.", + "shellCommand": "Bu yapılandırma, bir kabuk aracılığıyla tam bir komut satırı çalıştırır; gerçekte yürütülen şey argümanlardadır. Her satırı inceleyin." + }, + "providerEnabledWarning": "İçe aktarıldıktan sonra CC Switch hemen bu sağlayıcıya geçer; istemci istekleri yukarıdaki uç noktaya gönderilir", + "apiFormat": "API biçimi", + "switchAfterImport": "İçe aktardıktan sonra bu sağlayıcıya geç", + "addToAppAfterImport": "İçe aktardıktan sonra {{app}} yapılandırmasına ekle", + "enableInPiAfterImport": "İçe aktardıktan sonra Pi içinde etkinleştir", + "codexConfigScopeHint": "Yalnızca bu sağlayıcıya ait ayarlar (uç nokta, kimlik doğrulama, model, akıl yürütme düzeyi vb.) içe aktarılır; [features], MCP ve izinler gibi genel ayarlar atlanır.", + "grokConfigScopeHint": "Yalnızca [models] default tarafından belirtilen model tablosu (görünen ad, açıklama, API arka ucu, bağlam penceresi vb.) içe aktarılır; uç nokta ve anahtar bağlantı parametrelerinden alınır, diğer model tabloları atlanır." + }, + "iconPicker": { + "search": "Arama Simgeleri", + "searchPlaceholder": "Simge adını girin...", + "noResults": "Eşleşen simge bulunamadı", + "category": { + "aiProvider": "Yapay Zeka Sağlayıcıları", + "cloud": "Bulut Platformları", + "tool": "Geliştirici Araçları", + "other": "Diğer" + }, + "clear": "Simgeyi temizle", + "myIcons": "Simgelerim", + "builtinIcons": "Yerleşik simgeler", + "myIconsEmpty": "Yükleyip adlandırdığınız görseller burada saklanır; diğer sağlayıcılar da bunları kullanabilir.", + "currentIcon": "Mevcut simge", + "saveToLibrary": "Simgelerim’e kaydet", + "saveCurrentTitle": "Mevcut simgeyi Simgelerim’e kaydet", + "uploadTitle": "Bu simgeyi adlandırın", + "uploadDescription": "Simgelerim’e eklendikten sonra diğer sağlayıcılar da kullanabilir.", + "saveAndUse": "Kaydet ve kullan", + "renameTitle": "Simgeyi yeniden adlandır", + "rename": "Yeniden adlandır", + "delete": "Sil", + "deleteTitle": "Simgeyi sil", + "deleteMessage": "“{{name}}” Simgelerim’den silinsin mi? Bu simgeyi kullanan sağlayıcılar etkilenmez.", + "alreadySaved": "Bu görsel Simgelerim’de zaten “{{name}}” adıyla kayıtlı", + "nameLabel": "Ad", + "namePlaceholder": "ör. Kendi ağ geçidim", + "upload": "Yükle", + "uploadHint": "PNG, JPG, WebP veya SVG; en fazla 2 MB. Görsel küçük bir PNG’ye dönüştürülür, Simgelerim’e kaydedilir ve bulut eşitlemesiyle taşınır.", + "uploadError": { + "unsupported": "Görsel biçimi desteklenmiyor. PNG, JPG, WebP veya SVG dosyası seçin", + "tooLarge": "Görsel 2 MB’den büyük", + "decodeFailed": "Bu görsel okunamadı; lütfen başka bir görsel deneyin", + "dimensions": "Görsel çok büyük (genişlik ve yükseklik 4096 pikseli aşmamalıdır)" + } + }, + "providerIcon": { + "label": "Simge", + "colorLabel": "Simge Rengi", + "selectIcon": "Simge Seç", + "preview": "Önizleme", + "clickToChange": "Simgeyi değiştirmek için tıklayın", + "clickToSelect": "Simgeyi seçmek için tıklayın", + "change": "Simgeyi değiştir" + }, + "migration": { + "success": "Yapılandırma başarıyla taşındı", + "skillsSuccess": "{{count}} becerilerinin otomatik olarak birleşik yönetime aktarılması", + "skillsFailed": "Beceriler otomatik olarak içe aktarılamadı", + "skillsFailedDescription": "Beceriler sayfasını açın ve manuel olarak içe aktarmak için \"Mevcut Olanı İçe Aktar\"ı tıklayın (veya yeniden başlatıp tekrar deneyin)." + }, + "health": { + "operational": "Operasyonel", + "degraded": "Bozulmuş", + "failed": "Başarısız", + "circuitOpen": "Devre Açık", + "consecutiveFailures": "{{count}} ardışık hatalar" + }, + "failover": { + "enabled": "{{app}} yedek sağlayıcıya geçiş etkin", + "disabled": "{{app}} yedek sağlayıcıya geçiş devre dışı bırakıldı", + "toggleFailed": "İşlem başarısız oldu: {{detail}}", + "queueAddFailed": "Sıraya eklenemedi: {{detail}}", + "queueRemoveFailed": "Kuyruktan kaldırılamadı: {{detail}}", + "inQueue": "Sırada", + "addQueue": "Ekle", + "priority": { + "tooltip": "Yedek sağlayıcıya geçiş önceliği {{priority}}" + }, + "tooltip": { + "enabled": "{{app}} yedek sağlayıcıya geçiş etkin\nİsteklerin kuyruk önceliğini takip etmesi (P1→P2→...)", + "disabled": "{{app}} yedek sağlayıcıya geçişyi etkinleştir\nHemen P1 kuyruğuna geçer, ardından arıza durumunda geri çekilir", + "takeoverRequired": "Önce {{app}}'yi devralın, ardından yedek sağlayıcıya geçişyi etkinleştirin" + } + }, + "proxy": { + "panel": { + "serviceAddress": "Hizmet Adresi", + "addressCopied": "Adres kopyalandı", + "currentProvider": "Mevcut Sağlayıcı:", + "waitingFirstRequest": "Mevcut Sağlayıcı: İlk istek bekleniyor...", + "stoppedTitle": "Yönlendirme Hizmeti Durduruldu", + "stoppedDescription": "Hizmeti başlatmak için yukarıdaki düğmeyi kullanın", + "openSettings": "Yönlendirme Hizmetini Yapılandırma", + "stats": { + "activeConnections": "Aktif Bağlantılar", + "totalRequests": "Toplam İstekler", + "successRate": "Başarı Oranı", + "uptime": "Çalışma süresi" + } + }, + "settings": { + "title": "Yönlendirme Hizmeti Ayarları", + "description": "Yerel yönlendirme sunucusu dinleme adresini, bağlantı noktasını ve çalışma zamanı parametrelerini yapılandırın. Değişiklikler kaydedildikten hemen sonra geçerli olur.", + "alert": { + "autoApply": "Değişiklikler, manuel olarak yeniden başlatmaya gerek kalmadan çalışan yönlendirme hizmetiyle otomatik olarak eşitle edilecektir." + }, + "basic": { + "title": "Temel Ayarlar", + "description": "Yönlendirme hizmeti dinleme adresini ve bağlantı noktasını yapılandırın." + }, + "advanced": { + "title": "Gelişmiş Parametreler", + "description": "İstek kararlılığını ve günlüğe kaydetmeyi kontrol edin." + }, + "timeout": { + "title": "Zaman Aşımı Ayarları", + "description": "Akışlı ve akışsız istekler için zaman aşımını yapılandırın." + }, + "fields": { + "listenAddress": { + "label": "Adresi Dinle", + "placeholder": "127.0.0.1", + "description": "Yönlendirme sunucusunun dinlediği IP adresi (önerilen: 127.0.0.1)" + }, + "listenPort": { + "label": "Bağlantı Noktasını Dinle", + "placeholder": "15721", + "description": "Yönlendirme sunucusunun dinlediği port numarası (1024 ~ 65535)" + }, + "maxRetries": { + "label": "Maksimum Yeniden Deneme Sayısı", + "placeholder": "3", + "description": "İstek başarısızlığında yeniden deneme sayısı (0 ~ 10)" + }, + "requestTimeout": { + "label": "İstek Zaman Aşımı (sn)", + "placeholder": "0 (sınırsız) veya 300", + "description": "Tek bir istek için maksimum bekleme süresi (0 = sınırsız veya 10 ~ 600 saniye)" + }, + "enableLogging": { + "label": "Kayıt Talebi Kullanımı", + "description": "Yönlendirme isteği kullanımını ve durumunu yerel istatistik veritabanına yazın" + }, + "streamingFirstByteTimeout": { + "label": "Akış İlk Bayt Zaman Aşımı (sn)", + "description": "İlk veri öbeği için beklenecek maksimum süre" + }, + "streamingIdleTimeout": { + "label": "Akış Boşta Kalma Zaman Aşımı (sn)", + "description": "Veri parçaları arasındaki maksimum aralık" + }, + "nonStreamingTimeout": { + "label": "Yayın Dışı Zaman Aşımı (sn)", + "description": "Akış dışı istekler için toplam zaman aşımı" + } + }, + "validation": { + "addressInvalid": "Lütfen geçerli bir IP adresi girin", + "portMin": "Bağlantı noktası 1024'ten büyük olmalıdır", + "portMax": "Bağlantı noktası 65535'ten küçük olmalıdır", + "retryMin": "Yeniden deneme sayısı negatif olamaz", + "retryMax": "Yeniden deneme sayısı 10'u aşamaz", + "timeoutNonNegative": "Zaman aşımı negatif olamaz", + "timeoutMax": "Zaman aşımı 600 saniyeyi aşamaz", + "timeoutRange": "Lütfen 0 veya 10-600 arasında bir değer girin", + "streamingTimeoutMin": "Zaman aşımı en az 5 saniye olmalıdır", + "streamingTimeoutMax": "Zaman aşımı 300 saniyeyi aşamaz" + }, + "actions": { + "save": "Yapılandırmayı Kaydet" + }, + "toast": { + "saved": "Yönlendirme yapılandırması kaydedildi", + "saveFailed": "Kaydetme başarısız oldu: {{error}}" + }, + "invalidPort": "Geçersiz bağlantı noktası, lütfen 1024-65535 arasında bir sayı girin", + "invalidAddress": "Geçersiz adres. Bir IPv4 (ör. 127.0.0.1), IPv6 (ör. ::1) veya localhost girin", + "configSaved": "Yönlendirme yapılandırması kaydedildi", + "configSaveFailed": "Yapılandırma kaydedilemedi", + "restartRequired": "Adres veya bağlantı noktası değişikliklerinin etkili olması için yönlendirme hizmetini yeniden başlatın" + }, + "switchFailed": "Geçiş başarısız oldu: {{error}}", + "takeover": { + "ariaLabel": "{{appLabel}} yerel yönlendirme", + "hint": "Yönlendirilecek uygulamaları seçin — etkinleştirildiğinde, söz konusu uygulamadan gelen istekler yerel yönlendirme üzerinden iletilecektir", + "enabled": "{{app}} yönlendirme etkin", + "disabled": "{{app}} yönlendirme devre dışı", + "failed": "Yönlendirme değiştirilemedi: {{detail}}", + "tooltip": { + "active": "{{appLabel}} yönlendiriyor - {{address}}:{{port}}\nSağlayıcıları değiştirmek yalnızca rotayı değiştirir; doğrudan sağlayıcı kalır", + "broken": "{{appLabel}} yönlendirme yapıyor ancak yönlendirme hizmeti çalışmıyor", + "inactive": "{{appLabel}}'nin isteklerini yerel yönlendirme yoluyla yönlendirin" + } + }, + "stackMode": { + "enabled": "{{app}} artık Birleştirme modunda", + "exitedToDirect": "{{apps}} direkt moda geri döndü", + "ariaLabel": "{{appLabel}} Birleştirme modu", + "failoverUnavailable": "{{appLabel}}, yedek sağlayıcıya geçiş özelliği olmayan Birleştirme modundadır. Kuyruk ve ayarlar korunur ve yönlendirme modunda tekrar uygulanır", + "codexStale": { + "authTitle": "Codex önceki hesabı hâlâ önbelleğe alabilir; yeni oturum açma bilgilerini yüklemek için arka plan sunucusunu yeniden başlatın", + "title": "Codex hala eski bir model listesi kullanıyor, dolayısıyla mevcut modeller gösterilmiyor", + "unverifiedTitle": "Geçişten önce açık olan Codex uygulamaları önceki hesabı veya model listesini kullanmaya devam edebilir", + "unverifiedHint": "CC Switch, masaüstü uygulamasının veya düzenleyici uzantılarının çalışıp çalışmadığını anlayamıyor. Açık değillerse bu bildirimi kapatın.", + "daemon": "CLI: kodeksi yeniden açmak yeterli değil; arka plan arka plan programının yeniden başlatılması gerekiyor.", + "others": "Masaüstü uygulaması: tamamen çıkın ve yeniden açın (macOS'de ⌘Q; pencereyi kapatmak yeterli değildir). Editör uzantıları: editör penceresini yeniden açın.", + "restart": "Codex arka plan programını yeniden başlatın", + "confirmTitle": "Codex arka plan programı yeniden başlatılsın mı?", + "confirmMessage": "Terminallerinizdeki her kodeks oturumu bu arka plan programını paylaşır, dolayısıyla yürütülen görevler kesintiye uğrayacaktır. Mevcut hesabı ve model listesini yüklemek için kodeksi daha sonra yeniden açın.", + "confirm": "Yeniden başlat", + "restarted": "Codex arka plan programı yeniden başlatıldı. Geçerli hesabı ve model listesini yüklemek için kodeksi yeniden açın", + "notRunning": "Codex arka plan programı çalışmıyor. Bir sonraki başlatılışında mevcut giriş ve model listesini yükleyecektir", + "failed": "Codex arka plan programı yeniden başlatılamadı: {{error}}" + } + }, + "failover": { + "proxyRequired": "Yedek sağlayıcıya geçişyi yapılandırmak için yönlendirme hizmeti başlatılmalıdır", + "autoSwitch": "Otomatik yedek sağlayıcıya geçiş", + "autoSwitchDescription": "Etkinleştirildiğinde, hemen P1 kuyruğuna geçer ve arıza durumunda otomatik olarak kuyruktaki bir sonraki sağlayıcıyı dener" + }, + "failoverQueue": { + "title": "Yedek Sağlayıcıya Geçiş Sırası", + "description": "Her uygulamanın sağlayıcıları için yedek sağlayıcıya geçiş sırasını yönetin", + "info": "Otomatik yedek sağlayıcıya geçiş etkinleştirildiğinde, istekler kuyruk öncelik sırasını takip eder (önce P1). Arıza durumunda sistem kuyruktaki bir sonraki sağlayıcıyı deneyecektir.", + "selectProvider": "Kuyruğa eklenecek sağlayıcıyı seçin", + "noAvailableProviders": "Eklenecek sağlayıcı yok", + "empty": "Yedek sağlayıcıya geçiş kuyruğu boş. Otomatik yedek sağlayıcıya geçişyi etkinleştirmek için sağlayıcıları ekleyin.", + "orderHint": "Kuyruk sırası, Ana sayfadaki sağlayıcı listesi sırası ile eşleşir. Önceliği değiştirmek için Ana sayfadaki sağlayıcıları yeniden sıralayın.", + "dragHint": "Yedek sağlayıcıya geçiş sırasını ayarlamak için sağlayıcıları sürükleyin. Düşük sayılar daha yüksek önceliğe sahiptir.", + "toggleEnabled": "Etkinleştir/Devre Dışı Bırak", + "addSuccess": "Yedek sağlayıcıya geçiş kuyruğuna eklendi", + "addFailed": "Eklenemedi", + "removeSuccess": "Yedek sağlayıcıya geçiş kuyruğundan kaldırıldı", + "removeFailed": "Kaldırılamadı", + "reorderSuccess": "Sıra sırası güncellendi", + "reorderFailed": "Sipariş güncellenemedi", + "toggleFailed": "Durum güncellenemedi" + }, + "autoFailover": { + "info": "Yedek sağlayıcıya geçiş kuyruğunda birden fazla sağlayıcı varsa, istekler başarısız olduğunda sistem bunları öncelik sırasına göre deneyecektir. Sağlayıcı ardışık arıza eşiğine ulaştığında devre kesici açılacak ve geçici olarak atlayacaktır.", + "configSaved": "Otomatik yedek sağlayıcıya geçiş yapılandırması kaydedildi", + "configSaveFailed": "Kaydedilemedi", + "validationFailed": "Aşağıdaki alanlar geçerli aralığın dışında: {{fields}}", + "retrySettings": "Yeniden Deneme ve Zaman Aşımı Ayarları", + "failureThreshold": "Arıza Eşiği", + "failureThresholdHint": "Bu kadar çok ardışık arızadan sonra devre kesiciyi açın (önerilen: 3-10)", + "timeout": "Kurtarma Bekleme Süresi (saniye)", + "timeoutHint": "Devre açıldıktan sonra kurtarmayı denemeden önce bu kadar bekleyin (önerilen: 30-120)", + "circuitBreakerSettings": "Devre Kesici Ayarları", + "successThreshold": "Kurtarma Başarı Eşiği", + "successThresholdHint": "Yarı açık durumdaki bunca başarının ardından devre kesiciyi kapatın", + "errorRate": "Hata Oranı Eşiği (%)", + "errorRateHint": "Hata oranı bu değeri aştığında devre kesiciyi açın", + "minRequests": "Minimum İstekler", + "minRequestsHint": "Hata oranını hesaplamadan önce minimum istekler", + "explanationTitle": "Nasıl Çalışır?", + "failureThresholdLabel": "Arıza Eşiği", + "failureThresholdExplain": "Bu kadar çok ardışık arızadan sonra devre kesici açılarak sağlayıcının geçici olarak kullanılamaz hale gelmesine neden olur", + "timeoutLabel": "Kurtarma Bekleme Süresi", + "timeoutExplain": "Devre açıldıktan sonra yarı açık durumu denemeden önce bu kadar bekleyin", + "successThresholdLabel": "Kurtarma Başarı Eşiği", + "successThresholdExplain": "Yarı açık durumda, bu kadar çok başarının ardından devre kesiciyi kapatın ve sağlayıcıyı tekrar kullanılabilir hale getirin", + "errorRateLabel": "Hata Oranı Eşiği", + "errorRateExplain": "Arıza eşiğine ulaşılmasa bile hata oranı bu değeri aştığında devre kesiciyi açın", + "maxRetries": "Maksimum Yeniden Deneme Sayısı", + "timeoutSettings": "Zaman Aşımı Ayarları", + "streamingFirstByte": "Akış İlk Bayt Zaman Aşımı", + "streamingIdle": "Akış Boşta Kalma Zaman Aşımı", + "nonStreaming": "Yayın Dışı Zaman Aşımı", + "maxRetriesHint": "İstek hatası durumunda yeniden deneme sayısı (0-10)", + "streamingFirstByteHint": "İlk veri öbeği için maksimum bekleme süresi, aralık 1-120 saniye, varsayılan 60 saniye", + "streamingIdleHint": "Veri parçaları arasındaki maksimum aralık, aralık 60-600 saniye, devre dışı bırakmak için 0 (akış ortasında durmaları önler)", + "nonStreamingHint": "Akış dışı istekler için toplam zaman aşımı, aralık 60-1200 saniye, varsayılan 600 saniye (10 dakika)" + }, + "logging": { + "enabled": "Günlük kaydı etkinleştirildi", + "disabled": "Günlük kaydı devre dışı bırakıldı", + "failed": "Günlük kaydı değiştirilemedi" + }, + "server": { + "started": "Yönlendirme hizmeti başlatıldı - {{address}}:{{port}}", + "startFailed": "Yönlendirme hizmeti başlatılamadı: {{detail}}", + "stopped": "Yönlendirme hizmeti durduruldu", + "stopFailed": "Yönlendirme hizmeti durdurulamadı: {{detail}}" + }, + "stoppedWithRestore": "Yönlendirme hizmeti durduruldu; tüm uygulamalar doğrudan bağlantılara geri döndü", + "stopWithRestoreFailed": "Durdurma başarısız oldu: {{detail}}" + }, + "streamCheck": { + "reachable": "{{providerName}}'ye ulaşılabilir ({{responseTimeMs}}ms)", + "reachableSlow": "{{providerName}}'ye ulaşılabilir ancak yavaş ({{responseTimeMs}}ms)", + "unreachable": "{{providerName}}'ye ulaşılamıyor: {{message}}", + "unreachableHint": "Bağlantı kurulamadı (DNS / bağlantı / TLS / zaman aşımı). base_url'yi ve ağınızı kontrol edin.", + "error": "{{providerName}} kontrol hatası: {{error}}" + }, + "proxyConfig": { + "proxyEnabled": "Yönlendirme Ana Anahtarı", + "appTakeover": "Yönlendirme Etkin", + "perAppConfig": "Uygulama Başına Yapılandırma", + "circuitBreaker": "Devre Kesici", + "circuitBreakerSettings": "Devre Kesici Ayarları", + "failureThreshold": "Arıza Eşiği", + "successThreshold": "Başarı Eşiği", + "recoveryTimeout": "Kurtarma Zaman Aşımı", + "errorRateThreshold": "Hata Oranı Eşiği", + "minRequests": "Min. İstekler", + "timeoutConfig": "Zaman Aşımı Yapılandırması", + "streamingFirstByte": "Akış İlk Bayt Zaman Aşımı", + "streamingIdle": "Akış Boşta Kalma Zaman Aşımı", + "nonStreaming": "Yayın Dışı Zaman Aşımı" + }, + "universalProvider": { + "duplicate": "Çoğalt", + "duplicatedAndSynced": "Evrensel sağlayıcı kopyalandı ve eşitle edildi", + "duplicateError": "Evrensel sağlayıcı kopyalanamadı", + "title": "Evrensel Sağlayıcı", + "description": "Evrensel sağlayıcılar Claude, Codex ve Gemini yapılandırmalarını aynı anda yönetir. Değişiklikler tüm etkin uygulamalarla otomatik olarak eşitle edilir.", + "add": "Evrensel Sağlayıcı Ekle", + "edit": "Evrensel Sağlayıcıyı Düzenle", + "empty": "Henüz evrensel sağlayıcı yok", + "emptyHint": "Bir tane oluşturmak için aşağıdaki \"Evrensel Sağlayıcı Ekle\" düğmesini tıklayın", + "selectPreset": "Ön Ayar Türünü Seçin", + "name": "İsim", + "namePlaceholder": "ör. Yeni API'm", + "baseUrl": "API URL'si", + "apiKey": "API Anahtarı", + "websiteUrl": "Web sitesi URL'si", + "websiteUrlPlaceholder": "https://example.com (isteğe bağlı, listede görüntülenir)", + "notes": "Notlar", + "notesPlaceholder": "İsteğe bağlı: Not ekleyin", + "enabledApps": "Etkin Uygulamalar", + "modelConfig": "Model Yapılandırması", + "model": "Model", + "sync": "Uygulamalara Eşitleme", + "synced": "Tüm uygulamalarla eşitle edildi", + "syncError": "Eşitleme başarısız oldu", + "noAppsEnabled": "Etkin uygulama yok", + "added": "Evrensel sağlayıcı eklendi", + "addedAndSynced": "Evrensel sağlayıcı eklendi ve eşitle edildi", + "addedButSyncFailed": "Evrensel sağlayıcı eklendi ancak eşitleme başarısız oldu", + "updated": "Evrensel sağlayıcı güncellendi", + "deleted": "Evrensel sağlayıcı silindi", + "addFailed": "Evrensel sağlayıcı eklenemedi", + "hint": "Uygulamalar arası birleştirilmiş yapılandırma, Claude/Codex/Gemini ile otomatik eşitleme", + "manage": "Yönet", + "loadError": "Evrensel sağlayıcılar yüklenemedi", + "saveError": "Evrensel sağlayıcı kaydedilemedi", + "deleteError": "Evrensel sağlayıcı silinemedi", + "deleteConfirmTitle": "Evrensel Sağlayıcıyı Sil", + "deleteConfirmDescription": "\"{{name}}\"yi silmek istediğinizden emin misiniz? Bu aynı zamanda her uygulamada oluşturulan sağlayıcı yapılandırmalarını da silecektir.", + "syncConfirmTitle": "Evrensel Sağlayıcıyı Senkronize Et", + "syncConfirmDescription": "\"{{name}}\" eşitlemeu Claude, Codex ve Gemini'deki ilişkili sağlayıcı yapılandırmalarının üzerine yazılacaktır. Devam etmek istiyor musun?", + "syncConfirm": "Eşitleme", + "saveAndSync": "Kaydet ve Senkronize Et", + "savedAndSynced": "Kaydedildi ve tüm uygulamalarla eşitle edildi", + "saveAndSyncError": "Kaydetme ve eşitle etme işlemi başarısız oldu", + "configJsonPreview": "Yapılandırma JSON Önizlemesi", + "configJsonPreviewHint": "Aşağıdaki yapılandırmalar her uygulamaya eşitle edilecek (yalnızca görüntülenen alanların üzerine yazılacak, diğer özel ayarlar korunacaktır)" + }, + "omo": { + "editProfile": "OMO Yapılandırmasını Düzenle", + "newProfile": "Yeni OMO Yapılandırması", + "profileName": "İsim", + "mainAgents": "Ana Acenteler", + "subAgents": "Alt Ajanler", + "categories": "Kategoriler", + "customAgents": "Özel Ajanler", + "noCustomAgents": "Özel ajan yok", + "otherFields": "Diğer Yapılandırma", + "globalConfig": "OMO Küresel Yapılandırma", + "globalConfigShort": "OMO Yapılandırması", + "globalConfigSaved": "Genel yapılandırma kaydedildi", + "addProfile": "OMO Sağlayıcı Ekle", + "disabledItems": "Devre Dışı Bırakılan Öğeler", + "advanced": "Gelişmiş Ayarlar", + "profileCreated": "OMO yapılandırması oluşturuldu", + "profileUpdated": "OMO yapılandırması güncellendi", + "invalidJson": "Diğer Alanlar geçersiz JSON içeriyor", + "confirmDelete": "Yapılandırmayı Sil", + "confirmDeleteMsg": "\"{{name}}\" silinsin mi?", + "profileDeleted": "Yapılandırma silindi", + "imported": "\"{{name}}\" olarak içe aktarıldı", + "import": "İçe aktar", + "global": "Küresel", + "empty": "Henüz OMO yapılandırması yok. + Ekle veya Yerelden içe aktar'ı tıklayın.", + "applied": "Uygulandı", + "apply": "Uygula", + "enable": "Etkinleştir", + "enabled": "Etkin", + "disabled": "OMO devre dışı", + "disableFailed": "OMO devre dışı bırakılamadı: {{error}}", + "selectPlaceholder": "Seç...", + "clear": "Temizle", + "clearWrapped": "(Temizle)", + "defaultWrapped": "(Varsayılan)", + "variantPlaceholder": "değişken", + "selectEnabledModel": "Yapılandırılmış modeli seçin", + "selectModel": "Yapılandırılmış modeli seçin", + "recommendedHint": "Önerilen: {{model}}", + "searchModel": "Arama modeli...", + "selectModelFirst": "Önce modeli seçin", + "noEnabledModels": "Yapılandırılmış model yok", + "noVariantsForModel": "Model için varyant yok", + "currentValueNotEnabled": "{{value}} (mevcut değer, yapılandırılmamış)", + "currentValueUnavailable": "{{value}} (mevcut değer, mevcut değil)", + "advancedLabel": "Gelişmiş", + "advancedJsonInvalid": "Gelişmiş JSON geçersiz", + "advancedJsonHint": "sıcaklık, top_p, budgetTokens, prompt_append, izin vb. Varsayılanlar için boş bırakın", + "noEnabledModelsWarning": "Yapılandırılmış model yok. Önce OpenCode modellerini yapılandırın.", + "modelSourcePartialWarning": "Bazı sağlayıcı modeli yapılandırmaları geçersiz ve atlandı.", + "modelSourceFallbackWarning": "Canlı sağlayıcı durumu yüklenemedi. Yapılandırılmış sağlayıcılara geri dönme.", + "runtimeModelsFailedWarning": "OpenCode çalışma zamanı modelleri yüklenemedi. Yalnızca yapılandırılmış sağlayıcılar gösteriliyor.", + "importLocalReplaceSuccess": "Yerel dosya içe aktarıldı ve Aracılar/Kategoriler/Diğer Alanlar değiştirildi", + "importLocalFailed": "Yerel dosya okunamadı: {{error}}", + "agentKeyPlaceholder": "ajan anahtarı", + "categoryKeyPlaceholder": "kategori anahtarı", + "modelNamePlaceholder": "model adı", + "custom": "Özel", + "customCategories": "Özel Kategoriler", + "modelConfiguration": "Model Yapılandırması", + "fillRecommended": "Önerilen Doldur", + "fillRecommendedSuccess": "Doldurulmuş {{count}} önerilen modeller", + "fillRecommendedPartial": "Doldurulmuş {{filled}} önerilen modeller, {{unmatched}} eşsiz", + "fillRecommendedMostlyUnmatched": "Yalnızca {{filled}} doldurulmuş, {{unmatched}} eşleşmemiş (ör. {{examples}}). Bu modelleri sunan sağlayıcıları yapılandırın veya bir yedek seçin.", + "fillRecommendedAllSet": "Tüm yuvalarda zaten yapılandırılmış modeller var", + "fillRecommendedNoMatch": "Yapılandırılmış sağlayıcılarda bulunmayan önerilen modeller (ör. {{examples}})", + "configSummary": "{{agents}} aracıları, {{categories}} kategorileri yapılandırılmış · Gelişmiş parametreler için ⚙'ye tıklayın", + "enabledModelsCount": "{{count}} yapılandırılmış modeller mevcuttur", + "source": "nereden:", + "otherFieldsJson": "Diğer Alanlar (JSON)", + "slimOtherFieldsHint": "Bu alanı konsey, geri dönüş, çoklayıcı, disabled_mcps ve todoContinuation gibi üst düzey OMO Slim yapılandırmaları için kullanın.", + "searchOrType": "Özel değeri arayın veya yazın...", + "noMatches": "Eşleşme yok", + "jsonMustBeObject": "{{field}} bir JSON nesnesi olmalıdır", + "jsonInvalid": "{{field}}, geçersiz JSON içeriyor", + "importGlobalSuccess": "Yerel dosyadan içe aktarılan genel yapılandırma (kaydedilmemiş)", + "importGlobalFailed": "Yerel dosya okunamadı: {{error}}", + "importLocal": "Yerel İçe Aktar", + "saveGlobalConfig": "Genel Yapılandırmayı Kaydet", + "schemaUrl": "$schema", + "resetDefault": "Sıfırla", + "sisyphusAgentConfig": "Sisyphus Aracısı Yapılandırması", + "disabledAgents": "Ajanlar", + "disabledAgentsPlaceholder": "Devre dışı ajanlar", + "disabledMcps": "MCP'ler", + "disabledMcpsPlaceholder": "Devre Dışı MCP'ler", + "disabledHooks": "Hook’lar", + "disabledHooksPlaceholder": "Devre dışı hook’lar", + "disabledSkills": "Beceriler", + "disabledSkillsPlaceholder": "Devre dışı beceriler", + "advancedLsp": "LSP Yapılandırması", + "advancedExperimental": "Deneysel Özellikler", + "advancedBackgroundTask": "Arka Plan Görevleri", + "advancedBrowserAutomation": "Tarayıcı Otomasyonu", + "advancedClaudeCode": "Claude Code", + "agentDesc": { + "sisyphus": "Ana orkestratör", + "hephaestus": "Özerk derin işçi", + "prometheus": "Stratejik planlamacı", + "atlas": "Görev yöneticisi", + "oracle": "Stratejik danışman", + "librarian": "Çoklu repo araştırmacısı", + "explore": "Hızlı kod arama", + "multimodalLooker": "Medya analizörü", + "metis": "Plan öncesi analiz danışmanı", + "momus": "Planı inceleyen", + "sisyphusJunior": "Yetki verilen görev yürütücüsü" + }, + "agentTooltip": { + "sisyphus": "Görev planlama, delegasyon ve paralel yürütmeden sorumlu ana orkestratör. Genişletilmiş düşünmeyi (32.000 bütçe) kullanır ve görevin tamamlanmasını sağlamak için iş akışlarını YAPILACAKLAR listeleri aracılığıyla yönlendirir.", + "atlas": "Yürütme aşamasında görev dağıtımı ve koordinasyondan ana orkestratör (TODO listesini tutar) sorumludur. Tüm işleri doğrudan tamamlamak yerine uzman ajanlere delegeler.", + "prometheus": "Görüşme modu aracılığıyla gereksinimleri toplayan ve ayrıntılı çalışma planları oluşturan stratejik planlayıcı. Yalnızca .sisyphus/ dizinindeki Markdown dosyalarını okuyabilir/yazabilir, hiçbir zaman doğrudan kod yazmaz.", + "hephaestus": "AmpCode derin modundan ilham alan otonom derin çalışan (\"meşru zanaatkar\"). Harekete geçmeden önce araştırma için 2-5 keşif/kütüphaneci ajansini paralel olarak başlatan hedef odaklı uygulama.", + "oracle": "Mimari karar ve hata ayıklama danışmanı. Mükemmel mantıksal akıl yürütme ve derin analiz sağlayan salt okunur danışmanlık aracısı. Dosya yazılamıyor veya görev devredilemiyor.", + "librarian": "Çoklu veri havuzu analizi ve dokümantasyon alma uzmanı. Kod tabanlarını derinlemesine anlar ve kanıta dayalı yanıtlar sağlar. Resmi belgeleri ve açık kaynak uygulama örneklerini bulma konusunda uzmandır.", + "explore": "Hızlı kod tabanı keşfi ve bağlam grep uzmanı. Yüksek hızlı arama için hafif modeller kullanır. Kod yapısını anlamak için izci.", + "multimodalLooker": "PDF'leri, görüntüleri, çizelgeleri ve diğer metin dışı medyayı analiz ederek bunlardan bilgi ve içgörüler çıkaran görsel içerik uzmanı.", + "metis": "Planlama öncesinde ön analiz yapan plan danışmanı. Aşırı mühendisliği önlemek için gizli amaçları, belirsizlikleri ve yapay zeka hata noktalarını tanımlar.", + "momus": "Planın netliğini, doğrulanabilirliğini ve eksiksizliğini yüksek hassasiyetle doğrulayan plan gözden geçirici. Planlar mükemmel olana kadar reddeder ve revizyon ister.", + "sisyphusJunior": "Kategori parametreleri aracılığıyla otomatik olarak oluşturulan, kategori tarafından oluşturulan yürütücü. Atanan görevlerin yürütülmesine odaklanır ve yeniden yetki verilemez, böylece sonsuz yetkilendirme döngüleri önlenir." + }, + "categoryDesc": { + "visualEngineering": "Görsel/ön uç mühendisliği", + "ultrabrain": "Ultra düşünme", + "deep": "Derin çalışma", + "artistry": "Yaratıcı/sanatsal", + "quick": "Hızlı yanıt", + "unspecifiedLow": "Genel düşük seviye", + "unspecifiedHigh": "Genel yüksek seviye", + "writing": "Yazma" + }, + "categoryTooltip": { + "visualEngineering": "UI/UX tasarımı, stillendirme, animasyon ve arayüz uygulaması için ön uç ve görsel mühendislik kategorisi. Varsayılan olarak Gemini 3.6 Flash modelidir.", + "ultrabrain": "Kapsamlı analiz gerektiren karmaşık mimari kararlar için derin mantıksal akıl yürütme kategorisi. Varsayılan olarak GPT-5.3 Codex ultra yüksek akıl yürütme çeşididir.", + "deep": "Hedef odaklı uygulama ile derin otonom problem çözme kategorisi. Derin anlayış gerektiren zor problemlere uygun, eyleme geçmeden önce kapsamlı araştırma yapar.", + "artistry": "Yeni fikirlere ve yaratıcı çözümlere ilham veren son derece yaratıcı ve sanatsal görev kategorisi. Varsayılan olarak Gemini 3.6 Flash yüksek değişkendir.", + "quick": "Tek dosya değişiklikleri, yazım hatası düzeltmeleri ve basit ayarlamalar için hafif görev kategorisi. Varsayılan olarak Claude Haiku 4.5 hızlı modelidir.", + "unspecifiedLow": "Küçük iş yüküne sahip diğer kategorilere uymayan görevler için kategorize edilmemiş düşük çaba gerektiren görev kategorisi. Varsayılan olarak Claude Sonnet 4.5'tir.", + "unspecifiedHigh": "Büyük iş yüküne sahip diğer kategorilere uymayan görevler için kategorize edilmemiş yüksek çaba gerektiren görev kategorisi. Varsayılan olarak Claude Opus 5 max çeşididir.", + "writing": "Dokümantasyon, düz yazı ve teknik yazı için yazı kategorisi. Kimi K2.5 modeline varsayılandır." + }, + "slimAgentDesc": { + "orchestrator": "Orkestratör", + "oracle": "Oracle", + "librarian": "Kütüphaneci", + "explorer": "Kaşif", + "designer": "Tasarımcı", + "fixer": "Düzeltici", + "council": "Konsey" + }, + "slimAgentTooltip": { + "orchestrator": "Yürütülebilir kod yazar, çok aracılı iş akışını düzenler, uzmanları çağırır", + "oracle": "Kök neden analizi, mimari incelemesi, hata ayıklama kılavuzu (salt okunur)", + "librarian": "Belge arama, GitHub kod arama (salt okunur)", + "explorer": "Regex araması, AST kalıp eşleştirmesi, dosya keşfi (salt okunur)", + "designer": "Modern duyarlı tasarım, CSS/Tailwind uzmanlığı", + "fixer": "Kod uygulaması, yeniden düzenleme, test etme, doğrulama", + "council": "Çok modelli fikir birliği aracısı. Birden fazla salt okunur meclis üyesini paralel olarak çalıştırır ve ardından ustanın nihai yanıtı sentezlemesine izin verir." + } + }, + "openclawConfig": { + "defaultModel": { + "title": "Varsayılan Model", + "description": "OpenClaw için varsayılan birincil modeli ve yedek modelleri yapılandırma", + "primary": "Birincil Model", + "primaryPlaceholder": "ör. deepseek/deepseek-chat", + "fallbacks": "Geri Dönüş Modelleri", + "fallbacksPlaceholder": "ör. openrouter/anthropic/claude-sonnet-4.5", + "addFallback": "Geri Dönüş Modeli Ekle", + "saved": "Varsayılan model yapılandırması kaydedildi", + "saveFailed": "Varsayılan model kaydedilemedi" + }, + "modelCatalog": { + "title": "Model Kataloğu", + "description": "Model takma adlarını ve izin verilenler listesini yapılandırma", + "modelId": "Model Kimliği", + "modelIdPlaceholder": "ör. deepseek/deepseek-chat", + "alias": "Takma ad", + "aliasPlaceholder": "örneğin DeepSeek", + "addEntry": "Model Ekle", + "removeEntry": "Kaldır", + "saved": "Model kataloğu kaydedildi", + "saveFailed": "Model kataloğu kaydedilemedi", + "empty": "Model kataloğu girişi yok", + "emptyHint": "Takma adları yapılandırmak için kataloğa modeller ekleyin" + }, + "suggestedDefaults": "Önerilen Varsayılanları Uygula", + "suggestedDefaultsHint": "Bu ön ayarın önerilen varsayılan model yapılandırmasını kullanın" + }, + "subscription": { + "title": "Abonelik Kotası", + "short": { + "fiveHour": "5 saat", + "sevenDay": "hafta", + "sevenDayFable": "Fable", + "sevenDayOpus": "Opus", + "sevenDaySonnet": "Sonnet", + "thirtyDay": "30 gün", + "geminiPro": "Pro", + "geminiFlash": "Flash", + "geminiFlashLite": "Lite", + "monthly": "Ay", + "credits": "Kredi", + "copilotPremium": "Premium" + }, + "fiveHour": "5 saat", + "sevenDay": "Haftalık", + "sevenDayFable": "Fable", + "sevenDayOpus": "Haftalık Opus", + "sevenDaySonnet": "Haftalık Sonnet", + "thirtyDay": "30 gün", + "geminiPro": "Pro", + "geminiFlash": "Flash", + "geminiFlashLite": "Flash Lite", + "weeklyLimit": "Haftalık", + "monthly": "Aylık", + "credits": "Kredi", + "copilotPremium": "Premium", + "utilization": "{{value}}%", + "resetsIn": "{{time}} sonra sıfırlanır", + "extraUsage": "Ekstra Kullanım", + "expired": "Oturumun süresi doldu", + "expiredHint": "Giriş bilgilerinizi yenilemek için {{tool}} komutunu çalıştırın", + "queryFailed": "Sorgu başarısız oldu", + "refresh": "Yenile" + }, + "nav": { + "mainLabel": "Ana gezinme", + "skipToContent": "Ana içeriğe atla", + "expandSidebar": "Kenar çubuğunu genişlet", + "collapseSidebar": "Kenar çubuğunu daralt", + "appsGroup": "Uygulamalar", + "todayCost": "Bugün {{cost}}", + "usage": "Kullanım", + "auth": "Hesaplar", + "authNeedsReauth": "Bir hesapta tekrar oturum açılması gerekiyor", + "prompts": "İstemler", + "sessions": "Oturumlar", + "apps": "Uygulamalar", + "appsTitle": "Uygulamalar: yükleyin, yükseltin, kenar çubuğunda hangilerinin gösterileceğini seçin", + "appsHasUpdate": "Uygulamalar · güncellemeler mevcut", + "settings": "Ayarlar", + "settingsHasUpdate": "Ayarlar · yeni bir CC Switch sürümü mevcut", + "mode": { + "route": "Yönlendirme", + "stack": "Birleştirme", + "mapping": "Eşleme", + "mappingFull": "Model eşleme" + }, + "needsAttention": "Dikkat edilmesi gerekiyor", + "back": "Geri" + }, + "appsPage": { + "showInSidebar": "Kenar çubuğunda {{name}}'yi göster", + "lastChecked": "Son kontrol: {{time}}", + "neverChecked": "Güncellemeler henüz kontrol edilmedi", + "helpTitle": "Uygulamalar", + "helpBody": "Komut satırı uygulamalarını buradan yükleyip yükseltin ve kenar çubuğunda hangilerinin gösterileceğini seçin.", + "checking": "Kontrol ediliyor…", + "checkUpdates": "Güncellemeleri kontrol edin", + "moreActions": "Daha fazla işlem", + "manualCommands": "Manuel kurulum komutları", + "columnApp": "Uygulama", + "columnVersion": "Sürüm", + "columnVisible": "Göster", + "visibleHelp": "Kapalıyken uygulama artık kenar çubuğunda, MCP / Skills uygulama sütunlarında veya İstemler ve Oturumlar'daki uygulama seçicilerde görünmez. Mevcut yapılandırması kalır ve eşitlemea devam eder.", + "desktopHelp": "Claude Desktop bir masaüstü uygulamasıdır ve buraya yüklenemez veya yükseltilemez; CC Switch, yapılandırma dosyası aracılığıyla ona bağlanır.", + "desktopUnsupported": "Bu sistemde desteklenmiyor", + "desktopConnected": "Bağlı", + "desktopNotConnected": "Bağlı değil", + "newVersion": "{{version}} mevcut", + "notRunnable": "Çalıştırılamıyor", + "otherInstalls": "{{count}} daha fazla yükleme", + "installsFound": "{{count}} kurulum bulundu", + "wslFlag": "Bayrak", + "installHint": { + "claude": "Resmi komut dosyasıyla yüklenir, npm'ye geri döner", + "codex": "Npm ile yükler", + "gemini": "Npm ile yükler", + "grok": "Npm ile yükler", + "opencode": "Resmi komut dosyasıyla yüklenir, npm'ye geri döner", + "openclaw": "Npm ile yükler", + "hermes": "Resmi komut dosyasıyla yüklenir", + "pi": "Npm ile yükler", + "mcode": "Resmi komut dosyasıyla yüklenir, npm'ye geri döner" + } + }, + "appPage": { + "moreActions": "{{name}} için diğer işlemler", + "viewSessions": "Oturumları görüntüle", + "configDirectory": "Yapılandırma dizini", + "installAndUpgrade": "Yükleme ve yükseltme", + "hideFromSidebar": "Kenar çubuğundan gizle", + "providers": "Sağlayıcılar", + "workspace": "Çalışma alanı", + "openclawConfig": "Yapılandırma", + "memory": "Bellek", + "webUi": "Web kullanıcı arayüzü", + "viewUsage": "Bu uygulamanın kullanımını görüntüle" + }, + "mode": { + "tabsLabel": "Bağlantı modu", + "names": { + "direct": "Doğrudan", + "route": "Yönlendirme", + "stack": "Birleştirme" + }, + "active": "aktif", + "activeTitle": "{{mode}} aktif", + "noProvider": "(yok)", + "failover": "Yedek sağlayıcıya geçiş", + "routeSettings": "Yönlendirme ayarları", + "routeSettingsTitle": "Yönlendirme ayarları", + "moreRouteSettings": "Daha fazla yönlendirme ayarı", + "queueMoved": "{{name}}, {{position}} konumuna taşındı.", + "status": { + "directLead": "Doğrudan etkin · şuraya bağlı:", + "routeLead": "Yönlendirme etkin", + "byQueue": "sıraya göre", + "stackLead": "Birleştirme etkin · varsayılan", + "stackValue": "{{name}} · {{count}} sağlayıcı daha, {{models}} model" + }, + "activate": { + "viewing": "“{{view}}”yi görüntülüyorsunuz. {{app}} şu anda {{active}}'de.", + "route": "Yönlendirmeyi başlat", + "stack": "Birleştirme moduna geç", + "direct": "Doğrudan bağlantıya dön" + }, + "notice": { + "serviceDown": "{{app}}, {{mode}} modundadır ancak yönlendirme hizmeti çalışmadığından istekler başarısız olur.", + "startService": "Hizmeti başlat", + "backToDirect": "Doğrudan bağlantıya dön", + "attachFailed": "{{mode}} önceki başlangıçta yeniden bağlanamadığı için {{app}} doğrudan bağlantıya döndü." + }, + "toast": { + "enteredRoute": "{{app}} artık yönlendirme yapıyor → {{provider}}.", + "enteredStack": "{{app}}, Birleştirme moduna geçti. Birleştirilen modelleri /model içinde görmek için {{app}} uygulamasını yeniden başlatın.", + "enteredStackLive": "{{app}}, Birleştirme moduna geçti. Birleştirilen modeller artık /model içinde.", + "exited": "Direkt olarak geri dön: {{app}} artık doğrudan {{provider}}'ye bağlanıyor.", + "defaultRemembered": "Birleştirme'ya geçtiğinizde {{provider}} varsayılan sağlayıcı olacaktır.", + "restartHint": "Uygulamak için {{app}}'yi yeniden başlatın.", + "undo": "Geri al", + "failed": "Geçiş yapılamadı: {{detail}}" + }, + "dialog": { + "routeTitle": "{{app}} için yönlendirme kullanılsın mı?", + "stackTitle": "{{app}} için Birleştirme kullanılsın mı?", + "switchTitle": "{{app}}, \"{{from}}\" yerine \"{{to}}\" olarak değiştirilsin mi?", + "routeLead": "İstekler önce bu makinedeki CC Switch üzerinden, ardından seçtiğiniz sağlayıcıya iletilir.", + "stackLead": "Varsayılan sağlayıcı, önek olmadan istekleri alır.", + "routeTo": "Şuraya yönlendir", + "stackDefault": "Varsayılan sağlayıcı", + "officialOption": "{{name}} (resmi)", + "stackOfficialNote": "Resmi bir abonelik kullanıyorsanız resmi hesabı varsayılan sağlayıcı olarak ayarlayın.", + "routeNoteFile": "{{file}}'deki adresi ve anahtarı yeniden yazar. Gerçek anahtar CC Switch’te kalır; diğer ayarlara dokunulmaz.", + "routeNoteSwitch": "Sağlayıcıları daha sonra Yönlendirme sekmesinde değiştirmek, yapılandırma dosyasını yeniden yazmaz.", + "routeNoteKeepRunning": "CC Switch'yi çalışır durumda tutun. Çıkmak doğrudan yapılandırmayı geri yazar; bir sonraki başlangıçta yeniden bağlanır.", + "stackNoteMembers": "{{names}}, /model içinde ccs- önekiyle gösterilen {{count}} modellerini ekler.", + "stackNoteEmpty": "Henüz başka sağlayıcı eklenmediğinden yalnızca varsayılan kullanılabilir. Daha sonra Birleştirme sekmesine daha fazlasını ekleyebilirsiniz.", + "stackNoteNoFailover": "Birleştirmenın yedek sağlayıcıya geçiş özelliği yoktur. Kuyruk ve ayarları tutulur ve yönlendirme ile geri gelir.", + "stackNoteRestartCodex": "Toplu modelleri görmek için {{app}}'yi yeniden başlatın; masaüstü uygulamasından tamamen çıkın ve yeniden açın.", + "stackToRouteNote": "Toplu modeller /model'den çıkarılır (liste tutulur); seçilen birleştirilmiş modelin normal modele dönüştürülmesi gerekir.", + "confirmRoute": "Yönlendirmeyi başlat", + "confirmStack": "Birleştirme moduna geç", + "needsRouteTitle": "{{provider}}'nin yönlendirmeye ihtiyacı var", + "needsRouteLead": "{{provider}}: {{reason}}. Doğrudan geçiş yaparsanız {{app}} onu kullanamayacaktır.", + "switchAnyway": "Yine de doğrudan geçiş yap", + "routeAndUse": "Yönlendirmeyi başlatın ve kullanın" + }, + "help": { + "title": "Bağlantı modları nasıl farklılık gösterir?", + "direct": "Doğrudan: CC Switch isteklerinize müdahale etmez; istemci, seçtiğiniz sağlayıcıyla kendi yerel özelliklerini kullanarak doğrudan iletişim kurar.", + "route": "Yönlendirme: İstekler bu bilgisayardaki CC Switch üzerinden geçer; anında sağlayıcı değiştirme, yedek sağlayıcıya geçiş, biçim dönüştürme ve diğer gelişmiş özellikleri kullanabilirsiniz.", + "stack": "Birleştirme: Farklı sağlayıcıların modelleri /model içinde birlikte listelenir; istemci içinde modeller arasında kesintisiz geçiş yapabilirsiniz." + } + }, + "providerCard": { + "status": { + "inUse": "Kullanımda", + "routing": "Yönlendirme", + "currentDefault": "Mevcut varsayılan", + "defaultAfterSwitch": "Geçişten sonra varsayılan", + "current": "Mevcut", + "default": "Varsayılan" + }, + "action": { + "switch": "Geçiş yap", + "routeHere": "Buraya yönlendir", + "backToDirectAndUse": "Doğrudan bağlantıya dön ve kullan", + "addToQueue": "Kuyruğa ekle", + "removeFromQueue": "Kuyruktan kaldır", + "setDefault": "Varsayılan olarak ayarla", + "add": "Ekle", + "remove": "Kaldır", + "enable": "Etkinleştir", + "disable": "Devre dışı bırak", + "edit": "{{name}}'yi düzenleyin", + "more": "{{name}} için diğer işlemler", + "moveUp": "{{name}}'yi yukarı taşı", + "moveDown": "{{name}}'yi aşağı taşı" + }, + "chip": { + "official": "Resmi", + "needsRoute": "Yönlendirme gerekiyor", + "directWhenDirect": "Doğrudan kullanıldığında kullanılır", + "default": "Varsayılan", + "models": "{{count}} model", + "noModels": "Model yok", + "mapping": "Model eşleme", + "direct": "Doğrudan", + "hermesManaged": "Hermes tarafından yönetilmektedir", + "defaultModel": "Varsayılan model {{model}}" + }, + "reason": { + "noRoute": "Resmi abonelikler yönlendirmeden geçmez; doğrudan modda tekrar kullanılabilir.", + "noStack": "Birleştirme'da resmi abonelikler kullanılamaz.", + "officialStack": "Resmi hesaplar yalnızca varsayılan olabilir; topluluğa katılamazlar.", + "defaultWhileRouting": "Yönlendirme sırasında varsayılan, yönlendirdiğiniz sağlayıcıdır. Birleştirme'ya geçerken başka bir tane seçebilirsiniz.", + "needsRoute": "Yönlendirme gerekiyor: {{reason}}; doğrudan bağlanamıyorum.", + "defaultCannotRemove": "Varsayılan kaldırılamaz. Önce başka bir sağlayıcıyı varsayılan yapın.", + "currentCannotRemove": "Kullanılan sağlayıcı kaldırılamaz. Önce başka birini etkinleştirin.", + "inUseCannotDelete": "Kullanılan sağlayıcı silinemez. Önce diğerine geçin.", + "noFailover": "Resmi hesaplar yedek sağlayıcıya geçiş kuyruğuna katılamaz: İstemcinin kendi oturum açma bilgilerini kullanırlar ve diğer sağlayıcılarla dönüşümlü olarak çalışamazlar." + }, + "section": { + "queue": "Sıra · önceliğe göre ({{count}})", + "queueHelpTitle": "Yedek sağlayıcıya geçiş kuyruğu", + "queueHelp": "İstekler ilk sağlayıcıya gider; Tekrarlanan başarısızlıklardan sonra bir sonrakine geçerler. Yukarı/aşağı hareket ettirerek veya sürükleyerek yeniden sıralayın.", + "queueEmpty": "Sıra boş. Aşağıdan sağlayıcıları ekleyin.", + "notInQueue": "Sırada değil ({{count}})", + "stackDefault": "Varsayılan sağlayıcı", + "stackDefaultAfterSwitch": "Birleştirme'ya geçtikten sonra varsayılan sağlayıcı", + "stackDefaultHelp": "Ön eki olmayan istekler ona gider; eklenen diğer sağlayıcılar /modelde ccs- önekiyle görünür.", + "stackEmpty": "Henüz başka sağlayıcı eklenmedi.", + "added": "Eklendi · {{count}}", + "addedHelpTitle": "Eklendi", + "addedHelp": "Eklenen sağlayıcıların tümü {{app}}'nin yapılandırmasına yazılır; {{app}} içindeki modeli seçin.", + "addedEmpty": "Henüz sağlayıcı eklenmedi.", + "available": "Mevcut · {{count}}", + "stackNoDefault": "Henüz varsayılan sağlayıcı yok. Birleştirme'ya geçerken birini seçersiniz." + } + }, + "desktopAccess": { + "current": "Güncel: {{name}} · {{mode}}", + "noCurrent": "Sağlayıcı seçilmedi", + "helpTitle": "Claude Desktop nasıl bağlanır?", + "help": "Claude Desktop bağlantısı her sağlayıcı için ayrı ayarlanır: doğrudan bağlantı kullanan sağlayıcılar Claude Desktop yapılandırmasına yazılır; model eşleme kullananlar yönlendirme hizmeti üzerinden bağlanır. Bu sağlayıcılardan biri kullanılırken hizmet otomatik olarak çalışır.", + "service": "Yönlendirme hizmeti", + "running": "Çalışıyor", + "notRunning": "Yönlendirme hizmeti başlatılamadı", + "changePort": "Bağlantı noktasını değiştir", + "notNeeded": "Yönlendirme hizmeti: mevcut sağlayıcı tarafından gerekli değildir" + }, + "routingSettings": { + "service": "Hizmet", + "serviceName": "Yönlendirme hizmeti", + "serviceHelp": "Yönlendirme ve Birleştirme modlarında istekler, sağlayıcıya ulaşmadan önce bu makinedeki yönlendirme hizmetinden geçer. Bir uygulama bu modlardan birine girdiğinde veya Claude Desktop model eşlemeyi kullandığında otomatik olarak başlar.", + "runningFor": "Çalışıyor · çalışma süresi {{uptime}}", + "uptimeHours": "{{hours}} sa {{minutes}} dk", + "uptimeMinutes": "{{minutes}} dk", + "stopped": "Durduruldu", + "totalRequests": "İstekler", + "successRate": "Başarı oranı", + "activeConnections": "Aktif bağlantılar", + "start": "Başlat", + "stop": "Durdur", + "stopBlocked": "Bazı uygulamalar hâlâ yönlendirme hizmetini kullanıyor. Önce bunları doğrudan yönlendirmeye çevirin.", + "listen": "Dinleme adresi ve portu", + "address": "Dinleme adresi", + "addressHint": "Önerilen: 127.0.0.1", + "port": "Dinleme portu", + "saveAndRestart": "Hizmeti kaydedin ve yeniden başlatın", + "clientHost": "Bağlantı adresi", + "clientHostHint": "İstemcilerin bağlandığı yer. Boş: dinleme adresi", + "clientHostInvalid": "İstemcilerin ulaşabileceği bir IP adresi veya ana bilgisayar adı girin", + "clientHostHelp": "CC Switch ana bilgisayarı istemci yapılandırmalarına yazar (Claude Desktop'nin ağ geçidi URL'si dahil). Dinleme adresinden türetmek için boş bırakın. İstemciler bu makineye geridöngü yoluyla erişemediğinde bunu ayarlayın; WSL2 içindeki Claude Desktop oturumları (NAT modu): dinleme adresini 0.0.0.0 olarak ayarlayın ve WSL'nin ulaşabileceği bir Windows IP girin (vEthernet (WSL) bağdaştırıcı adresi gibi) ve bağlantı noktasının güvenlik duvarı üzerinden geçmesine izin verin.", + "logging": "İstek kullanımını kaydet", + "loggingHelp": "Kapalıyken Kullanım, yönlendirilen istekler için istek başına ayrıntıya sahip değildir.", + "usingApps": "Yönlendirmeyi kullanan uygulamalar · {{count}}", + "noApps": "Hiçbir uygulama yönlendirmeyi kullanmıyor. Bunu bir uygulamanın sayfasındaki Yönlendirme veya Birleştirme sekmesinden girin.", + "routeDetail": "{{name}}'ye Yönlendirme", + "stackDetail": "Varsayılan {{name}}", + "desktopMode": "Model eşleme · otomatik olarak çalışmaya devam etti", + "desktopDetail": "Mevcut sağlayıcı {{name}}", + "goTo": "Aç", + "exitAll": "Tümünü doğrudan bağlantıya döndür", + "exitAllTitle": "Tüm uygulamalar doğrudan bağlantıya döndürülsün mü?", + "exitAllMessage": "Yönlendirme veya Birleştirme modundaki uygulamaların doğrudan yapılandırmaları geri yazılır, ardından yönlendirme hizmeti durur. Rota hedefleri, kuyruklar ve birleştirme listeleri tutulur.", + "exitAllConfirm": "Tümünü doğrudan bağlantıya döndür", + "failoverHelp": "Her uygulamanın zaman aşımlarını, yeniden denemelerini ve devre kesicilerini buradan ayarlayın. Kuyruklar her uygulamanın Yönlendirme sekmesinde yönetilir." + }, + "quota": { + "tierShort": "{{label}} {{value}}%", + "tierLeft": "{{label}} %{{value}} kaldı", + "tierUsedUp": "{{label}} tükendi", + "tierUsed": "{{label}} %{{value}} kullanıldı", + "left": "%{{value}} kaldı", + "used": "%{{value}} kullanıldı", + "usedUp": "Tükendi", + "balance": "Bakiye {{value}}", + "balanceUsedUp": "Bakiye tükendi", + "planExpired": "Planın süresi doldu", + "failed": "Kota bilgisi alınamıyor", + "reason": { + "loginExpired": "Oturum açma süresi doldu", + "tokenRefreshPending": "Token yenilenmesi bekleniyor" + }, + "updatedAt": "{{time}} tarihinde güncellendi", + "clickToRefresh": "Tekrar kontrol etmek için tıklayın", + "resetCredits": { + "label": "Sıfırlanma", + "left": "Kalan sıfırlama: {{count}}", + "short": "{{count}} sıfırlama", + "value": "{{count}} kaldı", + "expiresOn": "Süresi doluyor {{date}}", + "noExpiry": "Son kullanma tarihi yok", + "detail": "Kaydedilen limit sıfırlamaları kaldı: {{count}} · bir sonraki sona erme süresi {{date}}", + "detailNoExpiry": "Kaydedilen limit sıfırlamaları kaldı: {{count}} · süre sonu yok", + "title": "Kaydedilen limit sıfırlamaları", + "times": "×{{count}}", + "inTime": "{{time}}'de", + "showAll": "{{count}} sıfırlamalarının her birinin süresinin ne zaman dolduğunu göster" + }, + "credits": { + "label": "Kredi", + "text": "Kredi ≈ {{usd}}", + "usd": "≈ {{usd}}", + "detail": "Kredi bakiyesi {{balance}} · ≈ {{usd}}, API fiyatlarında · yalnızca limitleriniz dolduktan sonra kullanılır" + } + }, + "appMatrix": { + "clearSearch": "Aramayı temizle", + "found": "{{count}} sonuç bulundu", + "columnAria": "{{app}}: {{total}} {{noun}}'nin {{on}}'si için etkinleştirildi, toplu işlemler", + "pop": { + "count": "{{total}} {{noun}}'nin {{on}}'si için etkinleştirildi", + "failCount": "{{count}} yazılamadı", + "enableRest": "Diğer {{count}}'yi etkinleştirin", + "enableAll": "Tümünü etkinleştir", + "disableAll": "Hepsini kapat", + "scopeAll": "Bu listedeki {{count}} için geçerlidir", + "scopeSearch": "Yalnızca {{count}} arama sonuçları için geçerlidir", + "scopeFilter": "Yalnızca {{count}} filtrelenen öğeler için geçerlidir" + }, + "toast": { + "enabled": "{{app}}'de {{count}} {{noun}} etkinleştirildi", + "disabled": "{{app}}'de {{count}} {{noun}} kapatıldı", + "partialFail": "; {{count}} yazılamadı ve listede işaretlendi", + "undone": "Geri alındı" + }, + "undo": "Geri al", + "cell": { + "on": "{{name}} · {{app}}: etkin", + "off": "{{name}} · {{app}}: kapalı", + "fail": "{{name}} · {{app}}: yazma başarısız oldu, yeniden denemek için tıklayın" + } + }, + "mcpPage": { + "noun": "MCP sunucuları", + "listSeparator": ",", + "helpTitle": "MCP nasıl eşitle edilir?", + "help": "Bu liste gerçeğin kaynağıdır: işaretlediğiniz uygulamaların yapılandırma dosyalarına yazılır ve sağlayıcıları değiştirdiğinizde buradan yeniden yazılır. Claude Desktop ve OpenClaw desteklenmediğinden sütunları yoktur; Pi, 1.0 veya üzeri bir sürüme ihtiyaç duyar ve SSE'yi desteklemez.", + "importFromApps": "Uygulamalardan içe aktar", + "add": "MCP'yi ekleyin", + "moreActions": "Daha fazla MCP eylemi", + "copyAll": "Tümünü mcpServers JSON olarak kopyalayın", + "searchPlaceholder": "Adı, komutu veya URL'yi arayın", + "count": "{{count}} MCP sunucuları", + "countFiltered": "{{count}} MCP sunucularının {{shown}}'si", + "overwriteNote": "Doğrudan uygulama yapılandırmalarında aynı girişlerde yapılan düzenlemelerin üzerine yazılır", + "failNoticeTitle": "{{app}}'nin yapılandırması yazılamadı", + "failNoticeBody": "{{error}}. Dosyayı düzeltin ve Yeniden Dene'ye tıklayın.", + "loadFailed": "MCP listesi yüklenemedi", + "noFilesChanged": "CC Switch hiçbir dosyayı değiştirmedi.", + "emptyTitle": "Henüz MCP sunucusu yok", + "emptyBody": "Uygulamalarınızda önceden kurulmuş olan MCP sunucuları içe aktarılabilir", + "importHelpTitle": "İçe aktarma ne okur?", + "importHelp": "Yalnızca kullanıcı düzeyindeki yapılandırmalar okunur. claude mcp add komutunun varsayılan olarak proje düzeyinde eklediği MCP sunucuları ve eklentilerle gelen sunucular içe aktarılmaz.", + "columnName": "İsim", + "noMatch": "Hiçbir MCP sunucusunun adı, komutu veya URL'si “{{query}}” ile eşleşmiyor", + "clearSearch": "Aramayı temizle", + "listLabel": "MCP sunucuları", + "notEnabled": "Kapalı", + "rowFail": "{{apps}}'ye yazma işlemi başarısız oldu", + "rowRetryAria": "{{id}}'yi {{apps}}'ye tekrar yazın", + "editAria": "{{id}}'yi düzenleyin", + "rowMoreAria": "{{id}} için daha fazla eylem", + "copyJson": "JSON olarak kopyala", + "openDocs": "Dokümanları aç", + "enableEverywhere": "Tüm uygulamalarda etkinleştir", + "disableEverywhere": "Her yeri kapat", + "deleteEllipsis": "Sil", + "deleteTitle": "{{id}} silinsin mi?", + "deleteBodyApps": "Bu, onu CC Switch’ten ve {{apps}}'nin yapılandırma dosyalarından kaldırır. Bu geri alınamaz.", + "deleteBody": "Bu onu CC Switch’ten kaldırır. Bu geri alınamaz.", + "toast": { + "written": "{{app}}'ye yazıldı", + "rowAllOn": "{{id}}, tüm {{count}} uygulamalarında etkindir", + "rowAllOff": "{{id}} tüm uygulamalarda kapalı", + "copiedAll": "{{count}} MCP sunucuları için kopyalanan mcpServers JSON (env ve başlık değerleri dahil)", + "copiedOne": "{{id}}, JSON olarak kopyalandı (env ve başlık değerleri dahil)", + "deleted": "Silinmiş {{id}}", + "added": "{{id}} eklendi", + "saved": "{{id}} kaydedildi", + "batchAdded": "{{count}} MCP sunucuları eklendi", + "batchAddedReplaced": "{{count}} MCP sunucuları eklendi, {{replaced}}'nin yerini aldı", + "resynced": "Bu anahtarlardan {{count}} uygulamalarının yapılandırmasını yeniden yazdım", + "resyncPartial": "{{count}} uygulamaları yazılamadı: {{apps}}" + }, + "import": { + "title": "İçe aktarma tamamlandı", + "added": "{{count}} MCP sunucuları eklendi: {{names}}.", + "none": "Yeni MCP sunucusu bulunamadı.", + "sameName": "Listede zaten bulunan sunucular için yalnızca eşleşen uygulamalar etkinleştirildi; CC Switch’teki yapılandırma önceliğini korur.", + "failedTitle": "Bazı uygulamalar okunamadı", + "filesTitle": "Hangi dosyalar okundu", + "claudeNote": " (üst düzey mcpServers)", + "ok": "Anladım" + }, + "templateLabels": { + "sequential-thinking": "sequential-thinking" + }, + "drawer": { + "addTitle": "MCP'yi ekleyin", + "editTitle": "MCP'yi düzenleyin", + "templates": "Bir şablondan başlayın", + "paste": "Bir yapılandırma yapıştırın", + "pastePlaceholder": "JSON veya TOML'yi yapıştırın; mcpServers, Codex ve OpenCode formatları tanınır", + "pasteOneOk": "Tanınmış {{format}}: {{name}}, aşağıdaki formu doldurun", + "pasteOneNoName": "Tanınmış {{format}}, aşağıdaki formu doldurdu; kendin bir isim ekle", + "pasteManyOk": "Tanınan; aşağıdaki listeye bakın", + "pasteHelp": "Bunu tanıyamadım. Desteklenen: tek bir sunucu nesnesi, \"name\": {…}, {\"mcpServers\": {…}}, Codex'nin [mcp_servers.name] ve OpenCode'nin yerel/uzak formatı.", + "pasteFormats": { + "mcpServers": "mcpServers biçimi", + "opencode": "OpenCode biçimi", + "codex": "Codex biçimi", + "codexToml": "Codex TOML biçimi", + "single": "tek bir sunucu yapılandırması", + "named": "\"ad\": {…} biçimi" + }, + "batchTitle": "{{count}} sunucuları bulundu ({{format}})", + "batchClear": "Temizleyin ve birer birer ekleyin", + "batchNew": "Yeni", + "batchExists": "Ad zaten mevcut", + "batchExistsGroup": "{{name}} zaten mevcut: atla veya değiştir", + "batchSkip": "Atla", + "batchOverwrite": "Değiştir", + "batchNone": "En az bir sunucu seçin", + "addMany": "{{count}}'yi ekleyin", + "addManyReplace": "{{count}} ekleyin, {{replaced}}'yi değiştirin", + "name": "İsim", + "required": "(gerekli)", + "namePlaceholder": "örneğin context7", + "nameHelpTitle": "Adı ne", + "nameHelp": "Her uygulamanın yapılandırma dosyasına yazılan anahtar.", + "nameHelpEditTitle": "İsim neden değiştirilemiyor", + "nameHelpEdit": "Ad, her uygulamanın yapılandırmasındaki anahtardır. Yeniden adlandırmak için yeni bir tane oluşturun ve eskisini silin.", + "errors": { + "nameRequired": "Bir ad girin, ör. context7", + "nameSpaces": "Adlar boşluk içeremez; - veya _ kullanın", + "nameExists": "{{name}} adlı bir MCP sunucusu zaten mevcut", + "commandRequired": "Çalıştırılacak komutu girin, ör. npx veya uvx", + "urlRequired": "Sunucu URL'sini girin, ör. https://mcp.example.com/mcp", + "urlScheme": "URL http:// veya https:// ile başlamalıdır" + }, + "connection": "Bağlantı", + "editMode": "Farklı düzenle", + "tabForm": "Form", + "transport": "Taşıma", + "transportStdio": "Yerel komut (stdio)", + "command": "Komut", + "commandPlaceholder": "Sadece program, ör. npx veya uvx; argümanlar aşağıya doğru gidiyor", + "args": "Argümanlar", + "argAria": "Bağımsız Değişken {{index}}", + "removeArg": "Bağımsız değişkeni kaldır {{index}}", + "addArg": "Bağımsız değişken ekle", + "env": "Ortam değişkenleri", + "headers": "Başlıklar", + "addEnv": "Değişken ekle", + "addHeader": "Başlık ekle", + "kvKeyPlaceholder": "İsim", + "kvValuePlaceholder": "Değer", + "kvKeyAria": "{{label}} {{index}} adı", + "kvValueAria": "{{label}} {{index}} değeri", + "revealValue": "{{name}} değerini göster", + "showValueTip": "Değeri göster", + "hideValueTip": "Değeri gizle", + "removeRow": "{{label}} {{name}}'yi kaldırın", + "cwd": "Çalışma dizini", + "optional": "İsteğe bağlı", + "cwdPlaceholder": "Uygulamanın karar vermesine izin vermek için boş bırakın", + "extraFields": "Olduğu gibi tutulan alanlar ({{count}})", + "editInJson": "JSON'de düzenleyin", + "jsonLabel": "Sunucu yapılandırması", + "jsonHelpTitle": "JSON ve form", + "jsonHelp": "İkisi de aynı yapılandırmayı düzenler ve eşitlenmiş kalır. Ortam değişkenleri ve başlık değerleri •••••••• olarak gösterilir; kaydederken gerçek değerler korunur.", + "showValues": "Değerleri göster", + "jsonSyntax": "Bir sözdizimi hatası var", + "jsonSyntaxLine": "{{line}} satırına yakın sözdizimi hatası", + "jsonNotObject": "En üst seviye bir nesne olmalıdır, ör. {\"komut\": \"npx\"}", + "jsonBlocksForm": "Forma geri dönmek için sorunu düzeltin.", + "jsonMaskedUnknown": "\"{{key}}\" hâlâ yer tutucuyu tutuyor ancak taslağın bu anahtar için orijinal değeri yok. Gerçek değeri girin veya anahtarları yeniden adlandırmadan önce \"Değerleri göster\" seçeneğini açın.", + "writeTo": "Şuraya yaz:", + "writeToHelpTitle": "Uygulamalara nasıl yazılır?", + "writeToHelp": "Aynı yapılandırma, işaretlenen her uygulamaya olduğu gibi yazılır; Bir uygulamanın farklı argümanlara ihtiyacı varsa onun için ayrı bir giriş oluşturun. MiniMax Code yalnızca bağlantı alanlarının yerini alır; mcp.json'daki diğer alanlar korunur.", + "meta": "Açıklama ve bağlantılar", + "metaHint": "Görünen ad, açıklama, etiketler, ana sayfa, dokümanlar", + "displayName": "Görünen ad", + "displayNameHelpTitle": "Görünen adın gösterildiği yer", + "displayNameHelp": "Yalnızca CC Switch’te gösterilir; uygulama yapılandırmalarına yazılmaz.", + "description": "Açıklama", + "tags": "Etiketler", + "tagsPlaceholder": "Virgülle ayrılmış, ör. dokümanlar, web", + "homepage": "Ana sayfa", + "docs": "Dokümanlar" + }, + "resync": "Bu anahtarlardan her uygulamanın yapılandırmasını yeniden yazın" + }, + "skillsPage": { + "noun": "Beceriler", + "helpTitle": "Beceriler nasıl eşitle edilir?", + "help": "Ana kopya CC Switch’in klasöründe bulunur ve işaretlediğiniz uygulamalarla eşitle edilir. Claude Desktop ve OpenClaw, Becerileri desteklemediğinden sütunları yoktur.", + "add": "Beceri Ekle", + "addMenu": { + "discover": "Keşfet'te Göz Atın", + "zip": "ZIP'ten yükle", + "import": "Bu bilgisayardan içe aktar" + }, + "moreMenu": { + "restore": "Yedeklemeden geri yükle", + "repos": "Depoları yönet" + }, + "viewAria": "Beceri görünümü", + "viewInstalled": "Yüklendi", + "viewInstalledCount": "{{count}} kuruldu", + "viewDiscover": "Keşfet", + "searchPlaceholder": "Ad, klasör, açıklama veya repoyu arayın", + "lastChecked": "Son kontrol: {{when}}", + "justNow": "şimdi", + "banner": { + "unmanaged": "{{count}} Bu bilgisayardaki beceriler CC Switch tarafından yönetilmiyor.", + "reviewImport": "İnceleyin ve içe aktarın", + "ignore": "Yoksay", + "close": "Reddet" + }, + "filter": { + "all": "Tümü", + "updates": "Güncellemeler var", + "none": "Hiçbir yerde etkinleştirilmedi", + "inApp": "{{app}}'de etkinleştirildi", + "sourceButton": "Kaynak: {{source}}" + }, + "source": { + "local": "Yerel" + }, + "bulk": { + "selected": "{{count}} seçildi", + "enableTo": "Şurada etkinleştir", + "enableToAria": "{{count}}'de seçilen Becerileri etkinleştirin", + "disable": "Şurada devre dışı bırak", + "disableAria": "{{count}}'de seçilen Becerileri kapatın", + "uninstall": "Kaldır" + }, + "piColumnTitle": "Pi, klasörü ~/.pi/agent/skills konumunda mevcut olduğunda bir Beceriyi etkin olarak sayar", + "piHelpTitle": "Pi nasıl etkin olarak sayılır?", + "piHelp": "Klasörün ~/.pi/agent/skills konumunda olup olmadığı.", + "pop": { + "onlyApp": "Yalnızca {{app}}'de etkin olanları göster", + "showAll": "Tüm Becerileri Göster" + }, + "selectAria": "{{name}}'yi seçin", + "selectAllAria": "Gösterilenlerin tümünü seç", + "rowFail": "{{app}}'de etkinleştirme başarısız oldu: {{error}}", + "fixSync": "Eşitleme yöntemini değiştir", + "rowMoreAria": "{{name}} için diğer işlemler", + "copyDir": "Klasör adını kopyala", + "uninstallEllipsis": "Kaldır", + "listLabel": "Yüklü Beceriler", + "noMatch": "“{{query}}” Beceri eşleşmesi yok", + "noFilterMatch": "Filtrelerle eşleşen Beceri yok", + "searchInDiscover": "“{{query}}” için Keşfet'i arayın", + "clearFilters": "Filtreleri temizle", + "loadFailed": "Yüklü Beceriler yüklenemedi", + "emptyTitle": "Henüz Beceri yok", + "emptyBody": "Keşfet'ten bir tane yükleyin veya bu bilgisayarda zaten bulunan Becerileri içe aktarın.", + "goDiscover": "Keşfet'e git", + "importCount": "Bu bilgisayardan içe aktar ({{count}})", + "confirm": { + "uninstallOne": "{{name}} kaldırılsın mı?", + "uninstallMany": "{{count}} Skills kaldırılsın mı?", + "uninstallBody": "Her uygulamadan kaldırılır ve CC Switch’teki ana kopya silinir. Önce {{path}}'ye bir yedekleme kaydedilir.", + "uninstallManyButton": "{{count}}'yi kaldırın", + "updateAll": "{{count}} Becerileri güncellensin mi?", + "updateBody": "Güncelleme, yerel klasörü depo içeriğiyle değiştirir. Yerel düzenlemeler yalnızca yedeklemede ({{path}}) tutulur.", + "updateAllButton": "{{count}}'yi güncelleyin", + "updateListAria": "Güncellenecek beceriler" + }, + "toast": { + "installed": "{{name}}'yi yükledim ve {{apps}}'de etkinleştirdim", + "installedMany": "{{count}} Becerileri yüklendi ve {{apps}}'de etkinleştirildi", + "enableFailed": "{{apps}}'de etkinleştirilemedi; listede işaretlendi", + "uninstalledMany": "Kaldırılan {{count}} Becerileri", + "backupAt": "{{path}}'ye yedeklendi", + "copiedDir": "Kopyalanan klasör adı {{dir}}", + "noUpdatesInSelection": "Seçilen Becerilerin hiçbirinde güncelleme yok", + "selectionAlreadyOn": "{{count}}'nin seçilen Becerileri zaten {{app}}'de etkindir", + "selectionAlreadyOff": "Seçilen {{count}} Becerilerinden hiçbiri {{app}}'de etkin değil", + "disabledSelection": "{{app}}'de {{count}} {{noun}} kapatıldı" + }, + "installTo": { + "prefix": "Şuraya yükleyin:", + "button": "Şuraya yükleyin: {{apps}}", + "many": "{{first}} ve {{count}} daha fazla", + "title": "Yükledikten sonra bu uygulamalarda etkinleştirin", + "helpTitle": "Bu hatırlanıyor mu?", + "help": "Evet, son seçiminiz varsayılandır. Bunu istediğiniz zaman Yüklendi altında değiştirebilirsiniz. ZIP'ten yüklemek ve yedeklemeden geri yüklemek için de bu seçeneği kullanın." + }, + "discover": { + "searchPlaceholder": "Becerileri veya depoları arayın", + "searchAria": "Keşfet’te ara", + "skillsShPlaceholder": "En az 2 karakter, Enter'a basın", + "skillsShAria": "Skills.sh'de arama yapın", + "skillsShHint": "Skills.sh'yi aramak için yukarıya en az 2 karakter yazın ve Enter tuşuna basın.", + "skillsShNone": "skills.sh'de “{{query}}” için hiçbir şey bulunamadı", + "sourceAria": "Kaynağı keşfedin", + "sourceRepos": "Depolar · {{count}}", + "reload": "Kod depolarını yeniden yükle", + "listLabel": "Yükleyebileceğiniz beceriler", + "installed": "Yüklendi · {{count}} uygulamalar", + "installedAria": "{{name}}, {{count}} uygulamalarına yüklenir; Yüklendi altında görüntüleyin", + "dirTaken": "Klasör adı {{name}} ({{source}}) tarafından kullanılıyor", + "installing": "Kurulum", + "installingAria": "{{name}}'yi yükleme", + "installAria": "{{name}}'yi yükleyin", + "retryAria": "{{name}}'yi tekrar yükleyin", + "installFailed": "Yükleme başarısız oldu: {{reason}}", + "loadFailed": "Depolar okunamadı", + "noneRead": "Bu depolardan hiçbir Beceri okunmadı", + "noneReadBody": "{{count}} depolarının hiçbiri Becerileri döndürmedi. Bu bir ağ sorunu veya GitHub hız sınırlaması olabilir.", + "manageRepos": "Depoları yönet", + "allInstalled": "Bu depolardaki her Beceri yüklenir", + "showAll": "Tümünü göster", + "onlyUninstalled": "Yalnızca yüklü değil" + }, + "repos": { + "buttonAll": "Depolar: hepsi", + "buttonSome": "Depolar: {{count}} / {{total}}", + "popoverAria": "Discover tarafından kullanılan depolar", + "enableAria": "Keşfet'te {{repo}}'yi kullanın", + "disabledShort": "Kapalı", + "disabled": "Kapatıldı, Keşfet tarafından kullanılmıyor", + "manage": "Depoları ekleyin veya yönetin", + "openAria": "GitHub’da {{repo}}'yi açın", + "removeAria": "{{repo}} deposunu kaldır", + "readFailed": "Okuma başarısız oldu" + }, + "import": { + "title": "Bu bilgisayardan Becerileri içe aktar", + "helpTitle": "Bu bilgisayarda zaten sayılanlar", + "help": "SKILL.md içeren ancak henüz CC Switch tarafından yönetilmeyen klasörler.", + "lead": "İçe aktarma bunları CC Switch’in klasörüne kopyalar; orijinal dosyalar oldukları gibi kalır.", + "searchPlaceholder": "Ad veya konum arayın", + "searchAria": "İçe aktarılacak becerilerde ara", + "selectAll": "Tümünü seç", + "selectNone": "Hiçbirini seçme", + "foundIn": "Bulunan: {{places}}", + "foundCcSwitch": "CC Switch klasörü", + "appsTitle": "İçe aktardıktan sonra bu uygulamalarda etkinleştirin", + "appsHelpTitle": "Varsayılan olarak hangi uygulamalar işaretlenir", + "appsHelp": "\"Bulundu\" altında listelenen uygulamalar işaretlenir ve yalnızca orada bulunan Becerileri etkinleştirir; işaretlediğiniz herhangi bir uygulama, içe aktarılan her Beceriyi etkinleştirir. Pi, klasörüne göre belirlendiğinden listelenmez.", + "submit": "{{count}}'yi içe aktar" + }, + "restore": { + "lead": "Dosyalarını geri yüklemek için bir yedek seçin ve onu {{apps}}'de etkinleştirilen listeye geri ekleyin (Keşfet'te \"Yükle\" ile ayarlanır)." + }, + "repoFail": { + "title": "{{count}} depoları okunamadı: {{repos}}", + "item": "{{repo}} ({{reason}})", + "discoverBody": "Liste eksik olabilir.", + "updatesBody": "Bu depolardaki beceriler kontrol edilmediğinden sonuçlar eksik olabilir." + }, + "headerUpdates": "{{count}} güncellemeleri", + "headerUpdatesShow": "Yalnızca güncellemeleri olan Becerileri göster", + "headerUpdatesClear": "Tüm Becerileri Göster", + "updateAllCount": "Tümünü güncelle ({{count}})", + "updatingProgress": "{{done}}/{{total}} güncelleniyor…" + }, + "newLayoutNotice": { + "title": "CC Switch yeni bir görünüme sahip", + "body": "Bu sürüm, arayüzü yeniden tasarladığı için birkaç şey değişti:\n• Modlar artık her uygulama sayfasının üst kısmında yer alıyor\n• Kullanım ve Hesaplar kenar çubuğundadır\nDeğişen her şey için sürüm notlarına bakın.", + "viewReleaseNotes": "Sürüm notlarını görüntüle", + "confirm": "Anladım" + }, + "whatsNew": { + "updatedTo": "v{{version}}'ye güncellendi", + "recentTitle": "Son güncellemeler", + "since": "v{{version}}'den bu yana neler değişti?", + "types": { + "new": "Yeni", + "fix": "Düzeltme", + "improve": "Geliştirilmiş" + }, + "versionDetails": "Ayrıntılar", + "showEarlier": "{{count}} önceki sürüm(ler)", + "viewFull": "Değişiklik günlüğünün tamamını görüntüle", + "confirm": "Anladım" + }, + "authCenter": { + "helpTitle": "Hesaplar Nedir?", + "group": { + "helpTitle": "{{service}} hesapları nasıl kullanılır?", + "copilotHelp": "Claude Code ve Claude Desktop'deki GitHub Copilot ön ayarları tarafından kullanılır. Seçilmiş bir hesaba sahip olmayan sağlayıcılar Varsayılan hesabı kullanır.", + "chatgptHelp": "Claude Code ve Claude Desktop'deki ChatGPT ön ayarları ve Codex'nin resmi oturum açma bağlaması tarafından kullanılır. Seçilmiş bir hesaba sahip olmayan sağlayıcılar Varsayılan hesabı kullanır.", + "xaiHelp": "Claude Code, Claude Desktop ve Codex'deki xAI ön ayarları tarafından kullanılır. Seçilmiş bir hesaba sahip olmayan sağlayıcılar Varsayılan hesabı kullanır." + }, + "addAccount": "Hesap ekle", + "groupMenu": "{{service}} için daha fazla eylem", + "accountMenu": "{{login}} için daha fazla eylem", + "removeAll": "Tüm hesapları sil", + "removeAccount": "Hesabı sil", + "setDefault": "Varsayılan olarak ayarla", + "reauth": "Tekrar oturum açın", + "busyHint": "Öncelikle devam eden oturum açma işlemini tamamlayın veya iptal edin", + "default": "Varsayılan", + "needsReauth": "Oturum açılması gerekiyor", + "empty": "Henüz {{service}} hesabına giriş yapılmadı.", + "signedInOn": "{{date}}'de oturum açıldı", + "enterpriseServer": "Kurumsal Sunucu", + "enterpriseDomain": "Kurumsal alan adı", + "enterpriseDomainRequired": "Önce kurumsal etki alanını girin, ör. şirket.ghe.com", + "codexReauthNote": "Oturum açma kimlik bilgisi (id_token) eksik olduğundan Codex yönetilen bağlama için kullanılamaz", + "xaiReauthNote": "Oturum açma kimlik bilgilerinin süresi doldu; bunu kullanan sağlayıcılar çalışmaz", + "statusLoading": "Hesaplar yükleniyor…", + "xaiStatusLoadFailed": "xAI hesapları yüklenemedi. Yeniden deneyin.", + "retry": "Yeniden dene", + "loginFailed": "Oturum açma işlemi tamamlanmadı", + "pending": { + "add": "{{service}} hesabı ekleniyor · Yetkilendirme bekleniyor…", + "login": "{{service}}'de oturum açılıyor · Yetkilendirme bekleniyor…", + "reauth": "{{login}} olarak tekrar oturum açılıyor · Yetkilendirme bekleniyor…", + "enterCode": "Bu kodu tarayıcıya girin:", + "copy": "Kodu kopyala", + "copied": "Kod kopyalandı.", + "open": "Yetkilendirme sayfasını açın", + "note": "Tarayıcınızda yetkilendirme sayfası açık; bitirdiğinizde bu kendi kendine güncellenir. {{service}}'nin kullanım koşullarına dikkat edin." + }, + "toast": { + "added": "{{service}} hesabı eklendi.", + "reauthed": "{{login}} olarak tekrar oturum açıldı." + }, + "quota": { + "updating": "Güncelleniyor…", + "loading": "Kota kontrol ediliyor…", + "refresh": "Kotayı yenile", + "refreshAria": "{{login}} için kotayı yenileyin" + } + } +} diff --git a/src/i18n/locales/zh-TW.json b/src/i18n/locales/zh-TW.json index 57903b861..676da2dfb 100644 --- a/src/i18n/locales/zh-TW.json +++ b/src/i18n/locales/zh-TW.json @@ -809,6 +809,7 @@ "languageOptionTraditionalChinese": "繁體中文", "languageOptionEnglish": "English", "languageOptionJapanese": "日本語", + "languageOptionTurkish": "Türkçe(社群翻譯)", "windowBehavior": "視窗行為", "windowBehaviorHint": "設定視窗最小化與 Claude 外掛程式連動策略。", "launchOnStartup": "開機自動啟動", diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json index cd362d957..a5d7ece3b 100644 --- a/src/i18n/locales/zh.json +++ b/src/i18n/locales/zh.json @@ -809,6 +809,7 @@ "languageOptionTraditionalChinese": "繁體中文", "languageOptionEnglish": "English", "languageOptionJapanese": "日本語", + "languageOptionTurkish": "Türkçe(社区翻译)", "windowBehavior": "窗口行为", "windowBehaviorHint": "配置窗口最小化与 Claude 插件联动策略。", "launchOnStartup": "开机自启", diff --git a/src/types.ts b/src/types.ts index 48d4da2b1..64a271032 100644 --- a/src/types.ts +++ b/src/types.ts @@ -428,7 +428,7 @@ export interface Settings { // User has confirmed the common config first-run notice commonConfigConfirmed?: boolean; // 首选语言(可选,默认中文) - language?: "en" | "zh" | "zh-TW" | "ja"; + language?: "en" | "zh" | "zh-TW" | "ja" | "tr"; // 按档的额度百分比写剩余还是已用(默认剩余;余额、Credits 不受影响) quotaDisplay?: "left" | "used"; diff --git a/tests/components/usageFormat.test.ts b/tests/components/usageFormat.test.ts index 40ffb0f29..62472513c 100644 --- a/tests/components/usageFormat.test.ts +++ b/tests/components/usageFormat.test.ts @@ -26,6 +26,11 @@ describe("usage format helpers", () => { expect(getLocaleFromLanguage("zh-HK")).toBe("zh-TW"); }); + it("resolves Turkish to a Turkish date locale", () => { + expect(getLocaleFromLanguage("tr")).toBe("tr-TR"); + expect(getLocaleFromLanguage("tr-TR")).toBe("tr-TR"); + }); + it("calculates speed from generation time after the first token", () => { expect( getOutputTokensPerSecond({ diff --git a/tests/config/localeCoverage.test.ts b/tests/config/localeCoverage.test.ts index 00a687132..f073a8023 100644 --- a/tests/config/localeCoverage.test.ts +++ b/tests/config/localeCoverage.test.ts @@ -1,4 +1,5 @@ import { describe, expect, it } from "vitest"; +import tr from "@/i18n/locales/tr.json"; import en from "@/i18n/locales/en.json"; import ja from "@/i18n/locales/ja.json"; import zhTW from "@/i18n/locales/zh-TW.json"; @@ -92,3 +93,74 @@ describe("locale coverage", () => { }, ); }); + +// Turkish is a community translation: keys it does not have yet fall back to +// English, so new English strings must never fail CI here. These checks only +// look at strings that already exist in tr.json. +describe("Turkish locale", () => { + it("keeps every existing translation non-empty", () => { + expect( + [...flattenStrings(tr)].filter( + ([key, value]) => reference.get(key)?.trim() && !value.trim(), + ), + ).toEqual([]); + }); + + it("preserves interpolation variables in existing translations", () => { + expect( + [...flattenStrings(tr)] + .filter(([key, value]) => { + const expected = reference.get(key); + return ( + expected !== undefined && + interpolationVariables(value).join("\0") !== + interpolationVariables(expected).join("\0") + ); + }) + .map(([key]) => key), + ).toEqual([]); + }); + + it("preserves protocol fields, configuration literals, and commands", () => { + const translations = flattenStrings(tr); + const exactLiterals = [ + "opencode.extraOptionKeyPlaceholder", + "opencode.modelExtraFieldKeyPlaceholder", + "opencode.modelOptionKeyPlaceholder", + "opencode.modelOptionValuePlaceholder", + "opencode.providerKeyPlaceholder", + "openclaw.providerKeyPlaceholder", + "hermes.form.providerKeyPlaceholder", + "grokBuild.rawConfig", + "codexConfig.configToml", + "providerPreset.plan.aksk", + "mcp.envPlaceholder", + "mcp.wizard.envPlaceholder", + "skills.searchSource.skillssh", + ]; + + for (const key of exactLiterals) { + expect(translations.get(key), key).toBe(reference.get(key)); + } + + expect(translations.get("usageScript.fieldRemaining")).toContain( + "• remaining:", + ); + expect(translations.get("usageScript.fieldUnit")).toContain("• unit:"); + expect(translations.get("usageScript.fieldTotal")).toContain("• total:"); + expect(translations.get("usageScript.fieldUsed")).toContain("• used:"); + expect(translations.get("usageScript.fieldExtra")).toContain("• extra:"); + expect(translations.get("settings.s3Sync.presets.r2Hint")).toContain( + "'auto'", + ); + expect(translations.get("settings.s3Sync.presets.cosHint")).toContain( + "ap-beijing", + ); + expect(translations.get("hermes.webui.launchConfirmMessage")).toContain( + "pip install hermes-agent[web]", + ); + expect(translations.get("prompts.contentPlaceholderHermes")).toMatch( + /^# SOUL\.md\n/, + ); + }); +}); diff --git a/tests/hooks/useSettingsForm.test.tsx b/tests/hooks/useSettingsForm.test.tsx index 2dc25a4a3..ded9d1c33 100644 --- a/tests/hooks/useSettingsForm.test.tsx +++ b/tests/hooks/useSettingsForm.test.tsx @@ -58,6 +58,17 @@ describe("useSettingsForm Hook", () => { expect(changeLanguageSpy).toHaveBeenCalledWith("en"); }); + it("preserves Turkish from server settings", async () => { + useSettingsQueryMock.mockReturnValue({ + data: { language: "tr" }, + isLoading: false, + }); + const { result } = renderHook(() => useSettingsForm()); + await waitFor(() => expect(result.current.settings?.language).toBe("tr")); + expect(result.current.initialLanguage).toBe("tr"); + expect(changeLanguageSpy).toHaveBeenCalledWith("tr"); + }); + it("should support japanese language preference from server data", async () => { useSettingsQueryMock.mockReturnValue({ data: { diff --git a/tests/i18n/syncLanguageFromSettings.test.ts b/tests/i18n/syncLanguageFromSettings.test.ts index aadee9dfe..887444b1c 100644 --- a/tests/i18n/syncLanguageFromSettings.test.ts +++ b/tests/i18n/syncLanguageFromSettings.test.ts @@ -27,6 +27,13 @@ describe("syncLanguageFromSettings", () => { expect(localStorage.getItem("language")).toBe("zh-TW"); }); + it("restores Turkish and its translated labels from saved settings", async () => { + await i18n.changeLanguage("en"); + syncLanguageFromSettings("tr"); + expect(i18n.language).toBe("tr"); + expect(localStorage.getItem("language")).toBe("tr"); + }); + it("leaves the current language alone when nothing is saved", async () => { await i18n.changeLanguage("en"); diff --git a/tests/i18n/turkishDetection.test.ts b/tests/i18n/turkishDetection.test.ts new file mode 100644 index 000000000..1ac0a870d --- /dev/null +++ b/tests/i18n/turkishDetection.test.ts @@ -0,0 +1,33 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; + +let loadedI18n: + | { changeLanguage: (language: string) => Promise } + | undefined; + +beforeEach(() => { + vi.resetModules(); + localStorage.clear(); +}); +afterEach(async () => { + await loadedI18n?.changeLanguage("zh"); + loadedI18n = undefined; + vi.unstubAllGlobals(); + localStorage.clear(); +}); + +describe("Turkish language detection", () => { + it.each(["tr", "tr-TR"])("detects %s on first launch", async (language) => { + vi.stubGlobal("navigator", { language }); + const { default: i18n } = await import("@/i18n"); + loadedI18n = i18n; + expect(i18n.language).toBe("tr"); + expect(i18n.t("common.save")).toBe("Kaydet"); + }); + it("keeps a saved language instead of overriding it with the system language", async () => { + localStorage.setItem("language", "en"); + vi.stubGlobal("navigator", { language: "tr-TR" }); + const { default: i18n } = await import("@/i18n"); + loadedI18n = i18n; + expect(i18n.language).toBe("en"); + }); +});