{
  "title": "設定",
  "tabs": {
    "basic": "基本設定",
    "ai": "AI 設定",
    "aiConfig": "モデルサービス",
    "aiDefaultModel": "デフォルトモデル",
    "semanticIndex": "セマンティックインデックス",
    "chatPreferences": "会話設定",
    "compression": "圧縮",
    "aiPreprocess": "前処理",
    "dataManage": "データ管理",
    "storage": "ストレージ管理",
    "sessionManage": "セッションインデックス",
    "about": "ChatLabについて",
    "api": "オートメーション",
    "apiSubTabs": {
      "autoSync": "自動同期",
      "apiService": "API サービス",
      "mcp": "MCP"
    }
  },
  "basic": {
    "general": {
      "title": "一般"
    },
    "preferences": {
      "title": "環境設定"
    },
    "language": {
      "description": "アプリの表示言語を選択します"
    },
    "appearance": {
      "title": "外観設定",
      "themeMode": "テーマモード",
      "auto": "システムに従う",
      "light": "ライトモード",
      "dark": "ダークモード"
    },
    "defaultTab": {
      "description": "チャットに入った時に表示するページ",
      "overview": "概要",
      "aiChat": "AI チャット"
    },
    "autoLaunch": {
      "openAtLogin": "ログイン時に自動起動",
      "openAtLoginDesc": "システム起動時に ChatLab を自動的に実行します",
      "devModeHint": "開発モードでは利用できません"
    },
    "toolsPanel": {
      "positionLabel": "ツールパネルの位置",
      "positionDesc": "クイックツールパネルの表示位置を選択します",
      "positionSide": "サイド",
      "positionHeader": "ヘッダー"
    },
    "screenshot": {
      "mobileAdapt": "モバイル対応",
      "mobileAdaptDesc": "スクリーンショット時に幅を自動調整し、モバイル端末での閲覧に最適化します"
    },
    "network": {
      "title": "ネットワーク設定",
      "proxyMode": "プロキシモード",
      "proxyModeDesc": "ネットワークアクセス時に使用するプロキシ方式",
      "modeOff": "オフ",
      "modeSystem": "システムに従う",
      "modeManual": "手動設定",
      "proxyAddress": "プロキシアドレス",
      "proxyPlaceholder": "http://127.0.0.1:7890",
      "proxyHelp": "HTTP/HTTPS プロキシに対応。形式例：http://127.0.0.1:7890",
      "testConnection": "接続テスト",
      "testing": "テスト中...",
      "connectionSuccess": "プロキシ接続に成功しました！",
      "connectionFailed": "接続に失敗しました",
      "enterProxyFirst": "先にプロキシアドレスを入力してください",
      "invalidProxyUrl": "有効なプロキシアドレスを入力してください。形式例：http://127.0.0.1:7890",
      "onlyHttpSupported": "http:// または https:// プロトコルのみ対応",
      "saveFailed": "保存に失敗しました"
    }
  },
  "defaultModel": {
    "title": "デフォルトモデル",
    "noConfigs": "先に「モデルサービス」でモデル設定を追加してください",
    "selectProvider": "プロバイダーを選択",
    "selectModel": "モデルを選択",
    "assistantModel": {
      "label": "デフォルトアシスタントモデル",
      "description": "AIチャット、ツール呼び出し、SQLアシスタント、コンテキスト圧縮に使用"
    },
    "fastModel": {
      "label": "高速モデル",
      "description": "セッション要約生成に使用。未設定の場合はデフォルトアシスタントモデルを使用",
      "followAssistant": "デフォルトアシスタントモデルに従う"
    }
  },
  "aiConfig": {
    "title": "モデルサービス",
    "defaultModel": "デフォルトモデル",
    "empty": {
      "title": "AI サービスが未設定です",
      "description": "設定を追加して AI を使い始めましょう"
    },
    "addConfig": "サービスを追加",
    "maxConfigs": "設定は最大 10 件までです",
    "modal": {
      "addConfig": "サービスを追加",
      "editConfig": "サービスを編集",
      "localService": "ローカルサービス",
      "configName": "設定名",
      "optional": "（任意）",
      "configNamePlaceholderPreset": "空欄の場合、サービス名が使用されます",
      "configNamePlaceholderCustom": "空欄の場合、API エンドポイントが使用されます",
      "aiProvider": "AI プロバイダー",
      "apiKeyPlaceholder": "API Key を入力",
      "apiKeyPlaceholderEdit": "新しい API Key を入力（空欄で現在の値を維持）",
      "apiKeyPlaceholderLocal": "ローカルサービスでは通常不要です",
      "apiKeyHintLocal": "サービスに認証が設定されている場合はこちらに入力",
      "validate": "接続確認",
      "validationSuccess": "接続を確認しました",
      "validationFailed": "接続の確認に失敗しました",
      "validationFailedTitle": "API接続の検証に失敗しました",
      "saveAnywayHint": "検証に通過しませんでした。設定が正しくない可能性があります。それでも保存しますか？",
      "saveAnyway": "保存する",
      "validationError": "検証に失敗：",
      "model": "モデル",
      "apiEndpoint": "API URL",
      "apiEndpointHint": "OpenAI 互換形式の API エンドポイント",
      "resolvedUrl": "実際のリクエストURL:",
      "fetchModels": "APIから取得",
      "fetchModelsTitle": "リモートモデル一覧",
      "fetchModelsLoading": "モデルリストを取得中...",
      "fetchModelsEmpty": "モデルが見つかりません",
      "fetchModelsError": "モデルリストの取得に失敗しました",
      "fetchModelsCount": "全 {total} モデル、{shown} 件表示中",
      "modelAdded": "追加済み",
      "addAllModels": "すべて追加",
      "searchModels": "モデルを検索...",
      "apiEndpointOverrideHint": "デフォルトURLは入力済みです。必要に応じて変更してください",
      "customService": "カスタムサービス",
      "visitWebsite": "公式サイト",
      "getApiKey": "APIキーを取得",
      "presetService": "プリセット",
      "thirdPartyService": "サードパーティ",
      "addCustomModel": "モデルを追加",
      "deleteCustomModel": "選択を削除",
      "customModelId": "モデルエンドポイント名",
      "customModelIdHint": "API呼び出しで使用されるモデル識別子",
      "customModelDisplayName": "表示名",
      "customModelDisplayNamePlaceholder": "カスタム表示名",
      "editModel": "モデルを編集",
      "contextWindow": "コンテキストウィンドウ",
      "contextWindowPlaceholder": "例: 128000",
      "contextWindowHint": "モデルがサポートする最大コンテキストトークン数（コンテキスト圧縮に使用）",
      "contextWindowMissing": "コンテキストウィンドウが未設定です。デフォルト値が使用されます。「モデル編集」から手動で設定してください",
      "modelRequired": "少なくとも 1 つのモデルを追加してから保存してください",
      "apiFormat": "API インターフェース",
      "apiFormatOpenAI": "OpenAI Completions",
      "apiFormatAnthropic": "Anthropic",
      "apiFormatGemini": "Gemini",
      "apiFormatOpenAIResponses": "OpenAI Responses"
    },
    "providerKind": {
      "aggregator": "アグリゲータ",
      "custom": "カスタム"
    }
  },
  "storage": {
    "title": "ローカルストレージ管理",
    "description": "ChatLab がローカルに保存したデータファイルを管理します",
    "dataLocation": {
      "title": "データディレクトリの場所",
      "description": "ローカルデータとキャッシュの保存先をカスタマイズ",
      "choose": "場所を選択",
      "applyPath": "適用",
      "reset": "デフォルトに戻す",
      "open": "開く",
      "serverPathHint": "CLI サーバーを実行しているマシンからアクセスできる絶対パスを入力してください。",
      "migrateHint": "データがまだ旧ディレクトリにあります。統一ディレクトリへの移行をお勧めします：",
      "ignoreMigrateHint": "無視",
      "migrateAction": "今すぐ移行",
      "restartTip": "ディレクトリ変更後はアプリを再起動してください。旧ディレクトリのキャッシュは自動で移行されます",
      "cliRestartTip": "ディレクトリ変更後は CLI サーバーを再起動してください。データはサーバー起動前に移行されます",
      "confirmTitle": "データディレクトリの切り替えを確認",
      "confirmMessage": "データの保存先を切り替えます。既存データは新しいディレクトリに移行されます。",
      "newPath": "新しいディレクトリパス",
      "defaultPath": "デフォルトの場所",
      "confirmWarning": "アプリ再起動後、旧データディレクトリは自動的に削除されます。新しいディレクトリパスが正しいことを確認してください。",
      "cliConfirmWarning": "CLI サーバー再起動後、データは新しい場所へ移行されます。パスが正しく、サーバープロセスに読み書き権限があることを確認してください。",
      "pathRequired": "データディレクトリパスを入力してください",
      "installDirForbidden": "データディレクトリをアプリのインストールディレクトリ内に配置することはできません。更新時にディレクトリが消去されます",
      "cancel": "キャンセル",
      "confirm": "切り替えを確認",
      "migrationQueuedTitle": "データ移行を予約しました",
      "migrationSuccessMessage": "変更を反映するにはアプリの再起動が必要です。",
      "cliMigrationSuccessMessage": "現在の CLI サーバーを停止してから再起動してください。移行はサーバー起動前に実行されます。再起動後にページを開き直すと新しいディレクトリを確認できます。",
      "relaunchNow": "今すぐ再起動",
      "acknowledge": "了解"
    },
    "openRootDir": "ルートを開く",
    "totalUsage": "合計使用量：",
    "loading": "読み込み中...",
    "files": "ファイル",
    "notExist": "存在しません",
    "clear": "クリア",
    "open": "開く",
    "cache": {
      "databases": {
        "name": "チャット履歴データベース",
        "description": "インポートしたチャット履歴の分析データ"
      },
      "ai": {
        "name": "AI 会話データベース",
        "description": "AI チャット履歴と設定ファイル"
      },
      "statsCache": {
        "name": "キャッシュデータ",
        "description": "チャット記録の統計キャッシュ。クリア後に自動で再構築されます"
      },
      "logs": {
        "name": "ログファイル",
        "description": "アプリの実行ログ（インポート、AI、エラーなどのログを含む）"
      }
    }
  },
  "ai": {
    "session": {
      "title": "セッションインデックス設定",
      "description": "セッションインデックスは時間間隔に応じてチャット履歴を自動で区切り、AI 分析や閲覧をしやすくします",
      "defaultThreshold": "デフォルト分割間隔",
      "thresholdUnit": "分",
      "thresholdHelp": "この時間を超える間隔があるメッセージは新しいセッションに分割されます",
      "generating": "作成中",
      "batchTitle": "インデックスを一括生成",
      "totalSessions": "全 {count} チャット",
      "generatedCount": "生成済み {count} 件",
      "notGeneratedCount": "未生成 {count} 件",
      "loadingStatus": "読み込み中...",
      "batchGenerate": "未生成分を作成",
      "batchRegenerate": "すべて再生成",
      "batchRegenerateConfirmTitle": "再生成の確認",
      "batchRegenerateConfirmMessage": "この操作により、既存のAI要約がすべてクリアされ、セッションインデックスが最初から再生成されます。",
      "batchRegenerateConfirmWarning": "既存の要約は上書きされます。この操作は取り消せません。",
      "summaryStrategy": "要約の詳細度",
      "summaryStrategyHelp": "AI が要約を生成する際の詳細さを設定します",
      "summaryBrief": "簡潔",
      "summaryStandard": "標準"
    },
    "semanticIndex": {
      "title": "セマンティックインデックス",
      "description": "選択したベクトルモデルでチャット履歴のインデックスを作成します。有効にすると、AI は回答時に関連する過去の断片を意味検索して裏付けとして利用できます。",
      "vectorModel": "ベクトルモデル",
      "selectModel": "ベクトルモデルを選択",
      "switchModel": "モデルを切り替え",
      "noModelSelected": "ベクトルモデル未選択",
      "modelModalTitle": "ベクトルモデルの設定",
      "modeLocal": "ローカルモデル",
      "modeApi": "API",
      "recommended": "推奨",
      "approxSize": "約 {mb} MB",
      "localDownloadHint": "初回のインデックス作成時にモデルが自動ダウンロードされます。時間がかかる場合があります。",
      "apiTemplate": "サービステンプレート",
      "modelName": "モデル名",
      "apiKeySaved": "保存済み。空欄で変更しません",
      "apiKeyHint": "API キーは別途安全に保存され、設定には参照のみが保存されます。",
      "apiCostWarning": "API モードはプロバイダー費用が発生する場合があります。価格をご確認ください。",
      "changeRebuildHint": "モデルや API を変更すると、有効な会話は再構築が必要です。",
      "modelError": "モデルのダウンロードに失敗しました。インデックス構築時に再試行されます。",
      "modelDownloading": "モデルをダウンロード中です。初回は数分かかる場合があります…",
      "searchMaxResults": {
        "label": "1回の検索で返す断片数",
        "hint": "AI がセマンティック検索を実行する際に返す関連断片のデフォルト数（5〜15）。必要に応じて AI が増やせます。"
      },
      "overview": "インデックス概要",
      "enabledCount": "{count} 件の会話で有効",
      "coverage": "カバレッジ {percent}%",
      "buildPending": "保留中のインデックスを作成",
      "cleanup": "未使用インデックスを整理",
      "cleanupConfirm": "無効化した会話や旧モデルのインデックスデータを削除します。チャット記録は削除されません。",
      "configFirst": "先にベクトルモデルを設定してください",
      "selectConversations": "会話を選択",
      "enabledSessions": "有効な会話",
      "state": {
        "completed": "完了",
        "building": "作成中",
        "pending": "未作成",
        "needsRebuild": "再構築が必要",
        "failed": "失敗",
        "paused": "一時停止"
      },
      "action": {
        "build": "インデックス作成",
        "pause": "一時停止",
        "cancel": "キャンセル",
        "rebuild": "再構築",
        "remove": "削除"
      },
      "session": {
        "statusLabel": "状態",
        "notEnabled": "未有効",
        "coverageLabel": "カバレッジ",
        "progressLabel": "構築の進捗",
        "enableHint": "有効にすると、この会話に関する質問に答える際に AI が過去のチャット断片を検索できます。",
        "configFirst": "有効化の前に 設定 > AI > セマンティックインデックス でベクトルモデルを設定してください。",
        "enable": "インデックスを有効化",
        "buildVsEnable": "有効化：この会話をセマンティック検索の対象に含めます。作成：全メッセージを読み込みベクトルを生成します。ローカル計算や API 枠を消費する場合があります。",
        "retry": "再試行",
        "continue": "続行"
      },
      "picker": {
        "title": "会話を選択",
        "all": "すべて",
        "group": "グループ",
        "private": "個人",
        "searchPlaceholder": "名前で検索",
        "messages": "{count} 件のメッセージ",
        "enabled": "有効",
        "selectedSummary": "{count} 件の会話を選択、約 {messages} 件のメッセージ",
        "confirmRemoveTitle": "削除の確認",
        "confirmRemoveMessage": "これらの会話のセマンティックインデックスは即座に削除され、復元できません。"
      }
    }
  },
  "aiPrompt": {
    "chatSettings": {
      "title": "ツール設定"
    },
    "exportSettings": {
      "title": "エクスポート設定"
    },
    "chatPreferences": {
      "title": "会話設定",
      "enableAutoSkill": "AI 自動スキル選択",
      "enableAutoSkillDesc": "有効にすると、AI がユーザーの質問に基づいて適切な分析スキルを自動的にマッチして有効化します。無効にすると、手動で選択した場合のみスキルが適用されます",
      "chartAutoMode": {
        "title": "グラフ自動生成",
        "description": "グラフアシスタントを手動選択していないときに、AI がどの程度積極的にグラフを使うかを制御します",
        "explicit": "明確な依頼時",
        "explicitHint": "明確にグラフを依頼した場合のみ、AI がグラフを生成します。",
        "suggest": "スマート生成",
        "suggestHint": "控えめな方針です。分析結果の理解に明確に役立つ場合のみ、AI がグラフを生成します。",
        "aggressive": "積極生成",
        "aggressiveHint": "データ分析の場面で、AI がより積極的にグラフを生成します。"
      }
    },
    "maxMessages": {
      "title": "送信メッセージ数の上限",
      "description": "1 回のリクエストで AI に送る最大メッセージ数です。増やすほど Token 消費は増えますが、分析精度も上がります（初めてなら 2000 推奨）"
    },
    "searchContext": {
      "title": "検索コンテキストウィンドウ",
      "description": "検索ヒット時に前後の会話コンテキストを自動的に含めることで、AI がメッセージの背景を理解しやすくなります。0 に設定するとコンテキストなし",
      "before": "前",
      "after": "後"
    },
    "exportFormat": {
      "title": "会話エクスポート形式",
      "description": "AI チャットをエクスポートする際のファイル形式",
      "txtLabel": "TXT"
    },
    "sqlExportFormat": {
      "title": "SQL Lab エクスポート形式",
      "description": "SQL クエリ結果をエクスポートする際のファイル形式"
    },
    "compression": {
      "title": "コンテキスト圧縮",
      "enable": "コンテキストの自動圧縮",
      "enableDesc": "会話が長くなった際に履歴を自動的に要約に圧縮し、トークン消費を削減します",
      "threshold": "圧縮閾値",
      "thresholdDesc": "コンテキストトークンがモデルウィンドウのこの割合に達したら圧縮を開始",
      "buffer": "バッファサイズ",
      "bufferDesc": "圧縮せずに保持する最新メッセージの割合",
      "maxToolResultPercent": "ツール結果の上限",
      "maxToolResultPercentDesc": "1回のツール呼び出しでAIに送信される最大データ割合（モデルのコンテキストウィンドウに基づいて計算）。超過分はスマートに切り捨てられます"
    }
  },
  "about": {
    "title": "ChatLabについて",
    "description": "ローカルで動くチャット履歴分析ツール。SQL と AI Agent で会話を振り返れます。",
    "version": "バージョン",
    "checkUpdate": "アップデートを確認",
    "checking": "確認中...",
    "upToDate": "最新バージョンです",
    "newVersionAvailable": "新しいバージョン {version} があります",
    "webUpdateHint": "ターミナルで clb update を実行し、サービスを再起動してください。",
    "updateCheckFailed": "更新確認に失敗しました：{error}",
    "unknown": "不明",
    "privacy": {
      "title": "プライバシー設定",
      "analytics": "匿名利用統計",
      "analyticsDesc": "有効にすると、バージョン番号やOS情報などの非機密データを収集し、製品の改善に役立てます"
    },
    "developer": {
      "title": "開発者オプション",
      "debugMode": "DEBUG モード",
      "debugModeDesc": "有効にすると、デバッグパネルとクイックデバッグツールが表示されます。データベースの確認、テストツールの実行、より詳細なデバッグログの記録に使用できます。"
    }
  },
  "aiPreprocess": {
    "title": "チャット履歴の前処理",
    "description": "チャット履歴を AI に送信する前に前処理を行い、Token を節約しノイズを除去します。元のデータは変更されません。",
    "dataCleaning": "データクリーニング",
    "dataCleaningDesc": "XML カードメッセージ（共有リンク、ミニアプリなど）を自動クリーニングし、有効な内容を抽出します。Token を大幅に節約できます。オンのままにすることを推奨します。",
    "mergeConsecutive": "連続発言の結合",
    "mergeConsecutiveDesc": "同一人物の短時間内の連続メッセージを1つに結合します",
    "mergeWindow": "結合タイムウィンドウ（秒）",
    "denoise": "スマートノイズ除去",
    "denoiseDesc": "感動詞のみ、絵文字のみ、システムプレースホルダー（[画像] など）といった無意味なメッセージを除去します",
    "desensitize": "データマスキング",
    "desensitizeDesc": "ルールに基づいて機密情報（電話番号、メールアドレス、身分証番号など）をプレースホルダーに置換します",
    "desensitizeBuiltin": "プリセットルール",
    "desensitizeResetBuiltin": "既定に戻す",
    "desensitizeCustom": "カスタムルール",
    "desensitizeAddCustom": "カスタムルールを追加",
    "desensitizeRuleName": "ルール名",
    "desensitizeRulePattern": "正規表現",
    "desensitizeRuleReplacement": "置換テキスト",
    "desensitizeRuleAdd": "追加",
    "desensitizeRuleInvalidRegex": "正規表現の構文エラー",
    "desensitizeRuleNamePlaceholder": "例：社員番号",
    "desensitizeRulePatternPlaceholder": "例：EMP-\\d+",
    "desensitizeRuleReplacementPlaceholder": "置換テキスト。例：[社員番号]",
    "anonymizeNames": "ニックネーム匿名化",
    "anonymizeNamesDesc": "実際のニックネームの代わりに番号（U1、U2…）を AI に送信し、幻覚を減らして Token を節約します",
    "blacklist": "ブラックリストキーワード",
    "blacklistDesc": "以下のキーワードのいずれかを含むメッセージは丸ごと除外されます",
    "blacklistPlaceholder": "キーワードを入力して Enter で追加",
    "blacklistAdd": "追加"
  },
  "desensitize": {
    "groups": {
      "credentials": "パスワードと Token",
      "credentials_desc": "API Key、Bearer Token などの認証情報",
      "global_contact": "汎用連絡先情報",
      "global_contact_desc": "メールアドレスなど地域をまたぐ連絡先情報",
      "global_financial": "汎用金融情報",
      "global_financial_desc": "クレジットカード番号などの金融識別子",
      "global_network": "汎用ネットワーク情報",
      "global_network_desc": "URL、IP アドレスなどのネットワーク識別子",
      "region_cn": "中国本土",
      "region_cn_desc": "中国本土の電話番号、証明書、銀行カードなどのルール",
      "region_us": "米国",
      "region_us_desc": "米国の電話番号、証明書などのルール",
      "region_jp": "日本",
      "region_jp_desc": "日本の電話番号、マイナンバーなどのルール",
      "region_kr": "韓国",
      "region_kr_desc": "韓国の電話番号、住民登録番号などのルール"
    },
    "rules": {
      "cn_phone": "中国の携帯電話番号",
      "cn_phone_desc": "1xx xxxx xxxx 形式の11桁の番号",
      "cn_id_card": "中国の身分証番号",
      "cn_id_card_desc": "18桁、末尾に X を含む場合あり",
      "cn_bank_card": "中国の銀行カード番号",
      "cn_bank_card_desc": "16-19桁の連続数字",
      "cn_landline": "中国の固定電話番号",
      "cn_landline_desc": "市外局番-番号（例：010-12345678）",
      "us_ssn": "米国社会保障番号（SSN）",
      "us_ssn_desc": "XXX-XX-XXXX 形式",
      "us_phone": "米国電話番号",
      "us_phone_desc": "+1 (XXX) XXX-XXXX 形式",
      "us_drivers_license": "米国運転免許証番号",
      "us_drivers_license_desc": "アルファベット + 7-8桁の数字",
      "jp_phone": "日本の電話番号",
      "jp_phone_desc": "0x0-XXXX-XXXX 形式",
      "jp_my_number": "マイナンバー",
      "jp_my_number_desc": "12桁の数字（マイナンバー）",
      "kr_phone": "韓国の電話番号",
      "kr_phone_desc": "01X-XXXX-XXXX 形式",
      "kr_rrn": "韓国の住民登録番号",
      "kr_rrn_desc": "XXXXXX-XXXXXXX 形式（주민번호）",
      "api_key_prefix": "API Key / Token（既知プレフィックス）",
      "api_key_prefix_desc": "sk-、ghp_、AKIA などで始まる長い文字列",
      "bearer_token": "Bearer Token",
      "bearer_token_desc": "Bearer に続く認証トークン値",
      "email": "メールアドレス",
      "email_desc": "user{'@'}domain.com の標準形式",
      "credit_card": "クレジットカード番号",
      "credit_card_desc": "Visa / MasterCard / AmEx などのカード番号",
      "ipv4": "IPv4 アドレス",
      "ipv4_desc": "例：192.168.1.1",
      "url": "URL リンク",
      "url_desc": "http:// または https:// で始まるリンク"
    }
  },
  "api": {
    "service": {
      "title": "API サービス",
      "enable": "API サービスを有効化",
      "enableDesc": "有効にすると、外部ツールが HTTP API 経由でチャットデータの照会・エクスポート・インポートができます。ローカルホストのみ (127.0.0.1)",
      "portInUseHint": "ポートが使用中です。下のポートを変更するか、このポートを使用しているプログラムを終了してから再試行してください"
    },
    "status": {
      "running": "実行中",
      "stopped": "停止中",
      "starting": "起動中...",
      "portInUse": "ポート使用中",
      "error": "起動失敗"
    },
    "port": {
      "title": "ポート設定",
      "label": "リッスンポート",
      "desc": "API サービスのローカルポート番号（1024-65535）",
      "edit": "編集",
      "save": "保存",
      "cancel": "キャンセル"
    },
    "token": {
      "title": "アクセストークン",
      "label": "Bearer Token",
      "desc": "すべての API リクエストは Authorization ヘッダーにこのトークンを含める必要があります",
      "noToken": "トークンが未生成です。まずサービスを有効にしてください",
      "regenerate": "再生成"
    },
    "dataSources": {
      "title": "データソース",
      "desc": "外部データソースの URL を設定すると、ChatLab が指定間隔で自動的にチャットデータを取得・インポートします。",
      "empty": "データソースなし",
      "disabled": "一時停止中",
      "every": "",
      "minutes": "分ごと",
      "lastSync": "最終同期",
      "syncing": "同期中",
      "messages": "件",
      "addBtn": "データソースを追加",
      "form": {
        "modalTitle": "データソースを追加",
        "name": "名前",
        "namePlaceholder": "例：マイチャットサーバー",
        "token": "アクセストークン",
        "tokenPlaceholder": "リモート API の Bearer Token",
        "interval": "取得間隔（分）",
        "pullLimit": "1回の取得メッセージ数",
        "pullLimitPlaceholder": "デフォルト 1000"
      },
      "discovery": {
        "baseUrl": "サーバーアドレス",
        "baseUrlPlaceholder": "例：http://127.0.0.1:2333/api/v1",
        "found": "{count} 件のセッションが見つかりました",
        "search": "検索",
        "searchPlaceholder": "セッション名で検索",
        "selectAll": "すべて選択",
        "deselectAll": "選択解除",
        "selectByType": "セッションタイプ",
        "typeAll": "すべて",
        "typePrivate": "個人チャット",
        "typeGroup": "グループチャット",
        "loadMore": "さらに読み込む",
        "subscribe": "{count} 件を購読",
        "messages": "件のメッセージ",
        "error": "リモートサーバーへの接続に失敗しました",
        "connectionCheckFailed": "リモートサーバーに接続できません。URL とトークンを確認してください。"
      },
      "noSessions": "インポートセッションがありません。上の「サブスクリプション管理」から追加してください",
      "edit": {
        "title": "設定を変更",
        "save": "保存",
        "cancel": "キャンセル",
        "editSource": "設定を変更",
        "manageSessions": "サブスクリプション管理",
        "subscribed": "購読中"
      },
      "deleteConfirm": {
        "title": "データソースを削除",
        "message": "データソース「{name}」を削除してもよろしいですか？このデータソース下のすべてのインポート設定が削除されます。既にインポート済みのローカル会話は削除されません。"
      },
      "deleteSessionConfirm": {
        "title": "サブスクリプションを削除",
        "message": "「{name}」を削除してもよろしいですか？",
        "keepData": "サブスクリプションのみ削除",
        "deleteData": "インポートしたチャットも削除"
      }
    },
    "usage": {
      "title": "使用ガイド",
      "desc": "サービスを有効にすると、外部ツールが API 経由でデータを照会したり、ChatLab にチャット記録をプッシュしたりできます。すべてのリクエストに Bearer Token 認証が必要です。",
      "authHint": "ヘッダー例：",
      "docLink": "API ドキュメントを見る"
    }
  },
  "mcp": {
    "overview": {
      "title": "MCP 概要",
      "description": "MCP により、AI アシスタントがチャット記録を直接クエリできます。セッション検出、キーワード検索、メンバー統計、時間分布などをサポートしています。",
      "toolCount": "{count} 個のツール",
      "resourceCount": "{count} 個のリソース",
      "installHint": "chatlab-cli をインストール後、AI クライアントに以下の設定を追加してください："
    },
    "clients": {
      "other": "その他"
    },
    "config": {
      "title": "クライアント設定",
      "clientLabel": "MCP クライアント",
      "copy": "コピー",
      "copied": "コピー済み",
      "claudeHint": "この設定を ClaudeCode の MCP 設定に追加してください。",
      "codexHint": "この TOML 設定を ~/.codex/config.toml ファイルに追加してください。",
      "openclawHint": "この設定をプロジェクトの openclaw.json ファイルに追加してください。",
      "otherHint": "この JSON 設定を MCP クライアントの設定ファイルに追加してください。"
    },
    "tips": {
      "title": "ヒント",
      "dataDir": "MCP サーバーは ~/.chatlab/ ディレクトリのチャットデータを読み取り、デスクトップアプリと同じデータを共有します。",
      "readOnly": "すべての操作は読み取り専用で、チャット記録は変更されません。",
      "nodeRequired": "npx および CLI モードには Node.js 20 以上が必要です。",
      "docs": "詳細なドキュメントは docs.chatlab.fun をご覧ください。"
    }
  }
}
