{
  "app": {
    "title": "CC Switch",
    "description": "Claude Code・Codex・Gemini CLI のためのオールインワンアシスタント"
  },
  "common": {
    "add": "追加",
    "edit": "編集",
    "delete": "削除",
    "save": "保存",
    "saving": "保存中...",
    "cancel": "キャンセル",
    "confirm": "確認",
    "close": "閉じる",
    "done": "完了",
    "settings": "設定",
    "about": "バージョン情報",
    "version": "バージョン",
    "loading": "読み込み中...",
    "notInstalled": "未インストール",
    "success": "成功",
    "error": "エラー",
    "unknown": "不明",
    "enterValidValue": "有効な値を入力してください",
    "clear": "クリア",
    "format": "フォーマット",
    "formatSuccess": "整形しました",
    "formatError": "整形に失敗しました: {{error}}",
    "copy": "コピー",
    "view": "表示",
    "back": "戻る",
    "refresh": "更新",
    "refreshing": "更新中...",
    "import": "インポート",
    "all": "すべて",
    "search": "検索",
    "reset": "リセット",
    "actions": "操作",
    "deleting": "削除中...",
    "auto": "自動",
    "enabled": "有効",
    "notSet": "未設定"
  },
  "firstRunNotice": {
    "title": "CC Switch へようこそ",
    "bodyDefault": "CC Switch は Claude Code / Codex / Gemini CLI の複数プロバイダーをワンクリックで切り替えられるツールです。すでにこれらのツールを設定済みの場合、CC Switch は現在の設定を「default」という名前のプロバイダーとして自動的に保存するので、既存の設定が失われることはありません。",
    "bodyOfficial": "リストには「Official（公式）」プリセットも用意されており、公式バージョンに戻したくなったらクリックするだけで切り替えられます。切り替える前に現在の設定は自動で default にバックアップされるので、自由に行き来できます。これが CC Switch の仕組みです 😊",
    "confirm": "了解しました"
  },
  "apiKeyInput": {
    "placeholder": "API Key を入力",
    "show": "API Key を表示",
    "hide": "API Key を隠す"
  },
  "jsonEditor": {
    "mustBeObject": "設定はオブジェクト形式の JSON で入力してください（配列や他の型は不可）",
    "invalidJson": "JSON 形式が正しくありません"
  },
  "commonConfig": {
    "guideTitle": "共通設定スニペットとは？",
    "guidePurpose": "異なるプロバイダー間でプラグインや環境変数などの非機密設定を共有するための機能です。プロバイダーを切り替えてもこれらの設定は失われません。",
    "guideUsage": "使い方：① 「編集内容から抽出」をクリックして共通部分を保存  ② 新規プロバイダー作成時に「共通設定を適用」をチェック",
    "guideReExtract": "新しいプラグインや Hook をインストールした場合は、共通設定を再抽出して他のプロバイダーに同期してください。",
    "guideReassurance": "ご安心ください：元の設定はデフォルトプロバイダーに安全に保存されており、失われることはありません。",
    "emptyTitle": "共通設定スニペットがまだありません",
    "emptyHint": "下の「編集内容から抽出」ボタンをクリックして、現在の設定から再利用可能な部分を抽出してください"
  },
  "claudeConfig": {
    "configLabel": "Claude Code settings.json (JSON) *",
    "writeCommonConfig": "共通設定を適用",
    "editCommonConfig": "共通設定を編集",
    "editCommonConfigTitle": "共通設定スニペットを編集",
    "commonConfigHint": "「共通設定を適用」がオンのとき settings.json にマージされます",
    "fullSettingsHint": "Claude Code の settings.json 全文",
    "extractFromCurrent": "編集内容から抽出",
    "extractNoCommonConfig": "編集内容から抽出できる共通設定がありません",
    "extractFailed": "抽出に失敗しました: {{error}}",
    "saveFailed": "保存に失敗しました: {{error}}",
    "hideAttribution": "AI署名を非表示",
    "enableTeammates": "Teammates モード",
    "enableToolSearch": "Tool Search を有効化",
    "effortMax": "最大強度思考",
    "disableAutoUpgrade": "自動アップグレードを無効化"
  },
  "header": {
    "viewOnGithub": "GitHub で見る",
    "toggleDarkMode": "ダークモードに切り替え",
    "toggleLightMode": "ライトモードに切り替え",
    "addProvider": "プロバイダーを追加",
    "switchToChinese": "中国語に切り替え",
    "switchToEnglish": "英語に切り替え",
    "enterEditMode": "編集モードに入る",
    "exitEditMode": "編集モードを終了",
    "windowMinimize": "ウィンドウを最小化",
    "windowMaximize": "ウィンドウを最大化",
    "windowRestore": "ウィンドウを元に戻す",
    "windowClose": "ウィンドウを閉じる"
  },
  "provider": {
    "connectivityCheck": "接続チェック",
    "tabProvider": "プロバイダー",
    "tabUniversal": "統一プロバイダー",
    "noProviders": "まだプロバイダーがありません",
    "noProvidersDescription": "既存の設定がある場合は「現在の設定をインポート」をクリックしてください。すべてのデータが default プロバイダーに安全に保存されます",
    "noProvidersDescriptionSnippet": "API キーとリクエスト URL 以外のデータ（プラグインなど）は共通設定スニペットに保存され、プロバイダー間で共有できます",
    "importCurrent": "現在の設定をインポート",
    "importFromClaude": "Claude Code の既存プロバイダーをインポート",
    "importCurrentDescription": "現在使用中の設定をデフォルトプロバイダーとしてインポート",
    "currentlyUsing": "現在使用中",
    "enable": "有効化",
    "inUse": "使用中",
    "blockedByProxyHint": "プロキシ引き継ぎモードでは公式プロバイダーに切り替えできません",
    "editProvider": "プロバイダーを編集",
    "editProviderHint": "保存すると現在のプロバイダーにすぐ反映されます。",
    "deleteProvider": "プロバイダーを削除",
    "addNewProvider": "新しいプロバイダーを追加",
    "addFooterHint": "💡 プリセットを選んだら、下のフィールド（API Key など）を入力してください",
    "addClaudeProvider": "Claude Code プロバイダーを追加",
    "addCodexProvider": "Codex プロバイダーを追加",
    "addGeminiProvider": "Gemini プロバイダーを追加",
    "addOpenCodeProvider": "OpenCode プロバイダーを追加",
    "addToConfig": "追加",
    "removeFromConfig": "削除",
    "setAsDefault": "デフォルトに設定",
    "isDefault": "現在のデフォルト",
    "inConfig": "追加済み",
    "addProviderHint": "一覧にすばやく切り替えられるよう、ここに情報を入力してください。",
    "editClaudeProvider": "Claude Code プロバイダーを編集",
    "editCodexProvider": "Codex プロバイダーを編集",
    "configError": "設定エラー",
    "notConfigured": "公式サイト用に未設定",
    "applyToClaudePlugin": "Claude プラグインに適用",
    "removeFromClaudePlugin": "Claude プラグインから解除",
    "dragToReorder": "ドラッグで並べ替え",
    "dragHandle": "ドラッグで並べ替え",
    "searchPlaceholder": "名前・メモ・URLで検索...",
    "searchAriaLabel": "プロバイダーを検索",
    "searchScopeHint": "名前・メモ・URL を対象に検索します。",
    "searchCloseHint": "Esc で閉じる",
    "searchCloseAriaLabel": "検索を閉じる",
    "noSearchResults": "一致するプロバイダーがありません。",
    "duplicate": "複製",
    "sortUpdateFailed": "並び順の更新に失敗しました",
    "configureUsage": "利用状況を設定",
    "officialPartner": "公式パートナー",
    "managedByHermes": "Hermes 管理",
    "managedByHermesHint": "Hermes の providers: dict で定義されています。Hermes Web UI で編集または削除してください。",
    "openTerminal": "ターミナルを開く",
    "terminalOpened": "ターミナルを開きました",
    "terminalOpenFailed": "ターミナルを開けませんでした",
    "name": "プロバイダー名",
    "namePlaceholder": "例: Claude Official",
    "websiteUrl": "Web サイト URL",
    "notes": "メモ",
    "notesPlaceholder": "例: 会社用アカウント",
    "configJson": "Config JSON",
    "writeCommonConfig": "共通設定を適用",
    "editCommonConfigButton": "共通設定を編集",
    "configJsonHint": "Claude Code の設定をすべて入力してください",
    "editCommonConfigTitle": "共通設定スニペットを編集",
    "editCommonConfigHint": "共通設定スニペットは、この機能をオンにしたすべてのプロバイダーへマージされます",
    "addProvider": "プロバイダーを追加",
    "sortUpdated": "並び順を更新しました",
    "usageSaved": "利用状況の設定を保存しました",
    "usageSaveFailed": "利用状況設定の保存に失敗しました",
    "geminiConfig": "Gemini 設定",
    "geminiConfigHint": ".env 形式で Gemini を設定してください",
    "form": {
      "gemini": {
        "model": "モデル",
        "oauthTitle": "OAuth 認証モード",
        "oauthHint": "Google 公式は OAuth 個人認証を使用するため API Key は不要です。初回利用時にブラウザが開きます。",
        "apiKeyPlaceholder": "Gemini API Key を入力"
      }
    },
    "duplicateLiveIdsLoadFailed": "設定内のプロバイダー識別子を読み込めませんでした。設定を修正してから再度お試しください"
  },
  "claudeCode": {
    "needsRouting": "ルーティングが必要",
    "noRoutingSupport": "ルーティング非対応"
  },
  "codex": {
    "needsRouting": "ルーティングが必要",
    "noRoutingSupport": "ルーティング非対応",
    "officialRouting": "公式アカウントルーティング",
    "nativeLogin": "Codex ログイン"
  },
  "claudeDesktop": {
    "officialNotice": "Claude Desktop の公式プロバイダーは内蔵の 1P サインインを使用します。API キーやエンドポイントの設定は不要です。",
    "mode": "モデル処理方式",
    "modeDirect": "直結",
    "modeProxy": "ルーティング必要",
    "modelMappingToggle": "モデルマッピングが必要",
    "modelMappingOffHint": "プロバイダーが Claude Desktop の三つの役割 ID（claude-sonnet-* / claude-opus-* / claude-haiku-*）を受け付ける場合のみ直結できます。それ以外のモデル名（claude-3-5-sonnet-… などの旧式 ID を含む）はこのスイッチを有効にしてマッピングを使ってください。",
    "modelMappingOnHint": "Claude Desktop は claude-sonnet-* / claude-opus-* / claude-haiku-* の三つの役割 ID のみ受け付けます。有効にすると CC Switch がこの三役割をプロバイダーの実モデルにマッピングし、使用中はローカルルーティングを起動したままにします。",
    "routeMapTitle": "モデルマッピング",
    "routeMapHint": "Sonnet・Opus・Haiku の各区分に実際のリクエストモデルを入力してください。DeepSeek や Kimi などのブランド名はメニュー表示名に入れられます。空欄の区分は Sonnet（または最初に入力した区分）のモデルを引き継ぐため、サブ agent が呼び出す Haiku が常に利用可能になります。",
    "routeModelLabel": "モデル役割",
    "routeRoleSonnet": "Sonnet",
    "routeRoleOpus": "Opus",
    "routeRoleFable": "Fable",
    "routeRoleHaiku": "Haiku",
    "labelOverrideLabel": "メニュー表示名",
    "upstreamModelLabel": "リクエストモデル",
    "supports1mLabel": "1M 対応を宣言",
    "supports1mShort": "1M",
    "directModelListTitle": "Claude Desktop モデルを手動指定（高度・任意）",
    "directModelListCollapsedHint": "ネイティブ Claude モデルのプロバイダーでは通常不要です。Claude Desktop が /v1/models を自動取得します。",
    "directModelListHint": "プロバイダーの /v1/models が使えない、または Claude Desktop が認識できる Sonnet / Opus / Haiku モデル ID を返さない場合だけ入力してください。1M をオンにすると Claude Desktop に 1M コンテキスト対応を宣言します。",
    "directModelInvalid": "直結モデルは Claude Desktop が認識できる Sonnet / Opus / Haiku モデル ID を使う必要があります",
    "addModel": "モデルを追加",
    "addRoute": "モデルを追加",
    "routeInvalid": "モデル役割を選択し、リクエストモデルを入力してください",
    "routesRequired": "少なくとも 1 つのモデルマッピングが必要です",
    "statusTitle": "Claude Desktop 設定の確認が必要です",
    "statusUnsupported": "このプラットフォームでは Claude Desktop 3P 設定の書き込みはまだサポートされていません。",
    "statusStaleRawModels": "Claude Desktop profile に Sonnet / Opus / Haiku の役割ファミリー以外のモデル ID が含まれています。新しい Claude Desktop では拒否される可能性があります。現在のプロバイダーへ再度切り替えると修復できます。",
    "statusMissingRouteMappings": "現在のプロバイダーはモデルマッピングを有効にしていますが、有効なルートがありません。プロバイダーを編集し、少なくとも 1 つのマッピングを追加してください。",
    "statusGatewayTokenMissing": "ローカルルーティング token がまだ生成されていません。このプロバイダーへ再度切り替えると新しい token が書き込まれます。",
    "statusBaseUrlMismatch": "Claude Desktop profile の URL が現在のプロバイダーと一致しません。現在: {{actual}}、期待値: {{expected}}。現在のプロバイダーへ再度切り替えると修復できます。",
    "route": {
      "tooltip": {
        "active": "Claude Desktop ローカルルーティングは起動中です - {{address}}:{{port}}",
        "inactive": "モデルマッピングや形式変換が必要なプロバイダー向けに Claude Desktop ローカルルーティングを起動します。設定アドレス: {{address}}:{{port}}"
      },
      "stopBlockedByTakeover": "別のアプリがプロキシテイクオーバーを使用しています。設定で該当アプリのテイクオーバーを無効にしてから、ローカルルーティングを停止してください。"
    }
  },
  "notifications": {
    "providerAdded": "プロバイダーを追加しました",
    "providerSaved": "プロバイダー設定を保存しました",
    "providerDeleted": "プロバイダーを削除しました",
    "switchSuccess": "切り替え成功！",
    "codexRestartRequired": "切り替えました。反映するにはクライアントを再起動してください",
    "grokBuildRestartRequired": "切り替えました。反映するには Grok Build を再起動してください",
    "claudeDesktopRestartRequired": "切り替えました。反映するには Claude Desktop を再起動してください",
    "claudeDesktopProxyRestartRequired": "切り替えました。CC Switch を起動したまま Claude Desktop を再起動してください",
    "addToConfigSuccess": "設定に追加しました",
    "removeFromConfigSuccess": "設定から削除しました",
    "switchFailedTitle": "切り替えに失敗しました",
    "switchFailed": "切り替えに失敗しました: {{error}}",
    "autoImported": "既存設定からデフォルトプロバイダーを自動作成しました",
    "addFailed": "プロバイダーの追加に失敗しました: {{error}}",
    "saveFailed": "保存に失敗しました: {{error}}",
    "saveFailedGeneric": "保存に失敗しました。もう一度お試しください",
    "appliedToClaudePlugin": "Claude プラグインに適用しました",
    "removedFromClaudePlugin": "Claude プラグインから削除しました",
    "syncClaudePluginFailed": "Claude プラグインとの同期に失敗しました",
    "skipClaudeOnboardingFailed": "Claude Code の初回確認スキップに失敗しました",
    "clearClaudeOnboardingSkipFailed": "Claude Code の初回確認の復元に失敗しました",
    "updateSuccess": "プロバイダーを更新しました",
    "updateFailed": "プロバイダーの更新に失敗しました: {{error}}",
    "deleteSuccess": "プロバイダーを削除しました",
    "deleteFailed": "プロバイダーの削除に失敗しました: {{error}}",
    "settingsSaved": "設定を保存しました",
    "settingsSaveFailed": "設定の保存に失敗しました: {{error}}",
    "proxyRequiredForSwitch": "このプロバイダーは{{reason}}、ルーティングサービスが必要です。先にルーティングを起動してください",
    "proxyReasonCopilot": "GitHub Copilot を Claude プロバイダーとして使用しており",
    "proxyReasonOpenAIChat": "OpenAI Chat API フォーマットを使用しており",
    "proxyReasonOpenAIResponses": "OpenAI Responses API フォーマットを使用しており",
    "proxyReasonAnthropicMessages": "Anthropic Messages API フォーマットを使用しており",
    "proxyReasonFullUrl": "完全 URL 接続モードが有効になっており",
    "proxyReasonManagedOAuth": "マネージド OAuth ログイン（トークンはローカルルーティングが注入）を使用しており",
    "proxyReasonRoutingRequired": "リクエスト処理にローカルルーティングが必要であり",
    "openAIFormatHint": "このプロバイダーは OpenAI 互換フォーマットを使用しており、ルーティングサービスの有効化が必要です",
    "copilotProxyHint": "GitHub Copilot を Claude プロバイダーとして使用する場合、ローカルルーティングが常に必要です。ルーティングは現在のモデルに応じて Chat Completions または Responses を自動的に選択します。",
    "openLinkFailed": "リンクを開けませんでした",
    "openclawModelsRegistered": "モデルが /model リストに登録されました",
    "openclawDefaultModelSet": "デフォルトモデルに設定しました",
    "openclawDefaultModelSetFailed": "デフォルトモデルの設定に失敗しました",
    "openclawNoModels": "モデルが設定されていません",
    "backfillWarning": "切り替え成功しましたが、前のプロバイダーへの設定保存に失敗しました",
    "windowControlFailed": "ウィンドウ操作に失敗しました: {{error}}",
    "officialBlockedByProxy": "ローカルルーティングモード中は公式プロバイダーに切り替えできません。ルーティング経由で公式 API にアクセスするとアカウントが停止される可能性があります。",
    "proxyOfficialWarning": "現在のプロバイダー {{name}} は公式です。ローカルルーティングを使用する前にサードパーティプロバイダーに切り替えてください。",
    "proxyReasonClaudeDesktop": "Claude Desktop ローカルルーティングモードを使用中"
  },
  "confirm": {
    "deleteProvider": "プロバイダーを削除",
    "deleteProviderMessage": "プロバイダー「{{name}}」を削除してもよろしいですか？この操作は元に戻せません。",
    "removeProvider": "プロバイダーを解除",
    "removeProviderMessage": "プロバイダー「{{name}}」を設定から解除してもよろしいですか？\n\n解除後、このプロバイダーは無効になりますが、設定データは CC Switch に保持されます。いつでも再追加できます。",
    "proxy": {
      "title": "ローカルルーティングの有効化",
      "message": "ローカルルーティングは上級機能です。有効にする前に、その仕組みを理解していることをご確認ください。\n\n適切な設定方法については、関連ドキュメントまたはプロバイダーにご相談ください。",
      "confirm": "理解しました、有効にする"
    },
    "failover": {
      "title": "フェイルオーバーの有効化",
      "message": "フェイルオーバーは上級機能です。有効にする前に、その仕組みを理解していることをご確認ください。\n\nフェイルオーバーキューでプロバイダーの優先順位を先に設定することをお勧めします。",
      "confirm": "理解しました、有効にする"
    },
    "unifyCodexHistory": {
      "title": "Codex セッション履歴を統一",
      "message": "オンにすると、公式サブスクリプションとサードパーティが同じセッション履歴リストを共有します。注意：プロバイダーをまたいで古いセッションを再開すると、encrypted_content を相手のバックエンドが復号できず失敗する場合があります。\n\n既存の公式セッション履歴を共有リストへ移行することもできます（移行前に ~/.cc-switch/backups へ自動バックアップされ、オフにする際に復元を選択できます）。",
      "migrateExisting": "既存の公式セッション履歴も移行する",
      "confirm": "理解しました、オンにする"
    },
    "unifyCodexHistoryOff": {
      "title": "セッション履歴の統一をオフにする",
      "message": "オフにすると、公式サブスクリプションとサードパーティはそれぞれ独立した履歴リストに戻ります。オン期間中に作成されたセッションは提供元を判別できないため、サードパーティの履歴に残り、公式サブスクリプションからは見えなくなります。",
      "restoreBackup": "オンにした際に移行した公式セッションを公式履歴へ復元する（バックアップから正確に復元）",
      "confirm": "オフにする"
    },
    "usage": {
      "title": "使用量クエリの設定",
      "message": "使用量クエリにはカスタムスクリプトまたは API パラメータが必要です。プロバイダーから必要な情報を取得していることをご確認ください。\n\n設定方法が不明な場合は、プロバイダーのドキュメントを先にご確認ください。",
      "confirm": "理解しました、設定する"
    },
    "autoSync": {
      "title": "自動同期を有効にする",
      "message": "自動同期を有効にすると、データベースの変更ごとに WebDAV サーバーへ自動アップロードされます。\n\nネットワークトラフィックが大幅に増加する可能性があります。ネットワーク環境と WebDAV サービスが頻繁なデータ転送に対応できることをご確認ください。",
      "confirm": "理解しました、有効にする"
    },
    "commonConfig": {
      "title": "共通設定について",
      "message": "「共通設定スニペット」を使うと、プラグインや環境変数などの設定を異なるプロバイダー間で共有でき、切り替え時に失われることがありません。\n\n使い方：\n① プロバイダーを編集 →「共通設定を編集」→「編集内容から抽出」\n② 新規プロバイダー作成時に「共通設定を適用」をチェック（デフォルトでオン）\n\n新しいプラグインや Hook をインストールした場合は、共通設定を再抽出してください。",
      "confirm": "わかりました"
    }
  },
  "settings": {
    "title": "設定",
    "general": "一般",
    "tabGeneral": "一般",
    "tabAuth": "認証",
    "tabAdvanced": "詳細",
    "tabProxy": "ルーティング",
    "authCenter": {
      "title": "OAuth 認証センター",
      "description": "Claude Code で他のサブスクリプションをご利用いただけます。コンプライアンスリスクにご注意ください。",
      "beta": "Beta",
      "copilotDescription": "GitHub Copilot アカウントを管理します",
      "codexOauthDescription": "ChatGPT アカウントを管理します",
      "xaiOauthDescription": "xAI / Grok アカウントを管理します"
    },
    "advanced": {
      "configDir": {
        "title": "設定ディレクトリ",
        "description": "Claude、Codex、Gemini の設定保存パスを管理"
      },
      "proxy": {
        "title": "ローカルルーティング",
        "description": "ルーティングサービスの切り替え、ステータスとポート情報を表示",
        "enableFeature": "メインページにルーティング切り替えを表示",
        "enableFeatureDescription": "有効にすると、メインページ上部にルーティングとフェイルオーバーの切り替えが表示されます",
        "enableFailoverToggle": "メインページにフェイルオーバー切り替えを表示",
        "enableFailoverToggleDescription": "有効にすると、メインページ上部にフェイルオーバー切り替えが独立して表示されます",
        "running": "実行中",
        "stopped": "停止中"
      },
      "connectivityCheck": {
        "title": "接続チェック設定",
        "description": "プロバイダー接続チェックのタイムアウト、リトライ、低速判定しきい値を設定"
      },
      "failover": {
        "title": "自動フェイルオーバー",
        "description": "フェイルオーバーキューとサーキットブレーカー戦略を設定"
      },
      "pricing": {
        "title": "コスト計算",
        "description": "各モデルのトークン料金ルールを管理"
      },
      "globalProxy": {
        "title": "グローバル送信プロキシ",
        "description": "CC Switch が外部 API にアクセスする際のプロキシを設定"
      },
      "data": {
        "title": "データ管理",
        "description": "ローカル設定データのインポートとエクスポート"
      },
      "backup": {
        "title": "バックアップと復元",
        "description": "自動バックアップの管理、データベーススナップショットの表示と復元"
      },
      "cloudSync": {
        "title": "クラウド同期",
        "description": "WebDAV でデバイス間のデータを同期"
      },
      "rectifier": {
        "title": "整流器",
        "description": "API リクエストの互換性問題を自動修正",
        "enabled": "整流器を有効化",
        "enabledDescription": "マスタースイッチ、オフにするとすべての整流機能が無効になります",
        "requestGroup": "リクエスト整流",
        "responseGroup": "レスポンス整流",
        "thinkingSignature": "Thinking 署名整流",
        "thinkingSignatureDescription": "Anthropic タイプのプロバイダーが thinking 署名の非互換性や不正なリクエストエラーを返した場合、互換性のない thinking 関連ブロックを自動削除し、同じプロバイダーで 1 回リトライします",
        "thinkingBudget": "Thinking Budget 整流",
        "thinkingBudgetDescription": "Anthropic タイプのプロバイダーが budget_tokens 制約エラー（例: 1024 以上）を返した場合、thinking を enabled に正規化し、thinking 予算を 32000 に設定し、必要に応じて max_tokens を 64000 に引き上げて 1 回リトライします",
        "mediaFallback": "非対応画像フォールバック",
        "mediaFallbackDescription": "プロバイダーが画像入力に対応していない場合（テキストのみの能力が宣言されている、または上流が画像非対応エラーを返した場合）、画像ブロックを [Unsupported Image] マーカーに自動置換し、会話を中断させません",
        "mediaHeuristic": "テキスト専用モデルの事前判定",
        "mediaHeuristicDescription": "送信前に、内蔵の確認済みテキスト専用モデル登録に基づいて画像を除去します。オフにしても無効になるのはプロキシの登録ベース事前処理だけで、宣言済みテキスト専用モデルの処理と上流エラー時のフォールバックは残り、Codex モデルカタログの能力宣言は変わりません"
      },
      "optimizer": {
        "title": "Bedrock リクエストオプティマイザー",
        "description": "リクエスト送信前に Thinking と Cache の設定を自動最適化（Bedrock プロバイダーのみ有効）",
        "enabled": "オプティマイザーを有効化",
        "thinkingOptimizer": "Thinking 最適化",
        "thinkingOptimizerDescription": "Opus/Sonnet に Adaptive Thinking を自動的に有効化し、レガシーモデルに Extended Thinking を注入",
        "cacheInjection": "Cache 注入",
        "cacheInjectionDescription": "リクエストの重要な位置に標準の 5 分間 Cache ブレークポイントを自動注入し、重複トークンの課金を削減"
      },
      "logConfig": {
        "title": "アプリ診断ログ",
        "description": "アプリ診断ログの出力レベルを制御",
        "enabled": "診断ログを有効化",
        "enabledDescription": "cc-switch.log を制御します。リクエスト使用量記録と crash.log には影響しません",
        "level": "ログレベル",
        "levelDescription": "出力する最小ログレベルを設定",
        "levels": {
          "error": "エラー",
          "warn": "警告",
          "info": "情報",
          "debug": "デバッグ",
          "trace": "トレース"
        },
        "levelHint": "ログレベルの説明：",
        "levelDesc": {
          "error": "重大なエラーのみ",
          "warn": "エラー + 警告",
          "info": "一般的な操作情報（デフォルト）",
          "debug": "SSE ストリームとリクエスト/レスポンスを含む詳細情報",
          "trace": "すべてのログ、最も詳細"
        }
      }
    },
    "language": "言語",
    "languageHint": "切り替えるとすぐにプレビューされ、保存後に永続化されます。",
    "theme": "テーマ",
    "themeHint": "アプリのテーマを選択します。すぐに反映されます。",
    "themeLight": "ライト",
    "themeDark": "ダーク",
    "themeSystem": "システム",
    "importExport": "SQL インポート/エクスポート",
    "importExportHint": "移行や復元用にデータベースの SQL バックアップをインポート/エクスポートします（インポートは CC Switch がエクスポートしたバックアップのみ対応）。",
    "exportConfig": "SQL バックアップをエクスポート",
    "selectConfigFile": "SQL ファイルを選択",
    "noFileSelected": "ファイルが選択されていません。",
    "import": "インポート",
    "importing": "インポート中...",
    "importSuccess": "インポート成功！",
    "importFailed": "インポート失敗",
    "syncLiveFailed": "インポートしましたが、現在のプロバイダーへの同期に失敗しました。手動で再選択してください。",
    "importPartialSuccess": "設定はインポートされましたが、現在のプロバイダーへの同期に失敗しました。",
    "importPartialHint": "ライブ設定を更新するため、もう一度プロバイダーを選択してください。",
    "configExported": "設定をエクスポートしました:",
    "exportFailed": "エクスポートに失敗しました",
    "selectFileFailed": "有効な SQL バックアップファイルを選択してください",
    "configCorrupted": "SQL ファイルが壊れているか形式が無効な可能性があります",
    "backupId": "バックアップ ID",
    "backupManager": {
      "title": "データベースバックアップ",
      "description": "以前の状態に復元するための自動データベーススナップショット",
      "empty": "バックアップはまだありません",
      "restore": "復元",
      "restoring": "復元中...",
      "confirmTitle": "バックアップの復元を確認",
      "confirmMessage": "このバックアップを復元すると現在のデータベースが上書きされます。安全バックアップが先に作成されます。",
      "restoreSuccess": "復元成功！安全バックアップが作成されました",
      "restoreFailed": "復元に失敗しました",
      "safetyBackupId": "安全バックアップID",
      "intervalLabel": "自動バックアップ間隔",
      "retainLabel": "バックアップ保持数",
      "intervalDisabled": "無効",
      "intervalHours": "{{hours}} 時間",
      "intervalDays": "{{days}} 日",
      "rename": "名前変更",
      "renameSuccess": "バックアップの名前を変更しました",
      "renameFailed": "名前変更に失敗しました",
      "namePlaceholder": "新しい名前を入力",
      "createBackup": "今すぐバックアップ",
      "creating": "バックアップ中...",
      "createSuccess": "バックアップが作成されました",
      "createFailed": "バックアップに失敗しました",
      "delete": "削除",
      "deleting": "削除中...",
      "deleteSuccess": "バックアップを削除しました",
      "deleteFailed": "削除に失敗しました",
      "deleteConfirmTitle": "バックアップの削除を確認",
      "deleteConfirmMessage": "このバックアップは完全に削除されます。この操作は取り消せません。"
    },
    "webdavSync": {
      "title": "WebDAV クラウド同期",
      "description": "WebDAV を使ってデバイス間でデータベースとスキル設定を同期します。",
      "baseUrl": "WebDAV サーバー URL",
      "baseUrlPlaceholder": "https://example.com/remote.php/dav/files/user",
      "username": "ユーザー名",
      "usernamePlaceholder": "メールアドレスまたはユーザー名",
      "password": "パスワード",
      "passwordPlaceholder": "アプリパスワード",
      "remoteRoot": "リモートルートディレクトリ",
      "profile": "同期プロファイル名",
      "autoSync": "自動同期",
      "autoSyncHint": "有効にすると、データベース変更のたびに WebDAV へ自動アップロードします。",
      "test": "接続テスト",
      "testing": "テスト中...",
      "testSuccess": "接続成功",
      "testFailed": "接続失敗：{{error}}",
      "save": "設定を保存",
      "saving": "保存中...",
      "saveFailed": "設定の保存に失敗しました：{{error}}",
      "upload": "クラウドにアップロード",
      "uploading": "アップロード中...",
      "uploadSuccess": "WebDAV にアップロードしました",
      "uploadFailed": "アップロードに失敗しました：{{error}}",
      "autoSyncFailedToast": "自動同期に失敗しました：{{error}}",
      "download": "クラウドからダウンロード",
      "downloading": "ダウンロード中...",
      "downloadSuccess": "WebDAV からダウンロード・復元しました",
      "downloadFailed": "ダウンロードに失敗しました：{{error}}",
      "lastSync": "前回の同期：{{time}}",
      "autoSyncLastErrorTitle": "前回の自動同期に失敗しました",
      "autoSyncLastErrorHint": "ネットワークまたは WebDAV 設定を確認してください。次回の変更時に自動再試行されます。",
      "missingUrl": "WebDAV サーバー URL を入力してください",
      "presets": {
        "label": "サービス",
        "jianguoyun": "坚果云",
        "jianguoyunHint": "坚果云の「セキュリティ設定」で「サードパーティアプリパスワード」を生成してください。ログインパスワードは使用しないでください。",
        "nextcloud": "Nextcloud",
        "nextcloudHint": "your-server を Nextcloud サーバーのアドレスに、USERNAME をユーザー名に置き換えてください。",
        "synology": "Synology NAS",
        "synologyHint": "Synology の「パッケージセンター」で WebDAV Server パッケージをインストール・有効化してください。",
        "custom": "カスタム"
      },
      "remoteRootDefault": "デフォルト: cc-switch-sync",
      "profileDefault": "デフォルト: default",
      "saveAndTestSuccess": "設定を保存しました。接続正常です",
      "saveAndTestFailed": "設定を保存しましたが、接続テストに失敗しました：{{error}}",
      "noRemoteData": "クラウドに同期データが見つかりません",
      "incompatibleVersion": "リモートデータに互換性がありません（プロトコル v{{protocolVersion}}、データベース {{dbCompatVersion}}）。このクライアントは protocol v2 / db-v6 をサポートしています。",
      "unsaved": "未保存",
      "saved": "保存済み",
      "unsavedChanges": "先に設定を保存してください",
      "saveBeforeSync": "アップロード/ダウンロードを有効にするには、先に設定を保存してください。",
      "fetchingRemote": "リモート情報を取得中...",
      "fetchRemoteFailed": "リモート情報の取得に失敗しました。設定とネットワークを確認してください。",
      "confirmDownload": {
        "title": "クラウドから復元",
        "deviceName": "アップロード元",
        "createdAt": "アップロード日時",
        "path": "リモートパス",
        "dbCompat": "DB 互換レイヤー",
        "artifacts": "内容",
        "legacyNotice": "旧レイアウトのリモートパスを検出しました。復元後、次回のアップロードは新しい v2/db-v6 パスに書き込まれます。",
        "warning": "ローカルのすべてのデータとスキル設定が上書きされます",
        "confirm": "復元を実行"
      },
      "confirmUpload": {
        "title": "クラウドにアップロード",
        "content": "以下の内容を WebDAV サーバーに同期します：",
        "dbItem": "データベース（すべてのプロバイダー設定とデータ）",
        "skillsItem": "スキル（すべてのカスタムスキル）",
        "targetPath": "保存先パス",
        "existingData": "クラウドの既存データ",
        "deviceName": "アップロード元",
        "createdAt": "アップロード日時",
        "path": "リモートパス",
        "dbCompat": "DB 互換レイヤー",
        "warning": "リモートの既存同期データが上書きされます",
        "legacyNotice": "旧レイアウトのリモートデータを検出しました。今回のアップロードは新しい v2/db-v6 パスに書き込み、旧パスは上書きしません。",
        "confirm": "アップロードを実行"
      }
    },
    "syncType": {
      "label": "同期方式",
      "webdav": "WebDAV",
      "s3": "S3互換ストレージ"
    },
    "s3Sync": {
      "presets": {
        "label": "サービス",
        "awsS3": "AWS S3",
        "awsS3Hint": "IAM Access Keyを使用。s3:PutObject/GetObject/HeadObject権限が必要です。Region例: us-east-1, ap-northeast-1",
        "minio": "MinIO",
        "minioHint": "カスタムEndpointが必要です（例: http://minio.local:9000）。Regionは us-east-1 に設定可能",
        "r2": "Cloudflare R2",
        "r2Hint": "Endpoint: https://<account_id>.r2.cloudflarestorage.com、Regionは auto に設定",
        "oss": "Alibaba Cloud OSS",
        "ossHint": "Endpoint: https://oss-<region>.aliyuncs.com、Region例: cn-hangzhou, cn-shanghai",
        "cos": "Tencent Cloud COS",
        "cosHint": "Endpoint: https://cos.<region>.myqcloud.com、Region例: ap-guangzhou, ap-beijing",
        "obs": "Huawei OBS",
        "obsHint": "Endpoint: https://obs.<region>.myhuaweicloud.com、Region例: cn-north-4, cn-east-3",
        "custom": "S3互換サービス（カスタム）",
        "customHint": "任意のS3互換サービス。カスタムEndpointが必要です"
      },
      "region": "リージョン",
      "regionPlaceholder": "例: us-east-1",
      "bucket": "バケット",
      "bucketPlaceholder": "例: my-cc-switch-bucket",
      "accessKeyId": "Access Key ID",
      "accessKeyIdPlaceholder": "例: AKIA...",
      "secretAccessKey": "Secret Access Key",
      "secretAccessKeyPlaceholder": "既存のシークレットを保持する場合は変更しないでください",
      "endpoint": "エンドポイント（AWSは空欄可）",
      "endpointHint": "多くの S3 互換サービスでは必須です",
      "endpointPlaceholder": "例: https://s3-compatible.example.com",
      "remoteRoot": "リモートルートディレクトリ",
      "remoteRootDefault": "デフォルト: cc-switch-sync",
      "profile": "同期プロファイル名",
      "profileDefault": "デフォルト: default",
      "autoSync": "自動同期",
      "autoSyncHint": "有効にすると、データベース変更のたびに S3 へ自動アップロードします。",
      "enabled": "S3 同期を有効化",
      "enabledHint": "S3 のアップロード/ダウンロードと自動同期を有効にします。",
      "mutualExclusionTitle": "同期方式の切り替え",
      "mutualExclusionMessage": "S3同期を有効にすると、現在のWebDAV同期が無効になります。続行しますか？",
      "mutualExclusionMessageReverse": "WebDAV同期を有効にすると、現在のS3同期が無効になります。続行しますか？",
      "mutualExclusionFailed": "同期方式の切り替えに失敗しました：{{error}}",
      "testConnection": "接続テスト",
      "connectionOk": "S3接続成功",
      "test": "接続テスト",
      "testing": "テスト中...",
      "testSuccess": "S3 接続成功",
      "testFailed": "S3 接続失敗：{{error}}",
      "save": "設定を保存",
      "saving": "保存中...",
      "saveFailed": "設定の保存に失敗しました：{{error}}",
      "saveAndTestSuccess": "設定を保存しました。S3 接続正常です",
      "saveAndTestFailed": "設定を保存しましたが、S3 接続テストに失敗しました：{{error}}",
      "upload": "クラウドにアップロード",
      "uploading": "アップロード中...",
      "uploadSuccess": "S3 にアップロードしました",
      "uploadFailed": "S3 アップロードに失敗しました：{{error}}",
      "autoSyncFailedToast": "S3 自動同期に失敗しました：{{error}}",
      "download": "クラウドからダウンロード",
      "downloading": "ダウンロード中...",
      "downloadSuccess": "S3 からダウンロード・復元しました",
      "downloadFailed": "S3 ダウンロードに失敗しました：{{error}}",
      "lastSync": "前回の同期：{{time}}",
      "autoSyncLastErrorTitle": "前回の S3 自動同期に失敗しました",
      "autoSyncLastErrorHint": "ネットワークまたは S3 設定を確認してください。次回の変更時に自動再試行されます。",
      "missingBucket": "S3 バケットを入力してください",
      "noRemoteData": "S3 バケットに同期データが見つかりません",
      "incompatibleVersion": "リモートデータに互換性がありません（バージョン {{version}}）。このクライアントは protocol v2 / db-v6 をサポートしています。",
      "unsaved": "未保存",
      "saved": "保存済み",
      "unsavedChanges": "先に設定を保存してください",
      "saveBeforeSync": "アップロード/ダウンロードを有効にするには、先に設定を保存してください。",
      "fetchingRemote": "リモート情報を取得中...",
      "fetchRemoteFailed": "リモート情報の取得に失敗しました。設定とネットワークを確認してください。",
      "notConfigured": "S3同期が設定されていません",
      "disabled": "S3同期が無効です",
      "confirmDownload": {
        "title": "S3 から復元",
        "deviceName": "アップロード元",
        "createdAt": "アップロード日時",
        "artifacts": "内容",
        "warning": "ローカルのすべてのデータとスキル設定が上書きされます",
        "confirm": "復元を実行"
      },
      "confirmUpload": {
        "title": "S3 にアップロード",
        "content": "以下の内容を S3 バケットに同期します：",
        "dbItem": "データベース（すべてのプロバイダー設定とデータ）",
        "skillsItem": "スキル（すべてのカスタムスキル）",
        "targetPath": "保存先オブジェクトパス",
        "existingData": "クラウドの既存データ",
        "deviceName": "アップロード元",
        "createdAt": "アップロード日時",
        "warning": "この S3 パスにある既存の同期データが上書きされます",
        "confirm": "アップロードを実行"
      }
    },
    "autoReload": "データを更新しました",
    "languageOptionChinese": "简体中文",
    "languageOptionTraditionalChinese": "繁體中文",
    "languageOptionEnglish": "English",
    "languageOptionJapanese": "日本語",
    "windowBehavior": "ウィンドウ動作",
    "windowBehaviorHint": "最小化動作や Claude プラグイン連携を設定します。",
    "launchOnStartup": "起動時に自動実行",
    "launchOnStartupDescription": "システム起動時に CC Switch を自動起動します",
    "silentStartup": "サイレント起動",
    "silentStartupDescription": "起動時にメインウィンドウを表示せず、トレイのみで起動",
    "autoLaunchFailed": "自動起動の設定に失敗しました",
    "minimizeToTray": "閉じるときトレイへ最小化",
    "minimizeToTrayDescription": "チェックすると閉じるボタンでトレイに隠し、オフならアプリを終了します。",
    "useAppWindowControls": "アプリ内ウィンドウボタンを有効化",
    "useAppWindowControlsDescription": "有効にすると、アプリヘッダーに最小化・最大化/復元・閉じるボタンを表示します。",
    "enableClaudePluginIntegration": "Claude Code 拡張に適用",
    "enableClaudePluginIntegrationDescription": "オンにすると VS Code の Claude Code 拡張のプロバイダーも同期します",
    "skipClaudeOnboarding": "Claude Code の初回確認をスキップ",
    "skipClaudeOnboardingDescription": "オンにすると Claude Code の初回インストール確認をスキップします",
    "codexAuth": "Codex アプリ拡張",
    "preserveCodexOfficialAuthOnSwitch": "直接切替時に公式ログインを保持",
    "preserveCodexOfficialAuthOnSwitchDescription": "ローカルルーティングが無効な場合のサードパーティ切替を制御します。ルーティング接管中は常に Codex の公式ログインを保持します。",
    "unifyCodexSessionHistory": "Codex セッション履歴を統一",
    "unifyCodexSessionHistoryDescription": "オンにすると、公式サブスクリプションも共有の custom プロバイダー ID で動作し、公式とサードパーティのセッションが同じ履歴リストに表示されます。既存の公式セッションの移行も選択できます（移行前に自動バックアップ）。オフにする際はバックアップから復元できます。注意：プロバイダーをまたいで古いセッションを再開すると、encrypted_content の推論内容を相手のバックエンドが復号できず、再開に失敗する場合があります。",
    "unifyCodexHistoryRestoreCompleted": "バックアップから公式セッション履歴を復元しました（セッションファイル {{files}} 件、インデックス {{rows}} 行）",
    "unifyCodexHistoryRestoreFailed": "公式セッション履歴の復元に失敗しました。もう一度お試しください",
    "unifyCodexHistoryRestoreNothing": "現在の Codex ディレクトリに復元可能な移行バックアップはありません",
    "unifyCodexHistoryRestoreSkippedToggleOn": "統一セッション履歴が再度有効化されたため、復元をスキップしました",
    "appVisibility": {
      "title": "ホームページ表示",
      "description": "ホームページに表示するアプリを選択",
      "claudeDesc": "Anthropic Claude Code CLI",
      "codexDesc": "OpenAI Codex CLI",
      "geminiDesc": "Google Gemini CLI",
      "opencodeDesc": "OpenCode CLI",
      "showProfileSwitcher": "プロジェクト切り替えを表示",
      "showProfileSwitcherDescription": "メイン画面上部にプロジェクト切り替えを表示します"
    },
    "skillStorage": {
      "title": "スキル保存場所",
      "description": "CC Switch がスキルのマスターコピーを保存するディレクトリを選択します",
      "ccSwitch": "CC Switch",
      "unified": "~/.agents/skills",
      "ccSwitchHint": "スキルは ~/.cc-switch/skills/ に保存され、シンボリックリンクまたはコピーで各アプリに同期されます。",
      "unifiedHint": "スキルは ~/.agents/skills/ に保存されます（Agent Skills オープン標準）。対応ツール（Claude Code、Codex、Gemini CLI など）はこのディレクトリのスキルを直接検出します。",
      "confirmTitle": "スキル保存場所の移行",
      "confirmMessage": "{{count}} 個のスキルを新しい場所に移動します。続行しますか？",
      "migrationSuccess": "{{count}} 個のスキルを移行しました",
      "migrationPartial": "{{migrated}} 個のスキルを移行、{{errors}} 個のエラー。詳細はログを確認してください。"
    },
    "skillSync": {
      "title": "スキル同期方式",
      "description": "スキルファイルの同期方法を選択",
      "symlink": "シンボリックリンク",
      "copy": "ファイルコピー",
      "symlinkHint": "シンボリックリンクはディスク容量を節約し、リアルタイム同期を有効にします。注意：Windowsでは管理者権限または開発者モードが必要な場合があります"
    },
    "terminal": {
      "title": "優先ターミナル",
      "description": "ターミナルボタンをクリックした時に使用するターミナルアプリを選択",
      "fallbackHint": "選択したターミナルが利用できない場合、システムのデフォルトが使用されます",
      "options": {
        "macos": {
          "terminal": "Terminal.app",
          "iterm2": "iTerm2",
          "alacritty": "Alacritty",
          "kitty": "Kitty",
          "ghostty": "Ghostty",
          "wezterm": "WezTerm",
          "kaku": "Kaku",
          "warp": "Warp"
        },
        "windows": {
          "cmd": "コマンドプロンプト",
          "powershell": "PowerShell",
          "wt": "Windows Terminal"
        },
        "linux": {
          "gnomeTerminal": "GNOME Terminal",
          "konsole": "Konsole",
          "xfce4Terminal": "Xfce4 Terminal",
          "alacritty": "Alacritty",
          "kitty": "Kitty",
          "ghostty": "Ghostty"
        }
      }
    },
    "configDirectoryOverride": "設定ディレクトリの上書き（詳細）",
    "configDirectoryDescription": "WSL などで Claude Code や Codex を使う場合、ここで設定ディレクトリを WSL 側に合わせるとデータを揃えられます。",
    "appConfigDir": "CC Switch 設定ディレクトリ",
    "appConfigDirDescription": "CC Switch の保存場所をカスタマイズします（クラウド同期フォルダを指定すると設定を同期できます）",
    "browsePlaceholderApp": "例: C:\\\\Users\\\\Administrator\\\\.cc-switch",
    "claudeConfigDir": "Claude Code 設定ディレクトリ",
    "claudeConfigDirDescription": "Claude の設定ディレクトリ（settings.json）を上書きします。カスタムディレクトリでは .claude.json（MCP）をその中に保存し、既定の ~/.claude では Claude Code の既定どおり ~/.claude.json を使います。",
    "codexConfigDir": "Codex 設定ディレクトリ",
    "codexConfigDirDescription": "Codex の設定ディレクトリを上書きします。",
    "geminiConfigDir": "Gemini 設定ディレクトリ",
    "geminiConfigDirDescription": "Gemini の設定ディレクトリ（.env）を上書きします。",
    "grokConfigDir": "Grok Build 設定ディレクトリ",
    "grokConfigDirDescription": "Grok Build の設定ディレクトリ（config.toml）を上書きします。",
    "opencodeConfigDir": "OpenCode 設定ディレクトリ",
    "opencodeConfigDirDescription": "OpenCode の設定ディレクトリ（opencode.json）を上書きします。",
    "openclawConfigDir": "OpenClaw 設定ディレクトリ",
    "openclawConfigDirDescription": "OpenClaw の設定ディレクトリ（openclaw.json）を上書きします。",
    "hermesConfigDir": "Hermes 設定ディレクトリ",
    "hermesConfigDirDescription": "Hermes の設定ディレクトリ（config.yaml）を上書きします。",
    "browsePlaceholderClaude": "例: /home/<your-username>/.claude",
    "browsePlaceholderCodex": "例: /home/<your-username>/.codex",
    "browsePlaceholderGemini": "例: /home/<your-username>/.gemini",
    "browsePlaceholderGrok": "例: /home/<your-username>/.grok",
    "browsePlaceholderOpencode": "例: /home/<your-username>/.config/opencode",
    "browsePlaceholderOpenclaw": "例: /home/<your-username>/.openclaw",
    "browsePlaceholderHermes": "例: /home/<your-username>/.hermes",
    "browseDirectory": "ディレクトリを選択",
    "resetDefault": "デフォルトに戻す（保存後に反映）",
    "checkForUpdates": "アップデートを確認",
    "updateTo": "v{{version}} に更新",
    "updating": "更新中...",
    "checking": "確認中...",
    "upToDate": "最新バージョンです",
    "aboutHint": "バージョン情報と更新状況を表示します。",
    "portableMode": "ポータブルモード: 更新は手動ダウンロードが必要です。",
    "updateAvailable": "新しいバージョンがあります: {{version}}",
    "updateBadge": "更新あり",
    "updateFailed": "更新のインストールに失敗しました。ダウンロードページを開こうとしました。",
    "checkUpdateFailed": "更新の確認に失敗しました。時間をおいて再試行してください。",
    "openReleaseNotesFailed": "リリースノートの表示に失敗しました",
    "releaseNotes": "リリースノート",
    "viewReleaseNotes": "このバージョンのリリースノートを見る",
    "viewCurrentReleaseNotes": "現在のバージョンのリリースノートを見る",
    "officialWebsite": "公式サイト",
    "github": "GitHub",
    "manualInstallCommands": "手動インストールコマンド",
    "oneClickInstallHint": "Claude Code / Codex / Gemini CLI / OpenCode / OpenClaw / Hermes をインストールまたは更新",
    "localEnvCheck": "ローカル環境チェック",
    "updateAllTools": "すべて更新（{{count}}）",
    "currentVersion": "現在のバージョン",
    "latestVersion": "最新バージョン",
    "updateAvailableShort": "更新あり",
    "toolInstall": "インストール",
    "toolUpdate": "更新",
    "toolReady": "準備完了",
    "toolActionDone": "{{count}} 個のツールの{{action}}が完了しました",
    "toolActionPartial": "{{succeeded}} 個成功、{{failed}} 個失敗（{{action}}）",
    "toolActionFailed": "インストール/更新コマンドの実行に失敗しました",
    "toolNotRunnable": "インストール済みですが実行できません（バージョン未検出）",
    "toolActionVersionUnchangedTitle": "バージョンは変わりませんでした",
    "toolActionVersionUnchanged": "現在も {{version}}（最新: {{latest}}）です。アップデーターが成功を報告しても実際には更新されていない可能性があります。",
    "toolActionInstalledNotRunnable": "インストールされましたが、現在の環境では実行できません。確認してください",
    "installedNotRunnable": "インストール済み・実行不可",
    "toolCheckEnv": "実行環境を確認",
    "toolDiagnose": "インストールを診断",
    "toolDiagnosing": "診断中…",
    "toolConflictTitle": "複数のインストールを検出",
    "toolConflictHint": "コマンドラインは「既定」のものを使用します。更新が別の場所に適用された可能性があります。",
    "toolConflictDefault": "既定",
    "toolConflictNotRunnable": "実行不可",
    "toolDiagnoseNoConflict": "競合するインストールは見つかりませんでした",
    "toolDiagnoseFailed": "診断に失敗しました",
    "toolUpgradeConfirmTitle": "アップグレード先の確認",
    "toolUpgradeConfirmHint": "複数のインストールを検出しました。今回のアップグレードはすべてを更新するわけではありません。実際に作用する箇所は下記の各項目をご確認ください。",
    "toolUpgradeWillRun": "実行内容：",
    "toolUpgradeConfirmBtn": "アップグレードを実行",
    "toolUpgradeUnanchoredHint": "コマンドラインが実際に使用する箇所を特定できません。既定のアップグレードコマンドを実行します（PATH 上の最初の npm にインストールされる場合があります）。",
    "envBadge": {
      "wsl": "WSL",
      "windows": "Win",
      "macos": "macOS",
      "linux": "Linux"
    },
    "wslShell": "Shell",
    "wslShellFlag": "フラグ",
    "installCommandsCopied": "インストールコマンドをコピーしました",
    "installCommandsCopyFailed": "コピーに失敗しました。手動でコピーしてください。",
    "importFailedError": "設定のインポートに失敗しました: {{message}}",
    "exportFailedError": "設定のエクスポートに失敗しました:",
    "restartRequired": "再起動が必要です",
    "restartRequiredMessage": "CC Switch の設定ディレクトリを変更すると再起動が必要です。今すぐ再起動しますか？",
    "restartNow": "今すぐ再起動",
    "restartLater": "後で再起動",
    "restartFailed": "アプリの再起動に失敗しました。手動で閉じて再度開いてください。",
    "devModeRestartHint": "開発モードでは自動再起動をサポートしていません。手動で再起動してください。",
    "saving": "保存中...",
    "globalProxy": {
      "label": "グローバルプロキシ",
      "hint": "すべてのリクエスト（API、Skills ダウンロードなど）をプロキシ経由で送信します。ローカルルーティング有効時、アプリのリクエストもこのプロキシを経由します。空欄で直接接続。",
      "username": "ユーザー名（任意）",
      "password": "パスワード（任意）",
      "test": "接続テスト",
      "scan": "ローカルプロキシをスキャン",
      "clear": "クリア",
      "scanFailed": "スキャンに失敗しました: {{error}}",
      "saved": "ルーティング設定を保存しました",
      "saveFailed": "保存に失敗しました: {{error}}",
      "testSuccess": "接続成功！遅延 {{latency}}ms",
      "testFailed": "接続に失敗しました: {{error}}",
      "pricingDefaultsTitle": "課金のデフォルト設定",
      "pricingDefaultsDescription": "アプリごとのデフォルト倍率と課金モードを設定します。",
      "pricingAppLabel": "アプリ",
      "defaultCostMultiplierLabel": "デフォルト倍率",
      "defaultCostMultiplierHint": "コスト計算用の倍率（小数対応）。",
      "pricingModelSourceLabel": "課金モード",
      "pricingModelSourceRequest": "リクエストモデル",
      "pricingModelSourceResponse": "レスポンスモデル",
      "pricingSave": "課金設定を保存",
      "pricingSaved": "課金設定を保存しました",
      "pricingSaveFailed": "課金設定の保存に失敗しました: {{error}}",
      "pricingLoadFailed": "課金設定の読み込みに失敗しました: {{error}}",
      "defaultCostMultiplierRequired": "デフォルト倍率は必須です",
      "defaultCostMultiplierInvalid": "デフォルト倍率の形式が正しくありません"
    },
    "saveFailedGeneric": "保存に失敗しました。もう一度お試しください"
  },
  "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"
  },
  "grokBuild": {
    "apiBackend": "API Backend",
    "contextWindow": "コンテキストウィンドウ",
    "contextWindowInvalid": "コンテキストウィンドウは正の整数で指定してください",
    "profile": "クライアントモデルプロファイル",
    "rawConfig": "config.toml",
    "invalidToml": "config.toml の形式が不正です: {{error}}"
  },
  "sessionManager": {
    "title": "セッション管理",
    "subtitle": "Claude Code / Codex / Gemini CLI / Grok Build / OpenCode / OpenClaw / Hermes のセッションを管理",
    "searchPlaceholder": "内容・ディレクトリ・ID で検索",
    "searchSessions": "セッションを検索",
    "providerFilterAll": "すべて",
    "providerFilterTooltip": "プロバイダーフィルター",
    "sessionList": "セッション一覧",
    "viewModeTooltip": "表示方式",
    "viewModeFlat": "一覧",
    "viewModeGrouped": "分類",
    "unknownDirectory": "不明なディレクトリ",
    "toggleProviderGroup": "{{provider}} プロバイダーグループを開閉",
    "toggleDirectoryGroup": "{{directory}} ディレクトリグループを開閉",
    "collapseAllGroups": "すべて折りたたむ",
    "selectProviderGroupForBatch": "{{provider}} プロバイダーグループ内のセッションを選択",
    "selectDirectoryGroupForBatch": "{{directory}} ディレクトリグループ内のセッションを選択",
    "manageBatchTooltip": "一括管理に入る",
    "exitBatchModeTooltip": "一括管理を終了",
    "batchModeHint": "削除するセッションを選択",
    "selectForBatch": "セッションを選択",
    "selectedCount": "{{count}} 件を選択中",
    "selectAllFiltered": "一覧を全選択",
    "clearFilteredSelection": "全選択を解除",
    "clearSelection": "クリア",
    "deleteSelected": "削除",
    "batchDeleting": "削除中...",
    "loadingSessions": "セッションを読み込み中...",
    "noSessions": "セッションが見つかりません",
    "selectSession": "セッションを選択してください",
    "noSummary": "概要なし",
    "lastActive": "最終アクティブ",
    "projectDir": "プロジェクトディレクトリ",
    "sourcePath": "元ファイル",
    "copyResumeCommand": "再開コマンドをコピー",
    "resumeCommandCopied": "再開コマンドをコピーしました",
    "openInTerminal": "ターミナルで再開",
    "terminalTargetTerminal": "Terminal",
    "terminalTargetKitty": "kitty",
    "terminalTargetCopy": "コピーのみ",
    "terminalLaunched": "ターミナルを起動しました",
    "openFailed": "ターミナルの起動に失敗しました",
    "resumeFallbackCopied": "再開コマンドをコピーしました（手動で実行してください）",
    "copyProjectDir": "ディレクトリをコピー",
    "projectDirCopied": "ディレクトリをコピーしました",
    "copySourcePath": "元ファイルをコピー",
    "sourcePathCopied": "元ファイルをコピーしました",
    "delete": "セッションを削除",
    "deleting": "削除中...",
    "deleteTooltip": "このローカルセッション記録を完全に削除します",
    "deleteConfirmTitle": "セッションを削除",
    "deleteConfirmMessage": "ローカルセッション「{{title}}」を完全に削除します\nSession ID: {{sessionId}}\n\nこの操作は元に戻せません。",
    "deleteConfirmAction": "セッションを削除",
    "sessionDeleted": "セッションを削除しました",
    "deleteFailed": "セッションの削除に失敗しました: {{error}}",
    "batchDeleteConfirmTitle": "選択したセッションを削除",
    "batchDeleteConfirmMessage": "選択した {{count}} 件のローカルセッションを完全に削除します。\n\nこの操作は元に戻せません。",
    "batchDeleteConfirmAction": "選択した項目を削除",
    "batchDeleteSuccess": "{{count}} 件のセッションを削除しました",
    "batchDeleteFailed": "{{failed}} 件のセッションを削除できませんでした",
    "batchDeleteRequestFailed": "一括削除に失敗しました。しばらくしてから再試行してください。",
    "loadingMessages": "内容を読み込み中...",
    "emptySession": "表示できる内容がありません",
    "clickToCopyPath": "クリックしてパスをコピー",
    "tocTitle": "目次",
    "justNow": "たった今",
    "minutesAgo": "{{count}}分前",
    "hoursAgo": "{{count}}時間前",
    "daysAgo": "{{count}}日前",
    "roleUser": "ユーザー",
    "roleSystem": "システム",
    "roleTool": "ツール",
    "resume": "セッションを再開",
    "resumeTooltip": "ターミナルでこのセッションを再開",
    "noResumeCommand": "このセッションは再開できません",
    "copyCommand": "コマンドをコピー",
    "copyMessage": "メッセージをコピー",
    "messageCopied": "メッセージがコピーされました",
    "conversationHistory": "会話履歴",
    "expandContent": "全文を表示",
    "collapseContent": "折りたたむ"
  },
  "console": {
    "providerSwitchReceived": "プロバイダー切り替えイベントを受信:",
    "setupListenerFailed": "プロバイダー切り替えリスナーの設定に失敗:",
    "updateProviderFailed": "プロバイダー更新に失敗:",
    "autoImportFailed": "デフォルト設定の自動インポートに失敗:",
    "openLinkFailed": "リンクを開けませんでした:",
    "getVersionFailed": "バージョン情報の取得に失敗:",
    "loadSettingsFailed": "設定の読み込みに失敗:",
    "getConfigPathFailed": "設定パスの取得に失敗:",
    "getConfigDirFailed": "設定ディレクトリの取得に失敗:",
    "detectPortableFailed": "ポータブルモードの検出に失敗:",
    "saveSettingsFailed": "設定の保存に失敗:",
    "updateFailed": "更新に失敗:",
    "checkUpdateFailed": "更新確認に失敗:",
    "openConfigFolderFailed": "設定フォルダを開けませんでした:",
    "selectConfigDirFailed": "設定ディレクトリの選択に失敗:",
    "getDefaultConfigDirFailed": "デフォルト設定ディレクトリの取得に失敗:",
    "openReleaseNotesFailed": "リリースノートを開けませんでした:"
  },
  "providerForm": {
    "supplierName": "プロバイダー名",
    "supplierNameRequired": "プロバイダー名 *",
    "supplierNamePlaceholder": "例: Anthropic Official",
    "websiteUrl": "Web サイト URL",
    "websiteUrlPlaceholder": "https://example.com（任意）",
    "apiEndpoint": "API エンドポイント",
    "apiEndpointPlaceholder": "https://your-api-endpoint.com",
    "codexApiEndpointPlaceholder": "https://your-api-endpoint.com/v1",
    "manageAndTest": "管理・テスト",
    "configContent": "設定内容",
    "officialNoApiKey": "公式ログインは API Key 不要です。そのまま保存できます",
    "codexOfficialNoApiKey": "公式は API Key 不要です。そのまま保存してください",
    "codexApiKeyAutoFill": "ここに入力すれば auth.json も自動で埋まります",
    "apiKeyAutoFill": "ここに入力すれば下の設定も自動で埋まります",
    "cnOfficialApiKeyHint": "💡 API Key のみ入力すれば OK。エンドポイントはプリセット済みです",
    "aggregatorApiKeyHint": "💡 API Key のみ入力すれば OK。エンドポイントはプリセット済みです",
    "thirdPartyApiKeyHint": "💡 API Key のみ入力すれば OK。エンドポイントはプリセット済みです",
    "customApiKeyHint": "💡 カスタム設定では必要な項目をすべて手動で入力してください",
    "omoHint": "💡 OMO 設定は Agent のモデル割り当てを管理し、oh-my-openagent.jsonc / oh-my-opencode.jsonc の両方に対応します",
    "officialHint": "💡 公式プロバイダーはブラウザログインで、API Key は不要です",
    "providerKeyStatusLoading": "プロバイダー識別子の状態を読み込んでいます。しばらくしてからもう一度お試しください",
    "getApiKey": "API Key を取得",
    "partnerPromotion": {
      "a6api": "A6API はトークンアグリゲーションサイトです。リアルタイム価格ランキングを内蔵し、全ネット最安値を自動で選択。動作は滑らかで安定し、面倒な価格比較も不要。登録するだけで体験クレジットがもらえます！",
      "sudocode": "SudoCode の1つのキーで、Claude Code と Claude Desktop では Claude Opus 5、Codex では GPT-5.6 を利用できます。登録後 QQ グループ 726213516 に参加し、管理者へ連絡すると CNY ¥10 のトライアルクレジットを受け取れます。",
      "code0": "code0.ai は開発者向けの AI コーディングサービスプラットフォームで、Claude Code、Codex、Gemini に対応。CC Switch ユーザー限定特典：公式サイトからサポートに連絡してテストクレジットを受け取れます！",
      "nekocode": "NekoCode は Claude や Codex などの AI モデルに対応した、安定・高効率で信頼性の高い API 中継サービスを提供します。明瞭な従量課金制。CC Switch ユーザー限定 10%オフ：上のリンクから登録し、チャージ時にクーポンコード cc-switch を入力すると 10%オフ！",
      "packycode": "PackyCode は CC Switch の公式パートナーです。登録後チャージ時に \"cc-switch\" を入力すると 10% オフ",
      "apikeyfun": "APIKEY.FUN は CC Switch ユーザー向けに特別優待を提供しています。専用リンクから登録すると、最大でチャージ永久 5% オフを受けられます。",
      "apinebula": "APINEBULA は CC Switch ユーザー向けに特別割引を提供しています。専用リンクから登録し、チャージ時にプロモコード「ccswitch」を入力すると、さらに 10% OFF の割引が適用されます。",
      "atlascloud": "Atlas Cloud は、1 つの API で動画・画像生成や LLM を利用できる全モーダル対応の AI 推論プラットフォームです。より低コストで API を利用できる新しい「コーディングプラン」プロモーションをご確認ください。",
      "patewayai": "PatewayAI は CC Switch ユーザーに特別な特典を提供しています。このリンクから登録すると $3 のクレジットがもらえます。",
      "claudeapi": "ClaudeAPI は CC Switch ユーザーに特別な特典を提供しています。このリンクから登録するとテストクレジットを受け取ることができます。",
      "claudecn": "ClaudeCN は登録企業が運営するエンタープライズグレードの AI ゲートウェイプラットフォームで、企業調達プロセスをサポートし、法人支払い、契約、コンプライアンス保証を提供します。",
      "runapi": "RunAPI は CC Switch ユーザーに特別な特典を提供しています。このリンクから登録しカスタマーサポートにご連絡いただくと、¥14 の無料クレジットを受け取ることができます。",
      "minimax_cn": "MiniMax Coding Plan 特別価格、Starter ¥9.9 から",
      "minimax_en": "MiniMax Coding Plan Black Friday、Starter が月額 $2（80% OFF）",
      "opencode_go": "このリンクから OpenCode Go を購読すると、初月はわずか $5、さらに $5 分のクレジットがもらえます！",
      "dmxapi": "Claude Code 専用モデル 66% OFF 実施中！",
      "cubence": "Cubence は CC Switch の公式パートナーです。登録後チャージ時に \"CCSWITCH\" を入力すると、毎回 10% オフ",
      "aigocode": "AIGoCode は CC Switch の公式パートナーです。このリンクから登録すると、初回チャージ時に 10% のボーナスクレジットがもらえます！",
      "rightcode": "RightCode は CC Switch の公式パートナーです。このリンクから登録すると、毎回のチャージに 5% のボーナスクレジットがもらえます！",
      "aicodemirror": "AICodeMirror は CC Switch の公式パートナーです。このリンクから登録すると20%オフ！",
      "aicoding": "AI Coding は CC Switch ユーザー向けに特別割引を提供しています。初回チャージが 10% オフ！",
      "crazyrouter": "CrazyRouter は CC Switch ユーザー向けに特別ボーナスを提供しています。初回チャージで 30% の追加クレジットがもらえます！",
      "sssaicode": "SSAI Code は CC Switch ユーザー向けに特別ボーナスを提供しています。チャージごとに $10 の追加クレジットがもらえます！",
      "siliconflow": "SiliconFlow は CC Switch の公式パートナーです",
      "ucloud": "Compshare は CC Switch ユーザー向けに特別ボーナスを提供しています。このリンクから登録すると、5元のプラットフォーム体験クレジットがもらえます！",
      "micu": "Micu は CC Switch の公式パートナーです",
      "etok": "公式サイトで ETok コミュニティに参加し、プランを購読してください。",
      "shengsuanyun": "胜算云はCC Switchユーザーに特別特典を提供しています。このリンクから登録すると、10元分の無料クレジットと初回チャージ10%ボーナスがもらえます！",
      "doubaoseed": "豆包大モデルは CC Switch ユーザーに専属特典を提供しています：このリンクから登録すると、豆包全テキストモデル50万トークンの推論クレジットおよびSeedance2.0の500万トークン無料クレジットがもらえます。",
      "volcengine_agentplan": "火山方舟 Coding Plan は CC Switch ユーザーに専属特典を提供しています：このリンクから方舟 Coding Plan を購読すると、新規のお客様は最初の 2 か月が 75% オフ、さらに専用招待コード 6J6FV5N2 で 5% オフが加算され、月額 9.4 元から！",
      "byteplus": "このリンクから登録すると、各モデルごとに50万トークンの無料推論クォータがもらえます。",
      "ccsub": "CCSub は安定・低価格の AI API リレーサービスです。Claude Code の公式サブスクリプションの代替として、1つのキーで全モデルを公式比約1/3のコストで利用できます。",
      "subrouter": "SubRouter は、1つのキーで複数のモデルとプロバイダーにアクセスできる AI 中継アグリゲーターです。",
      "qiniu": "Qiniu Cloud（七牛云）はマルチプロトコル対応の AI 中継プラットフォームです。1つのキーでネイティブの Claude・GPT・Gemini モデルを利用でき、Anthropic／OpenAI／Gemini の各 API に対応します。",
      "fenno": "Fenno.ai は安定・高効率な API 中継サービスで、幅広い主要モデルを利用できます。CC Switch 利用者限定特典：このリンクから 9.9 元（150 ドル相当）の Coding Plan を購入できます！",
      "zetaapi": "ZetaAPI はモデルを水増し・劣化させず、公式価格の 35% から利用できます。CC Switch 利用者限定特典：このリンクから登録し、初回チャージ時にプロモコード CC-SWITCH を使うと初回チャージ 10% オフ！",
      "teamorouter": "TeamoRouter はエンタープライズグレードの Agentic LLM ゲートウェイで、料金は最大 90% オフ。CC Switch ユーザーに特別特典を提供しています：このリンクから新規登録すると初回チャージが 10% オフ！"
    },
    "presets": {
      "ucloud": "Compshare",
      "ucloudCoding": "Compshare Coding Plan",
      "shengsuanyun": "Shengsuanyun",
      "qiniu": "Qiniu",
      "openrouter": "OpenRouter",
      "deepseek": "DeepSeek",
      "together": "Together AI"
    },
    "parameterConfig": "パラメーター設定 - {{name}} *",
    "mainModel": "メインモデル（任意）",
    "mainModelPlaceholder": "例: GLM-4.6",
    "fastModel": "高速モデル（任意）",
    "fastModelPlaceholder": "例: GLM-4.5-Air",
    "modelHint": "💡 空欄ならプロバイダーのデフォルトモデルを使用します",
    "apiHint": "💡 Claude API 互換サービスのエンドポイントを入力してください。末尾にスラッシュを付けないでください",
    "apiHintOAI": "💡 OpenAI Chat Completions 互換サービスのエンドポイントを入力してください。末尾にスラッシュを付けないでください",
    "apiHintGeminiNative": "💡 Gemini Native では https://generativelanguage.googleapis.com または https://generativelanguage.googleapis.com/v1beta のような base URL を推奨します。プロキシが models/*:generateContent を自動補完します",
    "codexApiHint": "💡 OpenAI Response 互換のサービスエンドポイントを入力してください",
    "fillSupplierName": "プロバイダー名を入力してください",
    "fillConfigContent": "設定内容を入力してください",
    "fillParameter": "{{label}} を入力してください",
    "fillTemplateValue": "{{label}} を入力してください",
    "endpointRequired": "公式以外は API エンドポイントが必須です",
    "apiKeyRequired": "公式以外は API Key が必須です",
    "softValidation": {
      "title": "設定に以下の問題があります",
      "hint": "それでも保存しますか？保存後、このプロバイダーへの切り替えが失敗する可能性がありますが、後から補完できます。",
      "saveAnyway": "それでも保存"
    },
    "configJsonError": "Config JSON の形式が正しくありません。構文を確認してください",
    "authJsonRequired": "auth.json は JSON オブジェクトで入力してください",
    "authJsonError": "auth.json の形式が正しくありません。JSON を確認してください",
    "fillAuthJson": "auth.json の設定を入力してください",
    "fillApiKey": "OPENAI_API_KEY を入力してください",
    "visitWebsite": "{{url}} を開く",
    "anthropicModel": "メインモデル",
    "anthropicSmallFastModel": "高速モデル",
    "apiFormat": "API フォーマット",
    "apiFormatHint": "プロバイダー API の入力フォーマットを選択",
    "customUserAgent": "カスタム User-Agent",
    "customUserAgentHint": "ローカルルーティング/プロキシ引き継ぎが有効な場合にのみ適用され、プロバイダー API へ転送するリクエストの User-Agent を置き換えます。",
    "customUserAgentInvalid": "User-Agent に制御文字（改行など）を含めることはできません。含まれている場合は無視されます。",
    "customUserAgentPresets": "プリセット",
    "localProxyRequestOverrides": "ローカルプロキシのリクエスト上書き",
    "localProxyRequestOverridesHint": "ローカルルーティング/プロキシ引き継ぎ後にのみ有効で、変換後の上流リクエストへ適用されます。",
    "localProxyRequestOverridesInvalid": "ローカルプロキシのリクエスト上書き形式エラー: {{error}}",
    "localProxyHeaderOverrides": "Header 上書き",
    "localProxyHeaderOverridesInvalidDetail": "Header 上書きの形式エラー: {{error}}",
    "localProxyBodyOverrides": "Body 上書き",
    "localProxyBodyOverridesInvalidDetail": "Body 上書きの形式エラー: {{error}}",
    "fullUrlLabel": "フル URL",
    "fullUrlEnabled": "フル URL モード",
    "fullUrlDisabled": "フル URL として設定",
    "fullUrlHint": "💡 完全なリクエスト URL を入力してください。このモードはルーティングを有効にして使用する必要があり、ルーティングはこの URL をそのまま使用し、パスを追加しません",
    "fullUrlHintGeminiNative": "💡 Gemini Native のフル URL モードでは 2 種類の入力を扱えます。1. 公式/構造化された Gemini URL は、要求されたモデルやストリーミング方式に合わせて正規化されます。2. カスタム relay の opaque な完全 URL は、主にそのまま使用され、必要なクエリだけ追加されます",
    "apiFormatAnthropic": "Anthropic Messages（ネイティブ）",
    "apiFormatOpenAIChat": "OpenAI Chat Completions（ルーティングが必要）",
    "apiFormatOpenAIResponses": "OpenAI Responses API（ルーティングが必要）",
    "apiFormatGeminiNative": "Gemini Native generateContent（ルーティングが必要）",
    "codexApiFormatResponses": "OpenAI Responses API（ネイティブ）",
    "codexApiFormatOpenAIChat": "OpenAI Chat Completions（ルーティングが必要）",
    "codexApiFormatHint": "このプロバイダーが実際に対応している Codex API フォーマットを選択します。新しい Codex との互換性のため設定は Responses のままにし、Chat Completions はローカルルーティングで変換します。",
    "authField": "認証フィールド",
    "authFieldAuthToken": "ANTHROPIC_AUTH_TOKEN（デフォルト）",
    "authFieldApiKey": "ANTHROPIC_API_KEY",
    "authFieldHint": "設定に書き込む認証環境変数名を選択",
    "apiHintResponses": "💡 OpenAI Responses API 互換サービスのエンドポイントを入力してください。末尾にスラッシュを付けないでください",
    "anthropicDefaultHaikuModel": "既定 Haiku モデル",
    "anthropicDefaultSonnetModel": "既定 Sonnet モデル",
    "anthropicDefaultOpusModel": "既定 Opus モデル",
    "modelPlaceholder": "",
    "smallModelPlaceholder": "",
    "haikuModelPlaceholder": "",
    "modelHelper": "任意: 既定で使いたい Claude モデルを指定。空欄ならシステム既定を使用します。",
    "modelMappingLabel": "モデルマッピング",
    "modelMappingHint": "表示名は /model メニューだけに影響します。1M は Claude Code へのコンテキスト能力宣言です。",
    "modelRoleLabel": "モデル役割",
    "modelRoleSonnet": "Sonnet",
    "modelRoleOpus": "Opus",
    "modelRoleFable": "Fable",
    "modelRoleHaiku": "Haiku",
    "modelRoleSubagent": "Subagent",
    "modelDisplayNameLabel": "表示名",
    "modelDisplayNamePlaceholder": "例: DeepSeek V4 Pro",
    "modelNoDisplayName": "/model には表示されません",
    "requestModelLabel": "リクエストモデル",
    "modelOneMHeader": "1M 対応を宣言",
    "modelOneMLabel": "1M",
    "fallbackModelLabel": "既定フォールバックモデル",
    "fallbackModelHint": "Sonnet・Opus・Fable・Haiku のいずれにも明確に対応しないリクエストのフォールバックです。サードパーティ/中継エンドポイントでは設定を推奨します。設定しないと、これらのリクエスト（Haiku のバックグラウンドサブタスクを含む）が元の Claude モデル名のまま上流へ転送され、上流に該当モデルが無い場合は失敗することがあります。公式エンドポイントでは空欄で構いません。",
    "quickSetModels": "一括設定",
    "quickSetSuccess": "モデル名をすべての役割に適用しました",
    "advancedOptionsToggle": "高級オプション",
    "advancedOptionsHint": "API フォーマット、認証フィールド、モデルマッピングの設定を含みます。通常はデフォルトのままで問題ありません。",
    "categoryOfficial": "公式",
    "categoryCnOfficial": "オープンソース公式",
    "categoryAggregation": "アグリゲーター",
    "categoryThirdParty": "サードパーティ",
    "fetchModels": "モデル一覧を取得",
    "fetchingModels": "取得中...",
    "fetchModelsSuccess": "{{count}}件のモデルを取得",
    "fetchModelsFailed": "モデル一覧の取得に失敗しました",
    "fetchModelsEmpty": "モデルが見つかりません",
    "fetchModelsNeedApiKey": "先に API Key を入力してください",
    "fetchModelsNeedEndpoint": "先に API エンドポイントを入力してください",
    "fetchModelsNeedConfig": "先に API エンドポイントと API Key を入力してください",
    "fetchModelsAuthFailed": "API Key が無効か、権限がありません",
    "fetchModelsNotSupported": "このプロバイダーはモデル一覧の取得に対応していません",
    "fetchModelsEndpointNotFound": "利用可能なモデル一覧エンドポイントが見つかりません。Base URL を確認するか、プロバイダーが該当 API を公開しているかご確認ください",
    "fetchModelsTimeout": "リクエストがタイムアウトしました。ネットワーク接続を確認してください",
    "requiredFields": "プロバイダー名、API エンドポイント、API Key、モデルを入力してください"
  },
  "copilot": {
    "authSection": "GitHub Copilot 認証",
    "authStatus": "認証状態",
    "authenticated": "認証済み: {{username}}",
    "notAuthenticated": "未認証",
    "loginWithGitHub": "GitHub でログイン",
    "loginRequired": "先に GitHub Copilot にログインしてください",
    "waitingForAuth": "認証を待っています...",
    "enterCode": "ブラウザで以下のコードを入力してください：",
    "logout": "ログアウト",
    "authSuccess": "GitHub Copilot 認証に成功しました",
    "authFailed": "認証に失敗しました: {{error}}",
    "authTimeout": "認証がタイムアウトしました。もう一度お試しください",
    "tokenExpired": "トークンの有効期限が切れました。再認証してください",
    "accountCount": "{{count}} アカウント",
    "selectAccount": "アカウントを選択",
    "selectAccountPlaceholder": "GitHub アカウントを選択",
    "useDefaultAccount": "デフォルトアカウントを使用",
    "loggedInAccounts": "ログイン済みアカウント",
    "defaultAccount": "デフォルト",
    "selected": "選択中",
    "removeAccount": "アカウントを削除",
    "setAsDefault": "デフォルトに設定",
    "addAnotherAccount": "別のアカウントを追加",
    "logoutAll": "すべてのアカウントをログアウト",
    "retry": "再試行",
    "copyCode": "コードをコピー",
    "migrationFailed": "旧認証データの移行に失敗しました: {{error}}",
    "loadModelsFailed": "Copilot モデル一覧の読み込みに失敗しました",
    "deploymentType": "GitHub デプロイメントタイプ",
    "deploymentGitHubCom": "GitHub.com",
    "deploymentEnterprise": "GitHub Enterprise Server",
    "enterpriseDomainPlaceholder": "例: company.ghe.com"
  },
  "codexOauth": {
    "authStatus": "認証状態",
    "notAuthenticated": "未認証",
    "loginWithChatGPT": "ChatGPT でログイン",
    "loginRequired": "先に ChatGPT にログインしてください",
    "waitingForAuth": "認証を待機中...",
    "enterCode": "ブラウザで以下のコードを入力してください：",
    "accountCount": "{{count}} アカウント",
    "selectAccount": "アカウントを選択",
    "selectAccountPlaceholder": "ChatGPT アカウントを選択",
    "useDefaultAccount": "デフォルトアカウントを使用",
    "loggedInAccounts": "ログイン済みアカウント",
    "defaultAccount": "デフォルト",
    "selected": "選択中",
    "removeAccount": "アカウントを削除",
    "setAsDefault": "デフォルトに設定",
    "addAnotherAccount": "別のアカウントを追加",
    "logoutAll": "すべてのアカウントをログアウト",
    "retry": "再試行",
    "copyCode": "コードをコピー",
    "fastMode": "FAST モード",
    "fastModeDescription": "低遅延のため service_tier=\"priority\" を送信します。既定ではオフ——オンにすると ChatGPT のクォータがより速く消費されます。"
  },
  "xaiOauth": {
    "authStatus": "xAI OAuth 認証",
    "accountCount": "利用可能なアカウント: {{count}} 件",
    "reauthRequired": "再ログインが必要です",
    "notAuthenticated": "未認証",
    "selectAccount": "アカウントを選択",
    "selectAccountPlaceholder": "xAI アカウントを選択",
    "useDefaultAccount": "デフォルトアカウントを使用",
    "accounts": "xAI アカウント",
    "defaultAccount": "デフォルト",
    "expired": "認証情報が失効しました",
    "setAsDefault": "デフォルトに設定",
    "removeAccount": "アカウントを削除",
    "addOrReauth": "アカウントを追加または再ログイン",
    "login": "xAI でログイン",
    "waitingForAuth": "xAI の認証を待っています…",
    "enterCode": "ブラウザに自動入力されていない場合は、次を入力してください：",
    "retry": "再試行",
    "logoutAll": "すべての xAI アカウントを削除",
    "loginRequired": "先に xAI アカウントへログインしてください"
  },
  "managedAuth": {
    "selectedAccountNeedsReauth": "リンクされたアカウントが存在しないか、再ログインが必要です",
    "selectedAccountUnavailable": "リンクされたアカウントが存在しないか、再ログインが必要です。別のアカウントを選択してください"
  },
  "endpointTest": {
    "title": "API エンドポイント管理",
    "endpoints": "エンドポイント",
    "autoSelect": "自動選択",
    "testSpeed": "テスト",
    "testing": "テスト中",
    "addEndpointPlaceholder": "https://api.example.com",
    "done": "完了",
    "noEndpoints": "エンドポイントがありません",
    "failed": "失敗",
    "enterValidUrl": "有効な URL を入力してください",
    "invalidUrlFormat": "URL 形式が正しくありません",
    "onlyHttps": "HTTP/HTTPS のみサポートします",
    "urlExists": "この URL はすでに存在します",
    "saveFailed": "保存に失敗しました。もう一度お試しください",
    "loadEndpointsFailed": "カスタムエンドポイントの読み込みに失敗:",
    "addEndpointFailed": "カスタムエンドポイントの追加に失敗:",
    "removeEndpointFailed": "カスタムエンドポイントの削除に失敗:",
    "removeFailed": "削除に失敗しました: {{error}}",
    "updateLastUsedFailed": "エンドポイントの最終使用時間の更新に失敗しました",
    "pleaseAddEndpoint": "まずエンドポイントを追加してください",
    "testUnavailable": "速度テストを実行できません",
    "noResult": "結果がありません",
    "testFailed": "速度テストに失敗しました: {{error}}",
    "empty": "エンドポイントがありません"
  },
  "providerAdvanced": {
    "pricingConfig": "課金設定",
    "useCustomPricing": "個別設定を使用",
    "pricingConfigDesc": "このプロバイダーに個別の課金パラメータを設定します。無効の場合はグローバル設定を使用します。",
    "costMultiplier": "コスト倍率",
    "costMultiplierPlaceholder": "空白の場合はグローバル設定を使用（1）",
    "costMultiplierHint": "実際のコスト = 基本コスト × 倍率、1.5 などの小数をサポート",
    "pricingModelSourceLabel": "課金モード",
    "pricingModelSourceInherit": "グローバル設定を継承",
    "pricingModelSourceRequest": "リクエストモデル",
    "pricingModelSourceResponse": "レスポンスモデル",
    "pricingModelSourceHint": "リクエストモデルまたはレスポンスモデルで価格を照合するかを選択"
  },
  "codexConfig": {
    "authJson": "auth.json (JSON) *",
    "authJsonPlaceholder": "{\n  \"OPENAI_API_KEY\": \"sk-your-api-key-here\"\n}",
    "authJsonHint": "Codex の auth.json 設定内容",
    "authJsonStorageHint": "プロキシ引き継ぎ中は保存済みの auth を表示しており、実際の auth.json ではありません。",
    "configToml": "config.toml (TOML)",
    "configTomlHint": "Codex の config.toml 設定内容",
    "configTomlStorageHint": "プロキシ引き継ぎ中は保存済みの config を表示しており、実際の config.toml ではありません。",
    "proxyTakeoverStorageNotice": "💡 このアプリはプロキシ引き継ぎ中です。ここで編集しているのは保存済みのプロバイダー設定で、実際の live 設定はすでにプロキシが一時的に引き継いでいます。",
    "writeCommonConfig": "共通設定を適用",
    "editCommonConfig": "共通設定を編集",
    "editCommonConfigTitle": "Codex 共通設定スニペットを編集",
    "commonConfigHint": "「共通設定を適用」がオンの場合、config.toml の末尾に追記されます",
    "enableGoalMode": "Goal mode を有効化",
    "enableRemoteCompaction": "リモート圧縮を有効化",
    "remoteCompactionHint": "有効にすると、現在の model_providers エントリの name を OpenAI に設定し、Codex がリモート圧縮を試行できるようにします。",
    "apiUrlLabel": "API リクエスト URL",
    "extractFromCurrent": "編集内容から抽出",
    "extractNoCommonConfig": "編集内容から抽出できる共通設定がありません",
    "extractFailed": "抽出に失敗しました: {{error}}",
    "saveFailed": "保存に失敗しました: {{error}}",
    "modelNameHint": "使用するモデルを指定します。config.toml に自動更新されます",
    "modelName": "モデル名",
    "upstreamFormatLabel": "上流フォーマット",
    "upstreamFormatHint": "プロバイダーがネイティブ Responses API なら Responses を選択（直結、フォーマット変換なし）。Chat Completions プロトコルなら Chat を選択。ネイティブ Anthropic Messages プロトコルのみ提供する場合は Anthropic Messages を選択。Chat と Anthropic Messages はどちらも Responses への変換にルーティング引き継ぎの有効化が必要です。",
    "upstreamFormatChat": "Chat Completions（ルーティング必須）",
    "upstreamFormatResponses": "Responses（ネイティブ）",
    "upstreamFormatAnthropic": "Anthropic Messages（ルーティング必須）",
    "anthropicAuthFieldLabel": "認証フィールド",
    "anthropicAuthFieldAuthToken": "ANTHROPIC_AUTH_TOKEN（Authorization）",
    "anthropicAuthFieldApiKey": "ANTHROPIC_API_KEY（x-api-key）",
    "anthropicAuthFieldHint": "ゲートウェイに API キーを渡すヘッダーを選択します。ANTHROPIC_AUTH_TOKEN は Authorization: Bearer、ANTHROPIC_API_KEY は x-api-key を送信します。送信されるのはどちらか一方のみです。",
    "impersonateClaudeCodeLabel": "Claude Code クライアントを模倣",
    "impersonateClaudeCodeHint": "ゲートウェイ（またはその上流）が Claude Code のみに制限している場合に有効化します。User-Agent・anthropic-beta・x-app ヘッダーを偽装し、システムプロンプトの先頭行に Claude Code のアイデンティティを注入します。",
    "maxOutputTokensLabel": "最大出力トークン",
    "maxOutputTokensPlaceholder": "空欄の場合はデフォルトの 8192 を使用",
    "maxOutputTokensHint": "Codex は model_max_output_tokens をリクエストボディに含めないため、デフォルト上限 8192 では長い回答や深い思考時に切り詰められることがあります（stop_reason=max_tokens）。この値は Anthropic 経路で max_tokens を上書きします。モデル／ゲートウェイの実際の出力上限を超えると 400 になる場合があります。空欄でデフォルトの 8192 を使用します。",
    "promptCacheRoutingLabel": "プロンプトキャッシュルーティング",
    "promptCacheRoutingAuto": "自動（推奨）",
    "promptCacheRoutingEnabled": "有効",
    "promptCacheRoutingDisabled": "無効",
    "promptCacheRoutingHint": "自動モードでは、互換性を確認済みの上流にのみ prompt_cache_key を送信します。他の互換ゲートウェイでは有効にし、未知のフィールドを 400 で拒否する厳格なゲートウェイでは無効にしてください。クライアントが提供した安定したセッション ID のみを使用します。",
    "upstreamModelName": "上流モデル名",
    "upstreamModelNameHint": "Chat 形式ではここに実際の上流モデルを入力します。ルーティングで Codex の Responses リクエストを Chat Completions に変換し、このモデルを維持します。",
    "modelNamePlaceholder": "例: gpt-5-codex",
    "contextWindow1M": "1M コンテキストウィンドウ",
    "contextWindow": "コンテキストウィンドウ",
    "contextWindowPlaceholder": "例: 128000",
    "autoCompactLimit": "自動圧縮しきい値",
    "autoCompactLimitPlaceholder": "例: 90000",
    "autoCompactLimitHint": "コンテキストトークン数がこのしきい値に達すると履歴を自動圧縮",
    "modelMetadataAdvanced": "モデルメタデータ詳細オプション",
    "modelMetadataAdvancedHint": "未知のモデル向けに Codex メタデータを上書きします。空にすると対応する config.toml 設定を削除します。",
    "defaultModelLabel": "デフォルトモデル",
    "defaultModelPlaceholder": "例: gpt-5.6-sol",
    "defaultModelHint": "Codex がデフォルトでリクエストするモデルです。プリセットの更新を待たずにいつでも変更できます。空欄のままモデルマッピングを設定している場合は、マッピングの先頭行が使われます。",
    "defaultModelNotInCatalog": "このモデルはモデルマッピングにないため、Codex の /model メニューには表示されません（直接リクエストは有効です）。",
    "addToModelMapping": "マッピングに追加",
    "modelMappingTitle": "モデルマッピング",
    "modelMappingHint": "Codex model_catalog_json を生成し、/model コマンドでこれらの第三者モデル名を表示できるようにします。リストの内容はそのまま保存されます。変更後、モデルリストを更新するには Codex の再起動が必要です。",
    "addCatalogModel": "モデルを追加",
    "catalogDisplayName": "表示名",
    "catalogDisplayNamePlaceholder": "例: DeepSeek V4 Flash",
    "catalogModelId": "モデル ID",
    "catalogModelPlaceholder": "例: deepseek-v4-flash",
    "catalogColumnDisplay": "メニュー表示名",
    "catalogColumnModel": "実際のリクエストモデル",
    "catalogColumnContext": "コンテキストウィンドウ",
    "reasoningModeToggle": "思考モードに対応",
    "reasoningModeHint": "上流の Chat Completions API が思考（thinking）のオン/オフ切り替えに対応している場合に有効化します。Kimi、GLM、Qwen などが通常このタイプに該当します。",
    "reasoningEffortToggle": "思考レベルに対応",
    "reasoningEffortHint": "上流が low/high/max などの思考の深さの制御に対応している場合に有効化します。有効にすると思考モードも自動的にオンになり、Codex の reasoning.effort を上流の Chat パラメータに変換します。",
    "reasoningGroupTitle": "思考能力",
    "reasoningSectionHint": "プリセットの供給元は自動的に設定され、カスタム供給元は名前/URL から自動推論されます。自動識別が正しくない場合のみ手動で上書きしてください。",
    "advancedSectionHint": "上流フォーマット、モデルマッピング、思考能力、カスタム User-Agent の設定を含みます。Chat Completions プロトコルを使用するプロバイダーはルーティング引き継ぎの有効化が必要です。",
    "noCommonConfigToApply": "共通設定スニペットが空か、書き込む内容がありません"
  },
  "geminiConfig": {
    "envFile": "環境変数 (.env)",
    "envFileHint": ".env 形式で Gemini の環境変数を設定",
    "configJson": "設定ファイル (config.json)",
    "configJsonHint": "Gemini 拡張パラメーターを JSON 形式で設定（任意）",
    "writeCommonConfig": "共通設定を適用",
    "editCommonConfig": "共通設定を編集",
    "editCommonConfigTitle": "Gemini 共通設定スニペットを編集",
    "commonConfigHint": "「共通設定を適用」がオンのとき Gemini の .env に書き込みます（GOOGLE_GEMINI_BASE_URL、GEMINI_API_KEY は使用できません）",
    "extractFromCurrent": "編集内容から抽出",
    "extractNoCommonConfig": "編集内容から抽出できる共通設定がありません",
    "extractFailed": "抽出に失敗しました: {{error}}",
    "saveFailed": "保存に失敗しました: {{error}}",
    "extractedConfigInvalid": "抽出した設定のフォーマットが不正です",
    "invalidJsonFormat": "共通設定スニペットの形式が不正です（有効な JSON でなければなりません）",
    "commonConfigInvalidKeys": "共通設定スニペットに GOOGLE_GEMINI_BASE_URL または GEMINI_API_KEY を含めることはできません（検出: {{keys}}）",
    "commonConfigInvalidValues": "共通設定スニペットの値は文字列である必要があります",
    "noCommonConfigToApply": "共通設定スニペットが空、または適用できる項目がありません",
    "configMergeFailed": "設定のマージに失敗しました: {{error}}",
    "configReplaceFailed": "設定の置換に失敗しました: {{error}}"
  },
  "opencode": {
    "npmPackage": "API フォーマット",
    "selectPackage": "API フォーマットを選択",
    "npmPackageHint": "AI サービスの API フォーマットを選択",
    "baseUrl": "Base URL",
    "baseUrlHint": "カスタム API エンドポイント URL",
    "models": "モデル設定",
    "modelsHint": "利用可能なモデルとその表示名を設定",
    "addModel": "モデルを追加",
    "modelId": "モデル ID",
    "modelName": "表示名",
    "noModels": "モデルが設定されていません",
    "modelsRequired": "モデルを少なくとも1つ追加してください",
    "toggleModelDetails": "モデル詳細を開閉",
    "providerKey": "プロバイダーキー",
    "providerKeyPlaceholder": "my-provider",
    "providerKeyHint": "設定ファイルの一意の識別子です。小文字、数字、ハイフンのみ使用できます。",
    "providerKeyLockedHint": "このプロバイダーは既にアプリ設定へ追加されているため、キーは変更できません。",
    "providerKeyRequired": "プロバイダーキーを入力してください",
    "providerKeyDuplicate": "このキーは既に使用されています",
    "providerKeyInvalid": "無効な形式です。小文字、数字、ハイフンのみ使用できます。",
    "headers": "ヘッダー",
    "headersHint": "HTTP-Referer や X-Title など、プロバイダーリクエストに付与する任意の HTTP ヘッダーです。",
    "addHeader": "ヘッダーを追加",
    "headerName": "ヘッダー",
    "headerValue": "値",
    "headerNamePlaceholder": "X-Title",
    "headerValuePlaceholder": "CC Switch",
    "removeHeader": "ヘッダーを削除",
    "noHeaders": "カスタムヘッダーはありません",
    "extraOptions": "追加オプション",
    "extraOptionsHint": "timeout、setCacheKey などの SDK オプションを設定。値は自動的に適切な型（数値、真偽値など）に変換されます。",
    "addExtraOption": "追加",
    "extraOptionKey": "キー名",
    "extraOptionValue": "値",
    "extraOptionKeyPlaceholder": "timeout",
    "extraOptionValuePlaceholder": "600000",
    "noExtraOptions": "追加オプションはありません",
    "noModelOptions": "モデルオプション、+ をクリックして追加",
    "modelLimits": "トークン制限",
    "limitContext": "コンテキスト",
    "limitOutput": "出力",
    "modelExtraFields": "モデルプロパティ",
    "noModelExtraFields": "モデルプロパティ（variants、cost など）、+ をクリックして追加",
    "modelExtraFieldKeyPlaceholder": "variants",
    "sdkOptions": "SDK オプション",
    "modelOptionKeyPlaceholder": "provider",
    "modelOptionValuePlaceholder": "{\"order\": [\"baseten\"]}"
  },
  "providerPreset": {
    "label": "プロバイダータイプ",
    "custom": "カスタム設定",
    "other": "その他",
    "hint": "プリセットを選んだ後でも、下のフィールドで調整できます。",
    "searchTooltip": "プリセットを検索",
    "searchAriaLabel": "プロバイダープリセットを検索",
    "searchPlaceholder": "名前、サイト、カテゴリで検索...",
    "sortAriaLabel": "プリセットの並び順を切り替え",
    "sortNameAscTooltip": "名前順 A-Z で並び替え",
    "sortOriginalTooltip": "元の順序に戻す",
    "noSearchResults": "一致するプロバイダープリセットがありません。"
  },
  "usage": {
    "title": "利用統計",
    "subtitle": "AI モデルの利用状況とコスト統計を表示",
    "today": "24時間",
    "last7days": "7日間",
    "last30days": "30日間",
    "presetToday": "当日",
    "preset1d": "1d",
    "preset7d": "7d",
    "preset14d": "14d",
    "preset30d": "30d",
    "totalRequests": "総リクエスト数",
    "totalCost": "総コスト",
    "cost": "コスト",
    "unpriced": "価格未設定",
    "perMillion": "(100万あたり)",
    "trends": "利用トレンド",
    "rangeToday": "直近24時間 (時間別)",
    "rangeLast7Days": "過去7日間",
    "rangeLast30Days": "過去30日間",
    "totalTokens": "新規トークン (Input+Output)",
    "cacheTokens": "キャッシュトークン",
    "realTotal": "実消費トークン",
    "realTotalHint": "Input + Output + キャッシュ書込 + キャッシュ命中",
    "freshInput": "新規入力",
    "cacheHitRate": "キャッシュヒット率",
    "requestLogs": "リクエストログ",
    "providerStats": "プロバイダー統計",
    "modelStats": "モデル統計",
    "time": "時間",
    "provider": "プロバイダー",
    "billingModel": "課金モデル",
    "inputTokens": "入力",
    "outputTokens": "出力",
    "cacheReadTokens": "キャッシュヒット",
    "cacheCreationTokens": "キャッシュ作成",
    "timingInfo": "応答時間/TTFT",
    "status": "ステータス",
    "multiplier": "倍率",
    "requestModel": "リクエストモデル",
    "responseModel": "レスポンスモデル",
    "noData": "データなし",
    "unknownProvider": "不明なプロバイダー",
    "stream": "ストリーム",
    "nonStream": "非ストリーム",
    "source": "ソース",
    "requestsLabel": "リクエスト",
    "costLabel": "合計コスト",
    "appFilter": {
      "all": "すべて",
      "claude": "Claude Code",
      "codex": "Codex",
      "gemini": "Gemini",
      "opencode": "OpenCode",
      "grokbuild": "Grok Build"
    },
    "rawInputLabel": "原始",
    "rebuildCodex": {
      "title": "Codex 使用量メンテナンス",
      "description": "ローカルの rollout ログから Codex セッション使用量を再構築します",
      "warning": "最初にデータベースを自動バックアップします。元の JSONL が削除済みの履歴は再インポートできません。",
      "action": "Codex 使用量を再構築",
      "confirmTitle": "Codex 使用量を再構築しますか？",
      "confirmMessage": "既存の Codex セッション明細と集計を削除し、ローカルの Codex ログから再インポートします。\n\n削除済みログの履歴は失われます。親 rollout がない fork は保留されます。",
      "confirmAction": "バックアップして再構築",
      "completed": "再構築完了：{{imported}} 件インポート、{{errors}} 件エラー、重複候補 {{suspected}} 件、保留ファイル {{deferred}} 件",
      "failed": "Codex 使用量の再構築に失敗しました：{{error}}"
    },
    "totalRecords": "全 {{total}} 件",
    "goToPage": "移動",
    "pageInputPlaceholder": "ページ",
    "modelPricing": "モデル料金",
    "loadPricingError": "料金データの読み込みに失敗しました",
    "modelPricingDesc": "各モデルのトークンコストを設定",
    "noPricingData": "料金データがありません。「追加」をクリックしてモデル料金を設定してください。",
    "model": "モデル",
    "pricingModel": "課金モデル",
    "displayName": "表示名",
    "inputCost": "入力コスト",
    "outputCost": "出力コスト",
    "cacheReadCost": "キャッシュヒット",
    "cacheWriteCost": "キャッシュ作成",
    "deleteConfirmTitle": "削除の確認",
    "deleteConfirmDesc": "このモデル料金を削除しますか？この操作は元に戻せません。",
    "queryFailed": "照会に失敗しました",
    "refreshUsage": "利用状況を更新",
    "planUsage": "プラン利用状況",
    "invalid": "期限切れ",
    "total": "合計:",
    "used": "使用:",
    "remaining": "残り:",
    "justNow": "たった今",
    "minutesAgo": "{{count}} 分前",
    "hoursAgo": "{{count}} 時間前",
    "daysAgo": "{{count}} 日前",
    "multiplePlans": "{{count}} プラン",
    "expand": "展開",
    "collapse": "折りたたむ",
    "modelIdPlaceholder": "例: claude-3-5-sonnet-20241022",
    "displayNamePlaceholder": "例: Claude 3.5 Sonnet",
    "appType": "アプリ種別",
    "statusCode": "ステータスコード",
    "allSources": "すべてのソース",
    "allModels": "すべてのモデル",
    "filterBySource": "ソースで絞り込む",
    "filterByModel": "モデルで絞り込む",
    "refreshInterval": "自動更新間隔",
    "refreshOff": "オフ",
    "timeRange": "期間",
    "customRange": "カレンダーフィルター",
    "customRangeHint": "日付と時刻の両方に対応",
    "startTime": "開始時刻",
    "endTime": "終了時刻",
    "liveEndTime": "終了時刻を現在時刻に追従",
    "liveEndTimeNow": "現在",
    "input": "Input",
    "output": "Output",
    "cacheWrite": "作成",
    "cacheWriteNotReported": "OpenAI プロトコルはキャッシュ作成を区別せず、キャッシュヒットのみ報告します",
    "cacheWritePartial": "一部のプロトコル（OpenAIなど）はキャッシュ作成を報告しないため、値は不完全な可能性があります",
    "cacheRead": "ヒット",
    "baseCost": "基本",
    "costMultiplier": "コスト倍率",
    "withMultiplier": "倍率込み",
    "requestDetail": "リクエスト詳細",
    "requestNotFound": "リクエストが見つかりません",
    "basicInfo": "基本情報",
    "tokenUsage": "Token 使用量",
    "cacheCreationCost": "キャッシュ作成コスト",
    "costBreakdown": "コスト明細",
    "performance": "パフォーマンス",
    "latency": "レイテンシー",
    "errorMessage": "エラーメッセージ",
    "requests": "リクエスト数",
    "tokens": "トークン",
    "avgCost": "平均コスト",
    "avgLatency": "平均レイテンシ",
    "successRate": "成功率",
    "requestId": "リクエスト ID",
    "never": "なし",
    "modelId": "モデル ID",
    "modelIdRequired": "モデル ID は必須です",
    "inputCostPerMillion": "入力コスト（100万トークンあたり、USD）",
    "outputCostPerMillion": "出力コスト（100万トークンあたり、USD）",
    "invalidPrice": "価格は負でない数値である必要があります",
    "invalidTimeRange": "開始/終了時刻を完全に選択してください",
    "invalidTimeRangeOrder": "開始時刻は終了時刻より前である必要があります",
    "timeRangeTooLarge": "時間範囲が大きすぎます。範囲を縮小してください",
    "addPricing": "価格設定を追加",
    "editPricing": "価格設定を編集",
    "pricingAdded": "価格設定が追加されました",
    "pricingUpdated": "価格設定が更新されました",
    "importFromModelsDev": "models.dev からインポート",
    "modelsDevHint": "手動入力の代わりに、models.dev からモデル価格を選択できます",
    "modelsDevPickerTitle": "models.dev から価格をインポート",
    "modelsDevPickerDesc": "インポートするモデルを選択してください（価格単位：USD / 100万トークン）。1回につき1モデルです。",
    "modelsDevSearchPlaceholder": "モデルまたはプロバイダーを検索（全件検索）...",
    "modelsDevAllProviders": "すべてのプロバイダー",
    "modelsDevLoadError": "models.dev データの読み込みに失敗しました",
    "modelsDevRetry": "再試行",
    "modelsDevImportButton": "インポート",
    "modelsDevImporting": "インポート中...",
    "modelsDevImported": "{{name}} の価格をインポートしました",
    "modelsDevNoResults": "一致するモデルがありません",
    "modelsDevTruncated": "{{total}} 件中、先頭 {{shown}} 件のみ表示しています。検索条件を絞り込んでください",
    "modelsDevDefaultHint": "最新リリース順に {{shown}} 件を表示しています（全 {{total}} 件）。キーワード入力で全件検索できます",
    "modelsDevAutoSync": {
      "title": "models.dev 料金の自動同期",
      "description": "有効にすると、CC Switch の起動時に選択したモデルの最新料金を定期的に取得し、ローカル料金ファイルに保存します。",
      "enabled": "有効",
      "disabled": "無効",
      "enableConfirmTitle": "料金の自動同期を有効にしますか？",
      "enableConfirmMessage": "有効にすると、CC Switch の起動時に models.dev から選択したモデルの料金を定期的に更新します（最大 6 時間に 1 回）。同じモデル ID の内蔵料金と手動設定した料金は上書きされます。",
      "enableConfirmAction": "自動同期を有効にする",
      "configure": "モデルを選択",
      "configureTitle": "料金を自動同期するモデルを選択",
      "configureDescription": "検索とプロバイダーの絞り込みで自動更新するモデルを選択します。選択内容はローカルに保存されます。",
      "commonModels": "よく使うモデルを自動的に含める",
      "commonModelsDescription": "最近の Claude、GPT、Gemini、Grok、DeepSeek、Qwen、MiMo、LongCat、Kimi、MiniMax、GLM から {{count}} モデルを選択します。",
      "selectFiltered": "絞り込み結果を選択（{{count}}）",
      "clearFiltered": "絞り込み結果を解除",
      "selectedCount": "{{count}} モデルを選択中",
      "selectionHint": "正規化後のモデル ID が同じ項目は一度だけインポートされます。",
      "commonBadge": "よく使う",
      "selectionSaved": "自動料金同期の選択を保存しました",
      "syncSuccess": "料金同期が完了しました：{{imported}} モデルを確認、{{changed}} モデルを更新",
      "syncFailed": "料金同期に失敗しました：{{error}}",
      "configLoadFailed": "ローカル料金設定の読み込みに失敗しました：{{error}}",
      "neverSynced": "未同期",
      "lastSync": "最終同期",
      "commonStatus": "よく使うモデル",
      "lastError": "前回の自動同期に失敗しました：{{error}}",
      "localFile": "ローカル料金ファイル",
      "openFolder": "フォルダーを開く",
      "openFolderFailed": "ローカル料金フォルダーを開けませんでした: {{error}}",
      "reloadLocalFile": "ファイルを再読み込み",
      "localFileReloaded": "ローカル料金ファイルを再読み込みしました",
      "localFileReloadFailed": "ローカル料金ファイルの再読み込みに失敗しました：{{error}}",
      "syncNow": "今すぐ同期"
    },
    "cacheReadCostPerMillion": "キャッシュ読み取りコスト（100万トークンあたり、USD）",
    "cacheCreationCostPerMillion": "キャッシュ書き込みコスト（100万トークンあたり、USD）"
  },
  "usageScript": {
    "title": "利用状況を設定",
    "enableUsageQuery": "利用状況照会を有効にする",
    "presetTemplate": "プリセットテンプレート",
    "requestUrl": "リクエスト URL",
    "requestUrlPlaceholder": "例: https://api.example.com",
    "method": "HTTP メソッド",
    "templateCustom": "カスタム",
    "templateGeneral": "General",
    "templateNewAPI": "NewAPI",
    "templateCopilot": "GitHub Copilot",
    "templateTokenPlan": "Token Plan",
    "templateBalance": "公式",
    "templateOfficialSubscription": "公式サブスクリプション",
    "copilotAutoAuth": "OAuth 認証を自動使用、手動設定不要",
    "tokenPlanHint": "プロバイダーのAPI KeyとBase URLを使用してToken Planクォータを自動クエリ",
    "balanceHint": "プロバイダーのAPI Keyを使用してアカウント残高を自動クエリ",
    "officialSubscriptionHint": "ローカル CLI の OAuth 認証情報を読み取り、公式 API でサブスクリプション枠を照会します。既定では無効で、有効化した後のみリクエストします。",
    "resetDate": "リセット日",
    "premiumRequests": "Premium リクエスト",
    "credentialsConfig": "認証情報",
    "credentialsHint": "空欄の場合はプロバイダー設定を使用",
    "optional": "オプション",
    "apiKeyPlaceholder": "空欄の場合はプロバイダーの API Key を使用",
    "baseUrlPlaceholder": "空欄の場合はプロバイダーの Base URL を使用",
    "baseUrl": "Base URL",
    "accessToken": "Access Token",
    "accessTokenPlaceholder": "「Security Settings」で生成",
    "userId": "ユーザー ID",
    "userIdPlaceholder": "例: 114514",
    "accessKeyId": "AccessKey ID",
    "secretAccessKey": "SecretAccessKey",
    "volcengineAkSkHint": "Volcengine の使用量照会にはアカウントレベルの AccessKey ID / Secret が必要です（推論 API キーとは別物）。Volcengine コンソール右上のアカウントメニュー →「API アクセスキー」で作成してください。",
    "volcengineKeyConsoleLink": "キー作成ページ：",
    "zhipuTeamHint": "智譜チームプランの使用量照会には、チーム API キー（このプロバイダーの認証情報を流用）+ 組織 ID + プロジェクト ID が必要です（リクエストヘッダー bigmodel-organization / bigmodel-project として送信）。組織 ID とプロジェクト ID はチーム管理コンソールの使用量ページの URL で確認できます。",
    "zhipuTeamConsoleLink": "チーム使用量ページ：",
    "organizationId": "組織 ID",
    "organizationIdPlaceholder": "例: org-xxxxxx",
    "projectId": "プロジェクト ID",
    "projectIdPlaceholder": "例: proj-xxxxxx",
    "defaultPlan": "デフォルトプラン",
    "queryFailedMessage": "照会に失敗しました",
    "queryScript": "照会スクリプト (JavaScript)",
    "timeoutSeconds": "タイムアウト（秒）",
    "headers": "ヘッダー",
    "body": "ボディ",
    "timeoutHint": "範囲: 2〜30 秒",
    "timeoutMustBeInteger": "タイムアウトは整数で入力してください（小数は切り捨て）",
    "timeoutCannotBeNegative": "タイムアウトは負の値にできません",
    "autoIntervalMinutes": "自動照会間隔（分、0 で無効）",
    "autoQueryInterval": "自動照会間隔（分）",
    "autoQueryIntervalHint": "0 で無効。推奨 5〜60 分",
    "intervalMustBeInteger": "間隔は整数で入力してください（小数は切り捨て）",
    "intervalCannotBeNegative": "間隔は負の値にできません",
    "intervalAdjusted": "間隔を {{value}} 分に調整しました",
    "scriptHelp": "スクリプトの書き方:",
    "configFormat": "設定の形式:",
    "commentOptional": "任意",
    "commentResponseIsJson": "response は API から返る JSON データです",
    "extractorFormat": "抽出関数の返却形式（すべて任意）:",
    "tips": "💡 ヒント:",
    "testing": "テスト中...",
    "testScript": "スクリプトをテスト",
    "format": "整形",
    "saveConfig": "設定を保存",
    "scriptEmpty": "スクリプト設定は空にできません",
    "mustHaveReturn": "スクリプトには return 文が必要です",
    "testSuccess": "テスト成功！",
    "testFailed": "テストに失敗しました",
    "formatSuccess": "整形に成功しました",
    "formatFailed": "整形に失敗しました",
    "supportedVariables": "使用可能な変数",
    "variablesHint": "使用可能な変数: {{apiKey}}, {{baseUrl}} | extractor 関数には API 応答の JSON オブジェクトが渡されます",
    "scriptConfig": "リクエスト設定",
    "extractorCode": "抽出コード",
    "extractorHint": "戻り値のオブジェクトに残り枠の項目を含めてください",
    "fieldIsValid": "• isValid: Boolean。プランが有効かどうか",
    "fieldInvalidMessage": "• invalidMessage: String。無効時の理由（isValid が false のとき表示）",
    "fieldRemaining": "• remaining: Number。残り枠",
    "fieldUnit": "• unit: String。単位（例: \"USD\"）",
    "fieldPlanName": "• planName: String。プラン名",
    "fieldTotal": "• total: Number。総枠",
    "fieldUsed": "• used: Number。使用量",
    "fieldExtra": "• extra: String。自由記述の追加テキスト",
    "tip1": "• 変数 {{apiKey}} と {{baseUrl}} は自動で置換されます",
    "tip2": "• 抽出関数はサンドボックスで実行され、ES2020+ の構文を使えます",
    "tip3": "• 全体を () で囲み、オブジェクトリテラル式にしてください"
  },
  "dbUpgrade": {
    "title": "データベースのバージョンが新しすぎます",
    "description": "このデータベースは新しいバージョンの CC Switch で作成されています。続行するにはアプリを更新してください。更新してもデータは削除されません。",
    "versionInfo": "データベース v{{db}} · アプリ対応 v{{supported}}",
    "dbPath": "データベースファイル",
    "checking": "利用可能な更新を確認中…",
    "updateAvailable": "新しいバージョン v{{version}} が利用可能です。更新すると続行できます。",
    "incompatibleTitle": "更新しても解決できません",
    "incompatibleDescription": "すでに最新バージョンですが、データベース（v{{db}}）はこのアプリの対応バージョン（v{{supported}}）より新しいままです。サードパーティ製クライアントまたはより新しいビルドで作成された可能性があり、公式アプリを更新しても互換性は得られません。",
    "preparing": "更新を準備中…",
    "downloading": "更新をダウンロード中…",
    "upgradeNow": "アプリを更新",
    "retry": "更新を再試行",
    "openReleases": "リリースページを開く",
    "openConfigDir": "設定フォルダを開く",
    "quit": "終了"
  },
  "errors": {
    "usage_query_failed": "利用状況の取得に失敗しました",
    "configLoadFailedTitle": "設定の読み込みに失敗しました",
    "configLoadFailedMessage": "設定ファイルを読み込めません:\n{{path}}\n\nエラー詳細:\n{{detail}}\n\nJSON が正しいか確認するか、同じディレクトリのバックアップファイル（config.json.bak など）から復元してください。\n\nアプリを終了して修正してください。",
    "frontendCrashTitle": "画面で問題が発生しました",
    "frontendCrashMessage": "エラー情報をアプリ診断ログに保存しようとしました。画面を再読み込みし、問題が続く場合は Issue にログを添付してください。",
    "reloadInterface": "画面を再読み込み"
  },
  "presetSelector": {
    "title": "設定タイプを選択",
    "custom": "カスタム",
    "customDescription": "手動で設定。完全な構成が必要",
    "officialDescription": "公式ログイン。API Key 不要",
    "presetDescription": "プリセットを使用。API Key だけ入力すれば OK"
  },
  "mcp": {
    "title": "MCP 管理",
    "import": "インポート",
    "importExisting": "既存をインポート",
    "addMcp": "MCPを追加",
    "claudeTitle": "Claude Code MCP 管理",
    "codexTitle": "Codex MCP 管理",
    "geminiTitle": "Gemini MCP 管理",
    "unifiedPanel": {
      "title": "MCP サーバー管理",
      "addServer": "サーバーを追加",
      "editServer": "サーバーを編集",
      "deleteServer": "サーバーを削除",
      "deleteConfirm": "サーバー「{{id}}」を削除しますか？この操作は元に戻せません。",
      "noServers": "まだサーバーがありません",
      "enabledApps": "有効なアプリ",
      "noImportFound": "インポートする MCP サーバーが見つかりませんでした。すべてのサーバーは CC Switch で管理されています。",
      "importSuccess": "{{count}} 個の MCP サーバーをインポートしました",
      "apps": {
        "claude": "Claude",
        "codex": "Codex",
        "gemini": "Gemini",
        "grokbuild": "Grok Build",
        "opencode": "OpenCode",
        "openclaw": "OpenClaw",
        "hermes": "Hermes"
      }
    },
    "userLevelPath": "ユーザーレベルの MCP パス",
    "serverList": "サーバー一覧",
    "loading": "読み込み中...",
    "empty": "MCP サーバーがありません",
    "emptyDescription": "右上のボタンから最初の MCP サーバーを追加してください",
    "add": "MCP を追加",
    "addServer": "MCP を追加",
    "editServer": "MCP を編集",
    "addClaudeServer": "Claude Code MCP を追加",
    "editClaudeServer": "Claude Code MCP を編集",
    "addCodexServer": "Codex MCP を追加",
    "editCodexServer": "Codex MCP を編集",
    "configPath": "設定パス",
    "serverCount": "MCP サーバー: {{count}} 件",
    "enabledCount": "{{count}} 件が有効",
    "template": {
      "fetch": "クイックテンプレート: mcp-fetch"
    },
    "form": {
      "title": "MCP ID（ユニーク）",
      "titlePlaceholder": "my-mcp-server",
      "name": "表示名",
      "namePlaceholder": "例: @modelcontextprotocol/server-time",
      "enabledApps": "適用するアプリ",
      "noAppsWarning": "少なくとも 1 つ選択してください",
      "description": "説明",
      "descriptionPlaceholder": "任意の説明",
      "tags": "タグ（カンマ区切り）",
      "tagsPlaceholder": "stdio, time, utility",
      "homepage": "ホームページ",
      "homepagePlaceholder": "https://example.com",
      "docs": "ドキュメント",
      "docsPlaceholder": "https://example.com/docs",
      "additionalInfo": "追加情報",
      "jsonConfig": "JSON 全設定",
      "jsonConfigOrPrefix": "JSON 全設定、または",
      "tomlConfigOrPrefix": "TOML 全設定、または",
      "jsonPlaceholder": "{\n  \"type\": \"stdio\",\n  \"command\": \"uvx\",\n  \"args\": [\"mcp-server-fetch\"]\n}",
      "tomlConfig": "TOML 全設定",
      "tomlPlaceholder": "type = \"stdio\"\ncommand = \"uvx\"\nargs = [\"mcp-server-fetch\"]",
      "useWizard": "設定ウィザード",
      "syncOtherSide": "{{target}} にも反映",
      "syncOtherSideHint": "{{target}} に同じ設定を書き込みます。既存の同一 ID は上書きされます。",
      "willOverwriteWarning": "{{target}} の既存設定を上書きします"
    },
    "wizard": {
      "title": "MCP 設定ウィザード",
      "hint": "MCP サーバーを素早く設定し JSON を自動生成します",
      "type": "タイプ",
      "typeStdio": "stdio",
      "typeHttp": "http",
      "typeSse": "sse",
      "command": "コマンド",
      "commandPlaceholder": "npx または uvx",
      "args": "引数",
      "argsPlaceholder": "arg1\narg2",
      "env": "環境変数",
      "envPlaceholder": "KEY1=value1\nKEY2=value2",
      "url": "URL",
      "urlPlaceholder": "https://api.example.com/mcp",
      "urlRequired": "URL を入力してください",
      "headers": "ヘッダー（任意）",
      "headersPlaceholder": "Authorization: Bearer your_token_here\nContent-Type: application/json",
      "preview": "設定プレビュー",
      "apply": "設定を反映"
    },
    "id": "識別子（ユニーク）",
    "type": "タイプ",
    "command": "コマンド",
    "validateCommand": "コマンドを検証",
    "args": "引数",
    "argsPlaceholder": "例: mcp-server-fetch --help",
    "env": "環境変数（1 行に 1 件、KEY=VALUE）",
    "envPlaceholder": "FOO=bar\nHELLO=world",
    "reset": "リセット",
    "msg": {
      "saved": "保存しました",
      "deleted": "削除しました",
      "enabled": "有効化しました",
      "disabled": "無効化しました",
      "templateAdded": "テンプレートを追加しました"
    },
    "error": {
      "idRequired": "識別子を入力してください",
      "idExists": "この識別子は既に存在します。別のものを選んでください。",
      "jsonInvalid": "JSON 形式が無効です",
      "tomlInvalid": "TOML 形式が無効です",
      "commandRequired": "コマンドを入力してください",
      "singleServerObjectRequired": "単一の MCP サーバーオブジェクトを貼り付けてください（トップレベルの mcpServers は不要）",
      "saveFailed": "保存に失敗しました",
      "deleteFailed": "削除に失敗しました"
    },
    "validation": {
      "ok": "コマンドが見つかりました",
      "fail": "コマンドが見つかりません"
    },
    "confirm": {
      "deleteTitle": "MCP サーバーを削除",
      "deleteMessage": "MCP サーバー「{{id}}」を削除してもよろしいですか？この操作は元に戻せません。"
    },
    "presets": {
      "title": "MCP タイプを選択",
      "enable": "有効化",
      "enabled": "有効",
      "installed": "インストール済み",
      "docs": "ドキュメント",
      "requiresEnv": "環境変数が必要",
      "fetch": {
        "name": "mcp-server-fetch",
        "description": "汎用 HTTP リクエストツール。GET/POST などに対応し、API テストや Web データ取得に最適です"
      },
      "time": {
        "name": "@modelcontextprotocol/server-time",
        "description": "現在時刻、タイムゾーン変換、日付計算を提供する時間クエリツール"
      },
      "memory": {
        "name": "@modelcontextprotocol/server-memory",
        "description": "エンティティ・関係・観測を扱うナレッジグラフ型メモリ。会話の重要情報を AI に記憶させます"
      },
      "sequential-thinking": {
        "name": "@modelcontextprotocol/server-sequential-thinking",
        "description": "複雑な問題をステップに分解して深く考えるためのシーケンシャル思考ツール"
      },
      "context7": {
        "name": "@upstash/context7-mcp",
        "description": "最新のライブラリドキュメントとコード例を提供する Context7 ドキュメント検索ツール。キー設定で上限が拡張されます"
      }
    }
  },
  "prompts": {
    "manage": "プロンプト",
    "title": "{{appName}} プロンプト管理",
    "claudeTitle": "Claude プロンプト管理",
    "codexTitle": "Codex プロンプト管理",
    "add": "プロンプトを追加",
    "edit": "プロンプトを編集",
    "addTitle": "{{appName}} プロンプトを追加",
    "editTitle": "{{appName}} プロンプトを編集",
    "import": "既存をインポート",
    "count": "{{count}} 件のプロンプト",
    "enabled": "有効",
    "enable": "有効化",
    "enabledName": "有効: {{name}}",
    "noneEnabled": "有効なプロンプトがありません",
    "currentFile": "現在の {{filename}} の内容",
    "empty": "まだプロンプトがありません",
    "emptyDescription": "上のボタンからプロンプトを追加またはインポートしてください",
    "loading": "読み込み中...",
    "name": "名前",
    "namePlaceholder": "例: デフォルトプロジェクトプロンプト",
    "description": "説明",
    "descriptionPlaceholder": "任意の説明",
    "content": "内容",
    "contentPlaceholder": "# {{filename}}\n\nここにプロンプト内容を入力...",
    "loadFailed": "プロンプトの読み込みに失敗しました",
    "saveSuccess": "保存しました",
    "saveFailed": "保存に失敗しました",
    "deleteSuccess": "削除しました",
    "deleteFailed": "削除に失敗しました",
    "enableSuccess": "有効化しました",
    "enableFailed": "有効化に失敗しました",
    "disableSuccess": "無効化しました",
    "disableFailed": "無効化に失敗しました",
    "importSuccess": "インポートしました",
    "importFailed": "インポートに失敗しました",
    "confirm": {
      "deleteTitle": "削除の確認",
      "deleteMessage": "プロンプト「{{name}}」を削除してもよろしいですか？"
    }
  },
  "profiles": {
    "switcherTooltip": {
      "claude": "プロジェクト：Claude Code のプロバイダー / MCP / Skills / メモリファイルをワンクリックで切り替え",
      "claude-desktop": "プロジェクト：Claude Desktop のプロバイダーをワンクリックで切り替え",
      "codex": "プロジェクト：Codex のプロバイダー / MCP / Skills / メモリファイルをワンクリックで切り替え"
    },
    "none": "プロジェクトを使用しない",
    "searchPlaceholder": "プロジェクトを検索",
    "empty": "プロジェクトはまだありません",
    "createFromCurrent": "新規プロジェクト",
    "createDescription": {
      "claude": "Claude Code の現在のプロバイダー、MCP、Skills、メモリファイルをプロジェクトとして保存し、後からワンクリックで切り替えられます。",
      "claude-desktop": "Claude Desktop の現在のプロバイダーをプロジェクトとして保存し、後からワンクリックで切り替えられます。",
      "codex": "Codex の現在のプロバイダー、MCP、Skills、メモリファイルの設定をプロジェクトとして保存し、後からワンクリックで切り替えられます。"
    },
    "manage": "プロジェクトを管理…",
    "manageTitle": "プロジェクト管理",
    "manageDescription": "プロジェクトは設定のスナップショットです。プロジェクトを切り替えると、現在の設定は元のプロジェクトに自動的に保存されます。",
    "namePlaceholder": "例：開発、イラスト",
    "rename": "名前を変更",
    "noSnapshotForScope": "このアプリ側は未保存",
    "delete": "削除",
    "deleteConfirmTitle": "削除の確認",
    "deleteConfirmMessage": "プロジェクト「{{name}}」を削除してもよろしいですか？現在の設定は変更されません。",
    "createSuccess": "プロジェクトを作成しました",
    "createFailed": "プロジェクトの作成に失敗しました: {{detail}}",
    "updateSuccess": "プロジェクトを更新しました",
    "updateFailed": "プロジェクトの更新に失敗しました: {{detail}}",
    "deleteSuccess": "プロジェクトを削除しました",
    "deleteFailed": "プロジェクトの削除に失敗しました: {{detail}}",
    "applySuccess": "プロジェクトを適用しました",
    "applyFailed": "プロジェクトの適用に失敗しました: {{detail}}",
    "applyWarnings": "プロジェクトを適用しました（警告 {{warningCount}} 件）：\n{{details}}",
    "clearSuccess": "プロジェクトを使用しない状態に切り替えました"
  },
  "workspace": {
    "title": "ワークスペースファイル",
    "manage": "ワークスペース",
    "files": {
      "agents": "エージェントの操作指示とルール",
      "soul": "エージェントの人格とコミュニケーションスタイル",
      "user": "ユーザープロファイルと設定",
      "identity": "エージェントの名前とアバター",
      "tools": "ローカルツールドキュメント",
      "memory": "長期記憶と意思決定記録",
      "heartbeat": "ハートビート実行チェックリスト",
      "bootstrap": "初回実行ブートストラップ",
      "boot": "ゲートウェイ再起動チェックリスト"
    },
    "editing": "{{filename}} を編集",
    "saveSuccess": "保存しました",
    "saveFailed": "保存に失敗しました",
    "loadFailed": "読み込みに失敗しました",
    "openDirectory": "ファイルマネージャーで開く",
    "dailyMemory": {
      "title": "デイリーメモリー",
      "sectionTitle": "デイリーメモリー",
      "cardTitle": "デイリーメモリーファイル",
      "cardDescription": "デイリーメモリーの閲覧・管理",
      "createToday": "メモリーを追加",
      "empty": "デイリーメモリーファイルはまだありません",
      "loadFailed": "デイリーメモリーファイルの読み込みに失敗しました",
      "createFailed": "デイリーメモリーファイルの作成に失敗しました",
      "deleteSuccess": "デイリーメモリーファイルを削除しました",
      "deleteFailed": "デイリーメモリーファイルの削除に失敗しました",
      "confirmDeleteTitle": "デイリーメモリーを削除",
      "confirmDeleteMessage": "{{date}} のデイリーメモリーを削除しますか？この操作は取り消せません。",
      "searchPlaceholder": "全文検索...",
      "searchScopeHint": "すべてのデイリーメモリーを全文検索 ⌘F",
      "searchCloseHint": "Escで閉じる",
      "noSearchResults": "検索に一致するデイリーメモリーはありません。",
      "searching": "検索中...",
      "searchFailed": "検索に失敗しました",
      "matchCount": "{{count}}件一致"
    }
  },
  "openclaw": {
    "backupCreated": "バックアップを作成しました: {{path}}",
    "providerKey": "プロバイダーキー",
    "providerKeyPlaceholder": "my-provider",
    "providerKeyHint": "設定ファイル内のユニーク識別子。小文字、数字、ハイフンのみ使用可能。",
    "providerKeyLockedHint": "このプロバイダーは既にアプリ設定へ追加されているため、キーは変更できません。",
    "providerKeyRequired": "プロバイダーキーを入力してください",
    "providerKeyDuplicate": "このキーは既に使用されています",
    "providerKeyInvalid": "無効な形式です。小文字、数字、ハイフンのみ使用可能。",
    "apiProtocol": "API プロトコル",
    "selectProtocol": "API プロトコルを選択",
    "apiProtocolHint": "プロバイダーの API と互換性のあるプロトコルタイプを選択してください。ほとんどのプロバイダーは OpenAI Completions 形式を使用します。",
    "baseUrl": "API エンドポイント",
    "baseUrlHint": "プロバイダーの API エンドポイントアドレス。",
    "models": "モデル一覧",
    "addModel": "モデルを追加",
    "noModels": "モデルが設定されていません。「モデルを追加」をクリックして利用可能なモデルを設定してください。",
    "modelId": "モデル ID",
    "modelIdPlaceholder": "claude-3-sonnet",
    "modelName": "表示名",
    "modelNamePlaceholder": "Claude 3 Sonnet",
    "contextWindow": "コンテキストウィンドウ",
    "maxTokens": "最大出力トークン数",
    "reasoning": "推論モード",
    "reasoningOn": "有効",
    "reasoningOff": "無効",
    "inputTypes": "入力タイプ",
    "inputCost": "入力コスト ($/M トークン)",
    "outputCost": "出力コスト ($/M トークン)",
    "advancedOptions": "詳細オプション",
    "cacheReadCost": "キャッシュ読取コスト ($/M トークン)",
    "cacheWriteCost": "キャッシュ書込コスト ($/M トークン)",
    "cacheCostHint": "キャッシュコストは Prompt Caching のコスト計算に使用されます。キャッシュを使用しない場合は空欄のままにしてください。",
    "modelsHint": "このプロバイダーがサポートするモデルを設定します。モデル ID は API 呼び出しに、表示名はインターフェースに使用されます。",
    "userAgent": "User-Agent を送信",
    "userAgentHint": "一部のプロバイダーはブラウザの User-Agent ヘッダーが必要です。",
    "env": {
      "title": "環境変数",
      "description": "openclaw.json の環境変数設定を管理（APIキー、カスタム変数など）",
      "editorHint": "env セクション全体を JSON として編集します。env.vars や env.shellEnv などのネストしたオブジェクトにも対応しています。",
      "objectRequired": "OpenClaw の env は JSON オブジェクトである必要があります。",
      "invalidJson": "OpenClaw の env は有効な JSON である必要があります。",
      "empty": "OpenClaw の env は空にできません。空オブジェクトの場合は {} を使用してください。",
      "keyPlaceholder": "変数名",
      "valuePlaceholder": "値",
      "add": "変数を追加",
      "saveSuccess": "環境変数を保存しました",
      "saveFailed": "環境変数の保存に失敗しました",
      "loadFailed": "環境変数の読み込みに失敗しました",
      "duplicateKey": "重複する変数名が検出されました: {{key}}"
    },
    "tools": {
      "title": "ツール権限",
      "description": "openclaw.json のツール権限設定を管理（許可/拒否リスト）",
      "profile": "権限プロファイル",
      "profileMinimal": "最小",
      "profileCoding": "コーディング",
      "profileMessaging": "メッセージ",
      "profileFull": "フルアクセス",
      "profileUnset": "未設定",
      "unsupportedProfileTitle": "未対応のツールプロファイルを検出しました",
      "unsupportedProfileDescription": "現在の tools.profile の値 '{{value}}' は OpenClaw の対応リストにありません。新しい値を選択するまでこの値を保持します。",
      "unsupportedProfileLabel": "未対応",
      "allowList": "許可リスト",
      "denyList": "拒否リスト",
      "patternPlaceholder": "ツール名またはパターン",
      "addAllow": "許可を追加",
      "addDeny": "拒否を追加",
      "saveSuccess": "ツール権限を保存しました",
      "saveFailed": "ツール権限の保存に失敗しました",
      "loadFailed": "ツール権限の読み込みに失敗しました"
    },
    "agents": {
      "title": "Agents 設定",
      "description": "openclaw.json の agents.defaults 設定を管理（デフォルトモデル、ランタイムパラメータなど）",
      "modelSection": "モデル設定",
      "primaryModel": "デフォルトモデル",
      "primaryModelHint": "設定済みプロバイダのモデルから選択してください",
      "notSet": "未設定",
      "fallbackModels": "フォールバックモデル",
      "fallbackModelsHint": "プライマリモデルが利用不可の場合、優先度順にフォールバックが試行されます",
      "addFallback": "フォールバックモデルを追加",
      "noModels": "設定済みのプロバイダモデルがありません。先に OpenClaw プロバイダを追加してください。",
      "notInList": "{{value}} (未設定)",
      "runtimeSection": "ランタイムパラメータ",
      "workspace": "ワークスペースパス",
      "timeout": "タイムアウト（秒）",
      "contextTokens": "コンテキストトークン数",
      "maxConcurrent": "最大同時実行数",
      "legacyTimeoutTitle": "旧タイムアウト設定を検出しました",
      "legacyTimeoutDescription": "この設定ではまだ agents.defaults.timeout を使用しています。ここで保存すると timeoutSeconds に移行されます。",
      "saveSuccess": "Agents 設定を保存しました",
      "saveFailed": "Agents 設定の保存に失敗しました",
      "loadFailed": "Agents 設定の読み込みに失敗しました"
    },
    "health": {
      "title": "OpenClaw 設定の警告を検出しました",
      "invalidToolsProfile": "tools.profile に未対応の値が設定されています。OpenClaw が現在サポートしているのは minimal、coding、messaging、full です。",
      "legacyTimeout": "agents.defaults.timeout は非推奨です。Agents パネルを保存すると timeoutSeconds に移行されます。",
      "stringifiedEnvVars": "env.vars はオブジェクトである必要がありますが、現在の値は文字列化または破損しているようです。",
      "stringifiedShellEnv": "env.shellEnv はオブジェクトである必要がありますが、現在の値は文字列化または破損しているようです。",
      "parseFailed": "openclaw.json を有効な JSON5 として解析できませんでした。ここで編集する前にファイルを修正してください。"
    },
    "primaryModel": "プライマリモデル",
    "fallbackModel": "フォールバックモデル"
  },
  "hermes": {
    "form": {
      "baseUrl": "API エンドポイント",
      "baseUrlHint": "プロバイダーの API エンドポイント URL。",
      "providerKey": "プロバイダーキー",
      "providerKeyPlaceholder": "my-provider",
      "providerKeyHint": "小文字、数字、ハイフンのみ。config.yaml のプロバイダー名として使用されます。",
      "providerKeyLockedHint": "このプロバイダーは Hermes 設定に追加済みのため、キーは変更できません。",
      "providerKeyRequired": "プロバイダーキーは必須です",
      "providerKeyInvalid": "プロバイダーキーは小文字、数字、ハイフンのみ使用できます",
      "providerKeyDuplicate": "このプロバイダーキーは既に存在します",
      "apiMode": "API モード",
      "apiModeHint": "プロバイダーの API プロトコル。エンドポイントに合わせて正しい形式を選択してください。",
      "apiModeChatCompletions": "OpenAI Chat Completions",
      "apiModeAnthropicMessages": "Anthropic Messages",
      "apiModeCodexResponses": "OpenAI Responses",
      "apiModeBedrockConverse": "AWS Bedrock Converse",
      "baseUrlRequired": "API エンドポイントは必須です",
      "baseUrlScheme": "http:// または https:// で始まるアドレスを指定してください",
      "baseUrlInvalid": "API エンドポイントは有効な URL ではありません",
      "models": "モデル一覧",
      "addModel": "モデルを追加",
      "noModels": "モデル未設定。このプロバイダーに切り替えてもデフォルトモデルは更新されません。",
      "modelId": "モデル ID",
      "modelIdPlaceholder": "anthropic/claude-opus-5",
      "modelName": "表示名",
      "modelNamePlaceholder": "Claude Opus 5",
      "contextLength": "コンテキスト長",
      "advancedOptions": "詳細オプション",
      "modelsHint": "切り替え時、最初のモデルが model.default に書き込まれます。",
      "primaryModel": "デフォルト",
      "fallbackModel": "予備",
      "providerAdvanced": "プロバイダー詳細オプション",
      "rateLimitDelay": "リクエスト間隔（秒）",
      "rateLimitDelayHint": "連続したリクエスト間の最小待機秒数（任意）。空欄の場合は制限なし。"
    },
    "webui": {
      "open": "Hermes Web UI を開く",
      "offline": "Hermes Web UI が起動していません。まず `hermes dashboard` を実行してください。",
      "openFailed": "Hermes Web UI を開けませんでした",
      "launchConfirmTitle": "Hermes Dashboard が起動していません",
      "launchConfirmMessage": "ターミナルを開いて `hermes dashboard` を実行しますか？\n\n起動完了後、ブラウザが自動的に開きます。\n\nターミナルに `hermes` が見つからない、または web 依存が不足するというエラーが表示される場合は、まず次を実行してください：\npip install hermes-agent[web]",
      "launchConfirmAction": "ターミナルを開いて起動",
      "launching": "ターミナルで hermes dashboard を起動しました。",
      "launchFailed": "ターミナルを開けませんでした"
    },
    "memory": {
      "title": "メモリ",
      "agentTab": "エージェント記憶 (MEMORY.md)",
      "userTab": "ユーザープロファイル (USER.md)",
      "usage": "{{current}} / {{limit}} 文字",
      "overLimit": "上限を超えました。Hermes は次回読み込み時に切り詰めます",
      "enableOn": "有効",
      "enableOff": "無効",
      "disabledHint": "再度有効化するまで Hermes はこの記憶をスキップします",
      "toggleFailed": "メモリの切り替えに失敗しました",
      "saveSuccess": "記憶を保存しました",
      "saveFailed": "記憶の保存に失敗しました",
      "loadFailed": "記憶ファイルの読み込みに失敗しました",
      "openConfig": "Hermes Web UI で上限を調整",
      "runtimeNote": "変更は Hermes の再起動または新規セッション時に反映されます。"
    }
  },
  "env": {
    "warning": {
      "title": "競合する環境変数を検出しました",
      "description": "設定を上書きする可能性のある環境変数を {{count}} 件見つけました"
    },
    "actions": {
      "expand": "詳細を表示",
      "collapse": "折りたたむ",
      "selectAll": "すべて選択",
      "clearSelection": "選択を解除",
      "deleteSelected": "選択 {{count}} 件を削除",
      "deleting": "削除中..."
    },
    "field": {
      "value": "値",
      "source": "ソース"
    },
    "source": {
      "userRegistry": "ユーザー環境変数（レジストリ）",
      "systemRegistry": "システム環境変数（レジストリ）",
      "systemEnv": "システム環境変数"
    },
    "delete": {
      "success": "環境変数を削除しました",
      "error": "環境変数の削除に失敗しました"
    },
    "backup": {
      "location": "バックアップ場所: {{path}}"
    },
    "confirm": {
      "title": "環境変数を削除しますか？",
      "message": "{{count}} 件の環境変数を削除してもよろしいですか？",
      "backupNotice": "削除前に自動バックアップを作成します。後で復元できます。再起動またはターミナル再起動後に反映されます。",
      "confirm": "削除を確認"
    },
    "error": {
      "noSelection": "削除する環境変数を選択してください"
    }
  },
  "skills": {
    "manage": "Skills",
    "title": "Skills 管理",
    "description": "人気リポジトリからスキルを探してインストールし、Claude Code/Codex/Gemini を拡張",
    "refresh": "更新",
    "refreshing": "更新中...",
    "repoManager": "リポジトリ管理",
    "count": "{{count}} 個のスキル",
    "empty": "スキルがありません",
    "emptyDescription": "スキルリポジトリを追加して探索してください",
    "addRepo": "スキルリポジトリを追加",
    "loading": "読み込み中...",
    "installed": "インストール済み",
    "install": "インストール",
    "installing": "インストール中...",
    "uninstall": "アンインストール",
    "uninstalling": "アンインストール中...",
    "view": "表示",
    "noDescription": "説明なし",
    "loadFailed": "読み込みに失敗しました",
    "installSuccess": "スキル {{name}} をインストールしました",
    "installFailed": "インストールに失敗しました",
    "uninstallSuccess": "スキル {{name}} をアンインストールしました",
    "uninstallFailed": "アンインストールに失敗しました",
    "update": "更新",
    "updating": "更新中...",
    "updateAvailable": "更新あり",
    "updateSuccess": "スキル {{name}} を最新バージョンに更新しました",
    "updateFailed": "更新に失敗しました",
    "checkUpdates": "更新を確認",
    "checkingUpdates": "確認中...",
    "noUpdates": "すべてのスキルは最新です",
    "updatesFound": "{{count}} 個のスキルに更新があります",
    "updateAll": "すべて更新 ({{count}})",
    "updatingAll": "更新中...",
    "updateAllSuccess": "{{count}} 個のスキルを更新しました",
    "error": {
      "skillNotFound": "スキルが見つかりません: {{directory}}",
      "missingRepoInfo": "リポジトリ情報（owner または name）が不足しています",
      "downloadTimeout": "リポジトリ {{owner}}/{{name}} のダウンロードがタイムアウトしました（{{timeout}} 秒）",
      "downloadTimeoutHint": "ネットワークを確認するか、時間をおいて再試行してください",
      "skillPathNotFound": "リポジトリ {{owner}}/{{name}} にスキルパス '{{path}}' がありません",
      "skillDirNotFound": "スキルディレクトリが見つかりません: {{path}}",
      "directoryConflict": "スキルディレクトリ '{{directory}}' は既に {{existing_repo}} で使用されています。{{new_repo}} からインストールできません",
      "emptyArchive": "ダウンロードしたアーカイブが空です",
      "invalidRepoRef": "リポジトリの指定が不正です：{{owner}}/{{name}}",
      "archiveTooLarge": "アーカイブが展開上限 {{limit_mb}} MB を超えたため中止しました",
      "archiveTooManyEntries": "アーカイブのエントリ数が多すぎます（{{count}}）。上限は {{limit}} です",
      "downloadFailed": "ダウンロードに失敗しました: HTTP {{status}}",
      "allBranchesFailed": "すべてのブランチで失敗しました。試行: {{branches}}",
      "httpError": "HTTP エラー {{status}}",
      "http403": "GitHub へのアクセスが制限されています（レート制限の可能性）",
      "http404": "リポジトリまたはブランチが見つかりません。URL を確認してください",
      "http429": "リクエストが多すぎます。時間をおいて再試行してください",
      "parseMetadataFailed": "スキルメタデータの解析に失敗しました",
      "getHomeDirFailed": "ユーザーのホームディレクトリを取得できません",
      "noSkillsInZip": "ZIP ファイルにスキルが見つかりません（SKILL.md ファイルが必要です）",
      "networkError": "ネットワークエラー",
      "fsError": "ファイルシステムエラー",
      "unknownError": "不明なエラー",
      "suggestion": {
        "checkNetwork": "ネットワーク接続を確認してください",
        "checkProxy": "HTTP プロキシの設定を検討してください",
        "retryLater": "時間をおいて再試行してください",
        "checkRepoUrl": "リポジトリ URL とブランチ名を確認してください",
        "checkDiskSpace": "ディスク容量を確認してください",
        "checkPermission": "ディレクトリの権限を確認してください",
        "uninstallFirst": "同名のスキルを先にアンインストールしてください",
        "checkZipContent": "ZIP ファイルに有効なスキルディレクトリ（SKILL.md を含む）が含まれていることを確認してください"
      }
    },
    "repo": {
      "title": "スキルリポジトリを管理",
      "description": "GitHub のスキルリポジトリソースを追加または削除します",
      "url": "リポジトリ URL",
      "urlPlaceholder": "owner/name または https://github.com/owner/name",
      "branch": "ブランチ",
      "branchPlaceholder": "main",
      "path": "スキルパス",
      "pathPlaceholder": "skills（任意。空欄はルート）",
      "add": "リポジトリを追加",
      "list": "追加済みリポジトリ",
      "empty": "リポジトリがありません",
      "invalidUrl": "リポジトリ URL の形式が無効です",
      "addSuccess": "リポジトリ {{owner}}/{{name}} を追加しました。検出スキル: {{count}} 件",
      "addFailed": "追加に失敗しました",
      "removeSuccess": "リポジトリ {{owner}}/{{name}} を削除しました",
      "removeFailed": "削除に失敗しました",
      "skillCount": "{{count}} 件のスキルを検出"
    },
    "search": "スキルを検索",
    "searchPlaceholder": "スキル名またはリポジトリで検索...",
    "searchSource": {
      "repos": "リポジトリ",
      "skillssh": "skills.sh"
    },
    "skillssh": {
      "searchPlaceholder": "skills.sh を検索（2文字以上）...",
      "installs": "{{count}} インストール",
      "loadMore": "さらに読み込む",
      "loading": "skills.sh を検索中...",
      "noResults": "\"{{query}}\" に該当するスキルがありません",
      "error": "skills.sh の検索に失敗しました",
      "poweredBy": "Powered by skills.sh"
    },
    "filter": {
      "placeholder": "状態で絞り込み",
      "all": "すべて",
      "installed": "インストール済み",
      "uninstalled": "未インストール",
      "repo": "リポジトリで絞り込み",
      "allRepos": "すべてのリポジトリ"
    },
    "noResults": "一致するスキルが見つかりませんでした",
    "noInstalled": "インストールされたスキルがありません",
    "noInstalledDescription": "リポジトリからスキルを発見してインストールするか、既存のスキルをインポートしてください",
    "discover": "スキルを発見",
    "import": "既存をインポート",
    "importDescription": "CC Switch 統合管理にインポートするスキルを選択してください",
    "importSuccess": "{{count}} 件のスキルをインポートしました",
    "importSelected": "選択をインポート ({{count}})",
    "noUnmanagedFound": "インポートするスキルが見つかりませんでした。すべてのスキルは CC Switch で管理されています。",
    "unmanagedAvailable": "インポート可能なスキルがあります",
    "foundIn": "発見場所",
    "local": "ローカル",
    "uninstallConfirm": "「{{name}}」をアンインストールしますか？すべてのアプリからこのスキルが削除され、削除前にローカルバックアップが自動作成されます。",
    "uninstallInMainPanel": "メインパネルからスキルをアンインストールしてください",
    "notFound": "スキルが見つかりません",
    "backup": {
      "location": "バックアップ場所: {{path}}"
    },
    "restoreFromBackup": {
      "button": "バックアップから復元",
      "title": "バックアップから復元",
      "description": "Skills バックアップを選択して、ローカルにファイルを復元し、現在の一覧へ戻します。",
      "empty": "復元できる Skills バックアップはありません",
      "createdAt": "バックアップ日時",
      "path": "バックアップパス",
      "restore": "復元",
      "restoring": "復元中...",
      "delete": "削除",
      "deleting": "削除中...",
      "deleteSuccess": "スキルバックアップ {{name}} を削除しました",
      "deleteFailed": "スキルバックアップの削除に失敗しました",
      "deleteConfirmTitle": "バックアップを削除",
      "deleteConfirmMessage": "スキルバックアップ「{{name}}」を削除しますか？この操作は元に戻せません。",
      "success": "スキル {{name}} をバックアップから復元しました",
      "failed": "バックアップからの復元に失敗しました"
    },
    "apps": {
      "claude": "Claude",
      "codex": "Codex",
      "gemini": "Gemini",
      "opencode": "OpenCode",
      "openclaw": "OpenClaw"
    },
    "installFromZip": {
      "button": "ZIP からインストール",
      "installing": "インストール中...",
      "successSingle": "スキル {{name}} をインストールしました",
      "successMultiple": "{{count}} 件のスキルをインストールしました",
      "noSkillsFound": "ZIP ファイルにスキルが見つかりません（SKILL.md が必要です）"
    }
  },
  "deeplink": {
    "confirmImport": "プロバイダーのインポートを確認",
    "confirmImportDescription": "次の設定をディープリンクから CC Switch へインポートします",
    "importPrompt": "プロンプトをインポート",
    "importPromptDescription": "このシステムプロンプトをインポートするか確認してください",
    "importMcp": "MCP サーバーをインポート",
    "importMcpDescription": "これらの MCP サーバーをインポートするか確認してください",
    "importSkill": "スキルリポジトリを追加",
    "importSkillDescription": "このスキルリポジトリを追加するか確認してください",
    "promptImportSuccess": "プロンプトをインポートしました",
    "promptImportSuccessDescription": "インポートされたプロンプト: {{name}}",
    "mcpImportSuccess": "MCP サーバーをインポートしました",
    "mcpImportSuccessDescription": "{{count}} 件のサーバーをインポートしました",
    "mcpPartialSuccess": "一部のみインポート成功",
    "mcpPartialSuccessDescription": "成功: {{success}}、失敗: {{failed}}",
    "skillImportSuccess": "スキルリポジトリを追加しました",
    "skillImportSuccessDescription": "追加したリポジトリ: {{repo}}",
    "app": "アプリ種別",
    "providerName": "プロバイダー名",
    "homepage": "ホームページ",
    "endpoint": "API エンドポイント",
    "apiKey": "API Key",
    "icon": "アイコン",
    "model": "モデル",
    "haikuModel": "Haiku モデル",
    "sonnetModel": "Sonnet モデル",
    "opusModel": "Opus モデル",
    "multiModel": "マルチモーダルモデル",
    "notes": "メモ",
    "import": "インポート",
    "importing": "インポート中...",
    "warning": "インポート前に内容を確認してください。後から一覧で編集・削除できます。",
    "parseError": "ディープリンクの解析に失敗しました",
    "importSuccess": "インポート成功",
    "importSuccessDescription": "プロバイダー「{{name}}」をインポートしました",
    "importError": "インポートに失敗しました",
    "configSource": "設定ソース",
    "configEmbedded": "埋め込み設定",
    "configRemote": "リモート設定",
    "configDetails": "設定の詳細",
    "configUrl": "設定ファイル URL",
    "configMergeError": "設定ファイルのマージに失敗しました",
    "primaryEndpoint": "メイン",
    "mcp": {
      "title": "MCP サーバーを一括インポート",
      "targetApps": "ターゲットアプリ",
      "serverCount": "MCP サーバー（{{count}} 件）",
      "enabledWarning": "インポート後、指定したすべてのアプリに即座に書き込まれます",
      "command": "コマンド",
      "args": "引数",
      "env": "環境変数",
      "url": "URL"
    },
    "prompt": {
      "title": "システムプロンプトをインポート",
      "app": "アプリ",
      "name": "名前",
      "description": "説明",
      "contentPreview": "内容プレビュー",
      "enabledWarning": "インポート後すぐにこのプロンプトが有効になり、他は無効になります"
    },
    "skill": {
      "title": "Claude スキルリポジトリを追加",
      "repo": "GitHub リポジトリ",
      "directory": "対象ディレクトリ",
      "branch": "ブランチ",
      "skillsPath": "スキルパス",
      "hint": "この操作でスキルリポジトリが一覧に追加されます。",
      "hintDetail": "追加後、スキル管理ページから個別のスキルをインストールできます。"
    },
    "usageScript": "使用量クエリ",
    "usageScriptEnabled": "有効",
    "usageScriptDisabled": "無効",
    "usageScriptCode": "スクリプトコード",
    "usageScriptWarning": "これは有効化すると使用量クエリ時に実行される JavaScript です。提供元が信頼できる場合のみインポートしてください。",
    "usageApiKey": "使用量 API キー",
    "usageBaseUrl": "使用量クエリ URL",
    "usageAutoInterval": "自動クエリ",
    "usageAutoIntervalValue": "{{minutes}} 分ごと",
    "risk": {
      "envHijack": "この設定には、プロセスの読み込み動作を変える環境変数（ライブラリの注入、CA 証明書の差し替えなど）が含まれています。信頼できる提供元か確認してください。",
      "privateEndpoint": "このアドレスはローカルホストまたは内部ネットワークを指しています。自分で立てたローカルサービス以外はインポートしないでください。",
      "shellCommand": "この設定はシェル経由でコマンド全体を実行します。実際に動作する内容は引数にあります。1 行ずつ確認してください。"
    }
  },
  "iconPicker": {
    "search": "アイコンを検索",
    "searchPlaceholder": "アイコン名を入力...",
    "noResults": "一致するアイコンが見つかりません",
    "category": {
      "aiProvider": "AI プロバイダー",
      "cloud": "クラウドプラットフォーム",
      "tool": "開発ツール",
      "other": "その他"
    }
  },
  "providerIcon": {
    "label": "アイコン",
    "colorLabel": "アイコンカラー",
    "selectIcon": "アイコンを選択",
    "preview": "プレビュー",
    "clickToChange": "クリックでアイコンを変更",
    "clickToSelect": "クリックでアイコンを選択"
  },
  "migration": {
    "success": "設定の移行が完了しました",
    "skillsSuccess": "スキルを {{count}} 件、自動的に統合管理へインポートしました",
    "skillsFailed": "スキルの自動インポートに失敗しました",
    "skillsFailedDescription": "Skills 画面で「既存をインポート」をクリックして手動でインポートしてください（または再起動して再試行）。"
  },
  "agents": {
    "title": "エージェント"
  },
  "health": {
    "operational": "正常",
    "degraded": "低下",
    "failed": "失敗",
    "circuitOpen": "サーキットオープン",
    "consecutiveFailures": "{{count}} 回連続失敗"
  },
  "failover": {
    "enabled": "{{app}} フェイルオーバーが有効になりました",
    "disabled": "{{app}} フェイルオーバーが無効になりました",
    "toggleFailed": "操作に失敗しました: {{detail}}",
    "inQueue": "キュー内",
    "addQueue": "追加",
    "priority": {
      "tooltip": "フェイルオーバー優先度 {{priority}}"
    },
    "tooltip": {
      "enabled": "{{app}} フェイルオーバーが有効\nキューの優先度（P1→P2→...）で使用します",
      "disabled": "{{app}} フェイルオーバーを有効にする\nキューの P1 に即時切替し、失敗時は次を順に試行します",
      "takeoverRequired": "先に {{app}} を引き継いでから、フェイルオーバーを有効にしてください"
    }
  },
  "proxy": {
    "panel": {
      "serviceAddress": "サービスアドレス",
      "addressCopied": "アドレスをコピーしました",
      "currentProvider": "現在のプロバイダー:",
      "waitingFirstRequest": "現在のプロバイダー: 最初のリクエスト待ち...",
      "stoppedTitle": "ルーティングサービス停止中",
      "stoppedDescription": "上のトグルでサービスを開始できます",
      "openSettings": "ルーティングサービスを設定",
      "stats": {
        "activeConnections": "アクティブ接続",
        "totalRequests": "総リクエスト数",
        "successRate": "成功率",
        "uptime": "稼働時間"
      }
    },
    "settings": {
      "title": "ルーティングサービス設定",
      "description": "ローカルルーティングサーバーのリッスンアドレス、ポート、実行パラメータを設定します。保存後すぐに反映されます。",
      "alert": {
        "autoApply": "変更は実行中のルーティングサービスに自動的に同期され、手動での再起動は不要です。"
      },
      "basic": {
        "title": "基本設定",
        "description": "ルーティングサービスのリッスンアドレスとポートを設定します。"
      },
      "advanced": {
        "title": "詳細パラメータ",
        "description": "リクエストの安定性とログ記録を制御します。"
      },
      "timeout": {
        "title": "タイムアウト設定",
        "description": "ストリーミングと非ストリーミングリクエストのタイムアウトを設定します。"
      },
      "fields": {
        "listenAddress": {
          "label": "リッスンアドレス",
          "placeholder": "127.0.0.1",
          "description": "ルーティングサーバーがリッスンするIPアドレス（推奨: 127.0.0.1）"
        },
        "listenPort": {
          "label": "リッスンポート",
          "placeholder": "15721",
          "description": "ルーティングサーバーがリッスンするポート番号（1024 ~ 65535）"
        },
        "maxRetries": {
          "label": "最大リトライ回数",
          "placeholder": "3",
          "description": "リクエスト失敗時のリトライ回数（0 ~ 10）"
        },
        "requestTimeout": {
          "label": "リクエストタイムアウト（秒）",
          "placeholder": "0（無制限）または 300",
          "description": "単一リクエストの最大待機時間（0 = 無制限、または 10 ~ 600 秒）"
        },
        "enableLogging": {
          "label": "リクエスト使用量を記録",
          "description": "ルーティングリクエストの使用量と状態をローカル統計データベースに保存"
        },
        "streamingFirstByteTimeout": {
          "label": "ストリーミング初回バイトタイムアウト（秒）",
          "description": "最初のデータチャンクを待つ最大時間"
        },
        "streamingIdleTimeout": {
          "label": "ストリーミングアイドルタイムアウト（秒）",
          "description": "データチャンク間の最大間隔"
        },
        "nonStreamingTimeout": {
          "label": "非ストリーミングタイムアウト（秒）",
          "description": "非ストリーミングリクエストの総タイムアウト"
        }
      },
      "validation": {
        "addressInvalid": "有効なIPアドレスを入力してください",
        "portMin": "ポートは1024より大きい必要があります",
        "portMax": "ポートは65535より小さい必要があります",
        "retryMin": "リトライ回数は負の値にできません",
        "retryMax": "リトライ回数は10を超えることはできません",
        "timeoutNonNegative": "タイムアウトは負の値にできません",
        "timeoutMax": "タイムアウトは600秒を超えることはできません",
        "timeoutRange": "0または10-600の間の値を入力してください",
        "streamingTimeoutMin": "タイムアウトは少なくとも5秒必要です",
        "streamingTimeoutMax": "タイムアウトは300秒を超えることはできません"
      },
      "actions": {
        "save": "設定を保存"
      },
      "toast": {
        "saved": "ルーティング設定を保存しました",
        "saveFailed": "保存に失敗しました: {{error}}"
      },
      "invalidPort": "無効なポートです。1024〜65535 の数値を入力してください",
      "invalidAddress": "無効なアドレスです。IPv4（例: 127.0.0.1）、IPv6（例: ::1）、または localhost を入力してください",
      "configSaved": "ルーティング設定を保存しました",
      "configSaveFailed": "設定の保存に失敗しました",
      "restartRequired": "アドレスまたはポートの変更を反映するにはルーティングサービスの再起動が必要です"
    },
    "switchFailed": "切り替えに失敗しました: {{error}}",
    "takeover": {
      "hint": "ルーティングするアプリを選択します。有効にすると、そのアプリのリクエストはローカルルーティング経由で転送されます",
      "enabled": "{{app}} ルーティング有効",
      "disabled": "{{app}} ルーティング無効",
      "failed": "ルーティングの切り替えに失敗しました: {{detail}}",
      "tooltip": {
        "active": "{{appLabel}} がルーティング中 - {{address}}:{{port}}\nホットスイッチングのためプロバイダを切り替え",
        "broken": "{{appLabel}} がルーティング中ですが、ルーティングサービスが実行されていません",
        "inactive": "{{appLabel}} のリクエストをローカルルーティング経由でルーティング"
      }
    },
    "failover": {
      "proxyRequired": "フェイルオーバーを設定するには、ルーティングサービスを先に起動する必要があります",
      "autoSwitch": "自動フェイルオーバー",
      "autoSwitchDescription": "有効にするとキューの P1 に即時切り替え、リクエスト失敗時はキュー内の次のプロバイダーを自動で試行します"
    },
    "failoverQueue": {
      "title": "フェイルオーバーキュー",
      "description": "各アプリのプロバイダーのフェイルオーバー順序を管理します",
      "info": "自動フェイルオーバーを有効にすると、キューの優先度順（P1 優先）でプロバイダーを使用します。失敗時はキュー内の次のプロバイダーを順に試行します。",
      "selectProvider": "キューに追加するプロバイダーを選択",
      "noAvailableProviders": "追加できるプロバイダーがありません",
      "empty": "フェイルオーバーキューが空です。自動フェイルオーバーを有効にするにはプロバイダーを追加してください。",
      "orderHint": "キューの順序はホームのプロバイダー一覧の順序と一致します。ホームでドラッグして順序を変更できます。",
      "dragHint": "ドラッグでフェイルオーバー順序を調整します。番号が小さいほど優先度が高くなります。",
      "toggleEnabled": "有効/無効",
      "addSuccess": "フェイルオーバーキューに追加しました",
      "addFailed": "追加に失敗しました",
      "removeSuccess": "フェイルオーバーキューから削除しました",
      "removeFailed": "削除に失敗しました",
      "reorderSuccess": "キュー順序を更新しました",
      "reorderFailed": "順序の更新に失敗しました",
      "toggleFailed": "状態の更新に失敗しました"
    },
    "autoFailover": {
      "info": "フェイルオーバーキューに複数のプロバイダーが設定されている場合、リクエストが失敗すると優先度順に試行します。プロバイダーが連続失敗のしきい値に達すると、サーキットブレーカーが開き、一時的にスキップされます。",
      "configSaved": "自動フェイルオーバー設定を保存しました",
      "configSaveFailed": "保存に失敗しました",
      "validationFailed": "以下のフィールドが有効範囲外です: {{fields}}",
      "retrySettings": "リトライとタイムアウト設定",
      "failureThreshold": "失敗しきい値",
      "failureThresholdHint": "この回数連続で失敗するとサーキットブレーカーが開きます（推奨: 3-10）",
      "timeout": "回復待ち時間（秒）",
      "timeoutHint": "サーキットが開いた後、回復を試みるまでの待ち時間（推奨: 30-120）",
      "circuitBreakerSettings": "サーキットブレーカー設定",
      "successThreshold": "回復成功しきい値",
      "successThresholdHint": "半開状態でこの回数成功するとサーキットブレーカーが閉じます",
      "errorRate": "エラー率しきい値 (%)",
      "errorRateHint": "この値を超えるとサーキットブレーカーが開きます",
      "minRequests": "最小リクエスト数",
      "minRequestsHint": "エラー率を計算する前の最小リクエスト数",
      "explanationTitle": "仕組み",
      "failureThresholdLabel": "失敗しきい値",
      "failureThresholdExplain": "この回数連続で失敗すると、サーキットブレーカーが開き、プロバイダーは一時的に利用不可になります",
      "timeoutLabel": "回復待ち時間",
      "timeoutExplain": "サーキットが開いた後、半開状態を試みるまでの待ち時間",
      "successThresholdLabel": "回復成功しきい値",
      "successThresholdExplain": "半開状態でこの回数成功するとサーキットブレーカーが閉じ、プロバイダーが再び利用可能になります",
      "errorRateLabel": "エラー率しきい値",
      "errorRateExplain": "失敗しきい値に達していなくても、エラー率がこの値を超えるとサーキットブレーカーが開きます",
      "maxRetries": "最大リトライ回数",
      "timeoutSettings": "タイムアウト設定",
      "streamingFirstByte": "ストリーミング最初のバイトタイムアウト",
      "streamingIdle": "ストリーミングアイドルタイムアウト",
      "nonStreaming": "非ストリーミングタイムアウト",
      "maxRetriesHint": "リクエスト失敗時のリトライ回数（0-10）",
      "streamingFirstByteHint": "最初のデータチャンクを待つ最大時間、範囲 1-120 秒、デフォルト 60 秒",
      "streamingIdleHint": "データチャンク間の最大間隔、範囲 60-600 秒、0 で無効化（途中停止を防止）",
      "nonStreamingHint": "非ストリーミングリクエストの合計タイムアウト、範囲 60-1200 秒、デフォルト 600 秒（10 分）"
    },
    "logging": {
      "enabled": "ログ記録が有効になりました",
      "disabled": "ログ記録が無効になりました",
      "failed": "ログ状態の切り替えに失敗しました"
    },
    "server": {
      "started": "ルーティングサービスが開始されました - {{address}}:{{port}}",
      "startFailed": "ルーティングサービスの開始に失敗しました: {{detail}}",
      "stopped": "ルーティングサービスが停止しました",
      "stopFailed": "ルーティングサービスの停止に失敗しました: {{detail}}"
    },
    "stoppedWithRestore": "ルーティングサービスが停止し、すべてのルーティング設定が復元されました",
    "stopWithRestoreFailed": "停止に失敗しました: {{detail}}"
  },
  "streamCheck": {
    "reachable": "{{providerName}} は接続可能 ({{responseTimeMs}}ms)",
    "reachableSlow": "{{providerName}} は接続可能だが低速 ({{responseTimeMs}}ms)",
    "unreachable": "{{providerName}} に接続できません: {{message}}",
    "unreachableHint": "接続を確立できませんでした（DNS / 接続 / TLS / タイムアウト）。base_url とネットワークを確認してください。",
    "connectivityNote": "接続チェックはプロバイダーのアドレスに到達できるかを確認するだけで、実際のモデルリクエストは送信しません。何らかの応答があれば「到達可能」とみなされますが、認証やモデル設定が正しいことを保証するものではありません。",
    "configSaved": "接続チェック設定を保存しました",
    "configSaveFailed": "保存に失敗しました",
    "checkParams": "チェックパラメーター",
    "timeout": "タイムアウト（秒）",
    "maxRetries": "最大リトライ回数",
    "degradedThreshold": "低速判定しきい値（ミリ秒）",
    "error": "{{providerName}} のチェックでエラーが発生しました: {{error}}"
  },
  "proxyConfig": {
    "proxyEnabled": "ルーティング総スイッチ",
    "appTakeover": "ルーティング有効",
    "perAppConfig": "アプリ別設定",
    "circuitBreaker": "サーキットブレーカー",
    "circuitBreakerSettings": "サーキットブレーカー設定",
    "failureThreshold": "失敗閾値",
    "successThreshold": "回復閾値",
    "recoveryTimeout": "回復待機時間",
    "errorRateThreshold": "エラー率閾値",
    "minRequests": "最小リクエスト数",
    "timeoutConfig": "タイムアウト設定",
    "streamingFirstByte": "ストリーミング初回バイトタイムアウト",
    "streamingIdle": "ストリーミングアイドルタイムアウト",
    "nonStreaming": "非ストリーミングタイムアウト"
  },
  "universalProvider": {
    "duplicate": "複製",
    "duplicatedAndSynced": "統合プロバイダーを複製して同期しました",
    "duplicateError": "統合プロバイダーの複製に失敗しました",
    "title": "統合プロバイダー",
    "description": "統合プロバイダーは Claude、Codex、Gemini の設定を同時に管理します。変更は有効なすべてのアプリに自動的に同期されます。",
    "add": "統合プロバイダーを追加",
    "edit": "統合プロバイダーを編集",
    "empty": "統合プロバイダーがありません",
    "emptyHint": "下の「統合プロバイダーを追加」ボタンをクリックして作成してください",
    "selectPreset": "プリセットタイプを選択",
    "name": "名前",
    "namePlaceholder": "例：私の NewAPI",
    "baseUrl": "API URL",
    "apiKey": "API キー",
    "websiteUrl": "ウェブサイト URL",
    "websiteUrlPlaceholder": "https://example.com（オプション、リストに表示されます）",
    "notes": "メモ",
    "notesPlaceholder": "オプション：メモを追加",
    "enabledApps": "有効なアプリ",
    "modelConfig": "モデル設定",
    "model": "モデル",
    "sync": "アプリに同期",
    "synced": "すべてのアプリに同期しました",
    "syncError": "同期に失敗しました",
    "noAppsEnabled": "有効なアプリがありません",
    "added": "統合プロバイダーを追加しました",
    "addedAndSynced": "統合プロバイダーを追加して同期しました",
    "addedButSyncFailed": "統合プロバイダーを追加しましたが、同期に失敗しました",
    "updated": "統合プロバイダーを更新しました",
    "deleted": "統合プロバイダーを削除しました",
    "addFailed": "統合プロバイダーの追加に失敗しました",
    "hint": "クロスアプリ統合設定。Claude/Codex/Gemini に自動同期します",
    "manage": "管理",
    "loadError": "統合プロバイダーの読み込みに失敗しました",
    "saveError": "統合プロバイダーの保存に失敗しました",
    "deleteError": "統合プロバイダーの削除に失敗しました",
    "deleteConfirmTitle": "統合プロバイダーを削除",
    "deleteConfirmDescription": "「{{name}}」を削除してもよろしいですか？各アプリで生成されたプロバイダー設定も削除されます。",
    "syncConfirmTitle": "統合プロバイダーを同期",
    "syncConfirmDescription": "「{{name}}」を同期すると、Claude、Codex、Gemini の関連プロバイダー設定が上書きされます。続行しますか？",
    "syncConfirm": "同期",
    "saveAndSync": "保存して同期",
    "savedAndSynced": "すべてのアプリに保存・同期されました",
    "saveAndSyncError": "保存と同期に失敗しました",
    "configJsonPreview": "設定 JSON プレビュー",
    "configJsonPreviewHint": "以下は各アプリに同期される設定内容です（表示されているフィールドのみ上書きされ、他のカスタム設定は保持されます）"
  },
  "omo": {
    "editProfile": "OMO 設定を編集",
    "newProfile": "新規 OMO 設定",
    "profileName": "名前",
    "mainAgents": "メインエージェント",
    "subAgents": "サブエージェント",
    "categories": "カテゴリ",
    "customAgents": "カスタムエージェント",
    "noCustomAgents": "カスタムエージェントなし",
    "otherFields": "その他の設定",
    "globalConfig": "OMO グローバル設定",
    "globalConfigShort": "OMO 設定",
    "globalConfigSaved": "グローバル設定を保存しました",
    "addProfile": "OMO プロバイダーを追加",
    "disabledItems": "無効項目設定",
    "advanced": "詳細設定",
    "profileCreated": "OMO 設定を作成しました",
    "profileUpdated": "OMO 設定を更新しました",
    "invalidJson": "その他のフィールドに無効なJSONが含まれています",
    "confirmDelete": "設定を削除",
    "confirmDeleteMsg": "「{{name}}」を削除しますか？",
    "profileDeleted": "設定を削除しました",
    "imported": "「{{name}}」としてインポートしました",
    "import": "インポート",
    "global": "グローバル",
    "empty": "OMO 設定がありません。+ 追加またはローカルからインポートしてください。",
    "applied": "適用済み",
    "apply": "適用",
    "enable": "有効化",
    "enabled": "有効中",
    "disabled": "OMO を無効化しました",
    "disableFailed": "OMO の無効化に失敗しました: {{error}}",
    "selectPlaceholder": "選択してください...",
    "clear": "クリア",
    "clearWrapped": "(クリア)",
    "defaultWrapped": "(デフォルト)",
    "variantPlaceholder": "variant",
    "selectEnabledModel": "設定済みモデルを選択",
    "selectModel": "設定済みモデルを選択",
    "recommendedHint": "推奨: {{model}}",
    "searchModel": "モデルを検索...",
    "selectModelFirst": "先にモデルを選択",
    "noEnabledModels": "設定済みモデルがありません",
    "noVariantsForModel": "このモデルには思考レベルがありません",
    "currentValueNotEnabled": "{{value}} (現在値・未設定)",
    "currentValueUnavailable": "{{value}} (現在値・利用不可)",
    "advancedLabel": "詳細",
    "advancedJsonInvalid": "詳細 JSON が不正です",
    "advancedJsonHint": "temperature, top_p, budgetTokens, prompt_append, permission など。空欄でデフォルトを使用します",
    "noEnabledModelsWarning": "利用可能な設定済みモデルがありません。先に OpenCode モデルを設定してください。",
    "modelSourcePartialWarning": "一部プロバイダーのモデル設定が不正なため、候補から除外しました。",
    "modelSourceFallbackWarning": "live プロバイダー状態の取得に失敗したため、設定済みプロバイダーへフォールバックしました。",
    "importLocalReplaceSuccess": "ローカルファイルから読み込み、Agents/Categories/Other Fields を置き換えました",
    "importLocalFailed": "ローカルファイルの読み込みに失敗しました: {{error}}",
    "agentKeyPlaceholder": "agent キー",
    "categoryKeyPlaceholder": "カテゴリキー",
    "modelNamePlaceholder": "model-name",
    "custom": "カスタム",
    "customCategories": "カスタムカテゴリ",
    "modelConfiguration": "モデル設定",
    "fillRecommended": "推奨を入力",
    "fillRecommendedSuccess": "推奨モデル {{count}} 件を設定しました",
    "fillRecommendedPartial": "推奨モデル {{filled}} 件を設定、{{unmatched}} 件は未一致",
    "fillRecommendedMostlyUnmatched": "{{filled}} 件のみ設定、{{unmatched}} 件は未一致（例: {{examples}}）。これらのモデルを提供するプロバイダーを設定するか、代替を選択してください。",
    "fillRecommendedAllSet": "すべてのスロットにモデルが設定済みです",
    "fillRecommendedNoMatch": "推奨モデルが設定済みプロバイダーに見つかりませんでした（例: {{examples}}）",
    "configSummary": "{{agents}} 個の Agent、{{categories}} 個の Category を設定済み · ⚙ で詳細を展開",
    "enabledModelsCount": "設定済みモデル {{count}} 件",
    "source": "出典:",
    "otherFieldsJson": "その他のフィールド (JSON)",
    "slimOtherFieldsHint": "council、fallback、multiplexer、disabled_mcps、todoContinuation など、OMO Slim のトップレベル設定はここに記述します。",
    "searchOrType": "検索またはカスタム値を入力...",
    "noMatches": "一致する項目がありません",
    "jsonMustBeObject": "{{field}} は JSON オブジェクトである必要があります",
    "jsonInvalid": "{{field}} に無効な JSON が含まれています",
    "importGlobalSuccess": "ローカルファイルからグローバル設定を読み込みました（未保存）",
    "importGlobalFailed": "ローカルファイルの読み込みに失敗しました: {{error}}",
    "importLocal": "ローカルからインポート",
    "saveGlobalConfig": "グローバル設定を保存",
    "schemaUrl": "$schema",
    "resetDefault": "デフォルトに戻す",
    "sisyphusAgentConfig": "Sisyphus Agent 設定",
    "disabledAgents": "Agents",
    "disabledAgentsPlaceholder": "無効化する Agents",
    "disabledMcps": "MCPs",
    "disabledMcpsPlaceholder": "無効化する MCPs",
    "disabledHooks": "Hooks",
    "disabledHooksPlaceholder": "無効化する Hooks",
    "disabledSkills": "Skills",
    "disabledSkillsPlaceholder": "無効化する Skills",
    "advancedLsp": "LSP 設定",
    "advancedExperimental": "実験的機能",
    "advancedBackgroundTask": "バックグラウンドタスク",
    "advancedBrowserAutomation": "ブラウザ自動化",
    "advancedClaudeCode": "Claude Code",
    "agentDesc": {
      "sisyphus": "メインオーケストレーター",
      "hephaestus": "自律型ディープワーカー",
      "prometheus": "戦略プランナー",
      "atlas": "タスクマネージャー",
      "oracle": "戦略アドバイザー",
      "librarian": "マルチリポジトリ研究員",
      "explore": "高速コード検索",
      "multimodalLooker": "メディアアナライザー",
      "metis": "計画前分析アドバイザー",
      "momus": "プランレビュアー",
      "sisyphusJunior": "委任タスクエグゼキューター"
    },
    "agentTooltip": {
      "sisyphus": "メインオーケストレーター。タスクの計画、委任、並列実行を担当。拡張思考（32k バジェット）を使用し、TODO リストでワークフローを駆動してタスク完了を確保します。",
      "atlas": "メインオーケストレーター（TODO リスト保持）。実行フェーズでのタスク配分と調整を担当。すべての作業を直接行うのではなく、専門エージェントに委任します。",
      "prometheus": "戦略プランナー。インタビューモードで要件を収集し、詳細な作業計画を策定。.sisyphus/ ディレクトリ内の Markdown ファイルの読み書きのみ可能で、直接コードを書くことはありません。",
      "hephaestus": "自律型ディープワーカー（「正当な職人」）。AmpCode ディープモードに着想を得た目標指向の実行を行い、行動前に 2-5 個の探索/ライブラリアンエージェントを並列起動して調査します。",
      "oracle": "アーキテクチャ決定とデバッグのアドバイザー。読み取り専用のコンサルティングエージェントで、優れた論理的推論と深い分析を提供。ファイルの書き込みやタスクの委任はできません。",
      "librarian": "マルチリポジトリ分析とドキュメント検索の専門家。コードベースを深く理解し、エビデンスに基づく回答を提供。公式ドキュメントやオープンソース実装例の検索に長けています。",
      "explore": "高速コードベース探索とコンテキスト grep の専門家。軽量モデルを使用した高速検索で、コード構造を理解するための先鋒です。",
      "multimodalLooker": "ビジュアルコンテンツの専門家。PDF、画像、グラフなどの非テキストメディアを分析し、情報とインサイトを抽出します。",
      "metis": "プランコンサルタント。計画前に事前分析を行い、隠れた意図、曖昧な点、AI の失敗ポイントを特定して、過剰エンジニアリングを防止します。",
      "momus": "プランレビュアー。計画の明確さ、検証可能性、完全性を高精度で検証。計画が完璧になるまで却下と修正を要求します。",
      "sisyphusJunior": "カテゴリ生成のエグゼキューター。category パラメータにより自動生成され、割り当てられたタスクの実行に専念し、再委任はできません。無限委任ループを防止します。"
    },
    "categoryDesc": {
      "visualEngineering": "ビジュアル/フロントエンド工学",
      "ultrabrain": "超深度思考",
      "deep": "ディープワーク",
      "artistry": "クリエイティブ/芸術",
      "quick": "クイックレスポンス",
      "unspecifiedLow": "汎用ロースペック",
      "unspecifiedHigh": "汎用ハイスペック",
      "writing": "ライティング"
    },
    "categoryTooltip": {
      "visualEngineering": "フロントエンドとビジュアルエンジニアリングカテゴリ。UI/UX デザイン、スタイリング、アニメーション、インターフェース実装に特化。デフォルトで Gemini 3.6 Flash モデルを使用。",
      "ultrabrain": "ディープロジック推論カテゴリ。広範な分析が必要な複雑なアーキテクチャ決定に使用。デフォルトで GPT-5.3 Codex の超高推論バリアントを使用。",
      "deep": "ディープ自律問題解決カテゴリ。目標指向の実行で、行動前に徹底的な調査を実施。深い理解が必要な難問に適しています。",
      "artistry": "高度にクリエイティブで芸術的なタスクカテゴリ。斬新なアイデアとクリエイティブなソリューションを促進。デフォルトで Gemini 3.6 Flash の高推論バリアントを使用。",
      "quick": "軽量タスクカテゴリ。単一ファイルの修正、タイポ修正、簡単な調整などの些細な作業に使用。デフォルトで Claude Haiku 4.5 高速モデルを使用。",
      "unspecifiedLow": "未分類の低作業量タスクカテゴリ。他のカテゴリに該当せず作業量が小さいタスクに適用。デフォルトで Claude Sonnet 4.5 を使用。",
      "unspecifiedHigh": "未分類の高作業量タスクカテゴリ。他のカテゴリに該当せず作業量が大きいタスクに適用。デフォルトで Claude Opus 5 の max バリアントを使用。",
      "writing": "ライティングカテゴリ。ドキュメント、散文、技術文書に特化。デフォルトで Kimi K2.5 モデルを使用。"
    },
    "slimAgentDesc": {
      "orchestrator": "オーケストレーター",
      "oracle": "オラクル",
      "librarian": "ライブラリアン",
      "explorer": "エクスプローラー",
      "designer": "デザイナー",
      "fixer": "フィクサー",
      "council": "カウンシル"
    },
    "slimAgentTooltip": {
      "orchestrator": "実行コードの作成、マルチエージェントワークフローの調整、エキスパートの召喚",
      "oracle": "根本原因分析、アーキテクチャレビュー、デバッグガイダンス（読み取り専用）",
      "librarian": "ドキュメント検索、GitHubコード検索（読み取り専用）",
      "explorer": "正規表現検索、ASTパターンマッチング、ファイル検出（読み取り専用）",
      "designer": "モダンなレスポンシブデザイン、CSS/Tailwindの専門知識",
      "fixer": "コード実装、リファクタリング、テスト、検証",
      "council": "複数モデルの合議エージェント。複数の読み取り専用 councillor を並列実行し、master が最終回答を統合します。"
    }
  },
  "openclawConfig": {
    "defaultModel": {
      "title": "デフォルトモデル",
      "description": "OpenClaw のデフォルトのプライマリモデルとフォールバックモデルを設定します",
      "primary": "プライマリモデル",
      "primaryPlaceholder": "例: deepseek/deepseek-chat",
      "fallbacks": "フォールバックモデル",
      "fallbacksPlaceholder": "例: openrouter/anthropic/claude-sonnet-4.5",
      "addFallback": "フォールバックモデルを追加",
      "saved": "デフォルトモデル設定を保存しました",
      "saveFailed": "デフォルトモデルの保存に失敗しました"
    },
    "modelCatalog": {
      "title": "モデルカタログ",
      "description": "モデルのエイリアスと許可リストを設定します",
      "modelId": "モデル ID",
      "modelIdPlaceholder": "例: deepseek/deepseek-chat",
      "alias": "エイリアス",
      "aliasPlaceholder": "例: DeepSeek",
      "addEntry": "モデルを追加",
      "removeEntry": "削除",
      "saved": "モデルカタログを保存しました",
      "saveFailed": "モデルカタログの保存に失敗しました",
      "empty": "モデルカタログエントリがありません",
      "emptyHint": "エイリアスを設定するにはカタログにモデルを追加してください"
    },
    "suggestedDefaults": "推奨デフォルト設定を適用",
    "suggestedDefaultsHint": "このプリセットの推奨デフォルトモデル設定を使用します"
  },
  "subscription": {
    "title": "サブスクリプションクォータ",
    "fiveHour": "5時間",
    "sevenDay": "7日間",
    "sevenDayOpus": "7日間(Opus)",
    "sevenDaySonnet": "7日間(Sonnet)",
    "thirtyDay": "30日間",
    "geminiPro": "Pro",
    "geminiFlash": "Flash",
    "geminiFlashLite": "Flash Lite",
    "weeklyLimit": "週間",
    "monthly": "月間",
    "credits": "クレジット",
    "copilotPremium": "プレミアム",
    "utilization": "{{value}}%",
    "resetsIn": "{{time}}後にリセット",
    "extraUsage": "超過使用量",
    "expired": "セッション期限切れ",
    "expiredHint": "{{tool}}コマンドを実行してログインを更新してください",
    "queryFailed": "クエリに失敗しました",
    "refresh": "更新"
  }
}
