{
  "common": {
    "save": "保存",
    "reset": "リセット",
    "cancel": "キャンセル",
    "confirm": "確認",
    "delete": "削除",
    "edit": "編集",
    "create": "作成",
    "upload": "アップロード",
    "download": "ダウンロード",
    "refresh": "更新",
    "search": "検索",
    "enable": "有効化",
    "disable": "無効化",
    "enabled": "有効",
    "disabled": "無効",
    "preview": "プレビュー",
    "view": "閲覧",
    "content": "内容",
    "loading": "読み込み中...",
    "copy": "コピー",
    "copied": "クリップボードにコピーしました",
    "copyFailed": "クリップボードへのコピーに失敗しました",
    "contentPlaceholder": "内容を入力してください...",
    "help": "ヘルプ",
    "close": "閉じる",
    "actions": "操作",
    "total": "合計 {{count}} 件",
    "clear": "クリア",
    "paste": "貼り付け"
  },
  "desktop": {
    "closeWindow": {
      "title": "ウィンドウを閉じる",
      "description": "ウィンドウを閉じるときに実行する操作を選択してください。アプリを終了すると、実行中のすべてのタスクとスケジュール済みタスクが停止します。",
      "remember": "選択を記憶する",
      "showWindow": "ウィンドウを表示",
      "minimizeToTray": "トレイに最小化",
      "quitApp": "アプリを終了",
      "preference": "ウィンドウを閉じる",
      "askEveryTime": "毎回確認する"
    }
  },
  "chunkError": {
    "title": "ページの読み込みに失敗しました",
    "subTitle": "ネットワークの問題またはアプリの更新が原因の可能性があります。",
    "genericTitle": "問題が発生しました",
    "genericSubTitle": "このページのレンダリング中に予期しないエラーが発生しました。",
    "reload": "再読み込み"
  },
  "nav": {
    "chat": "チャット",
    "control": "コントロール",
    "channels": "チャンネル",
    "sessions": "セッション",
    "cronJobs": "定期実行",
    "heartbeat": "ハートビート",
    "agent": "ワークスペース",
    "workspace": "ファイル",
    "skills": "スキル",
    "skillPool": "スキルプール",
    "mcp": "MCP",
    "agentConfig": "設定",
    "settings": "設定",
    "models": "モデル",
    "environments": "環境変数",
    "security": "セキュリティ",
    "tokenUsage": "トークン使用量",
    "agentStats": "エージェント統計",
    "tools": "ツール",
    "voiceTranscription": "音声文字起こし",
    "agents": "エージェント管理",
    "debug": "デバッグ",
    "plugins": "プラグイン",
    "acp": "ACP",
    "backups": "バックアップ",
    "pluginManager": "プラグインマネージャー"
  },
  "debug": {
    "title": "デバッグ",
    "desc": "バックエンドのデーモンログを表示し、問題の調査に役立てます。このページを開いている間は自動で更新されます。",
    "level": {
      "all": "すべて"
    },
    "backend": {
      "title": "バックエンドログ",
      "autoRefresh": "自動更新",
      "newestFirst": "新しい順",
      "updatedAt": "更新時刻",
      "path": "ログファイル",
      "notFound": "バックエンドログファイルはまだ見つかっていません。",
      "placeholder": "バックエンドログがここに表示されます。",
      "loadFailed": "バックエンドログの読み込みに失敗しました",
      "searchPlaceholder": "バックエンドログを検索..."
    },
    "actions": {
      "refreshBackend": "バックエンドログを更新",
      "refreshSuccess": "ログを更新しました",
      "copyBackend": "バックエンドログをコピー"
    }
  },
  "agent": {
    "parent": "設定",
    "agents": "エージェント",
    "management": "エージェント管理",
    "pageDescription": "カスタムワークスペースとアイデンティティを持つ複数の AI エージェントを作成、設定、管理します。",
    "name": "名前",
    "id": "ID",
    "description": "説明",
    "workspace": "ワークスペースパス",
    "create": "エージェントを作成",
    "createTitle": "新しいエージェントを作成",
    "createSuccess": "エージェントが正常に作成されました",
    "createFailed": "エージェントの作成に失敗しました",
    "edit": "編集",
    "editTitle": "エージェントを編集 - {{name}}",
    "updateSuccess": "エージェントが正常に更新されました",
    "updateFailed": "エージェントの更新に失敗しました",
    "delete": "削除",
    "deleteConfirm": "エージェントの削除を確認",
    "deleteConfirmDesc": "削除後、エージェントは利用できなくなりますが、ワークスペースファイルは保持されます",
    "deleteSuccess": "エージェントが正常に削除されました",
    "deleteFailed": "エージェントの削除に失敗しました",
    "selectAgent": "エージェントを選択",
    "defaultDisplayName": "デフォルトエージェント",
    "currentWorkspace": "現在のエージェント",
    "switchSuccess": "エージェントが正常に切り替えられました",
    "switchFailed": "エージェントの切り替えに失敗しました",
    "loadFailed": "エージェントリストの読み込みに失敗しました",
    "loadConfigFailed": "エージェント設定の読み込みに失敗しました",
    "saveFailed": "エージェントの保存に失敗しました",
    "idRequired": "エージェント ID を入力してください",
    "idLabel": "エージェント ID（任意）",
    "idHelp": "空欄のままにすると自動生成されます。英数字、ハイフン、アンダースコアのみ使用可能。",
    "idPattern": "ID は英数字、アンダースコア、ハイフンのみ使用できます",
    "idPlaceholder": "例：my-agent",
    "nameRequired": "エージェント名を入力してください",
    "namePlaceholder": "例：マイエージェント",
    "descriptionPlaceholder": "このエージェントの目的を簡単に説明してください...",
    "workspaceHelp": "空欄のままにすると、~/.qwenpaw/workspaces/<id> に自動生成されます",
    "dragHandleTooltip": "ドラッグしてエージェントの順序を変更",
    "reorderSuccess": "エージェントの順序を保存しました",
    "reorderFailed": "エージェントの順序を保存できませんでした",
    "defaultNotEditable": "デフォルトのエージェントは編集できません",
    "defaultNotDeletable": "デフォルトのエージェントは削除できません",
    "disable": "無効化",
    "enable": "有効化",
    "disabled": "無効",
    "disableConfirm": "エージェントの無効化を確認",
    "disableConfirmDesc": "無効化後、エージェントインスタンスは起動しませんが、リストには表示されます",
    "enableConfirm": "エージェントの有効化を確認",
    "enableConfirmDesc": "有効化後、エージェントは切り替えて使用できるようになります",
    "disableSuccess": "エージェントが無効化されました",
    "enableSuccess": "エージェントが有効化されました",
    "toggleFailed": "エージェント状態の切り替えに失敗しました",
    "enableAgent": "{{name}} を有効化",
    "disableAgent": "{{name}} を無効化",
    "disabledAgents": "無効 ({{count}})",
    "pinnedAgents": "固定済み",
    "otherAgents": "その他のエージェント",
    "pinned": "固定済み",
    "defaultPinned": "デフォルトエージェントは常に固定されます",
    "longPressToPin": "長押しで固定",
    "longPressToUnpin": "長押しで固定解除",
    "pinAgent": "エージェントを固定",
    "unpinAgent": "エージェントの固定を解除",
    "pinSuccess": "エージェントを固定しました",
    "unpinSuccess": "エージェントの固定を解除しました",
    "pinFailed": "固定状態を更新できませんでした",
    "status": {
      "disabled": "無効",
      "pending": "起動待ち",
      "starting": "起動中",
      "running": "実行中",
      "failed": "起動失敗",
      "waitUntilStarted": "起動完了後に操作できます"
    },
    "defaultNotDisablable": "デフォルトのエージェントは無効化できません",
    "currentAgentDeleted": "現在のエージェントが削除されました。デフォルトエージェントに自動切り替えしました",
    "currentAgentDisabled": "現在のエージェントが無効化されました。デフォルトエージェントに自動切り替えしました",
    "switchedToDefault": "デフォルトエージェントに自動切り替えしました",
    "cannotSwitchToDisabled": "このエージェントは無効化されています。管理ページで有効化してください",
    "model": "モデル",
    "modelHelp": "このエージェントに特定の LLM モデルを割り当てます。空欄の場合はグローバルデフォルトが使用されます。",
    "modelPlaceholder": "グローバルデフォルト",
    "noConfiguredModels": "設定済みのモデルがありません",
    "modelColumn": "モデル",
    "initialSkills": "初期スキル",
    "initialSkillsHelp": "プールからスキルを追加選択します。後でいつでも追加・削除できます。",
    "selectAll": "すべて",
    "selectBuiltin": "組み込み",
    "selectNone": "クリア",
    "noPoolSkills": "プールに利用可能なスキルがありません",
    "addSkillsToAgent": "スキルを追加",
    "copyTooltip": "エージェント設定をコピー",
    "copyDefaultTooltip": "デフォルトエージェントをテンプレートとしてコピー",
    "copyTitle": "エージェント設定をコピー",
    "copyNameLabel": "新しいエージェント名",
    "copyOptionsLabel": "コピー内容",
    "copyOptionAgentJson": "agent.json（必須）",
    "copyOptionAgentJsonHint": "解析済みのソース設定を常にコピーし、ID・名前・workspace・channels のみリセットします。ディスク上の agent.json をそのまま複製するわけではありません。",
    "copyOptionMdFiles": "AGENTS / SOUL / PROFILE / HEARTBEAT / BOOTSTRAP.md",
    "copyOptionSkills": "skills/ + manifest",
    "copyOptionJobs": "jobs.json",
    "copyOptionJobsHint": "ジョブ定義のみをコピーし、実行履歴は含みません。作成後、新しいエージェントはスケジュールに従ってすぐに実行を開始します。",
    "copySuccess": "エージェント設定のコピーに成功しました",
    "copyFailed": "エージェント設定のコピーに失敗しました"
  },
  "workspace": {
    "title": "ファイル",
    "workspacePath": "ワークスペース:",
    "noFiles": "ファイルなし",
    "coreFiles": "コアファイル",
    "coreFilesDesc": "ペルソナ・アイデンティティ・ツールガイダンスを設定します。",
    "uploadTooltip": "ZIPファイルのみ",
    "uploadTooltipWithLimit": "ZIPファイルのみ、最大{{limit}}MB",
    "selectFile": "編集するファイルを選択",
    "fileContent": "ファイルの内容...",
    "uploadSuccess": "ファイルのアップロードに成功しました",
    "uploadFailed": "ファイルのアップロードに失敗しました",
    "downloadPreparing": "ワークスペースのダウンロードを準備中...",
    "downloadSuccess": "ワークスペースのダウンロードに成功しました",
    "downloadFailed": "ワークスペースのダウンロードに失敗しました",
    "zipOnly": "アップロードできるのは .zip ファイルのみです",
    "fileSizeExceeded": "ファイルサイズが{{limit}}MBの制限を超えています。現在のファイル: {{size}}MB",
    "systemPromptToggleTooltip": "システムプロンプトへのファイル読み込みを有効/無効にする",
    "memoryFileWarning": "MEMORY.md は通常、エージェントがツールを使用してオンデマンドで照会および読み込みます。システムプロンプトに読み込むと、コンテキストが長くなりすぎる可能性があります。",
    "configUpdated": "システムプロンプト設定が更新されました",
    "configUpdateFailed": "システムプロンプト設定の更新に失敗しました",
    "attribution": "ワークスペースの設計はOpenClawプロジェクトの一部を参考にしています — ありがとう！🐾",
    "saveSuccess": "保存しました",
    "saveFailed": "保存に失敗しました"
  },
  "skills": {
    "title": "スキル",
    "description": "エージェントのスキルと機能を管理します。",
    "importHub": "URL からアップロード",
    "supportedSources": "対応ソース：",
    "importSkills": "スキルをインポート",
    "enterSkillUrl": "スキルのURLを入力",
    "supportedSkillUrlSources": "サポートされているスキルマーケットプレイス:",
    "urlExamples": "URLの例:",
    "urlValid": "{{source}} からの有効な URL",
    "invalidUrl": "無効な URL",
    "clickToFill": "クリックして URL を入力",
    "invalidSkillUrlSource": "サポートされているマーケットプレイスのスキルURLであることを確認してください",
    "type": "タイプ",
    "installedFrom": "インストール元",
    "source": "ソース",
    "path": "パス",
    "tags": "タグ",
    "builtin": "組み込み",
    "custom": "カスタム",
    "addSkill": "スキルを追加",
    "createSkill": "スキルを作成",
    "viewSkill": "スキルを表示",
    "editSkill": "スキルを編集",
    "skillName": "スキル名",
    "skillContent": "スキルの内容",
    "pleaseInputName": "スキル名を入力してください",
    "pleaseInputContent": "スキルの内容を入力してください",
    "skillNamePlaceholder": "例: weather_query",
    "contentPlaceholder": "---\nname: <スキル名> (必須)\ndescription: <スキルの説明> (必須)\nmetadata: { \"qwenpaw\": { \"emoji\": \"🔧\" } }\n---\n\nスキルの実装内容...\n\n# 例:\n# ---\n# name: cron\n# description: qwenpawコマンド経由でcronジョブを管理 - タスクの作成・照会・一時停止・再開・削除\n# metadata: { \"qwenpaw\": { \"emoji\": \"⏰\" } }\n# ---",
    "createSuccess": "スキルを作成しました",
    "createFailed": "スキルの作成に失敗しました",
    "deleteConfirm": "このスキルを削除してもよろしいですか？",
    "deleteSuccess": "スキルを削除しました",
    "deleteFailed": "スキルの削除に失敗しました",
    "batchEnable": "有効化",
    "batchDisable": "無効化",
    "batchEnableSuccess": "{{count}}個のスキルを有効にしました",
    "batchEnablePartial": "{{enabled}}個有効化、{{failed}}個失敗",
    "batchEnableFailed": "一括有効化に失敗しました",
    "batchDisableSuccess": "{{count}}個のスキルを無効にしました",
    "batchDisablePartial": "{{disabled}}個無効化、{{failed}}個失敗",
    "batchDisableFailed": "一括無効化に失敗しました",
    "batchDeleteTitle": "{{count}}個のスキルを削除しますか？",
    "batchDeleteSuccess": "{{count}}個のスキルを削除しました",
    "batchDeletePartial": "{{deleted}}個削除、{{failed}}個失敗",
    "batchDeleteFailed": "一括削除に失敗しました",
    "selectedCount": "{{count}}個選択中",
    "selectAll": "すべて選択",
    "clearSelection": "クリア",
    "updateSuccess": "スキルを更新しました",
    "updateFailed": " スキルの更新に失敗しました",
    "frontmatterRequired": "スキルは --- で始まり --- で終わる必要があります",
    "frontmatterNameRequired": "スキルに必須フィールド「name」がありません",
    "frontmatterDescriptionRequired": "スキルに必須フィールド「description」がありません",
    "editNotSupported": "スキルの編集に失敗しました",
    "editNote": "ヒント: ここでスキルの内容、チャンネル範囲、設定を編集できます。",
    "create": "作成",
    "optimizeWithAI": "AI最適化",
    "stopOptimize": "停止",
    "optimizeSuccess": "スキルを最適化しました",
    "optimizeFailed": "スキルの最適化に失敗しました",
    "noContentToOptimize": "最適化するコンテンツがありません",
    "cancelImport": "インポートを中止",
    "importCancelled": "スキルのインポートを中止しました",
    "importTimeout": "スキルのインポートがタイムアウトしました。再試行するかネットワークを確認してください。",
    "uploadSkill": "スキルをアップロード",
    "uploadZip": "Zip をアップロード",
    "uploadSuccess": "スキルのアップロードに成功しました",
    "uploadFailed": "スキルのアップロードに失敗しました",
    "uploadNoChange": "新しいスキルはインポートされませんでした。既に存在する可能性があります",
    "zipOnly": "アップロードは .zip ファイルのみ対応しています",
    "fileSizeExceeded": "ファイルサイズが{{limit}}MBの制限を超えています。現在のファイル: {{size}}MB",
    "channels": "適用チャンネル",
    "allChannels": "すべて",
    "lastUpdated": "更新日時",
    "searchPlaceholder": "名前で絞り込み",
    "listView": "リスト表示",
    "gridView": "カード表示",
    "refreshHint": "ディスクからスキルを更新",
    "poolSync": "同期状態",
    "uploadedToPool": "スキルプールにアップロードしました",
    "downloadedToWorkspace": "現在のワークスペースにダウンロードしました",
    "builtinUpgradeTitle": "ビルトインスキルのアップグレード",
    "builtinUpgradeContent": "スキルプールにビルトインスキル「{{name}}」の新しいバージョンがあります。現在のバージョンを上書きしますか？",
    "languageSwitchTitle": "スキル言語の切り替え",
    "languageSwitchContent": "次のスキルはプール内に異なる言語バージョンがあり、上書きされます:",
    "overwriteExistingList": "次のスキルは既に存在しており、上書きされます:",
    "nameConflict": "名前の競合が検出されました。推奨される名前変更が入力されました。",
    "uploadToPoolHint": "選択したワークスペーススキルを共有ローカルスキルプールにアップロードします",
    "downloadFromPool": "スキルプールから読み込む",
    "uploadToPool": "スキルプールに同期",
    "emptyStateBadge": "新しいワークスペースは空で始まります",
    "emptyStateTitle": "このエージェントにはまだスキルがありません",
    "emptyStateText": "これは正常な状態です。新しいワークスペースにはスキルが自動的に含まれていません。スキルプールからスキルをダウンロードするか、ここで新しいスキルを作成して、このエージェントを装備してください。",
    "emptyStateDownload": "スキルプールから読み込む",
    "emptyStateCreate": "最初のスキルを作成",
    "selectWorkspaceSkill": "ワークスペーススキルを選択",
    "selectPoolItem": "スキルプール項目を選択",
    "renameOptional": "名前変更（任意）",
    "renamePlaceholder": "競合時に推奨される名前変更がここに表示されます",
    "renameSingleOnly": "名前変更はスキルを1つだけ選択した場合にのみ利用できます。",
    "downloadSkillPool": "スキルプールをダウンロード",
    "uploadSkillPool": "スキルプールにアップロード",
    "config": "設定",
    "configPlaceholder": "{\"KEY\": \"value\"}",
    "configInvalidJson": "無効な JSON 形式",
    "configSaved": "設定を保存しました",
    "loadFailed": "スキルの読み込みに失敗しました",
    "refreshFailed": "スキルの更新に失敗しました",
    "createdSuccessfully": "作成しました",
    "saveFailed": "保存に失敗しました",
    "importFailed": "インポートに失敗しました",
    "disabledSuccessfully": "無効化しました",
    "enabledSuccessfully": "有効化しました",
    "operationFailed": "操作に失敗しました",
    "provideUrl": "ハブスキルのURLを入力してください",
    "validUrl": "http:// または https:// で始まる有効なURLを入力してください",
    "importedSkill": "スキルをインポートしました: {{name}}",
    "batchOperation": "一括操作",
    "exitBatch": "一括操作を終了",
    "noSearchResults": "検索に一致するスキルが見つかりません",
    "filterByTag": "タグで絞り込み",
    "noTags": "利用可能なタグがありません",
    "enabledSkills": "有効なスキル",
    "disabledSkills": "無効なスキル",
    "active": "個有効"
  },
  "skillPool": {
    "description": "ビルトインスキルとワークスペースアップロード用の共有ローカルスキルプール。ClawHub や LobeHub などの外部インポートは別機能です。",
    "broadcast": "ブロードキャスト",
    "broadcastHint": "スキルプールのスキルを全てまたは選択したワークスペースにブロードキャスト",
    "refreshHint": "ディスクからスキルプールを更新",
    "deleteExternalConfirm": "外部スキルのファイル {{path}} をディスクから削除します。",
    "deleteExternalBatchWarning": "選択した外部スキルはディスクから完全に削除されます。",
    "broadcastTitle": "{{name}} をブロードキャスト",
    "importBuiltin": "ビルトインを取り込む",
    "importBuiltinHint": "ソースからビルトインスキルをプールに取り込みます",
    "importBuiltinAlertHint": "{{count}} 件のビルトイン変更を確認してください",
    "importBuiltinSuccess": "ビルトインを取り込みました: {{names}}",
    "importBuiltinConflicts": "名前の競合でスキップしました: {{names}}",
    "importBuiltinNoChanges": "取り込むビルトイン変更はありません",
    "importBuiltinFailed": "ビルトインの取り込みに失敗しました",
    "importBuiltinConflictTitle": "ビルトインの競合が見つかりました",
    "importBuiltinConflictContent": "以下のビルトインは現在のプール内コピーと異なります。確認するとソース版で上書きします。",
    "sourceVersion": "ソース版",
    "currentVersion": "現在の版",
    "builtinLanguage": "言語",
    "langDefault": "デフォルト",
    "langDefaultTooltip": "各スキルの元の言語設定を保持",
    "langEn": "英語",
    "langZh": "中国語",
    "builtinLanguageChangeTitle": "ビルトイン言語を切り替えますか？",
    "builtinLanguageChangeContent": "プール内の「{{name}}」を {{language}} 版のビルトインで上書きしますか？",
    "builtinLanguageChangeSuccess": "「{{name}}」を {{language}} に切り替えました",
    "builtinLanguageChangeFailed": "ビルトイン言語の切り替えに失敗しました",
    "importStatusMissing": "プールにありません",
    "importStatusCurrent": "最新です",
    "importStatusOutdated": "バージョンが古いです",
    "importStatusLanguageSwitchTo": "{{language}}版で上書きします",
    "importStatusConflict": "競合",
    "builtinNoticeSummary": "{{count}} 件のビルトイン変更が見つかりました",
    "builtinNoticeLineAdded": "追加: {{names}}",
    "builtinNoticeLineMissing": "不足: {{names}}",
    "builtinNoticeLineUpdated": "更新: {{names}}",
    "builtinNoticeLineRemoved": "削除: {{names}}",
    "zipImport": "ZIPインポート",
    "create": "作成",
    "edit": "編集",
    "delete": "削除",
    "descriptionLabel": "説明",
    "tags": "タグ",
    "tagsPlaceholder": "タグを選択または入力",
    "filterByTag": "タグで絞り込む",
    "version": "バージョン",
    "createTitle": "スキルプール項目を作成",
    "editTitle": "{{name}} を編集",
    "skillNamePlaceholder": "スキル名",
    "contentPlaceholder": "SKILL.md の内容",
    "nameConflict": "名前の競合が検出されました。推奨される名前変更が適用されました。",
    "deletedFromPool": "スキルプールから削除しました",
    "deleteBuiltinConfirm": "このビルトインスキルをプールから削除します。後でソースから再度取り込めます。",
    "deleteConfirm": "共有ローカルスキルプールからこのスキルを削除します。",
    "deleteTitle": "{{name}} を削除しますか？",
    "batchDeleteTitle": "{{count}}個のプールスキルを削除しますか？",
    "batchDeleteSuccess": "{{count}}個のプールスキルを削除しました",
    "batchDeletePartial": "{{deleted}}個削除、{{failed}}個失敗",
    "batchDeleteFailed": "一括削除に失敗しました",
    "imported": "インポート済み：{{names}}",
    "noNewImports": "新しいスキルはインポートされませんでした",
    "allBuiltin": "すべての組み込み",
    "selectWorkspaces": "ワークスペースにブロードキャスト",
    "allWorkspaces": "すべてのワークスペース",
    "optionalRename": "任意の名前変更",
    "back": "戻る",
    "skillCount": "{{count}} スキル",
    "skillName": "スキル名",
    "status": "状態",
    "installedFrom": "インストール元",
    "updateBuiltin": "更新",
    "updateConfirmTitle": "{{name}} を更新",
    "updateConfirmContent": "バージョン {{version}} に更新しますか？現在のプールコピーが最新の組み込みバージョンに置き換えられます。",
    "updateSuccess": "更新しました",
    "updateFailed": "更新に失敗しました",
    "broadcastSuccess": "ブロードキャストが完了しました",
    "broadcastFailed": "ブロードキャストに失敗しました",
    "overwriteConfirm": "既存のスキルを上書きしますか？",
    "overwriteTargetsContent": "次の既存ターゲットは上書きされます:",
    "builtinOverwriteTargetsContent": "次のビルトインターゲットはバージョンが異なるため、上書きされます:",
    "renameAndRetry": "同名のスキルが存在します。推奨名を使用しますか？",
    "multiConflictTitle": "複数の競合が検出されました",
    "multiConflictDesc": "以下のスキルは既に存在します。競合を個別に解決してから再試行してください：",
    "singleConflictRename": "\"{{name}}\" は既に存在します。\"{{suggested}}\" にリネームして続行しますか？",
    "statusUpToDate": "最新",
    "statusSynced": "同期済み",
    "statusOutdated": "古いです",
    "statusNotSynced": "未同期",
    "statusConflict": "競合",
    "renameEntry": "\"{{name}}\" の新しい名前：",
    "builtin": "組み込み",
    "custom": "カスタム"
  },
  "mcp": {
    "title": "MCPクライアント",
    "create": "クライアントを作成",
    "formatSupport": "サポートされているフォーマット",
    "standardFormat": "標準（mcpServers でラップ）",
    "directFormat": "直接（キー → 設定オブジェクト）",
    "singleFormat": "単一クライアント（フラットなフィールド）",
    "emptyState": "MCPクライアントがまだ設定されていません",
    "loadError": "MCPクライアントの読み込みに失敗しました",
    "createSuccess": "MCPクライアントを作成しました",
    "createError": "MCPクライアントの作成に失敗しました",
    "updateSuccess": "MCPクライアントを更新しました",
    "updateError": "MCPクライアントの更新に失敗しました",
    "enableSuccess": "MCPクライアントを有効化しました",
    "disableSuccess": "MCPクライアントを無効化しました",
    "toggleError": "MCPクライアントのステータス変更に失敗しました",
    "deleteConfirm": "このMCPクライアントを削除してもよろしいですか？",
    "deleteSuccess": "MCPクライアントを削除しました",
    "deleteError": "MCPクライアントの削除に失敗しました",
    "maskedFieldHint": "機密フィールドは *** でマスクされています。マスク値の直接編集はできません。変更するには完全な新しい値に置き換えてください。",
    "tools": "ツール&権限",
    "noTools": "このMCPサーバーには利用可能なツールがありません",
    "toolsLoadError": "MCPサーバーからツール一覧の取得に失敗しました",
    "toolsConnecting": "MCPサーバーに接続中です。しばらくしてから再度お試しください",
    "toolSchema": "入力スキーマ",
    "access": {
      "title": "アクセス",
      "button": "アクセス",
      "summary": "MCPアクセスポリシー",
      "clientSection": "全体アクセス",
      "toolSection": "ツールアクセス",
      "default": "デフォルト",
      "sourceType": "ソース",
      "sourceValue": "ソース値",
      "sourceValueAllChannels": "すべてのチャンネル",
      "subjectType": "対象",
      "subjectValue": "対象値",
      "effectLabel": "ポリシー",
      "source": {
        "channel": "チャンネル"
      },
      "subjectTypeOption": {
        "all": "すべて",
        "user": "ユーザー"
      },
      "sourceValuePlaceholder": {
        "channel": "console / dingtalk"
      },
      "subjectValuePlaceholder": "例: alice",
      "subjectValuePlaceholderSelectedSource": "選択したソース内のユーザーID",
      "subjectValuePlaceholderScoped": "{{source}} のユーザーID",
      "subjectValueAll": "すべて",
      "recentUserPlaceholder": "ユーザーIDは選択したソース内で有効です。再入力または選択してください",
      "noRecentUsers": "このソースに最近のユーザーはいません。ユーザーIDを手入力できます",
      "ambiguousUserSourceWarning": "ユーザーIDはソース内でのみ一意です。チャンネルを指定して、別チャンネルのユーザーと誤って一致しないようにしてください。",
      "unknownUserValueWarning": "このユーザーIDは最近のアクティブユーザーにありません。保存は可能です。",
      "validation": {
        "missingUserValue": "具体的なソースを選択し、有効なユーザーIDを入力してください。",
        "ambiguousUserSource": "ユーザールールは、すべてのチャンネルではなく特定のチャンネルを対象にしてください。",
        "unknownUserValue": "このユーザーIDは最近のアクティブユーザーにありません。保存は可能です。"
      },
      "addRule": "ルールを追加",
      "deleteRule": "ルールを削除",
      "noClientRules": "ルールなし",
      "noRules": "ルールなし。デフォルトポリシーを使用します",
      "inherit": "継承（{{effect}}）",
      "stale": "見つかりません",
      "disabledTools": "このMCPクライアントは無効です。保存済みのアクセスルールは引き続き編集できます。",
      "discardTitle": "未保存の変更を破棄しますか？",
      "discardContent": "未保存のアクセスポリシー変更は失われます。",
      "loadError": "MCPアクセスポリシーの読み込みに失敗しました",
      "saveSuccess": "MCPアクセスポリシーを保存しました",
      "saveError": "MCPアクセスポリシーの保存に失敗しました",
      "unmanagedRules": "{{count}} 件の詳細ルール",
      "effect": {
        "allow": "許可",
        "ask": "確認",
        "deny": "拒否"
      }
    },
    "tab": {
      "json": "JSONインポート",
      "form": "フォームモード"
    },
    "form": {
      "key": "クライアントキー",
      "keyPlaceholder": "my-mcp-server",
      "keyRequired": "クライアントキーは必須です",
      "name": "表示名",
      "namePlaceholder": "My MCP Server",
      "nameRequired": "表示名は必須です",
      "transport": "トランスポート",
      "url": "サーバーURL",
      "urlRequired": "リモートMCPサーバーにはURLが必要です",
      "command": "コマンド",
      "commandRequired": "stdioトランスポートにはコマンドが必要です",
      "args": "引数（スペースまたは改行区切り）",
      "description": "説明",
      "descriptionPlaceholder": "任意の説明",
      "env": "環境変数",
      "envPlaceholder": "KEY=VALUE（1行に1つ）"
    },
    "oauth": {
      "enableOAuth": "OAuth 認証を使用する",
      "manage": "OAuth",
      "authorized": "認証済み",
      "notAuthorized": "未認証",
      "expired": "トークン期限切れ",
      "failed": "認証失敗",
      "waiting": "認証待ち...",
      "authorize": "認証する",
      "reauthorize": "再認証する",
      "revoke": "取り消す",
      "startFailed": "OAuthフローの開始に失敗しました",
      "authFailed": "OAuth認証に失敗しました",
      "popupBlocked": "ポップアップがブラウザにブロックされました。許可してから再試行してください。",
      "windowClosed": "認証ウィンドウが閉じられました。再試行してください。",
      "noUrl": "先にサーバーURLを入力してください",
      "noClientKey": "先にクライアントを作成してください",
      "showAdvanced": "詳細オプション",
      "hideAdvanced": "詳細オプションを隠す",
      "clientId": "Client ID（任意）",
      "clientIdPlaceholder": "空白のままで動的クライアント登録を使用",
      "scope": "Scope（任意）",
      "scopePlaceholder": "openid profile email",
      "authEndpoint": "Authorization Endpoint（上書き）",
      "tokenEndpoint": "Token Endpoint（上書き）",
      "endpointHint": "空白のままにするとMCPサーバーから自動検出されます。"
    }
  },
  "heartbeat": {
    "title": "ハートビート",
    "description": "一定間隔でHEARTBEAT.mdを実行してセルフチェックを行います。デフォルトでは現在の会話に影響を与えずサイレントに動作しますが、オプションで最後のチャットチャンネルに返信を送ることもできます。",
    "enabled": "ハートビートを有効化",
    "every": "間隔",
    "everyRequired": "必須",
    "everyMin": "1以上の値が必要です",
    "timeoutSeconds": "実行タイムアウト（秒）",
    "timeoutRequired": "必須",
    "timeoutMin": "1以上の値が必要です",
    "timeoutMax": "3600以下の値が必要です",
    "unitMinutes": "分",
    "unitHours": "時間",
    "target": "返信先",
    "targetMain": "サイレントモード（デフォルト、チャンネル出力なし）",
    "targetLast": "最後のチャットチャンネルに送信",
    "activeHours": "稼働時間（任意）",
    "activeStart": "開始時刻",
    "activeEnd": "終了時刻",
    "loadFailed": "ハートビート設定の読み込みに失敗しました",
    "saveSuccess": "保存しました。ハートビートをホットリロードしました",
    "saveFailed": "ハートビート設定の保存に失敗しました",
    "targetInbox": "受信トレイに送信",
    "runNow": "今すぐ実行",
    "runNowSuccess": "ハートビートを実行しました。受信トレイまたは送信先チャンネルを確認してください。",
    "runNowFailed": "ハートビートの実行に失敗しました"
  },
  "cronJobs": {
    "title": "定期実行",
    "description": "指定した時刻に自動実行されるスケジュールタスクを作成・管理します。",
    "createJob": "ジョブを作成",
    "editJob": "ジョブを編集",
    "confirmDelete": "削除の確認",
    "deleteConfirm": "この定期実行ジョブを削除してもよろしいですか？",
    "okText": "OK",
    "cancelText": "キャンセル",
    "deleteText": "削除",
    "id": "ジョブID",
    "name": "ジョブ名",
    "enabled": "ステータス",
    "scheduleType": "スケジュールタイプ",
    "scheduleCron": "スケジュール（Cron）",
    "scheduleCronLabel": "スケジュール（Cron）",
    "scheduleTimezone": "タイムゾーン",
    "cronType": "頻度",
    "cronTypeHourly": "毎時",
    "cronTypeDaily": "毎日",
    "cronTypeWeekly": "毎週",
    "cronTypeCustom": "カスタム",
    "cronTime": "時刻",
    "cronDaysOfWeek": "曜日",
    "cronDayMon": "月曜日",
    "cronDayTue": "火曜日",
    "cronDayWed": "水曜日",
    "cronDayThu": "木曜日",
    "cronDayFri": "金曜日",
    "cronDaySat": "土曜日",
    "cronDaySun": "日曜日",
    "cronCustomExpression": "Cron式",
    "taskText": "メッセージ内容",
    "action": "操作",
    "disable": "無効化",
    "executeNow": "今すぐ実行",
    "edit": "編集",
    "delete": "削除",
    "totalItems": "合計 {{count}} 件",
    "perPage": "件/ページ",
    "pleaseInputId": "ジョブIDを入力してください",
    "pleaseInputName": "ジョブ名を入力してください",
    "pleaseInputCron": "Cron式を入力してください",
    "pleaseSelectTaskType": "タスクタイプを選択してください",
    "pleaseInputRequest": "リクエスト内容を入力してください",
    "pleaseInputMessageContent": "メッセージ内容を入力してください",
    "pleaseInputChannel": "対象チャンネルを入力してください",
    "pleaseInputUserId": "対象ユーザーIDを入力してください",
    "pleaseInputSessionId": "対象セッションIDを入力してください",
    "jobIdPlaceholder": "例: daily-report-job",
    "jobNamePlaceholder": "例: 毎朝の日報",
    "selectTimezone": "タイムゾーンを選択",
    "taskDescriptionPlaceholder": "テキストタスクの場合は送信する本文を入力...",
    "invalidJsonFormat": "JSONフォーマットが不正です",
    "jsonFormatRequired": "JSONフォーマットが必要です",
    "taskType": "タスクタイプ",
    "text": "メッセージ内容",
    "requestInput": "リクエスト内容",
    "requestSessionId": "リクエストセッションID",
    "requestUserId": "リクエストユーザーID",
    "dispatchChannel": "対象チャンネル",
    "dispatchTargetUserId": "対象ユーザーID",
    "dispatchTargetSessionId": "対象セッションID",
    "dispatchMode": "配信モード",
    "silentDelivery": "サイレント配信",
    "runtimeShareSession": "セッション共有",
    "runtimeMaxConcurrency": "最大同時実行数",
    "runtimeTimeoutSeconds": "タイムアウト（秒）",
    "runtimeMisfireGraceSeconds": "遅延許容時間（秒）",
    "runtimeToolSafety": "ツール実行安全チェック",
    "idTooltip": "タスクの作成時にシステムによって生成され、編集不可の一意のUUID。",
    "nameTooltip": "このジョブを識別するためのわかりやすい名前。",
    "cronTooltip": "タスクの実行タイミングを定義します",
    "cronExample": "よく使う例: '0 9 * * *' = 毎日9時 | '*/30 * * * *' = 30分ごと | '0 */2 * * *' = 2時間ごと | '0 0 * * 0' = 日曜0時",
    "cronHelper": "Cron式に慣れていませんか？",
    "cronHelperLink": "オンラインジェネレーターを使う",
    "timezoneTooltip": "Cronスケジュールのタイムゾーン。デフォルト: UTC",
    "taskTypeTooltip": "シンプルなメッセージタスクには「テキスト」を、複雑なエージェントワークフローには「エージェント」を選択してください。",
    "textTooltip": "シンプルなメッセージタスク：実際に送る本文です。タスクタイプが「text」のとき必須です。",
    "requestInputTooltip": "JSON形式のメッセージ内容。エージェントが受け取って処理する内容です。タスクタイプが「agent」のとき必須です。",
    "requestInputExample": "フォーマット: [{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"ここにメッセージを入力\"}]}]",
    "requestSessionIdTooltip": "リクエストコンテキストのセッションID。不明な場合は「default」を使用してください。",
    "requestUserIdTooltip": "リクエストを開始するユーザーID。自動タスクには「system」を使用してください。",
    "dispatchChannelTooltip": "レスポンスを送信する対象チャンネル（例: 'console', 'discord', 'imessage'）。",
    "dispatchTargetUserIdTooltip": "対象チャンネルでレスポンスを受け取るユーザーID。",
    "dispatchTargetSessionIdTooltip": "対象チャンネルでレスポンスを届けるセッションID。",
    "dispatchModeTooltip": "リアルタイム応答には「ストリーム」を、完了後の応答には「ファイナル」を選択してください。",
    "silentDeliveryTooltip": "エージェントタスクを実行してセッションとトレースを保持しますが、結果はチャンネルに送信しません。",
    "shareSessionTooltip": "有効にすると、対象ユーザーとセッションを共有します。無効にすると、実行ごとに一意のIDで独立したコンテキストを作成します。履歴を必要としない独立したタスクに適しています。デフォルト: 有効",
    "maxConcurrencyTooltip": "このジョブの最大同時実行数。デフォルト: 1",
    "timeoutSecondsTooltip": "最大実行時間（秒）。超過するとジョブが終了します。",
    "misfireGraceSecondsTooltip": "実行漏れの許容時間。スケジュール時刻をこの時間以上過ぎた場合は実行されません。",
    "toolSafetyTooltip": "有効にすると、リスクの高いツール呼び出しにユーザー承認が必要です（無人のcronジョブをブロックする可能性があります）。無効にすると、すべてのツールが承認なしで実行されます。デフォルト：無効",
    "executeNowTitle": "タスクを今すぐ実行",
    "executeNowContent": "\"{{name}}\" を今すぐ実行してもよろしいですか？",
    "executeNowConfirm": "今すぐ実行",
    "createFromTemplate": "テンプレートから作成",
    "templateModalTitle": "タスクテンプレートを選択",
    "templateModalDescription": "内蔵テンプレートを選び、保存前に主要パラメータを調整します。",
    "useTemplate": "このテンプレートを使用",
    "templateTagPersonal": "個人",
    "templateTagTeam": "チーム",
    "templateTagReminder": "リマインダー",
    "templateTagCalendar": "カレンダー",
    "templateTagCalendarRecommended": "カレンダー推奨",
    "saveResultToInbox": "実行結果を受信トレイに保存",
    "saveResultToInboxTooltip": "有効時、実行と配信が成功した結果を受信トレイに保存します。配信失敗時はフォールバックとして必ず受信トレイに記録されます。",
    "scheduleFilterAll": "すべてのスケジュール種別",
    "scheduleTypeRecurring": "繰り返し",
    "scheduleTypeOnce": "日程",
    "onceRunAt": "実行日時",
    "repeatEnabled": "繰り返し実行",
    "repeatEnabledTooltip": "この開始時刻から定期実行を有効化します",
    "repeatFrequency": "繰り返し頻度",
    "repeatEveryDays": "繰り返し間隔（日）",
    "repeatEveryPrefix": "毎",
    "repeatEverySuffix": "日",
    "repeatEndType": "終了条件",
    "repeatEndNever": "終了しない",
    "repeatEndUntil": "日時で終了",
    "repeatEndCount": "回数で終了",
    "repeatUntil": "終了日時",
    "repeatCount": "実行回数",
    "pleaseSelectScheduleType": "スケジュール種別を選択してください",
    "pleaseInputRunAt": "実行日時を選択してください",
    "pleaseInputRepeatEveryDays": "繰り返し間隔（日）を入力してください",
    "pleaseSelectRepeatEndType": "終了条件を選択してください",
    "pleaseInputRepeatUntil": "終了日時を選択してください",
    "pleaseInputRepeatCount": "実行回数を入力してください",
    "validation": {
      "cronRequired": "繰り返しスケジュールには Cron 式が必要です。",
      "runAtRequired": "単発スケジュールには実行日時が必要です。",
      "repeatUntilRequired": "「日時で終了」を選択した場合は終了日時が必要です。",
      "repeatCountRequired": "「回数で終了」を選択した場合は実行回数が必要です。",
      "repeatUntilAfterRunAt": "終了日時は実行日時より後である必要があります。実行日時より後の日時を指定してください。",
      "textRequired": "タスクタイプが text の場合、メッセージ内容は必須です。",
      "requestRequired": "タスクタイプが agent の場合、リクエスト内容は必須です。",
      "invalidCronExpression": "Cron 式が不正です。5 フィールド形式を使用してください。"
    },
    "listView": "リスト表示",
    "calendarView": "カレンダー表示",
    "calendarEmptyHint": "Scheduled タスクはまだありません。作成するとカレンダーに表示されます。",
    "calendarMoreItems": "他 {{count}} 件",
    "calendarDayListTitle": "{{date}} の Scheduled タスク",
    "executionHistory": "実行履歴",
    "historyTitle": "実行履歴 - {{name}}",
    "historyEmpty": "実行履歴はまだありません。",
    "historyStatusSuccess": "成功",
    "historyStatusFailed": "失敗",
    "historyStatusRunning": "実行中",
    "historyStatusCancelled": "キャンセル",
    "historyTriggerScheduled": "スケジュール実行",
    "historyTriggerManual": "手動実行",
    "historyExpand": "展開",
    "historyCollapse": "折りたたむ",
    "templates": {
      "dailyTechNewsBrief": {
        "title": "平日テックニュース要約",
        "description": "平日 09:30 に注目の技術ニュースを短く要約して配信します。",
        "frequency": "平日 09:30 (30 9 * * 1-5)"
      },
      "dailyEveningReflection": {
        "title": "毎日夜の振り返り",
        "description": "平日 20:00 に当日の振り返りを促します。",
        "frequency": "平日 20:00 (0 20 * * 1-5)"
      },
      "weekendRelaxationReminder": {
        "title": "週末リラックス通知",
        "description": "週末朝におすすめ映画を配信します。",
        "frequency": "週末 10:00 (0 10 * * 6,0)"
      },
      "pomodoroBreakReminder": {
        "title": "ポモドーロ休憩リマインダー",
        "description": "業務時間中に 25 分ごとに休憩と水分補給を促します。",
        "frequency": "平日 09:00-17:59、25 分ごと (*/25 9-17 * * 1-5)"
      },
      "petCareReminder": {
        "title": "ペットケアリマインダー",
        "description": "毎月15日夜に駆虫・ワクチン確認を通知します。",
        "frequency": "毎月15日 20:00 (0 20 15 * *)"
      },
      "onceTextBirthdayReminder": {
        "title": "誕生日リマインダー",
        "description": "xx が 1月1日に誕生日であることを通知します。",
        "frequency": "実行時刻：2026-01-01 09:00"
      },
      "onceAgentBusinessTripPrep": {
        "title": "出張前の準備",
        "description": "目的地の天気を確認し、出張準備の提案を行います。",
        "frequency": "実行時刻：2026-01-01 20:00"
      },
      "repeatCountTextMedicineReminder": {
        "title": "服薬リマインダー（14回）",
        "description": "14回の療程で、時間どおりの服薬を通知します。",
        "frequency": "初回：2026-01-01 09:00｜1日ごと｜14回"
      },
      "repeatCountAgentDietPlan": {
        "title": "14日間の食事プラン",
        "description": "14日間、毎日の食事提案を生成して送信します。",
        "frequency": "初回：2026-01-01 08:00｜1日ごと｜14回"
      },
      "repeatUntilTextWeeklyMeeting": {
        "title": "2か月間の週次会議リマインダー",
        "description": "設定した締切まで毎週、会議参加を通知します。",
        "frequency": "初回：2026-01-02 08:45｜7日ごと｜2026-03-01まで"
      },
      "repeatUntilAgentWeeklySummary": {
        "title": "会議前の週次サマリー",
        "description": "毎週会議前に、直近1週間の memory をもとに業務サマリーを生成します。",
        "frequency": "初回：2026-01-02 08:30｜7日ごと｜2026-03-01まで"
      }
    }
  },
  "channels": {
    "title": "チャンネル",
    "description": "メッセージチャンネルの管理と設定",
    "loading": "チャンネルを読み込み中...",
    "configSaved": "設定を保存しました",
    "configFailed": "設定の保存に失敗しました",
    "channelType": "チャンネルタイプ",
    "status": "ステータス",
    "totalItems": "合計 {{count}} 件",
    "botPrefix": "Botプレフィックス",
    "showToolCalls": "ツール呼び出し情報を表示",
    "showToolCallsTooltip": "ツール呼び出し情報をユーザーに表示します（オフにすると非表示）",
    "showToolResults": "ツール結果情報を表示",
    "showToolResultsTooltip": "ツール結果情報をユーザーに表示します（オフにすると非表示）",
    "toolCallMaxLength": "ツール呼び出しの最大表示長",
    "toolResultMaxLength": "ツール結果の最大表示長",
    "toolMaxLengthTooltip": "0 に設定すると省略しません",
    "showThinking": "思考過程を表示",
    "showThinkingTooltip": "モデルの思考・推論内容をユーザーに表示します（オフにすると非表示）",
    "noTextDebounce": "テキストなしデバウンス",
    "noTextDebounceTooltip": "有効にすると、メディアのみのメッセージ（画像/動画/ファイル）は一時保存され、後続のテキストメッセージ到着時に結合されます。無効にするとすべてのメッセージが即時処理されます。音声メッセージは常に即時処理されます。",
    "streamingEnabled": "ストリーミング出力",
    "streamingEnabledDingtalkHint": "メッセージタイプがCardの場合のみ有効",
    "streamingEnabledFeishuHint": "Feishuオープンプラットフォームの権限管理ページでcardkit:card:write権限を有効にする必要があります",
    "ackMessage": "即時確認メッセージ",
    "ackMessageTooltip": "メッセージ受信時にエージェント処理の前に即時返信を送信します。空欄で無効化。",
    "ackMessagePlaceholder": "⏳ 処理中...",
    "notSet": "未設定",
    "clickCardToEdit": "カードをクリックして編集",
    "settings": "設定",
    "channelSettings": "チャンネル設定",
    "pleaseInputDbPath": "DBパスを入力してください",
    "pleaseInputPollInterval": "ポーリング間隔を入力してください",
    "discordBotToken": "Discord Botトークン",
    "acceptBotMessages": "Botメッセージを受信",
    "acceptBotMessagesTooltip": "有効にすると、他のBotからのメッセージを受信します",
    "httpProxyPlaceholder": "http://127.0.0.1:18118",
    "httpProxyAuthPlaceholder": "ユーザー:パスワード",
    "dbPathPlaceholder": "~/Library/Messages/chat.db",
    "botPrefixPlaceholder": "@bot",
    "dmPolicy": "DMポリシー",
    "dmPolicyTooltip": "ダイレクトメッセージでBotと対話できるユーザーを制御します。オープン: 全員、許可リスト: 認証済みユーザーのみ",
    "groupPolicy": "グループポリシー",
    "groupPolicyTooltip": "グループチャットでBotと対話できるユーザーを制御します。オープン: 全員、許可リスト: 認証済みユーザーのみ",
    "requireMention": "@メンション必須",
    "requireMentionTooltip": "有効にすると、グループチャットでは明示的に@メンションされた場合のみ応答します",
    "policyOpen": "オープン",
    "policyAllowlist": "許可リスト",
    "allowFrom": "許可ユーザー",
    "allowFromTooltip": "Botと対話できるユーザーIDのリスト（フォーマット: ニックネーム#末尾4桁、例: John#1234）",
    "allowFromPlaceholder": "ユーザーIDを入力してEnterで追加",
    "denyMessage": "アクセス拒否メッセージ",
    "denyMessageTooltip": "アクセスが拒否されたユーザーに表示されるカスタムメッセージ",
    "twilioAccountSid": "Twilio アカウント SID",
    "twilioAuthToken": "Twilio 認証トークン",
    "phoneNumber": "電話番号",
    "phoneNumberSid": "電話番号 SID",
    "phoneNumberSidHelp": "TwilioコンソールのPhone Numbers → Active Numbersで確認できます。",
    "ttsProvider": "TTSプロバイダー",
    "ttsVoice": "TTSボイス",
    "sttProvider": "STTプロバイダー",
    "language": "言語",
    "welcomeGreeting": "ウェルカムメッセージ",
    "voiceSetupGuide": "Twilioアカウントを作成して電話番号を取得し、以下に認証情報を入力してください。アカウント SIDと認証トークンはTwilioコンソールのダッシュボードで確認できます。電話番号 SIDはPhone Numbers → Active Numbersに記載されています。",
    "voiceSetupLink": "Twilioコンソールを開く",
    "sipSetupGuide": "SIPレジストラ（Asterisk、FreeSWITCHなど）を設定し、以下にSIP認証情報を入力してください。DevモードではpyVoIPがローカルでSIP/RTPを処理します。ProductionモードではLiveKit SIP Serverを使用します。",
    "sipMode": "SIPモード",
    "sipModeTooltip": "Dev：ローカルテスト用のPython pyVoIP。Production：高並行性のLiveKit SIP Server。",
    "sipServer": "SIPサーバー",
    "sipServerPlaceholder": "空欄で内蔵レジストラを使用",
    "sipServerPlaceholderLivekit": "LiveKitモードでは不要",
    "sipUsername": "SIPユーザー名",
    "sipPassword": "SIPパスワード",
    "sipPort": "SIPポート",
    "sipTransport": "トランスポート",
    "sipDashscopeApiKey": "DashScope API Key",
    "sipDashscopeApiKeyTooltip": "Aliyun DashScope STT/TTS用のAPIキー。空の場合、DASHSCOPE_API_KEY環境変数にフォールバックします。",
    "livekitUrl": "LiveKit URL",
    "livekitApiKey": "LiveKit APIキー",
    "livekitApiSecret": "LiveKit APIシークレット",
    "livekitSipTrunkId": "LiveKit SIPトランクID",
    "livekitRoomName": "LiveKit ルーム名",
    "livekitRoomNameTooltip": "SIP着信を待機するLiveKitルーム名。SIP Dispatch Ruleのルーム名と一致させてください。",
    "loginWeCom": "WeCom QRコードを取得",
    "wecomSetupGuide": "QRコードでボットを作成する際、ボットの権限を承認する画面では「承認をスキップ」を選択してください。「承認を確認」を選択すると、ボット作成者以外のユーザーがボットと対話できなくなる場合があります。",
    "wecomScanAuth": "QRコードで認証",
    "wecomAuthHint": "上のQRコードをWeComでスキャンして認証してください。認証後、Bot IDとSecretが自動入力されます。",
    "wecomAuthSuccess": "WeComボットの認証に成功しました。Bot IDとSecretが自動入力されました。",
    "wecomQrcodeFailed": "WeCom QRコードの取得に失敗しました。もう一度お試しください。",
    "slackBotToken": "Bot Token",
    "slackBotTokenTooltip": "Slack Bot User OAuth Token（xoxb- で始まる）",
    "slackAppToken": "App Token",
    "slackAppTokenTooltip": "Slack App-Level Token（Socket Mode用、xapp- で始まる）",
    "slackProxyTooltip": "Slack API接続用HTTPプロキシURL",
    "dingtalkSetupGuide": "DingTalkでQRコードをスキャンしてボットを作成します。スキャン後、DingTalkアプリが自動作成され、Client IDとClient Secretが自動入力されます。",
    "dingtalkScanAuth": "スキャンしてボットを作成",
    "dingtalkGetQrcode": "DingTalk QRコードを取得",
    "dingtalkScanHint": "上のQRコードをDingTalkでスキャンしてください。認証後、Client IDとClient Secretが自動入力されます。",
    "dingtalkAuthSuccess": "DingTalkボットが作成されました。Client IDとClient Secretが自動入力されました。",
    "dingtalkQrcodeFailed": "DingTalk QRコードの取得に失敗しました。もう一度お試しください。",
    "dingtalkQrcodeExpired": "QRコードの有効期限が切れました。再取得してください。",
    "qqSetupGuide": "QQを使用してQRコードをスキャンし、ボットの認証を行ってください。スキャン後、APP IDとClient Secretが自動的に取得され、入力欄に反映されます。",
    "qqScanAuth": "QRコードをスキャンしてボットを認証する",
    "qqGetQrcode": "QQのQRコードを取得する",
    "qqScanHint": "上部のQRコードをQQでスキャンし、認証を完了してください。認証完了後、APP IDとClient Secretが自動的に入力されます。",
    "qqAuthSuccess": "QQボットの認証が完了しました。APP IDとClient Secretが自動的に入力されました。",
    "qqQrcodeFailed": "QQのQRコードの取得に失敗しました。しばらくしてからもう一度お試しください。",
    "qqQrcodeExpired": "QRコードの有効期限が切れています。再度取得してください。",
    "atSenderOnReply": "返信時に送信者を@メンション",
    "atSenderOnReplyTooltip": "有効にすると、ボットはグループチャットでの返信の最初のメッセージで送信者を@メンションします。注意：カードモードでは、@メンションは企業内部メンバーのみ有効です。",
    "dingtalkEndpoint": "APIエンドポイント",
    "dingtalkEndpointTooltip": "DingTalkプライベートデプロイ用のカスタムAPIエンドポイント。空欄の場合は公式デフォルトを使用します。",
    "wecomCancelled": "認証がキャンセルされました",
    "wecomAuthFailed": "認証に失敗しました: {{msg}}",
    "filterAll": "すべて",
    "builtin": "組み込み",
    "custom": "カスタム",
    "feishuRegion": "地域",
    "feishuRegionTooltip": "中国国内はFeishu、海外はLarkを選択",
    "feishuChina": "Feishu（中国）",
    "feishuInternational": "Lark（海外）",
    "feishuScanGuide": "FeishuでQRコードをスキャンしてボットを作成します。スキャン後、Feishuアプリが自動作成され、App IDとApp Secretが自動入力されます。",
    "feishuScanLogin": "スキャンしてボットを作成",
    "feishuGetQrcode": "Feishu QRコードを取得",
    "feishuScanHint": "上のQRコードをFeishuでスキャンしてください。認証後、App IDとApp Secretが自動入力されます。",
    "feishuAuthSuccess": "Feishuボットが作成されました。App IDとApp Secretが自動入力されました。",
    "feishuQrcodeExpired": "QRコードの有効期限が切れました。再取得してください。",
    "feishuQrcodeFailed": "Feishu QRコードの取得に失敗しました。もう一度お試しください。",
    "wechatSetupGuide": "WeChat個人アカウントBot（iLinkプロトコル）。Bot Tokenが未設定の場合、起動時にQRコードURLを表示します。スキャンして認証してください。Tokenはローカルに保存されます。",
    "wechatContextTokenLimit": "WeChat iLinkプラットフォームの制限：各ユーザーメッセージのcontext_tokenで返信できるメッセージは最大10件です。これはプラットフォーム側のハード制限です。制限超過による送信失敗を避けるため、思考およびツール出力を無効にするか、メッセージ統合機能を有効にすることをお勧めします。",
    "wechatBotToken": "Bot Token",
    "wechatBotTokenTooltip": "QRコードログイン後に取得したBearerトークン。空の場合は起動時にQRコードログインが案内されます。",
    "wechatBotTokenPlaceholder": "QRログイン後に自動入力、または手動で貼り付け",
    "wechatBotTokenFile": "Tokenファイルパス",
    "wechatBotTokenFileTooltip": "Botトークンの保存パス。デフォルトは ~/.qwenpaw/wechat_bot_token",
    "wechatMediaDir": "メディアディレクトリ",
    "wechatMessageMerge": "メッセージ統合",
    "wechatMessageMergeTooltip": "複数の返信メッセージを統合して送信し、WeChat の context_token あたり10件のメッセージ制限を回避します。遅延を0に設定すると、すべてのテキスト返信がリクエスト終了時に1つのメッセージに統合されます。正の遅延値（ミリ秒）は、その時間内の隣接メッセージを統合します。",
    "wechatMessageMergeDelayMs": "統合遅延（ミリ秒）",
    "wechatMessageMergeDelayMsTooltip": "隣接メッセージ統合の時間ウィンドウ。0に設定すると、すべてのメッセージを1つの最終返信に統合します。正の値（例: 1000）は、その期間中のメッセージをバッファリングしてから送信します。",
    "wechatMessageMergeDelayMsValidation": "有効な非負整数を入力してください",
    "wechatScanLogin": "QRコードでログイン",
    "wechatGetQrcode": "ログインQRコードを取得",
    "wechatScanHint": "WeChatでQRコードをスキャンして、完了後に保存してください",
    "wechatQrcodeFailed": "QRコードの取得に失敗しました。再試行してください",
    "wechatLoginSuccess": "WeChat ログイン成功、トークンが入力されました",
    "wechatQrcodeExpired": "QRコードが期限切れです。再取得してください",
    "shareSessionInGroup": "グループでコンテキスト共有",
    "shareSessionInGroupTooltip": "有効にすると、グループの全メンバーが同じ会話コンテキストを共有します。無効にすると、各メンバーが独立したコンテキストを持ちます。",
    "accessControlEnabled": "アクセス制御",
    "accessControlEnabledTooltip": "有効にすると、ホワイトリストのユーザーのみBotと対話できます。未知のユーザーにはIDが通知され、承認待ちリストに追加されます。",
    "accessControlDm": "DM アクセス制御",
    "accessControlDmTooltip": "有効にすると、ホワイトリストのユーザーのみDMでBotと対話できます",
    "accessControlGroup": "グループ アクセス制御",
    "accessControlGroupTooltip": "有効にすると、ホワイトリストのユーザーのみグループチャットでBotと対話できます",
    "dmDisabled": "DMを無効化",
    "dmDisabledTooltip": "有効にすると、Botはすべてのダイレクトメッセージを完全に無視します",
    "groupDisabled": "グループを無効化",
    "groupDisabledTooltip": "有効にすると、Botはすべてのグループメッセージを完全に無視します",
    "manageAccessControl": "アクセス制御",
    "pendingApprovals": "承認待ち",
    "whitelist": "ホワイトリスト",
    "blacklist": "ブラックリスト",
    "addUser": "ユーザーを追加",
    "addUserPlaceholder": "ユーザーIDを入力",
    "userId": "ユーザーID",
    "username": "ユーザー名",
    "channel": "チャンネル",
    "firstMessage": "最初のメッセージ",
    "time": "時間",
    "actions": "操作",
    "approve": "ホワイトリスト",
    "deny": "ブラックリスト",
    "dismiss": "無視",
    "noWhitelistUsers": "ホワイトリストユーザーなし",
    "noBlacklistUsers": "ブラックリストユーザーなし",
    "noPendingApprovals": "承認待ちなし",
    "userAdded": "ユーザーを追加しました",
    "userRemoved": "ユーザーを削除しました",
    "approveSuccess": "ホワイトリストに追加しました",
    "denySuccess": "ブラックリストに追加しました",
    "dismissSuccess": "無視しました",
    "operationFailed": "操作に失敗しました",
    "remark": "備考",
    "usernamePlaceholder": "ユーザー名を入力（任意）",
    "remarkPlaceholder": "備考を入力（任意）",
    "filterByChannel": "チャンネルで絞り込み",
    "selectToOperate": "項目を選択して操作",
    "selectedCount": "{{count}}件選択中",
    "batchApprove": "承認",
    "batchDeny": "ブラックリスト",
    "batchDismiss": "削除",
    "batchApproveConfirm": "{{count}}件のユーザーを承認しますか？",
    "batchDenyConfirm": "{{count}}件のユーザーをブラックリストに追加しますか？",
    "batchDismissConfirm": "{{count}}件のユーザーを削除しますか？",
    "batchSuccess": "{{count}}件のユーザーを処理しました",
    "batchRemove": "削除",
    "batchRemoveConfirm": "{{count}}件のユーザーを削除しますか？",
    "enabledSection": "有効",
    "enabledCount": "{{count}}件",
    "availableSection": "未有効",
    "enableAction": "有効にする",
    "noEnabledChannels": "有効なチャンネルはありません",
    "goEnableChannels": "チャンネルを有効にする"
  },
  "sessions": {
    "title": "セッション",
    "description": "アクティブなチャットセッションの表示と管理",
    "loading": "セッションを読み込み中...",
    "confirmDelete": "削除の確認",
    "deleteConfirm": "このセッションを削除してもよろしいですか？",
    "batchDeleteConfirm": "選択した {{count}} 件のセッションを削除してもよろしいですか？",
    "deleteSuccess": "セッションを削除しました",
    "deleteFailed": "セッションの削除に失敗しました",
    "batchDeleteSuccess": "{{count}} 件のセッションを削除しました",
    "batchDeleteFailed": "セッションの一括削除に失敗しました",
    "saveSuccess": "セッションを保存しました",
    "saveFailed": "セッションの保存に失敗しました",
    "batchDeleteButton": "一括削除",
    "filterTitle": "タイトルで絞り込み",
    "filterUserId": "ユーザーIDで絞り込み",
    "filterChannel": "チャンネルで絞り込み",
    "allChannels": "すべてのチャンネル",
    "totalItems": "合計 {{count}} 件",
    "selectedItems": "{{count}} 件選択中",
    "editSession": "セッションを編集",
    "pleaseInputName": "セッション名を入力してください",
    "sessionNamePlaceholder": "セッション名",
    "activeTab": "アクティブ",
    "archivedTab": "アーカイブ済み",
    "archivedAtColumn": "アーカイブ日時",
    "archive": {
      "action": "アーカイブ",
      "unaction": "アーカイブ解除",
      "batchAction": "一括アーカイブ",
      "batchUnaction": "一括アーカイブ解除",
      "success": "チャットをアーカイブしました",
      "successHint": "アーカイブしました。「コントロール＞セッション管理＞アーカイブ済み」で確認できます。",
      "failed": "アーカイブに失敗しました",
      "unarchiveSuccess": "アーカイブを解除しました",
      "unarchiveFailed": "アーカイブ解除に失敗しました",
      "batchSuccess": "{{count}} 件のチャットをアーカイブしました",
      "batchFailed": "一括アーカイブに失敗しました",
      "batchUnarchiveSuccess": "{{count}} 件のアーカイブを解除しました",
      "batchUnarchiveFailed": "一括アーカイブ解除に失敗しました",
      "groupLabel": "アーカイブ済み ({{count}})",
      "modalTitle": "アーカイブ済みのチャット",
      "unarchiveAll": "すべてアーカイブ解除",
      "noArchived": "アーカイブ済みのチャットはありません"
    }
  },
  "environments": {
    "parent": "設定",
    "environments": "環境変数",
    "title": "環境変数",
    "description": "エージェントとスキルのキー・バリュー形式の環境変数を設定します。",
    "key": "キー",
    "value": "値",
    "variableNamePlaceholder": "VARIABLE_NAME",
    "valuePlaceholder": "値",
    "insertRowBelow": "下に行を挿入",
    "deleteRow": "行を削除",
    "deleteVariable": "変数を削除",
    "deleteConfirm": "\"{{name}}\" を削除しますか？",
    "deleteSelected": "選択を削除",
    "deleteSelectedConfirm": "{{label}} を削除しますか？",
    "keyRequired": "キーは必須です",
    "invalidKeyFormat": "キーのフォーマットが不正です",
    "duplicateKey": "キーが重複しています",
    "saveSuccess": "環境変数を保存しました",
    "saveFailed": "保存に失敗しました",
    "deleteSuccess": "\"{{name}}\" を削除しました",
    "deleteFailed": "削除に失敗しました",
    "noVariables": "環境変数がまだ設定されていません。",
    "addVariable": "変数を追加",
    "loading": "読み込み中...",
    "retry": "再試行",
    "of": "/",
    "selected": "選択中",
    "variable": "変数",
    "variables": "変数",
    "showValue": "値を表示",
    "hideValue": "値を非表示"
  },
  "tokenUsage": {
    "title": "Token 使用量",
    "totalTokens": "合計 Token",
    "totalCalls": "総呼び出し回数",
    "promptTokens": "入力 Token",
    "completionTokens": "出力 Token",
    "byModel": "モデル別",
    "byDate": "日付別",
    "model": "モデル",
    "date": "日付",
    "loadFailed": "Token 使用量の読み込みに失敗しました",
    "noData": "選択期間に Token 使用データがありません",
    "modelTrend": "モデル使用量トレンド",
    "tokenTypeChart": "トークンタイプのトレンド",
    "selectAll": "すべて選択",
    "allSelected": "すべて",
    "itemsSelected": "{{count}} 件選択済み",
    "selectModels": "モデルを選択",
    "selectTokenTypes": "トークンタイプを選択"
  },
  "agentStats": {
    "title": "エージェント統計",
    "description": "選択期間のエージェント統計を確認します。",
    "totalSessions": "総セッション数",
    "totalMessages": "総メッセージ数",
    "userMessages": "ユーザーメッセージ",
    "assistantMessages": "アシスタントメッセージ",
    "promptTokens": "入力 Token",
    "completionTokens": "出力 Token",
    "llmCalls": "LLM 呼び出し",
    "toolCalls": "ツール呼び出し",
    "channel": "チャンネル",
    "sessionCount": "セッション数",
    "sessions": "セッション",
    "newSessions": "新規セッション",
    "activeSessions": "アクティブセッション",
    "messages": "メッセージ",
    "messageTrend": "メッセージ推移",
    "sessionTrend": "セッション推移",
    "tokenTrend": "Token 推移",
    "llmAndToolTrend": "LLM & ツール呼び出し推移",
    "sessionsByChannel": "チャンネル別セッション統計",
    "messagesByChannel": "チャンネル別メッセージ統計",
    "totalSessionsTooltip": "作成されたチャットセッションの総数。各セッションは独立した会話コンテキストです",
    "totalMessagesTooltip": "全セッションのメッセージ総数。ユーザーメッセージとアシスタントメッセージを含みます",
    "promptTokensTooltip": "LLM に送信されたプロンプト Token の総数",
    "completionTokensTooltip": "LLM によって生成された完了 Token の総数",
    "llmCallsTooltip": "LLM API 呼び出し回数。 各リクエストは1回の呼び出しとしてカウントされます",
    "toolCallsTooltip": "エージェントがツールを呼び出すことを決めた回数。1回のLLM呼び出しで複数のツール意図が発生する場合があります",
    "messageTrendTooltip": "ユーザーメッセージとアシスタントメッセージの比較推移",
    "sessionTrendTooltip": "新規セッションとアクティブセッションの比較推移。オレンジ色のバーはその日に作成されたセッション、青色のバーはその日にメッセージがあったセッションです",
    "tokenTrendTooltip": "入力 Token と出力 Token の消費推移",
    "llmAndToolTrendTooltip": "LLM 呼び出し回数とツール意図の比較推移",
    "sessionsByChannelTooltip": "メッセージチャンネル別のセッション分布。チャンネルに属さないセッションはデフォルトで Console にグループ化されます",
    "messagesByChannelTooltip": "メッセージチャンネル別のメッセージ総数分布",
    "loadFailed": "統計データの読み込みに失敗しました",
    "noData": "選択期間に統計データがありません",
    "retry": "再試行"
  },
  "modelSelector": {
    "selectModel": "モデルを選択",
    "noConfiguredModels": "設定済みモデルがありません",
    "noFreeModels": "利用可能な無料モデルがありません",
    "switchFailed": "モデルの切り替えに失敗しました",
    "searchModels": "モデルを検索...",
    "noModelsFound": "一致するモデルが見つかりません",
    "free": "無料",
    "vision": "視覚",
    "freeBannerText": "無料モデルには利用制限やサービス不安定の可能性があります。詳細はプロバイダーをご確認ください。",
    "moreProviders": "その他の無料プロバイダー（API Key が必要）",
    "proBannerText": "設定ページで構成済みのモデルのみ表示。",
    "connectToUse": "{{provider}} に接続して無料モデルを利用",
    "configureApiKey": "{{provider}} の API Key を設定して無料モデルを利用",
    "configureApiKeyTitle": "設定ページへ移動",
    "configureApiKeyConfirm": "モデル設定ページに移動して {{provider}} の API Key を設定します。続行しますか？",
    "goToConfigure": "設定へ",
    "noModelsDiscovered": "接続済み。モデル読み込み中...",
    "oauthTitle": "{{provider}} に接続",
    "oauthDescription": "{{provider}} への認証用に新しいブラウザウィンドウが開きます。APIキーは自動的に保存されます。",
    "oauthContinue": "続行",
    "oauthWaiting": "認証を待機中...",
    "oauthWaitingDescription": "ブラウザウィンドウで認証を完了してください。",
    "oauthConnected": "{{provider}} に正常に接続しました",
    "oauthFailed": "認証に失敗しました。もう一度お試しください",
    "viewMore": "もっと見る ({{count}})"
  },
  "models": {
    "llmConfiguration": "LLM設定",
    "providersTitle": "プロバイダー",
    "providersDescription": "各プロバイダーのAPIキーとエンドポイントを設定します。",
    "llmTitle": "モデル",
    "defaultLlm": "デフォルト LLM",
    "llmDescription": "ここではグローバル既定の LLM モデルを設定します。Chat ページでは各 Agent ごとに使用するモデルを個別に選択できます。",
    "configureProvider": "{{name}} を設定",
    "baseURL": "ベースURL",
    "apiKey": "APIキー",
    "advancedConfig": "詳細設定",
    "authMode": "認証モード",
    "authModeApiKey": "API Key (x-api-key)",
    "authModeAuthToken": "Auth Token (Authorization: Bearer)",
    "customHeaders": "カスタムヘッダー",
    "customHeadersHint": "すべての API リクエストに追加されます（例: x-app: cli）",
    "customHeaderKey": "ヘッダー名",
    "customHeaderValue": "ヘッダー値",
    "addHeader": "+ ヘッダーを追加",
    "generateConfig": "生成パラメータ設定",
    "generateConfigHint": "JSON 形式で指定した生成パラメータ設定です。展開されたうえで生成リクエスト（`openai.chat.completions` または `anthropic.messages`）に渡されます。",
    "generateConfigInvalidJson": "有効な JSON を入力してください",
    "generateConfigMustBeObject": "生成パラメータ設定は JSON オブジェクトである必要があります",
    "modelAdvancedConfig": "モデル詳細設定",
    "modelGenerateConfig": "モデル生成パラメータ",
    "modelGenerateConfigHint": "JSON 形式で指定したこのモデル専用の生成パラメータ設定です。展開されたうえで生成リクエストに渡されます。プロバイダーレベルの詳細設定より優先されます。",
    "modelConfigSaved": "モデル {{name}} の設定が保存されました",
    "modelConfigSaveFailed": "モデル設定の保存に失敗しました",
    "modelConfigLabel": "モデル設定",
    "maxTokensLabel": "最大出力トークン数",
    "maxTokensHint": "1回のレスポンスあたりの最大出力トークン数",
    "maxInputLengthLabel": "最大コンテキスト長",
    "maxInputLengthHint": "モデルのコンテキストウィンドウサイズ、コンテキスト圧縮のしきい値を制御します（≥1000）",
    "relayReasoningLabel": "思考内容を転送",
    "relayReasoningHint": "推論内容（reasoning contents）を後続の会話ターンに転送します",
    "thinkingModeLabel": "思考を有効化",
    "thinkingModeHint": "オンにすると思考/推論を有効化、オフにすると思考を無効化します。",
    "thinkingBudgetLabel": "思考バジェット",
    "thinkingBudgetHint": "モデルのデフォルト思考バジェットを使用",
    "switchToManual": "手動設定",
    "switchToAuto": "自動",
    "reasoningEffortLabel": "推論深度",
    "reasoningEffortHint": "推論の深さを制御（OpenAI系）",
    "protocol": "プロトコル",
    "protocolHint": "この設定のプロバイダーAPIプロトコルを選択してください。",
    "selectProtocol": "プロトコルを選択してください",
    "protocolOpenAI": "OpenAI互換（Chat Completions）",
    "protocolOpenAIResponse": "OpenAI互換（Response API）",
    "protocolAnthropic": "Anthropic（Messages API）",
    "currentKey": "現在: {{key}}",
    "startsWith": "\"{{prefix}}\" で始まる",
    "optionalSelfHosted": "セルフホストサービスの場合は任意",
    "leaveBlankKeep": "空欄のままにすると現在のキーを維持します",
    "enterApiKey": "APIキーを入力（{{prefix}}...）",
    "enterApiKeyOptional": "APIキーを入力（任意）",
    "openAIEndpoint": "OpenAIエンドポイント、例: https://api.openai.com/v1",
    "openAICompatibleEndpoint": "OpenAI互換エンドポイント、例: https://api.example.com（プロバイダーが必要とする場合のみ /v1 を追加）",
    "azureEndpointHint": "Azure OpenAIエンドポイント、例: https://<resource>.openai.azure.com/openai/v1",
    "anthropicEndpointHint": "Anthropicエンドポイント、例: https://api.anthropic.com",
    "ollamaEndpointHint": "Ollamaエンドポイント、例: http://localhost:11434",
    "lmstudioEndpointHint": "LM Studioエンドポイント、例: http://localhost:1234/v1",
    "apiEndpointHint": "APIエンドポイント、例: https://api.example.com",
    "pleaseEnterBaseURL": "APIベースURLを入力してください",
    "selectBaseURL": "ベースURLを選択してください",
    "selectBaseURLHint": "このプロバイダーのリージョンエンドポイントを選択",
    "pleaseEnterValidURL": "有効なURLを入力してください",
    "apiKeyShouldStart": "APIキーは \"{{prefix}}\" で始まる必要があります",
    "configurationSaved": "{{name}} の設定を保存しました",
    "failedToSaveConfig": "設定の保存に失敗しました",
    "revokeAuthorization": "認証を取り消す",
    "revokeConfirmContent": "{{name}} のAPIキーを削除してもよろしいですか？現在のLLMモデル設定もクリアされます。",
    "revokeConfirmSimple": "{{name}} のAPIキーを削除してもよろしいですか？",
    "authorizationRevoked": "{{name}} の認証を取り消し、LLMモデルをクリアしました",
    "authorizationRevokedSimple": "{{name}} の認証を取り消しました",
    "failedToRevoke": "認証の取り消しに失敗しました",
    "active": "アクティブ: {{provider}} / {{model}}",
    "provider": "プロバイダー",
    "model": "モデル",
    "selectProvider": "プロバイダーを選択（認証済みである必要があります）",
    "selectModel": "モデルを選択",
    "llmModelUpdated": "LLMモデルを更新しました",
    "failedToSave": "保存に失敗しました",
    "freeModelWarningTitle": "無料モデルのご案内",
    "freeModelWarningMessage": "無料モデルはサービスが不安定になる場合があります。詳細はプロバイダーの利用規約をご確認ください：",
    "freeModelWarningDontShowAgain": "今後は表示しない",
    "saved": "保存しました",
    "save": "保存",
    "cancel": "キャンセル",
    "loading": "読み込み中...",
    "retry": "再試行",
    "notSet": "未設定",
    "notRequired": "不要",
    "available": "利用可能",
    "unavailable": "利用不可",
    "providerAvailable": "準備完了（モデルあり）",
    "providerNoModels": "未準備（モデルなし）",
    "search": "検索",
    "searchPlaceholder": "プロバイダーを検索...",
    "searchModelPlaceholder": "モデルを検索...",
    "providerNotConfigured": "未準備（未設定）",
    "settings": "設定",
    "actions": "操作",
    "custom": "カスタム",
    "builtin": "組み込み",
    "freeTierGroup": "無料枠",
    "paidGroup": "有料",
    "localCustomGroup": "ローカル & カスタム",
    "endpointCount": "{{count}} エンドポイント",
    "connect": "OAuth",
    "saveApiKey": "保存",
    "addProvider": "プロバイダーを追加",
    "addProviderTitle": "カスタムプロバイダーを追加",
    "providerIdLabel": "プロバイダーID",
    "providerIdPlaceholder": "例: openai, google, anthropic",
    "providerIdHint": "小文字・数字・ハイフン・アンダースコアが使用できます。後から変更できません。",
    "providerNameLabel": "表示名",
    "providerNamePlaceholder": "例: OpenAI, Google Gemini",
    "defaultBaseUrlLabel": "デフォルトベースURL",
    "defaultBaseUrlPlaceholder": "例: https://api.example.com",
    "apiKeyPrefixLabel": "APIキープレフィックス（任意）",
    "apiKeyPrefixPlaceholder": "例: sk-",
    "providerCreated": "プロバイダー \"{{name}}\" を作成しました",
    "providerCreateFailed": "プロバイダーの作成に失敗しました",
    "deleteProvider": "プロバイダーを削除",
    "deleteProviderConfirm": "カスタムプロバイダー \"{{name}}\" とすべてのモデルを削除しますか？この操作は取り消せません。",
    "providerDeleted": "プロバイダー \"{{name}}\" を削除しました",
    "providerDeleteFailed": "プロバイダーの削除に失敗しました",
    "manageModels": "モデル",
    "models": "モデル",
    "manageModelsTitle": "{{provider}} — モデル管理",
    "userAdded": "ユーザー追加",
    "addModel": "モデルを追加",
    "addModels": "モデルを追加",
    "autoDiscoverModels": "モデルを自動検出",
    "addModelTitle": "{{provider}} にモデルを追加",
    "modelIdLabel": "モデルID",
    "modelIdPlaceholder": "例: gpt-4o, gemini-2.0-flash",
    "modelDiscoveryUnavailableHint": "利用可能なモデルが見つかりませんでした。このプロバイダーはモデル一覧の取得に対応していない可能性があるため、モデルIDを手動で入力してください。",
    "modelNameLabel": "モデル名",
    "modelNameRequired": "モデル名を入力してください",
    "modelNamePlaceholder": "例: GPT-4o, Gemini 2.0 Flash",
    "modelAdded": "モデル \"{{name}}\" を追加しました",
    "modelAddFailed": "モデルの追加に失敗しました",
    "modelAlreadyExists": "モデル ID \"{{id}}\" は既に存在します",
    "autoDiscoverModelsSuccess": "自動検出が完了しました。{{count}} 件のモデルを追加しました",
    "autoDiscoverModelsNoNew": "自動検出が完了しました。新しいモデルは追加されませんでした",
    "autoDiscoverModelsFailed": "モデルの自動検出に失敗しました",
    "removeModel": "削除",
    "removeModelConfirm": "{{provider}} からモデル \"{{name}}\" を削除しますか？",
    "modelRemoved": "モデル \"{{name}}\" を削除しました",
    "modelRemoveFailed": "モデルの削除に失敗しました",
    "loadMore": "もっと読み込む ({{count}})",
    "modelsCount": "{{count}} モデル",
    "noModels": "モデルなし",
    "addModelFirst": "先にモデルを追加してください",
    "local": "ローカル",
    "localType": "タイプ",
    "localEmbedded": "組み込み（インプロセス）",
    "localDownloadFirst": "モデルサービスは未起動です",
    "localDownloadModel": "モデルをダウンロード",
    "localModelsTitle": "{{provider}} — ローカルモデル",
    "localNoModels": "まだダウンロード済みモデルがありません",
    "localRepoId": "モデルリポジトリID",
    "localRepoIdRequired": "モデルリポジトリIDを入力してください",
    "localRepoIdPlaceholder": "例: Qwen/Qwen3-0.6B-GGUF",
    "localFilename": "ファイル名（任意）",
    "localFilenamePlaceholder": "例: mistral-7b.Q4_K_M.gguf",
    "localFilenameHint": "空欄にすると最適な量子化が自動選択されます",
    "localSource": "ソース",
    "localDownloadSuccess": "モデルのダウンロードに成功しました",
    "localDownloadFailed": "モデルのダウンロードに失敗しました",
    "localDeleteModel": "モデルを削除",
    "localDeleteConfirm": "ローカルモデル \"{{name}}\" を削除しますか？モデルファイルはディスクから削除されます。",
    "localModelDeleted": "モデル \"{{name}}\" を削除しました",
    "localDeleteFailed": "モデルの削除に失敗しました",
    "localDownloadPending": "ダウンロードの準備中...",
    "localDownloading": "{{repo}} をダウンロード中... 数分かかる場合があります。",
    "localDownloadNavigateHint": "他のページに移動しても構いません。ダウンロードはバックグラウンドで継続されます。",
    "localDownloadInProgress": "すでにダウンロードが進行中です",
    "localDownloaded": "ダウンロード済み",
    "localNotDownloaded": "未ダウンロード",
    "localNoRecommendedModels": "現在のマシン性能ではローカルモデルの実行に向いていません",
    "localCancelDownloadTitle": "ダウンロードをキャンセル",
    "localCancelDownloadAction": "ダウンロードをキャンセル",
    "localCancelDownloadConfirm": "\"{{repo}}\" のダウンロードをキャンセルしますか？",
    "localDownloadCancelled": "ダウンロードをキャンセルしました",
    "localCancelDownloadFailed": "ダウンロードのキャンセルに失敗しました",
    "localLlamacppName": "推論エンジン",
    "localLlamacppInstallHint": "モデルのダウンロードや起動の前にローカルランタイムをインストールしてください。",
    "localInstallLlamacpp": "llama.cpp をインストール",
    "localLlamacppInstallStarted": "llama.cpp のダウンロードを開始しました",
    "localLlamacppInstallSuccess": "llama.cpp のインストールが完了しました",
    "localLlamacppInstallFailed": "llama.cpp のインストールに失敗しました",
    "localRuntimeSectionTitle": "Inference Engine",
    "localRuntimeSectionDescription": "Powered by Llama.cpp",
    "localRuntimeComputeHint": "デフォルトでは CPU を使用します。GPU アクセラレーションが必要な場合は、Ollama または LM Studio を使用してください。",
    "localRuntimeInstalled": "インストール済み",
    "localRuntimeUpdateAvailable": "更新可能",
    "localRuntimeUpdateAction": "クリックして最新バージョンをダウンロード",
    "localRuntimeUpdateConfirmTitle": "llama.cpp の更新を確認",
    "localRuntimeUpdateConfirmContent": "更新すると、現在インストールされている llama.cpp が上書きされます。確認すると最新バージョンのダウンロードとインストールを開始します。",
    "localRuntimeUpdateConfirmContentWithServer": "更新すると、現在インストールされている llama.cpp が上書きされ、現在実行中のモデルサービス（{{model}}）が停止します。確認すると最新バージョンのダウンロードとインストールを開始します。",
    "localRuntimeUnsupported": "未対応",
    "localRuntimeMissing": "未導入",
    "localServerRunningTitle": "現在のローカルサーバー",
    "localServerOnline": "稼働中",
    "localServerIdle": "停止",
    "localServerUnavailable": "異常",
    "localNoActiveModel": "実行中のモデルはありません",
    "localNoDownloadedModelsHint": "ローカル推論サービスを起動する前に、適切なモデルをダウンロードしてください。",
    "localDownloadModelFirst": "先にモデルをダウンロードしてください",
    "localEngineInstallStateLabel": "導入",
    "localEngineRunStateLabel": "状態",
    "localEngineCurrentModelLabel": "現在提供中のモデル",
    "localEngineNextStepLabel": "次のステップ",
    "localEngineHealthLabel": "エンジン状態",
    "localEngineStatusHint": "下の一覧から適切なモデルをダウンロードして起動してください",
    "localStartServer": "起動",
    "localStopServer": "停止",
    "localServerStartFailed": "ローカルサーバーの起動に失敗しました",
    "localServerStopFailed": "ローカルサーバーの停止に失敗しました",
    "localServerSwitchTitle": "実行中モデルを切り替え",
    "localServerSwitchConfirm": "現在 {{current}} が実行中です。{{next}} に切り替えますか？",
    "localSwitchModel": "切り替え",
    "localModelPathMissing": "このダウンロード済みモデルにはローカルパス情報がありません。",
    "localModelsSectionTitle": "ローカルモデル",
    "localModelsSectionDescription": "ダウンロード済みモデルはすぐに起動できます。同時に実行できるのは 1 つのモデルダウンロードと 1 つのローカルサーバーだけです。",
    "localModelsLockedHint": "先に llama.cpp をインストールしてください",
    "localAlternativeRuntimeHint": "Ollama または LM Studio をお試しください",
    "localModelsCount": "ダウンロード済み {{downloaded}} / {{total}}",
    "localCurrentDownloadTitle": "現在のダウンロード",
    "localAdvancedConfigTitle": "ローカルモデル詳細設定",
    "localAdvancedConfigDescription": "これらの設定は組み込みのローカル推論ランタイムに適用されます。最大コンテキスト長の変更は、次回ローカルサーバー起動時に反映されます。",
    "localAdvancedConfigSaved": "ローカルモデル詳細設定を保存しました",
    "localAdvancedConfigSaveFailed": "ローカルモデル詳細設定の保存に失敗しました",
    "localMaxContextLengthLabel": "最大コンテキスト長",
    "localMaxContextLengthHint": "モデルのコンテキストウィンドウで扱える最大トークン数です。各リクエストに含められる履歴長を決定します。変更は次回ローカルサーバー起動時に反映されます。",
    "localMaxContextLengthRequired": "最大コンテキスト長を入力してください",
    "localMaxContextLengthMin": "最大コンテキスト長は {{min}} 以上である必要があります",
    "localMaxContextLengthPlaceholder": "最大コンテキスト長を入力",
    "localServerPortLabel": "サーバーポート",
    "localServerPortHint": "空欄の場合、llama.cpp は起動時に利用可能なポートを自動選択します。ポート番号を入力すると、以後の起動でその固定ポートを再利用します。変更は次回ローカルサーバー起動時に反映されます。",
    "localServerPortRange": "サーバーポートは {{min}} から {{max}} の範囲で指定してください",
    "localServerPortPlaceholder": "空欄で自動ポート選択",
    "localGenerateConfigHint": "ローカルモデルの生成パラメータを JSON オブジェクトで設定します。後続の生成リクエストに展開して渡されます。",
    "localCustomModelTitle": "カスタムモデルのダウンロード",
    "localCustomModelHint": "モデルリポジトリIDを入力します。GGUF形式のみ対応。",
    "localSourceHuggingFace": "Hugging Face",
    "localSourceModelScope": "ModelScope",
    "ollamaModelNamePlaceholder": "例: mistral:7b, qwen3:8b",
    "testConnection": "接続テスト",
    "testConnectionSuccess": "接続テストに成功しました",
    "testConnectionFailed": "接続テストに失敗しました",
    "testConnectionFailedWithMessage": "接続テストに失敗しました: {{message}}",
    "testConnectionError": "接続テスト中にエラーが発生しました",
    "discoverModels": "モデルを検出",
    "discoverModelsFailed": "モデルの検出に失敗しました",
    "ollamaFetchModelsFailed": "Ollamaモデルの取得に失敗しました。エラーの詳細を確認してください。",
    "modelTestFailed": "モデルの検証に失敗しました。モデルIDが正しいか確認してください",
    "modelTestFailedConfirm": "モデルの接続テストに失敗しました: {{message}}。このモデルを追加しますか？",
    "autoDiscoveredAndAdded": "{{count}} 件のモデルを自動検出し、{{added}} 件の新規モデルを追加しました",
    "autoDiscoveredNoNew": "{{count}} 件のモデルを自動検出しました。モデルリストはすでに最新です",
    "autoDiscoverFailed": "モデルの自動検出に失敗しました。手動でモデルを追加できます",
    "tagImage": "画像",
    "tagVideo": "動画",
    "tagTextOnly": "テキストのみ",
    "tagMultimodal": "マルチモーダル",
    "tagVision": "ビジョン",
    "tagText": "テキスト",
    "free": "無料",
    "tagNotProbed": "未検出",
    "probeMultimodal": "マルチモーダルテスト",
    "probeImage": "画像",
    "probeVideo": "動画",
    "probeSupported": "対応: {{types}}",
    "probeNotSupported": "このモデルはマルチモーダル入力に対応していません",
    "probeFailed": "検出に失敗しました",
    "modalityVision": "画像",
    "modalityAudio": "音声",
    "modalityVideo": "動画",
    "modalityFile": "ファイル",
    "modalityText": "テキストのみ",
    "searchProviderPlaceholder": "プロバイダー名を検索",
    "selectAllProviders": "すべて選択",
    "clearProviderSelection": "すべて解除",
    "noMatchingProviders": "一致するプロバイダーがありません",
    "filterFreeOnly": "無料モデルのみ"
  },
  "agentConfig": {
    "title": "設定",
    "description": "エージェントのランタイムパラメーターを設定します",
    "reactAgentTitle": "ReActエージェント",
    "llmRetryTitle": "LLM自動再試行",
    "llmRetryEnabled": "自動再試行を有効化",
    "llmRetryEnabledTooltip": "レート制限、タイムアウト、接続エラーなどの一時的なLLM API失敗を自動で再試行します。保存後、新しいリクエストに適用されます。",
    "llmMaxRetries": "最大再試行回数",
    "llmMaxRetriesTooltip": "再試行可能なLLMエラーが発生した場合の追加再試行回数の上限です。",
    "llmMaxRetriesPlaceholder": "最大再試行回数を入力",
    "llmMaxRetriesRequired": "最大再試行回数は必須です",
    "llmMaxRetriesMin": "最大再試行回数は1以上である必要があります",
    "llmBackoffBase": "バックオフ初期待機時間（秒）",
    "llmBackoffBaseTooltip": "最初の再試行までの基本待機時間です。以降は指数バックオフで増加します。",
    "llmBackoffBasePlaceholder": "初期待機時間を入力",
    "llmBackoffBaseRequired": "バックオフ初期待機時間は必須です",
    "llmBackoffBaseMin": "バックオフ初期待機時間は0.1秒以上である必要があります",
    "llmBackoffCap": "バックオフ最大待機時間（秒）",
    "llmBackoffCapTooltip": "指数バックオフの待機時間の上限です。",
    "llmBackoffCapPlaceholder": "最大待機時間を入力",
    "llmBackoffCapRequired": "バックオフ最大待機時間は必須です",
    "llmBackoffCapMin": "バックオフ最大待機時間は0.5秒以上である必要があります",
    "llmBackoffCapGteBase": "バックオフ最大待機時間は初期待機時間以上である必要があります",
    "llmRateLimiterTitle": "LLMレートリミッター",
    "llmMaxConcurrent": "最大同時リクエスト数",
    "llmMaxConcurrentTooltip": "同時に実行できるLLMリクエストの上限です。すべてのAgentで共有されます。変更は再起動後に反映されます。",
    "llmMaxConcurrentPlaceholder": "最大同時リクエスト数を入力",
    "llmMaxConcurrentRequired": "最大同時リクエスト数は必須です",
    "llmMaxConcurrentRange": "最大同時リクエスト数は1以上である必要があります",
    "llmMaxQpm": "最大クエリ数/分（QPM）",
    "llmMaxQpmTooltip": "60秒スライディングウィンドウ内で許可される最大リクエスト数です。上限を超えるリクエストはディスパッチ前に待機し、429レート制限エラーを未然に防ぎます。0 = 無制限。",
    "llmMaxQpmPlaceholder": "最大QPMを入力（0 = 無制限）",
    "llmMaxQpmRequired": "最大QPMは必須です",
    "llmMaxQpmRange": "最大QPMは0以上である必要があります",
    "llmRateLimitPause": "レート制限一時停止（秒）",
    "llmRateLimitPauseTooltip": "429レート制限レスポンスを受信した際に適用されるデフォルトの一時停止時間（秒）です。APIのRetry-Afterヘッダーが存在する場合はそちらが優先されます。",
    "llmRateLimitPausePlaceholder": "一時停止時間を入力",
    "llmRateLimitPauseRequired": "レート制限一時停止時間は必須です",
    "llmRateLimitPauseMin": "レート制限一時停止時間は1秒以上である必要があります",
    "llmRateLimitJitter": "ジッター範囲（秒）",
    "llmRateLimitJitterTooltip": "一時停止時間に追加されるランダムなジッター範囲（秒）です。同時待機者の起床をずらすことで新たなバーストを防ぎます。",
    "llmRateLimitJitterPlaceholder": "ジッター範囲を入力",
    "llmRateLimitJitterRequired": "ジッター範囲は必須です",
    "llmRateLimitJitterMin": "ジッター範囲は0秒以上である必要があります",
    "llmAcquireTimeout": "スロット取得タイムアウト（秒）",
    "llmAcquireTimeoutTooltip": "レートリミタースロットの取得を待機する最大時間（秒）です。タイムアウト後はエラーが発生します。",
    "llmAcquireTimeoutPlaceholder": "タイムアウト時間を入力",
    "llmAcquireTimeoutRequired": "スロット取得タイムアウトは必須です",
    "llmAcquireTimeoutMin": "スロット取得タイムアウトは10秒以上である必要があります",
    "llmAcquireTimeoutGtPauseJitter": "スロット取得タイムアウトはレート制限一時停止とジッターの合計より大きい必要があります",
    "contextManagementTitle": "コンテキスト管理",
    "memoryManagerBackend": "長期記憶管理バックエンド",
    "memoryManagerBackendTooltip": "メモリマネージャーのバックエンドタイプ。remelight（ローカルファイル）または adbpg（クラウドデータベース）から選択できます。",
    "memoryManagerBackendRestartWarning": "長期記憶管理バックエンドの切り替えはホットリロードに対応していません。変更を反映するには保存後に QwenPaw を再起動してください。",
    "maxIters": "最大反復回数",
    "maxItersTooltip": "ReActエージェントの推論・行動サイクルの最大反復回数",
    "maxItersPlaceholder": "最大反復回数を入力",
    "maxItersRequired": "最大反復回数は必須です",
    "maxItersMin": "最大反復回数は1以上である必要があります",
    "agentLoopTitle": "エージェント Loop 設定",
    "loopMode": {
      "builtIn": "組み込み",
      "builtInNote": "パイプライン固定 · 値は編集可能",
      "templateSectionTitle": "Loop テンプレート",
      "templateSectionDescription": "組み込みテンプレートを選択するか、独自に追加します。",
      "defaultTab": "デフォルト",
      "goalTab": "ゴール",
      "missionTab": "ミッション",
      "defaultDescription": "明示的なモード以外で使用する標準の保護付き ReAct Loop。",
      "goalDescription": "具体的で検証可能なゴール向けの持続 Loop。",
      "missionDescription": "長時間の複数ステップミッション向けパイプライン。",
      "gatePipeline": "Gate パイプライン",
      "repetitionTitle": "反復保護",
      "repetitionDescription": "繰り返されるツール呼び出しを検出して介入します。",
      "iterationTitle": "反復回数制限",
      "iterationDescription": "ReAct の反復回数を制限します。",
      "retryTitle": "定性的完了チェック",
      "retryDescription": "ツール呼び出しを含まないテキスト応答のときだけ実行します。",
      "goalTurnTitle": "ゴールのターン制限",
      "goalTurnDescription": "アクティブなゴール内のターン数を制限します。",
      "maxGoalTurns": "ゴールの最大ターン数",
      "goalBudgetTitle": "ゴールのトークン予算",
      "goalBudgetDescription": "ゴール全体が予算に達したら停止します。",
      "maxGoalTokens": "ゴールの最大トークン数",
      "goalCompletionTitle": "ゴール完了チェック",
      "goalCompletionDescription": "停止前に明示的なゴール状態を確認します。",
      "goalCompletionReadOnly": "完了は組み込みのゴール状態プロトコルで制御されます。",
      "missionProgressTitle": "ミッション進捗チェック",
      "missionProgressDescription": "全ストーリーが通過するか上限まで継続します。",
      "missionProgressReadOnly": "完了は組み込みの Mission Story 状態で制御されます。",
      "missionIterationTitle": "Mission の反復上限",
      "missionIterationDescription": "新しい Mission の既定の実行上限を設定します。",
      "workerAttemptsTitle": "Worker の試行回数",
      "workerAttemptsDescription": "Story の検証失敗後の Worker 再試行回数を制限します。",
      "missionVerificationTitle": "Mission の検証ポリシー",
      "missionVerificationDescription": "既定の検証ガイダンスとテストコマンドを設定します。",
      "defaultMaxMissionIterations": "既定の最大実行ラウンド数",
      "defaultMaxMissionIterationsTooltip": "/mission で --max-iterations が未指定の場合に使用します。",
      "maxRetriesPerStory": "Story ごとの最大再試行回数",
      "maxRetriesPerStoryTooltip": "Verifier が失敗または部分完了を返した後の Worker 再試行回数です。",
      "defaultVerificationInstructions": "検証ガイダンス（任意）",
      "defaultVerificationInstructionsHelp": "すべての Mission Verifier に適用する自然言語の指示です。",
      "defaultVerificationInstructionsPlaceholder": "例：Windows のパス処理と実際の UI 表示を確認してください。",
      "defaultVerifyCommand": "既定のテストコマンド（任意）",
      "defaultVerifyCommandHelp": "Verifier は通常のツールと権限で実行を試みます。/mission --verify で上書きできます。",
      "defaultVerifyCommandPlaceholder": "例：pytest -q",
      "enableRepetitionProtection": "反復保護を有効化",
      "removeRule": "ルールを削除",
      "custom": "カスタム",
      "customDescription": "QwenPaw 組み込み Gate で保存可能なパイプラインを構築します。",
      "duplicate": "複製",
      "delete": "削除",
      "displayName": "表示名",
      "duplicateModeName": "同じ名前の Loop モードが既に存在します。",
      "slashCommand": "スラッシュコマンド",
      "description": "説明",
      "availableToAgent": "このエージェントで使用可能",
      "runsTopToBottom": "上から下へ実行",
      "addGate": "Gate を追加",
      "emptyPipeline": "Gate を1つ以上追加すると、このモードを使用できます。",
      "iterationGateTitle": "反復回数制限",
      "iterationGateDescription": "指定回数の Loop 後に停止します。",
      "doomGateTitle": "反復保護",
      "doomGateDescription": "繰り返しを検出して戦略を変更します。",
      "tokenGateTitle": "トークン予算",
      "tokenGateDescription": "入力と出力のトークン使用量を制限します。",
      "timeoutGateTitle": "Loop 時間制限",
      "timeoutGateDescription": "時間超過後、実行中の処理を中断せず次の Loop 境界で停止します。",
      "toolBudgetGateTitle": "ツール呼び出し予算",
      "toolBudgetGateDescription": "全体および指定ツールの呼び出しを制限します。",
      "retryGateTitle": "早期終了の再試行",
      "retryGateDescription": "終了前に再確認を促します。",
      "rubricGateTitle": "完了ルーブリック",
      "rubricGateDescription": "明示的な基準を評価し、必要なら修正します。",
      "qualitativeRubricTitle": "定性的完了チェック",
      "qualitativeRubricDescription": "ツール呼び出しのないテキスト応答を自然言語の基準で確認します。",
      "qualitativeRubric": "自然言語の完了基準",
      "qualitativeRubricHelp": "ツール呼び出しのないテキスト応答でのみ実行し、作業が残る場合は続行させます。",
      "completionRubricTitle": "完了信号チェック",
      "completionRubricDescription": "ツール呼び出しのないテキスト応答で完了信号を確認します。",
      "completionRubricHelp": "ツール呼び出しのないテキスト応答後に実行します。完了時は完了信号を出力し、未完了時は最大判定回数に達するまで作業を続行します。",
      "completionPrompt": "完了判定プロンプト",
      "completionPromptHelp": "完了と見なす条件を記述します。完了信号の出力指示は QwenPaw が自動的に挿入します。",
      "completionSignal": "完了信号",
      "completionSignalHelp": "QwenPaw はこの信号と、この信号だけを出力する指示を判定プロンプトに挿入します。前後の空白と大文字小文字を無視した完全一致のみが Loop を終了します。",
      "removeCriterion": "基準 {{number}} を削除",
      "totalTokensHelp": "このターンで使用する入力・出力トークンの合計上限です。",
      "promptTokensHelp": "システム指示、会話履歴、ツール定義、ツール結果を含みます。",
      "completionTokensHelp": "このターンでモデルが生成するトークンの上限です。",
      "maxIterations": "最大反復回数",
      "historyWindow": "履歴ウィンドウ",
      "similarityThreshold": "類似度しきい値",
      "totalTokens": "最大総トークン",
      "promptTokens": "最大入力トークン",
      "completionTokens": "最大出力トークン",
      "maxSeconds": "最大秒数",
      "maxSecondsHelp": "現在のモデル応答またはツール呼び出しの完了後に時間を確認し、実行中の処理は中断しません。",
      "allToolCalls": "全ツール呼び出し",
      "perToolLimits": "ツール別制限",
      "toolName": "ツール名",
      "callLimitAria": "{{name}} の呼び出し上限",
      "removeToolLimitAria": "{{name}} の制限を削除",
      "addToolLimit": "ツール別制限を追加",
      "maxRetries": "最大再試行回数",
      "retryInstruction": "再試行の指示",
      "passThreshold": "合格しきい値",
      "maxEvaluations": "最大判定回数",
      "graderError": "評価エラー",
      "stopSafely": "安全に停止",
      "verifyOnceMore": "もう一度検証",
      "completionCriteria": "完了基準",
      "criterionPlaceholder": "観測可能な完了条件を記述",
      "required": "必須",
      "weight": "重み",
      "addCriterion": "基準を追加",
      "moveGateAria": "{{title}} を移動",
      "removeGate": "Gate を削除",
      "newModeName": "新しい Loop モード",
      "defaultCustomDescription": "カスタム Gate パイプライン。",
      "copyName": "{{name}} のコピー",
      "createModeAria": "カスタム Loop モードを作成",
      "createModeTitle": "カスタム Loop モードを作成",
      "startingTemplate": "開始テンプレート",
      "startingPipeline": "開始パイプライン",
      "blankPipelineHint": "空の状態から始め、後でゲートを追加",
      "safeTemplate": "安全な実行",
      "researchTemplate": "予算付き調査",
      "qualityTemplate": "品質優先",
      "blankTemplate": "空のパイプライン"
    },
    "doomLoopEnabled": "繰り返し行動保護",
    "doomLoopEnabledTooltip": "エージェントが同じ操作を繰り返している場合に自動的に介入します",
    "doomLoopAfter": "連続",
    "doomLoopRepetitions": "回の同一操作後",
    "doomLoopStopAction": "一時停止して確認を待つ",
    "doomLoopWarnAction": "リマインダーを送信",
    "doomLoopSimpleMode": "シンプル",
    "doomLoopAdvancedMode": "詳細",
    "doomLoopWindowSize": "検出範囲",
    "doomLoopWindowSizeTooltip": "繰り返し検出のために最近何回の操作をチェックするか",
    "doomLoopSimilarity": "マッチ感度",
    "doomLoopSimilarityTooltip": "操作がどの程度類似していれば繰り返しとみなすか（低いほど厳格）",
    "doomLoopStages": "介入ルール",
    "doomLoopAction": "アクション",
    "doomLoopPrompt": "メッセージ",
    "doomLoopPromptPlaceholder": "リマインダーメッセージまたは一時停止の理由...",
    "doomLoopAddStage": "ルールを追加",
    "iterationTitle": "イテレーション制限",
    "iterationEnabled": "イテレーション制限を有効化",
    "iterationEnabledTooltip": "固定回数のループ後にエージェントを停止",
    "iterationMaxIterations": "最大イテレーション数",
    "iterationMaxIterationsTooltip": "停止するまでの最大ループ回数",
    "rubricTitle": "定性的完了チェック",
    "rubricEnabled": "定性的完了チェックを有効化",
    "rubricEnabledTooltip": "ツール呼び出しを含まないテキスト応答のときだけ実行します。",
    "rubricPrompt": "自然言語の完了基準",
    "rubricPromptTooltip": "タスク完了評価を求めるために注入されるプロンプト",
    "rubricDesc": "ツール呼び出しのないテキスト応答に自然言語の完了基準を適用し、作業が残る場合は続行させます。",
    "rubricPromptPlaceholder": "前のターンでツールを呼び出しませんでした。タスクが完了している場合は確認してください。そうでなければツールを使って続行してください。",
    "rubricMaxInterventions": "最大判定回数",
    "rubricMaxInterventionsTooltip": "1ターン内で、ツール呼び出しのないテキスト応答に対して行う完了チェックの最大回数です。",
    "inLoopModes": "/goal・/mission モードでも有効化",
    "inLoopModesTooltip": "/goal または /mission ループモードがアクティブな時もこのゲートを適用",
    "comingSoonEditable": "カスタム設定は将来のリリースで利用可能になります。",
    "simpleMode": "シンプル",
    "advancedMode": "詳細",
    "comingSoon": "近日公開",
    "reactModeTab": "Loopテンプレート - デフォルト",
    "goalModeTab": "Loopテンプレート - Goal",
    "missionModeTab": "Loopテンプレート - Mission",
    "goalModeInfoTitle": "Goalモード vs デフォルト",
    "goalModeInfo": "デフォルトモードは応答後に停止します。Goalモードはエージェントを目標に向かってループさせ、Rubric評価で完了を判断します。すべての操作は現在のエージェントコンテキスト内で実行されます。",
    "missionModeInfoTitle": "Missionモード vs Goalモード",
    "missionModeInfo": "Missionモードは複雑なタスクを自動分解し、独立したWorkerサブエージェントが実行、Verifierサブエージェントが検証します。各サブタスクは独自のコンテキストで実行され、メインセッションのコンテキスト汚染を防ぎます。",
    "goalIterationGate": "目標イテレーションゲート",
    "goalIterationGateDesc": "目標セッション内のエージェントターン数を制限し、イテレーション数とトークン使用量を追跡します。",
    "goalBudgetGate": "トークン予算ゲート",
    "goalBudgetGateDesc": "目標セッションのトークン消費上限を設定し、予算超過時にエージェントを停止します。",
    "goalRubricGate": "目標完了ルーブリック",
    "goalRubricGateDesc": "セッション状態をチェックして目標が達成されたかを評価します。",
    "goalDoomGate": "繰り返し保護",
    "goalDoomGateDesc": "目標実行中の繰り返しパターンを検出し、介入をトリガーします。",
    "missionProgressGate": "ミッション進捗ゲート",
    "missionProgressGateDesc": "PRDユーザーストーリーの完了状況を追跡します。すべて合格または最大イテレーションに達するまで続行します。",
    "missionIterBypass": "イテレーションバイパス",
    "missionIterBypassDesc": "ミッション実行中にReActイテレーション制限を一時的に解除し、長時間のフェーズを許可します。",
    "customLoopTitle": "カスタムループモード",
    "customLoopDesc": "カスタムゲート組み合わせで独自のループモードを作成。近日公開予定。",
    "autoContinueOnTextOnly": "テキストのみのステップで自動継続",
    "autoContinueOnTextOnlyTooltip": "推論ステップがツール呼び出しなしのテキストのみで終わった場合、ヒントを挿入し同じツール方針でもう1回推論します。多段階タスクの途中停止を減らします。オフにすると従来どおりです。有効時はトークン消費が増える場合があります。",
    "autoGenerateSessionTitle": "セッションタイトルを自動生成",
    "autoGenerateSessionTitleTooltip": "新しいチャットの最初のユーザーメッセージ後、バックグラウンドで短いLLM呼び出しを実行し、切り詰められたプレースホルダを簡潔なタイトルに置き換えます。新しいチャットごとに短いLLM呼び出しが1回追加されます。オフにするとプレースホルダのままで、その追加コストは発生しません。",
    "shellCommandTimeout": "Shellコマンドタイムアウト（秒）",
    "shellCommandTimeoutTooltip": "execute_shell_commandツールのデフォルトタイムアウト（秒）。LLMはtimeoutパラメータで呼び出しごとにこの値を上書きできます。コンパイルやデータ処理などの長時間タスクに便利です。",
    "shellCommandTimeoutPlaceholder": "タイムアウトを入力",
    "shellCommandTimeoutRequired": "Shellコマンドタイムアウトは必須です",
    "shellCommandTimeoutMin": "Shellコマンドタイムアウトは1秒以上である必要があります",
    "shellCommandExecutable": "Shell実行ファイル",
    "shellCommandExecutableTooltip": "execute_shell_commandが使用するシェルのパス。Linux/macOS: /bin/bash、/bin/zshなど。Windows: powershell.exe、pwsh.exe、またはGit Bashなどの POSIX互換シェルに対応。空の場合は $SHELL 環境変数、次にプラットフォームデフォルト（Unixは /bin/sh、Windowsは cmd.exe）にフォールバックします。",
    "shellCommandExecutablePlaceholder": "例: /bin/bash または powershell.exe（空 = 自動検出）",
    "maxInputLength": "最大入力長",
    "maxInputLengthTooltip": "モデルのコンテキストウィンドウの最大入力長（トークン数）",
    "maxInputLengthPlaceholder": "最大入力長を入力",
    "maxInputLengthRequired": "最大入力長は必須です",
    "maxInputLengthMin": "最大入力長は1000以上である必要があります",
    "contextCompactRatio": "コンテキスト圧縮比率",
    "contextCompactRatioTooltip": "コンテキストがいっぱいの時に圧縮するコンテキストの比率",
    "contextCompactRatioRequired": "コンテキスト圧縮比率は必須です",
    "contextCompactThreshold": "コンテキスト圧縮閾値",
    "contextCompactThresholdTooltip": "コンテキスト圧縮閾値（トークン数）、最大入力長と圧縮比率から自動計算",
    "contextCompactThresholdPlaceholder": "自動計算",
    "contextCompactReserveRatio": "コンテキスト予約比率",
    "contextCompactReserveRatioTooltip": "コンテキスト圧縮時に予約する比率",
    "contextCompactReserveRatioRequired": "コンテキスト予約比率は必須です",
    "contextCompactReserveThreshold": "コンテキスト予約閾値",
    "contextCompactReserveThresholdTooltip": "コンテキスト予約閾値（トークン数）、最大入力長と予約比率から自動計算",
    "contextCompactReserveThresholdPlaceholder": "自動計算",
    "toolResultCompactRecentN": "ツール呼び出し結果のrecent_n",
    "toolResultCompactRecentNTooltip": "最近のしきい値を使用するツール呼び出し結果の数",
    "toolResultCompactRecentNRequired": "ツール呼び出し結果のrecent_nは必須です",
    "toolResultCompactOldThreshold": "recent_nを超えるツール呼び出し結果の最大文字数",
    "toolResultCompactOldThresholdTooltip": "recent_n範囲外のツール呼び出し結果で、この文字数を超えると圧縮されます",
    "toolResultCompactOldThresholdPlaceholder": "文字数しきい値を入力",
    "toolResultCompactOldThresholdRequired": "recent_nを超えるツール呼び出し結果の最大文字数は必須です",
    "toolResultCompactRecentThreshold": "recent_n内のツール呼び出し結果の最大文字数",
    "toolResultCompactRecentThresholdTooltip": "recent_n範囲内のツール呼び出し結果で、このバイト数を超えると圧縮されます。また、read_fileツールの1回の読み取りで返される最大バイト数にもなります。古いメッセージのしきい値以上である必要があります",
    "toolResultCompactRecentThresholdPlaceholder": "文字数しきい値を入力",
    "toolResultCompactRecentThresholdRequired": "recent_n内のツール呼び出し結果の最大文字数は必須です",
    "toolResultCompactRetentionDays": "ツール呼び出しファイルの保持日数",
    "toolResultCompactRetentionDaysTooltip": "圧縮されたツール結果ファイルの保持日数、期限切れは自動削除されます",
    "toolResultCompactRetentionDaysRequired": "ツール呼び出しファイルの保持日数は必須です",
    "historyRetentionDays": "履歴の保持日数",
    "historyRetentionDaysTooltip": "永続的なチャット履歴を保持する日数。古い行は起動時とエージェント終了時に自動的に削除されます。",
    "historyRetentionDaysRequired": "履歴の保持日数は必須です",
    "historyRetentionDaysForeverWarning": "0 に設定すると履歴を永久に保持し、ストレージが無制限に増加します。",
    "historyRetentionDaysLargeWarning": "保持日数が大きいと、ストレージを大量に消費する可能性があります。",
    "exemptFileExtensions": "除外ファイル拡張子",
    "exemptFileExtensionsTooltip": "read_fileツールの結果で、これらのファイル拡張子には最新メッセージの圧縮しきい値が使用されます",
    "exemptFileExtensionsPlaceholder": ".md, .txt, .json",
    "exemptToolNames": "除外ツール名",
    "exemptToolNamesTooltip": "これらのツールの結果には最新メッセージの圧縮しきい値が使用されます",
    "exemptToolNamesPlaceholder": "chat_with_agent, list_agents",
    "language": "エージェント言語",
    "languageTooltip": "エージェントのペルソナファイル（SOUL.md、AGENTS.md など）の言語。変更すると選択した言語のMDファイルが再コピーされます。",
    "languageConfirmTitle": "エージェント言語の変更",
    "languageConfirmContent": "言語を変更すると、以下のファイルが新しい言語のデフォルト版で上書きされます：\n\n  SOUL.md、AGENTS.md、PROFILE.md、MEMORY.md、BOOTSTRAP.md、HEARTBEAT.md\n\nカスタマイズ済みのファイルがある場合は、事前にバックアップしてください。その他のファイルは影響を受けません。",
    "languageConfirmOk": "言語を変更",
    "languageSaveSuccess": "言語を更新しました",
    "languageSaveSuccessWithFiles": "言語を更新し、{{count}} 個のMDファイルをコピーしました",
    "languageSaveFailed": "言語の更新に失敗しました",
    "timezone": "ユーザータイムゾーン",
    "timezoneTooltip": "スケジュールタスク、時刻表示、エージェントコンテキストに使用されます。デフォルトはシステムのタイムゾーンです。",
    "timezoneRequired": "タイムゾーンを選択してください",
    "selectTimezone": "タイムゾーンを選択",
    "timezoneSaveSuccess": "タイムゾーンを更新しました",
    "timezoneSaveFailed": "タイムゾーンの更新に失敗しました",
    "saveSuccess": "設定を保存しました",
    "saveFailed": "設定の保存に失敗しました",
    "loadFailed": "設定の読み込みに失敗しました",
    "historyMaxLength": "履歴の最大長",
    "historyMaxLengthTooltip": "/history コマンドの最大出力長（文字数）",
    "historyMaxLengthRequired": "履歴の最大長は必須です",
    "historyMaxLengthMin": "履歴の最大長は1000以上である必要があります",
    "historyMaxLengthPlaceholder": "最大長を入力",
    "contextCompactTitle": "コンテキスト圧縮設定",
    "contextCompactEnabled": "コンテキスト圧縮を有効化",
    "contextCompactEnabledTooltip": "コンテキストウィンドウのオーバーフローを防ぐために自動的にコンテキストを圧縮します",
    "tokenCountModel": "トークンカウントモデル",
    "tokenCountModelTooltip": "精確なトークン数計算に使用するモデル名。「default」を設定すると組み込みの推定値を使用します",
    "tokenCountModelPlaceholder": "モデル名または default",
    "tokenCountUseMirror": "HuggingFaceミラーを使用",
    "tokenCountUseMirrorTooltip": "トークナイザーのダウンロード時にHuggingFaceミラーサイトを使用します",
    "tokenCountEstimateDivisor": "byte/Token 推定除数",
    "tokenCountEstimateDivisorTooltip": "バイト数に基づくトークン数推定の除数（トークン数 ≈ バイト数 / 除数）。推奨値：3.75～4",
    "tokenCountEstimateDivisorRequired": "推定除数は必須です",
    "tokenCountEstimateDivisorMin": "推定除数は2から5の範囲である必要があります",
    "toolResultCompactTitle": "ツール結果圧縮設定",
    "toolResultCompactEnabled": "ツール結果圧縮を有効化",
    "toolResultCompactEnabledTooltip": "過大なツール呼び出し結果を圧縮してコンテキストスペースを節約します",
    "memorySummaryTitle": "長期記憶設定",
    "memorySummaryEnabled": "記憶まとめを起動",
    "memorySummaryEnabledTooltip": "コンテキスト圧縮時に自動的に記憶サマリーを生成・保存します",
    "dreamCronEnabled": "ドリームを有効化",
    "dreamCronEnabledTooltip": "Cron によるドリームベースの記憶最適化タスクを有効にします",
    "dreamCron": "ドリームスケジュール",
    "dreamCronTooltip": "ドリーム状態を通じて定期的に長期記憶を最適化するCron式です。実行は上のスイッチで切り替えます",
    "dreamCronPlaceholder": "0 23 * * *",
    "dreamCronRequired": "ドリームを有効にする場合は Cron 式を入力してください",
    "dreamCronInvalid": "有効な5フィールドの Cron 式を入力してください",
    "autoMemorySearch": "自動記憶検索（Beta）",
    "autoMemorySearchTooltip": "毎回の会話で記憶検索を自動実行します。各クエリで自動的に記憶検索機能を呼び出し、QwenPawがあなたをより理解できますが、トークン消費が増加します。",
    "autoMaxResults": "自動検索の最大結果数",
    "autoMaxResultsTooltip": "自動記憶検索が有効な場合に返される最大結果数",
    "autoMaxResultsRequired": "最大結果数は必須です",
    "autoMaxResultsMin": "最大結果数は1以上である必要があります",
    "inboxPushEnabled": "記憶結果の受信トレイ通知",
    "inboxPushEnabledTooltip": "自動記憶、自動夢想、自動リソースの結果を受信トレイに送信します。無効にしても記憶ジョブは停止しません。",
    "autoMemoryInterval": "自動記憶の間隔",
    "autoMemoryIntervalTooltip": "ユーザークエリ N 回ごとに自動記憶を実行します。0 は定期的な自動記憶を無効にします。1 は各クエリ後に自動記憶を実行します。推奨設定は 2-5 です。1 に設定する場合は高いトークン消費に注意してください。",
    "autoMemoryIntervalPlaceholder": "0 を入力すると定期的な自動記憶を無効化",
    "autoMemoryIntervalRequired": "自動記憶の間隔を入力してください",
    "autoMemoryIntervalMin": "自動記憶の間隔は 0 以上である必要があります",
    "embeddingConfigTitle": "埋め込みモデル設定",
    "embeddingBackend": "埋め込みSDKタイプ",
    "embeddingBackendTooltip": "埋め込みモデルの呼び出しに使用するSDKタイプ",
    "embeddingBackendPlaceholder": "SDKタイプを選択",
    "embeddingApiKey": "API Key",
    "embeddingApiKeyTooltip": "埋め込みプロバイダーのAPIキー。認証が不要な場合は空欄にしてください",
    "embeddingApiKeyPlaceholder": "不要な場合は空欄",
    "embeddingBaseUrl": "Base URL",
    "embeddingBaseUrlTooltip": "埋め込みAPIのBase URL。OpenAI互換バックエンドでは、このカスタムエンドポイントは任意で、API Keyとモデル名が必須です",
    "embeddingBaseUrlPlaceholder": "https://dashscope.aliyuncs.com/compatible-mode/v1",
    "embeddingHost": "Host",
    "embeddingHostTooltip": "OllamaサービスのURL。空欄の場合はOllamaのデフォルトホストを使用します",
    "embeddingHostPlaceholder": "http://localhost:11434",
    "embeddingModelName": "モデル名",
    "embeddingModelNameTooltip": "埋め込みモデル名。すべての埋め込みバックエンドで必須です",
    "embeddingModelNamePlaceholder": "text-embedding-v4",
    "embeddingEnableCache": "埋め込みキャッシュを有効化",
    "embeddingEnableCacheTooltip": "埋め込み結果をキャッシュして重複計算を削減します",
    "embeddingMaxCacheSize": "最大キャッシュサイズ",
    "embeddingMaxCacheSizeTooltip": "埋め込みキャッシュの最大エントリ数",
    "embeddingMaxCacheSizeRequired": "最大キャッシュサイズは必須です",
    "embeddingUseDimensions": "カスタム次元を使用",
    "embeddingUseDimensionsTooltip": "カスタム埋め込み次元を使用します（一部のモデルのみ対応）",
    "embeddingDimensions": "埋め込み次元数",
    "embeddingDimensionsTooltip": "埋め込みの次元数。カスタム次元が有効な場合に適用されます",
    "embeddingDimensionsRequired": "埋め込み次元数は必須です",
    "embeddingDimensionsMin": "次元数は1以上である必要があります",
    "embeddingMaxInputLength": "最大入力長",
    "embeddingMaxInputLengthTooltip": "単一の埋め込みリクエストの最大入力長（トークン数）",
    "embeddingMaxInputLengthRequired": "最大入力長は必須です",
    "embeddingMaxBatchSize": "最大バッチサイズ",
    "embeddingMaxBatchSizeTooltip": "単一バッチ埋め込みリクエストの最大アイテム数",
    "embeddingMaxBatchSizeRequired": "最大バッチサイズは必須です",
    "embeddingRestartWarning": "埋め込みモデル設定はホットリロードに対応していません。変更を反映するには保存後にサービスを再起動してください",
    "maxContextLength": "最大コンテキスト長",
    "maxContextLengthTooltip": "モデルコンテキストウィンドウの最大トークン数。各リクエストで保持できる最大履歴長を決定します",
    "maxContextLengthRequired": "最大コンテキスト長は必須です",
    "maxContextLengthMin": "最大コンテキスト長は1000以上である必要があります",
    "maxContextLengthPlaceholder": "最大コンテキスト長を入力",
    "embeddingActivationNote": "選択したバックエンドの必須項目が入力されると埋め込み機能が有効になります",
    "embeddingEnableHint": "選択したバックエンドの必須項目が入力されると埋め込み機能が有効になります。OpenAI互換またはGeminiではモデル名とAPI Key、Ollamaではモデル名が必要です。",
    "rebuildMemoryIndex": "記憶インデックスを再構築",
    "rebuildMemoryIndexWarning": "この操作は記憶検索インデックスを消去して再構築するため、多くのCPUとメモリを消費する可能性があります。インデックスの破損や検索結果の異常を修復する場合にのみ使用してください。",
    "rebuildMemoryIndexConfirmTitle": "記憶インデックスを再構築しますか？",
    "rebuildMemoryIndexConfirm": "再構築中はCPUとメモリの使用量が大幅に増加する可能性があります。インデックスが破損している、または修復が必要な場合を除き、実行は推奨されません。",
    "rebuildMemoryIndexSuccess": "記憶インデックスの再構築が完了しました",
    "rebuildMemoryIndexFailed": "記憶インデックスの再構築に失敗しました：{{error}}",
    "toolResultCompactRecentGtOld": "最新メッセージの閾値は古いメッセージの閾値以上である必要があります",
    "lightContextTitle": "コンテキスト管理",
    "remeLightMemoryTitle": "長期記憶",
    "toolExecutionLevelTitle": "ツール実行セキュリティ",
    "toolExecutionLevel": {
      "title": "ツール実行セキュリティ",
      "alertMessage": "ツール呼び出しの承認ポリシーを設定し、エージェントがツールを実行する際のセキュリティレベルを制御します",
      "strict": "厳格モード",
      "strictDesc": "すべてのツール呼び出しに承認が必要、最高セキュリティレベル",
      "smart": "スマートモード",
      "smartDesc": "低リスクツールは自動承認、中〜高リスクツールは承認が必要",
      "auto": "自動モード",
      "autoDesc": "承認が必要と明示的にマークされたツールのみ承認を要求（デフォルト）",
      "off": "オフモード",
      "offDesc": "すべてのツール承認を無効化、すべてのツールが自動実行"
    },
    "saveLevelSuccess": "ツール実行セキュリティレベルを保存しました",
    "saveLevelFailed": "ツール実行セキュリティレベルの保存に失敗しました",
    "adbpgMemoryTitle": "ADBPG Long-term Memory",
    "adbpgConfig": {
      "title": "ADBPG Memory Configuration",
      "restBaseUrl": "REST Base URL",
      "restApiKey": "REST API Key",
      "memoryIsolation": "Memory Isolation (per-agent)",
      "searchTimeout": "Search Timeout"
    }
  },
  "tools": {
    "title": "ビルトインツール",
    "description": "ビルトインツールとその有効状態を管理します。無効なツールはエージェントで使用できません。",
    "emptyState": "ツールが設定されていません",
    "loadError": "ツールの読み込みに失敗しました",
    "enableSuccess": "ツールを有効化しました",
    "disableSuccess": "ツールを無効化しました",
    "toggleError": "ツール状態の切り替えに失敗しました",
    "enableAll": "すべて有効化",
    "disableAll": "すべて無効化",
    "enableAllSuccess": "すべてのツールを有効化しました",
    "disableAllSuccess": "すべてのツールを無効化しました",
    "allEnabled": "すべてのツールは既に有効です",
    "allDisabled": "すべてのツールは既に無効です",
    "asyncExecution": "非同期実行",
    "asyncExecutionEnabled": "非同期実行が有効です",
    "asyncExecutionDisabled": "非同期実行が無効です",
    "configure": "設定",
    "configured": "設定済み",
    "requiresConfig": "設定が必要です",
    "configSaved": "設定を保存しました",
    "configSaveError": "設定の保存に失敗しました",
    "active": "個が有効",
    "available": "利用可能",
    "noEnabled": "有効なツールはありません",
    "goEnableBtn": "有効にする",
    "configureAction": "設定 →",
    "enableAction": "有効化 →"
  },
  "modelConfig": {
    "promptTitle": "LLMモデルが必要です — 設定後にChatページで選択",
    "promptMessage": "チャット機能にはLLMモデルが必要です。まずモデルを設定し、設定完了後にChatページ上部のモデルセレクターで選択してください。",
    "configureButton": "モデルを設定",
    "skipButton": "スキップ",
    "chatDisabledTitle": "チャット無効",
    "chatDisabledMessage": "モデルが設定されていないためチャット機能が無効です。チャットを有効にするにはモデルを設定してください。",
    "configureNow": "モデルを設定",
    "modelNotConfigured": "チャットを使用する前に設定でモデルを設定してください"
  },
  "header": {
    "changelog": "変更履歴",
    "docs": "ドキュメント",
    "tutorial": "チュートリアル",
    "featureDemos": "機能デモ",
    "faq": "よくある質問",
    "github": "GitHub",
    "resources": "ドキュメント資料",
    "updateAvailable": "利用可能な更新"
  },
  "theme": {
    "dark": "ダーク",
    "light": "ライト",
    "system": "システムに従う"
  },
  "sidebar": {
    "newVersion": "新しいバージョンが利用可能です: v{{version}}、クリックしてアップグレード",
    "updateModal": {
      "title": "新しいバージョンが利用可能です: v{{version}}",
      "viewReleases": "リリースを見る",
      "installDesktopUpdate": "今すぐ更新",
      "desktopInstallHint": "QwenPaw Desktop {{version}} のインストール準備が整いました。更新後にアプリが再起動します。",
      "checking": "更新を確認中…",
      "checkingHint": "最新バージョンを確認しています",
      "downloading": "更新をダウンロード中",
      "downloadingTo": "バージョン {{version}} に更新中",
      "downloadProgress": "{{done}} / {{total}} · {{rate}}",
      "installing": "更新をインストール中",
      "willRestart": "アプリはインストール完了後に自動的に再起動します",
      "stepPrepare": "準備",
      "stepDownloading": "ダウンロード",
      "stepInstalling": "インストール",
      "failedTitle": "更新に失敗しました",
      "back": "戻る",
      "retry": "再試行",
      "errors": {
        "network": "更新サーバーに接続できませんでした。インターネット接続を確認して再試行してください。",
        "signature": "更新ファイルの署名検証に失敗しました。もう一度ダウンロードしてください。",
        "appLocation": "QwenPaw は読み取り専用の macOS の場所から実行されています。QwenPaw.app を Applications フォルダーへ移動し、そこから起動してからもう一度更新してください。",
        "other": "更新に失敗しました。"
      },
      "updateLater": "バックグラウンドでダウンロード",
      "backgroundDownloading": "バックグラウンドでダウンロード中…",
      "readyToInstall": "更新の準備が完了",
      "readyToInstallHint": "v{{version}} の更新をダウンロードしました。再起動してインストールし、新しいバージョンを起動します。",
      "restartNow": "今すぐ更新",
      "backgroundFailed": "バックグラウンドダウンロード失敗"
    },
    "settings": {
      "language": "言語",
      "theme": "テーマ",
      "mode": "モード"
    },
    "simpleMode": "シンプルモード",
    "fullMode": "フルモード"
  },
  "chat": {
    "modelSelectTooltip": "モデルを選択",
    "newChatTooltip": "新しいチャット",
    "searchTooltip": "すべてのチャットを検索",
    "chatHistoryTooltip": "チャット履歴",
    "wideModeTooltip": "ワイドモード",
    "normalModeTooltip": "標準モード",
    "allChats": "すべてのチャット",
    "createNewChat": "新しいチャットを作成",
    "pinDrawer": "固定",
    "unpinDrawer": "固定解除",
    "statusIdle": "待機",
    "statusInProgress": "処理中",
    "disclaimer": "あなたのために働き、あなたと共に成長します",
    "greeting": "こんにちは、今日はどんなお手伝いができますか？",
    "description": "私はあなたの質問をサポートするAIアシスタントです。",
    "prompt1": "新しい旅を始めましょう！",
    "prompt2": "あなたのスキルを教えてください。",
    "inputPlaceholder": "\"↑↓\"でメッセージ移動 · \"/\"でクイックコマンド（承認時は\"/approve\"または\"/deny\"）",
    "longTextUploadPrompt": "アップロードされたプロンプトファイルを読み、その内容に基づいて回答してください。",
    "emptyOutputError": "アシスタントが空のレスポンスを返しました。",
    "commands": {
      "clear": {
        "description": "会話のコンテキストをクリア"
      },
      "compact": {
        "description": "会話コンテキストを圧縮して要約を生成。追加指示にも対応"
      },
      "approve": {
        "description": "保留中のツール操作を承認して実行を続行"
      },
      "deny": {
        "description": "保留中のツール操作を拒否"
      },
      "mission": {
        "description": "Missionモード — タスクをサブエージェントに分解委任、独立コンテキストでメイン会話を汚染しない"
      },
      "skills": {
        "description": "チャットで利用可能なスキルを一覧し、明示的なスキルコマンドを表示します"
      },
      "goal": {
        "description": "Goalループ — エージェントが目標に向かって継続実行し、Rubric評価で完了を自動判定"
      }
    },
    "attachments": {
      "tooltip": "ドキュメント、画像、動画、音声など、様々な形式に対応",
      "tooltipImageOnly": "現在のモデルは画像アップロードのみ対応",
      "tooltipNoMultimodal": "現在のモデルにマルチモーダル機能が検出されていません。画像や動画が正しく処理されない場合があります",
      "fileSizeLimit": "1ファイルあたり最大{{limit}}MB",
      "fileSizeExceeded": "ファイルサイズが{{limit}}MBの制限を超えています。現在のファイル: {{size}}MB",
      "multimodalDisabled": "現在のモデルはファイルアップロードに対応していません",
      "multimodalWarning": "現在のモデルにマルチモーダル機能が検出されていません。画像や動画が正しく処理されない場合があります",
      "imageOnlyAccept": "現在のモデルは画像ファイルのみ対応しています",
      "imageOnlyWarning": "現在のモデルは画像のみ対応しています。動画などの非画像ファイルは正しく処理されない場合があります"
    },
    "rateLimitHit": "現在のモデルがレート制限されています。他の無料モデルに切り替えてみてください。",
    "turnUsagePopover": {
      "ariaLabel": "このターンのトークンとコンテキスト使用量を表示",
      "turn": "このターン",
      "turnEstimated": "このターン約",
      "tok": "tok",
      "inOut": "入力 {{inTok}} · 出力 {{outTok}}",
      "contextLabel": "コンテキストウィンドウ：",
      "manageContext": "コンテキスト管理",
      "compact": "圧縮",
      "new": "新しい会話"
    },
    "rateLimitMessage": "レート制限に達しました。他の無料モデルに切り替え：",
    "rateLimitSwitched": "{{model}} に切り替えました",
    "speech": {
      "startRecording": "音声録音を開始 (Ctrl+Shift+M)",
      "stopRecording": "録音を停止 (Ctrl+Shift+M)",
      "transcribing": "文字起こし中...",
      "transcriptionDisabled": "文字起こしは無効です。設定 > 音声文字起こしでプロバイダーを設定してください。",
      "transcriptionFailed": "音声文字起こしに失敗しました",
      "microphoneError": "マイクにアクセスできません",
      "fileTooLarge": "録音ファイルが大きすぎます（{{size}}MB）。上限: {{limit}}MB",
      "recordingTooLong": "録音時間が制限を超えています（上限: {{limit}}秒）"
    },
    "search": {
      "title": "チャットを検索",
      "tooltip": "現在のチャットを検索",
      "placeholder": "メッセージを検索...",
      "noResults": "結果が見つかりません",
      "resultsCount": "{{count}} 件の結果が見つかりました",
      "searching": "検索中 {{progress}}...",
      "loading": "読み込み中...",
      "userMessage": "ユーザー",
      "assistantMessage": "アシスタント",
      "titleMatch": "タイトル"
    },
    "contextMenu": {
      "open": "開く",
      "rename": "名前を変更",
      "pin": "ピン留め",
      "unpin": "ピン留め解除",
      "delete": "削除"
    },
    "queue": {
      "title": "メッセージキュー",
      "paused": "一時停止中",
      "sendFailed": "送信失敗",
      "resume": "キューを再開",
      "pause": "キューを一時停止",
      "clear": "キューをクリア",
      "dragSort": "ドラッグで並べ替え",
      "edit": "編集",
      "retry": "再試行",
      "skip": "スキップ",
      "interruptAndSend": "中断して送信",
      "delete": "削除",
      "file": "ファイル",
      "noChatWarning": "キューを使用する前に、まずメッセージを送信して会話を作成してください",
      "queueFull": "キューが満杯です（最大 {{max}} 件）。メッセージを送信または削除してください",
      "otherTabOwner": "This tab queues only; sending is handled by another tab"
    },
    "group": {
      "pinned": "ピン留め",
      "today": "今日",
      "week": "7日以内",
      "month": "30日以内",
      "older": "それ以前"
    },
    "sessionPanel": {
      "searchConversations": "会話を検索…",
      "noResults": "結果なし",
      "noConversations": "会話なし",
      "loadingConversations": "読み込み中…"
    },
    "conversationHistory": "会話履歴",
    "history": {
      "empty": "チャット履歴なし"
    },
    "sessionGroup": {
      "today": "今日",
      "recent": "過去7日間",
      "earlier": "それ以前"
    }
  },
  "security": {
    "parent": "設定",
    "security": "セキュリティ",
    "title": "セキュリティ",
    "description": "ツールとスキルのセキュリティ機能を管理します。",
    "toolGuardTitle": "ツールガード",
    "toolGuardDescription": "ツール呼び出しのセキュリティスキャンを設定します。危険な操作は実行前に明示的な承認が必要になります。",
    "enabled": "ツールガードを有効にする",
    "enabledTooltip": "有効にすると、ツール呼び出しが実行前に危険なパターンをスキャンされます",
    "guardedTools": "保護対象ツール",
    "guardedToolsTooltip": "危険なパターンが検出された場合に承認が必要なツール。空の場合はデフォルトセットが使用されます。",
    "guardedToolsPlaceholder": "ツールを選択またはカスタムツール名を入力",
    "deniedTools": "拒否ツール",
    "deniedToolsTooltip": "承認なしで常に拒否されるツール",
    "deniedToolsPlaceholder": "常に拒否するツールを選択",
    "saveSuccess": "ツールガード設定を保存しました",
    "saveFailed": "ツールガード設定の保存に失敗しました",
    "loadFailed": "ツールガード設定の読み込みに失敗しました",
    "rules": {
      "title": "検出ルール",
      "description": "ルールはセキュリティアラートをトリガーする正規表現パターンを定義します。組み込みルールは無効化でき、カスタムルールは追加・編集・削除できます。",
      "id": "ルール ID",
      "severity": "重要度",
      "descriptionCol": "説明",
      "source": "ソース",
      "actions": "操作",
      "builtin": "組み込み",
      "custom": "カスタム",
      "enable": "有効化",
      "disable": "無効化",
      "edit": "編集",
      "delete": "削除",
      "add": "ルール追加",
      "addTitle": "カスタムルールを追加",
      "editTitle": "カスタムルールを編集",
      "ruleId": "ルール ID",
      "ruleIdRequired": "ルール ID は必須です",
      "duplicateId": "このIDのルールは既に存在します",
      "tools": "対象ツール",
      "toolsPlaceholder": "空白の場合はすべてのツールに一致",
      "params": "対象パラメータ",
      "paramsPlaceholder": "空白の場合はすべてのパラメータに一致",
      "severityLabel": "重要度",
      "categoryLabel": "カテゴリ",
      "patterns": "正規表現パターン",
      "patternsRequired": "パターンが少なくとも1つ必要です",
      "patternsTooltip": "1行に1つの正規表現。ツールパラメータ値に対してマッチング（大文字小文字区別なし）。",
      "excludePatterns": "除外パターン",
      "excludePatternsTooltip": "1行に1つの正規表現。マッチした場合、そのルールはスキップされます。",
      "descriptionLabel": "説明",
      "descriptionPlaceholder": "このルールは何を検出しますか？",
      "remediationLabel": "修正提案",
      "remediationPlaceholder": "ルールがトリガーされた場合の推奨アクション",
      "preview": "プレビュー",
      "previewTitle": "ルール詳細",
      "actionLabel": "アクション",
      "actionApproval": "承認待ち",
      "autoDeny": "自動拒否",
      "autoDenyTooltip": "有効にすると、このルールに一致するツール呼び出しは手動承認なしで自動的に拒否されます",
      "autoDenyEnable": "このルールの自動拒否を有効にする",
      "autoDenyDisable": "このルールの自動拒否を無効にする",
      "allTools": "すべてのツール",
      "allParams": "すべてのパラメータ",
      "descriptions": {
        "TOOL_CMD_CONTROL_CHARS": "セキュリティチェックをバイパスする可能性のある非印刷制御文字を含むコマンドを検出",
        "TOOL_CMD_DANGEROUS_MV": "ファイルを意図せず移動・上書きする可能性のある mv コマンドを検出",
        "TOOL_CMD_DANGEROUS_RM": "データ損失を引き起こす可能性のある rm コマンドを検出",
        "TOOL_CMD_DOS_FORK_BOMB": "Bash フォーク爆弾および大量プロセス終了を検出",
        "TOOL_CMD_FIND_DELETE": "データ損失を引き起こす可能性のある find -delete コマンドを検出",
        "TOOL_CMD_FS_DESTRUCTION": "低レベルのディスクフォーマットまたはワイプコマンドを検出",
        "TOOL_CMD_IFS_INJECTION": "$IFS変数を使用してセキュリティ検証をバイパスする可能性のあるコマンドを検出",
        "TOOL_CMD_JQ_FILE_FLAGS": "任意のファイルを読み取ったり外部コードを実行する可能性のあるフラグを使用するjqコマンドを検出",
        "TOOL_CMD_JQ_SYSTEM": "任意のシェルコマンドを実行できるsystem()関数を含むjqコマンドを検出",
        "TOOL_CMD_OBFUSCATED_EXEC": "base64 エンコード文字列をシェルインタプリタに直接渡して実行する操作を検出",
        "TOOL_CMD_PIPE_TO_SHELL": "リモートペイロードをダウンロードして即座に実行する 'curl | bash' パターンを検出",
        "TOOL_CMD_PRIVILEGE_ESCALATION": "sudo、su、doas、pkexec、または runas を使用した権限昇格の試みを検出",
        "TOOL_CMD_PROCESS_KILL": "重要なプロセスを終了させる可能性のあるプロセス終了コマンドを検出",
        "TOOL_CMD_PROC_ENVIRON": "機密の環境変数を公開する可能性のある /proc/*/environ にアクセスするコマンドを検出",
        "TOOL_CMD_REVERSE_SHELL": "リバースシェルまたは不正なネットワークトンネルの確立を検出",
        "TOOL_CMD_SERVICE_RESTART": "システムサービスを中断させる可能性のあるサービス管理コマンドを検出",
        "TOOL_CMD_SYSTEM_REBOOT": "ホストシステムを終了させるシステム再起動またはシャットダウンコマンドを検出",
        "TOOL_CMD_SYSTEM_TAMPERING": "cron ジョブ、SSH キー、sudo 権限へのアクセス（読み取り・変更を含む）を検出",
        "TOOL_CMD_UNICODE_WHITESPACE": "解析の不整合を引き起こす可能性のあるUnicode空白文字を含むコマンドを検出",
        "TOOL_CMD_UNSAFE_PERMISSIONS": "グローバル権限の引き下げ（chmod 777）や不変フラグの設定を検出",
        "TOOL_CMD_ZSH_DANGEROUS": "セキュリティチェックをバイパスする可能性のあるZsh固有のビルトインを使用するコマンドを検出"
      },
      "categories": {
        "command_injection": "コマンドインジェクション",
        "code_execution": "コード実行",
        "data_exfiltration": "データ漏洩",
        "path_traversal": "パストラバーサル",
        "sensitive_file_access": "機密ファイルアクセス",
        "network_abuse": "ネットワーク不正利用",
        "credential_exposure": "認証情報漏洩",
        "resource_abuse": "リソース不正利用",
        "privilege_escalation": "権限昇格",
        "prompt_injection": "プロンプトインジェクション",
        "other": "その他"
      }
    },
    "fileGuard": {
      "title": "ファイルガード",
      "description": "機密ファイルやディレクトリをエージェントツールからのアクセスから保護します。追加されたパスは、すべてのツール呼び出しでブロックされます。",
      "enableLabel": "ファイルガードを有効にする",
      "path": "パス",
      "actions": "操作",
      "add": "追加",
      "inputPlaceholder": "ファイルまたはディレクトリパスを入力（例: ~/.ssh/ または /etc/passwd）",
      "empty": "カスタム機密パスが設定されていません",
      "directory": "ディレクトリ",
      "removeConfirm": "このパスを保護リストから削除しますか？",
      "duplicate": "このパスは既にリストに存在します",
      "saveSuccess": "ファイルガード設定を保存しました",
      "saveFailed": "ファイルガード設定の保存に失敗しました",
      "loadFailed": "ファイルガード設定の読み込みに失敗しました",
      "allowPreviewOutsideWorkspace": "コンソールでワークスペース外ファイルのプレビューを許可",
      "allowPreviewOutsideWorkspaceDesc": "コンソールでワークスペースディレクトリ外のファイルをプレビューできるようにします。機密ファイル保護は引き続き有効です。"
    },
    "allowNoAuthHosts": {
      "title": "認証不要ホスト",
      "warningTitle": "セキュリティ警告",
      "warningDescription": "このリストのIPアドレスは認証なしでAPIエンドポイントにアクセスできます。デフォルトでは、ローカルホスト（127.0.0.1と::1）がCLIアクセスのために許可されています。信頼できるIPアドレスのみを追加してください。警告：信頼できないIPを追加すると、深刻なセキュリティリスクが生じます。",
      "ipAddress": "IPアドレス",
      "actions": "操作",
      "add": "追加",
      "inputPlaceholder": "IPアドレスを入力（例：192.168.1.100 または ::1）",
      "empty": "IPアドレスが設定されていません",
      "default": "デフォルト",
      "removeConfirm": "このIPアドレスをホワイトリストから削除しますか？",
      "duplicate": "このIPアドレスは既にリストに存在します",
      "invalidIP": "無効なIPアドレス形式",
      "saveSuccess": "認証不要ホスト設定を保存しました",
      "saveFailed": "認証不要ホスト設定の保存に失敗しました",
      "loadFailed": "認証不要ホスト設定の読み込みに失敗しました"
    },
    "skillScanner": {
      "title": "スキルスキャナー",
      "description": "スキルを有効化・インストールする前にセキュリティ脅威を自動スキャンします。",
      "mode": "スキャンモード",
      "modeTooltip": "スキャナーが安全でないスキルをどう処理するかを制御: ブロック、警告のみ、オフ",
      "modeBlock": "ブロック",
      "modeWarn": "警告のみ",
      "modeOff": "オフ",
      "timeout": "スキャンタイムアウト（秒）",
      "timeoutTooltip": "スキャン完了を待つ最大時間（5-300秒）",
      "saveSuccess": "スキルスキャナー設定を保存しました",
      "saveFailed": "スキルスキャナー設定の保存に失敗しました",
      "scanAlerts": {
        "title": "スキャンアラート",
        "empty": "セキュリティアラートはありません",
        "clearAll": "すべてクリア",
        "clearConfirm": "すべてのスキャンアラートをクリアしますか？",
        "skillName": "スキル",
        "action": "アクション",
        "actionBlocked": "ブロック済み",
        "actionWarned": "警告済み",
        "time": "日時",
        "actions": "操作",
        "allowSkill": "ホワイトリストに追加",
        "remove": "削除",
        "viewFindings": "詳細を表示"
      },
      "whitelist": {
        "title": "ホワイトリスト",
        "empty": "ホワイトリストにスキルがありません",
        "skillName": "スキル",
        "addedAt": "追加日時",
        "contentHash": "コンテンツハッシュ",
        "actions": "操作",
        "remove": "削除",
        "removeConfirm": "このスキルをホワイトリストから削除しますか？",
        "addSuccess": "スキルをホワイトリストに追加しました",
        "removeSuccess": "スキルをホワイトリストから削除しました",
        "addFailed": "ホワイトリストへの追加に失敗しました",
        "removeFailed": "ホワイトリストからの削除に失敗しました",
        "removeWillDisable": "削除後、このスキルも無効化されます。",
        "removeAndDisabled": "スキルをホワイトリストから削除し、無効化しました"
      },
      "scanError": {
        "title": "セキュリティ問題が検出されました",
        "description": "以下のセキュリティ問題が見つかりました：",
        "warnDescription": "セキュリティ問題が見つかりましたが、スキルは引き続き有効です（警告モード）：",
        "goToWhitelist": "ホワイトリストへ",
        "moreFindings": "他に {{count}} 件は表示していません（一覧は 設定 → セキュリティ → スキルスキャナ を参照）。"
      }
    }
  },
  "login": {
    "title": "QwenPaw にログイン",
    "registerTitle": "アカウント作成",
    "firstUserHint": "管理者アカウントを作成して始めましょう",
    "usernamePlaceholder": "ユーザー名",
    "passwordPlaceholder": "パスワード",
    "usernameRequired": "ユーザー名を入力してください",
    "passwordRequired": "パスワードを入力してください",
    "submit": "ログイン",
    "register": "登録",
    "failed": "ログインに失敗しました。認証情報を確認してください",
    "registerSuccess": "登録が完了しました",
    "registerFailed": "登録に失敗しました",
    "authNotEnabled": "認証は有効になっていません",
    "logout": "ログアウト",
    "logoutSuccess": "正常にログアウトしました",
    "sessionExpired": "セッションが期限切れです。再度ログインしてください",
    "unauthorized": "未認証です。ログインしてください"
  },
  "account": {
    "title": "アカウント管理",
    "currentPassword": "現在のパスワード",
    "currentPasswordRequired": "現在のパスワードを入力してください",
    "newUsername": "新しいユーザー名",
    "newUsernamePlaceholder": "変更しない場合は空欄",
    "newPassword": "新しいパスワード",
    "newPasswordPlaceholder": "変更しない場合は空欄",
    "confirmPassword": "新しいパスワードの確認",
    "confirmPasswordPlaceholder": "新しいパスワードを再入力",
    "passwordMismatch": "パスワードが一致しません",
    "save": "変更を保存",
    "updateSuccess": "アカウントが更新されました",
    "updateFailed": "アカウントの更新に失敗しました",
    "wrongPassword": "現在のパスワードが正しくありません",
    "nothingToUpdate": "新しいユーザー名またはパスワードを入力してください",
    "passwordEmpty": "パスワードを空白にすることはできません",
    "usernameEmpty": "ユーザー名を空白にすることはできません"
  },
  "voiceTranscription": {
    "title": "音声文字起こし",
    "description": "受信した音声メッセージの処理方法を設定します。",
    "loadFailed": "音声モード設定の読み込みに失敗しました",
    "saveSuccess": "音声モードを保存しました",
    "saveFailed": "音声モードの保存に失敗しました",
    "audioModeLabel": "音声モード",
    "audioModeDescription": "チャンネル（Discord、Telegram など）からの音声メッセージをモデルに送信する前にどのように処理するかを選択します。",
    "modeAuto": "自動（推奨）",
    "modeAutoDesc": "選択した文字起こしプロバイダーで音声をテキストに変換してからモデルに送信します。文字起こしが無効または利用できない場合、ファイルアップロードのプレースホルダーが表示されます。このモードでは音声はモデルに直接送信されません。すべてのモデルで動作します。",
    "modeNative": "ネイティブ音声",
    "modeNativeDesc": "文字起こしせずに音声ファイルをモデルに直接送信します。音声をモデルに送信する唯一のモードです。音声対応モデル（例: gpt-4o-audio）でのみ動作します。ほとんどのモデルはこのモードをサポートしていません。",
    "ffmpegReady": "ffmpegがインストールされています。ネイティブモードの音声変換が利用可能です。",
    "ffmpegMissing": "ffmpegがインストールされていません。",
    "ffmpegMissingDesc": "ネイティブ音声モードでは、音声形式の変換（.oggから.wavなど）にffmpegが必要です。このモードを有効にするには、ffmpegをシステムパッケージとしてインストールしてください。",
    "providerTypeLabel": "文字起こしプロバイダー",
    "providerTypeDescription": "文字起こしバックエンドを選択します。音声文字起こしが不要な場合は「無効」を選択してください。",
    "providerTypeDisabled": "無効",
    "providerTypeDisabledDesc": "文字起こしなし。音声メッセージはファイルアップロードのプレースホルダーとして表示されます。",
    "providerTypeWhisperApi": "Whisper API",
    "providerTypeWhisperApiDesc": "設定済みプロバイダー（OpenAI、Ollama など）の OpenAI 互換 Whisper API エンドポイントを使用します。",
    "providerTypeLocalWhisper": "ローカル Whisper",
    "providerTypeLocalWhisperDesc": "ローカルにインストールされた openai-whisper Python ライブラリで文字起こしを実行します。ffmpeg と openai-whisper の両方のインストールが必要です。",
    "localWhisperReady": "ローカル Whisper は準備完了です。ffmpeg と openai-whisper がインストールされています。",
    "localWhisperMissing": "ローカル Whisper は準備ができていません。不足している依存関係をインストールしてください。",
    "localWhisperMissingDesc": "ffmpeg: {{ffmpeg}} | openai-whisper: {{whisper}}。不足している依存関係をインストールしてください：ffmpeg（システムパッケージ）と openai-whisper（uv pip install openai-whisper、または QwenPaw を [whisper] エクストラ付きでインストール）。",
    "providerLabel": "Whisper API プロバイダー",
    "providerDescription": "Whisper API による音声文字起こしに使用するプロバイダーを選択します。Whisper 対応エンドポイントを持つプロバイダーのみ表示されます。",
    "providerPlaceholder": "プロバイダーを選択...",
    "noProvidersWarning": "文字起こし対応のプロバイダーが見つかりません。音声文字起こしを有効にするには、OpenAI プロバイダーを設定してください。",
    "transcriptionInfoTitle": "文字起こしの仕組み",
    "transcriptionInfoDesc": "Whisper API 文字起こしは OpenAI 互換の /v1/audio/transcriptions エンドポイントを使用します。Whisper 対応エンドポイントを持つプロバイダー（例: OpenAI）の設定が必要です。上記で具体的なプロバイダーを選択して文字起こしを有効にしてください。",
    "transcriptionInfoDescLocal": "ローカル Whisper 文字起こしは、お使いのマシン上で直接 openai-whisper ライブラリを実行します。ffmpeg（音声デコード用）と openai-whisper Python パッケージの両方のインストールが必要です。API キーやネットワーク接続は不要です。インストール：uv pip install 'qwenpaw[whisper]'。"
  },
  "acp": {
    "title": "ACP",
    "loading": "ACP 設定を読み込み中...",
    "builtin": "組み込み",
    "custom": "カスタム",
    "create": "カスタム Agent を追加",
    "createTitle": "ACP Agent を作成",
    "createSuccess": "ACP Agent を作成しました",
    "editTitle": "ACP 設定を編集",
    "agentKey": "Agent Key",
    "agentKeyRequired": "Agent Key を入力してください",
    "agentKeyInvalid": "Agent Key には英字、数字、アンダースコア、ハイフンのみ使用できます",
    "agentKeyExists": "この Agent Key は既に存在します",
    "enabled": "有効",
    "command": "コマンド",
    "commandRequired": "コマンドを入力してください",
    "args": "引数",
    "argsHelp": "1 行につき 1 つの引数",
    "env": "環境変数",
    "envHelp": "各行を KEY=VALUE 形式で入力してください",
    "envInvalidLine": "無効な環境変数形式: {{line}}",
    "trusted": "信頼済み",
    "toolParseMode": "ツール解析モード",
    "toolParseModeRequired": "ツール解析モードを選択してください",
    "stdioBufferLimit": "Stdio バッファ上限",
    "stdioBufferLimitHelp": "ACP サブプロセスの stdio 1 行読み取りバッファの最大バイト数です。",
    "stdioBufferLimitRequired": "stdio バッファ上限を入力してください",
    "stdioBufferLimitMin": "stdio バッファ上限は 1 バイト以上である必要があります",
    "docs": "設定ドキュメント",
    "docsHelp": "ACP 統合ドキュメントを開き、「How to configure external runners」セクションへ移動します",
    "notSet": "未設定",
    "configSaved": "ACP 設定を保存しました",
    "configFailed": "ACP 設定の保存に失敗しました",
    "deleteTitle": "{{name}} を削除",
    "deleteConfirm": "この ACP Agent を削除しますか？この操作は元に戻せません。",
    "deleteSuccess": "ACP Agent を削除しました",
    "deleteFailed": "ACP Agent の削除に失敗しました",
    "nodeSettings": "Node 設定",
    "nodePath": "Node パス",
    "chooseOtherNode": "別の Node を選択...",
    "selectNodePath": "Node パスを選択",
    "nodePathPrompt": "node 実行ファイルのパスを入力してください",
    "nodeSaved": "Node 設定を保存しました",
    "nodeLoadFailed": "Node 設定の読み込みに失敗しました",
    "nodeSaveFailed": "Node パスを利用できません",
    "nodeRuntime": {
      "bundled": "同梱 Node",
      "system": "システム Node",
      "custom": "カスタム Node"
    },
    "nodeRuntimeReason": {
      "systemNodeMissing": "システム Node が検出されませんでした",
      "nodeMissing": "Node パスが存在しません",
      "npxMissing": "npx が見つかりません",
      "versionCheckFailed": "バージョン確認に失敗しました",
      "unavailable": "利用不可"
    }
  },
  "backup": {
    "title": "バックアップ",
    "description": "エージェントのワークスペースと設定をバックアップ・復元します。",
    "create": "バックアップ作成",
    "import": "インポート",
    "export": "エクスポート",
    "restore": "復元",
    "delete": "削除",
    "batchDelete": "一括削除",
    "batchDeleteConfirm": "{{count}}件のバックアップを削除しますか？この操作は元に戻せません。",
    "deleteConfirm": "このバックアップを削除しますか？この操作は元に戻せません。",
    "name": "名前",
    "createdAt": "作成日時",
    "scopeSummary": "バックアップ範囲",
    "descriptionLabel": "説明",
    "noBackups": "バックアップがありません。現在の設定をバックアップするために作成してください。",
    "loadFailed": "バックアップ一覧の読み込みに失敗しました",
    "createTitle": "バックアップ作成",
    "backupMode": "バックアップモード",
    "fullBackup": "完全バックアップ",
    "fullBackupDesc": "すべてのエージェントワークスペース、グローバル設定、スキルプール、シークレット情報を含むすべてをバックアップ",
    "customBackup": "カスタムバックアップ",
    "partialBackup": "部分バックアップ",
    "partialBackupDesc": "バックアップする内容をカスタマイズ",
    "nameRequired": "バックアップ名は必須です",
    "namePlaceholder": "バックアップ名を入力",
    "descriptionPlaceholder": "説明（任意）...",
    "scopeAgents": "エージェントワークスペース",
    "scopeGlobalConfig": "グローバル設定",
    "scopeSkillPool": "スキルプール",
    "scopeSecrets": "シークレット情報",
    "scopeSecretsHint": "モデルプロバイダーシークレット（API キー）、環境変数などの機密情報を含みます",
    "securityNotice": "このバックアップには機密 credential 情報が含まれる可能性があります。エージェントワークスペースにはチャネル認証情報（bot トークン、アプリシークレットなど）が含まれ、モデルプロバイダーシークレットには API キーが含まれます。バックアップファイルを他人と共有しないでください。",
    "searchPlaceholder": "名前または ID でバックアップを検索...",
    "total": "合計 {{count}} 件",
    "agentsPlaceholder": "エージェントワークスペースを選択（空白の場合はすべて）",
    "selectAll": "すべて選択",
    "deselectAll": "選択解除",
    "createSuccess": "バックアップを作成しました",
    "createFailed": "バックアップの作成に失敗しました",
    "restoreTitle": "バックアップを復元",
    "restoreScope": "復元範囲",
    "restoreFullWarning": "全体復元は現在のインスタンスのすべての内容（すべてのエージェント、グローバル設定、スキルプール、シークレット）を完全に置き換えます。この操作は元に戻せません。復元中は関連機能が利用できません。復元完了後にサービスを再起動してください。",
    "agentGroupExisting": "既存",
    "agentGroupNew": "新規",
    "agentExists": "既存",
    "agentNew": "新規",
    "agentActionReplace": "置き換え",
    "agentActionAdd": "追加",
    "agentColumnName": "エージェント",
    "agentColumnWorkspace": "ワークスペース",
    "agentTotal": "合計 {{count}} 件",
    "noAgentsInBackup": "バックアップにエージェントワークスペースがありません",
    "loadingAgents": "エージェントリストを読み込み中...",
    "agentSearchPlaceholder": "名前またはIDで検索...",
    "agentSearchTotal": "{{total}} 件中 {{count}} 件",
    "restoreCustomSummary": "既存 {{existing}} 件 · 新規 {{added}} 件を選択",
    "defaultWorkspaceDirUnused": "新規エージェントなし",
    "otherOptions": "その他のオプション",
    "defaultWorkspaceDirDefault": "<デフォルトパス>/{{aid}}",
    "restoreWarningModify": "復元操作により現在の設定が変更されます。この操作は元に戻せません。",
    "restoreWarningRestart": "復元中は関連機能が利用できません。復元完了後にサービスを再起動してください。",
    "preRestoreBackupTitle": "復元前バックアップの作成",
    "preRestoreBackupContent": "復元操作は不可逆です。まず現在の状態のバックアップを作成しますか？復元中に問題が発生した場合、現在の状態にロールバックできます。",
    "preRestoreBackupYes": "はい、先にバックアップを作成",
    "preRestoreBackupNo": "いいえ、直接復元",
    "preRestoreBackupDesc": "復元前に自動作成されたバックアップ",
    "preRestoreBackupFailed": "復元前バックアップの作成に失敗しました",
    "preRestoreBackupSuccess": "復元前バックアップが作成されました。ID：{{id}}",
    "creatingPreRestoreBackup": "復元前バックアップを作成中...",
    "skipAndRestore": "スキップして復元を続行",
    "restoreConfirm": "このバックアップを復元することを確認します",
    "restoreMode": "復元モード",
    "restoreModeFull": "全体復元",
    "restoreModeFullDesc": "現在のインスタンスのすべての内容を完全に置き換えます。すべてのエージェント、グローバル設定、スキルプール、シークレットが含まれます",
    "restoreModeCustom": "カスタム復元",
    "restoreModeCustomDesc": "復元する内容を選択します（特定のエージェント、設定など）；今回の復元範囲外の既存エージェントは削除されません",
    "restoreModeFullDisabled": "フルバックアップのみ",
    "defaultWorkspaceDir": "エージェントデフォルトワークスペースディレクトリ",
    "defaultWorkspaceDirPlaceholder": "空欄の場合は ~/.qwenpaw/workspaces を使用",
    "defaultWorkspaceDirHint": "エージェントの元のワークスペースパスが存在しない場合、エージェントは <デフォルトパス>/<エージェントID> に保存されます。存在する場合は元のパスが使用されます。",
    "restoreStrategy": "復元戦略",
    "restoreStrategyPreserve": "ローカルのセキュリティ設定と MCP を保持",
    "restoreStrategyPreserveDesc": "このインスタンスのセキュリティ保護と MCP 設定を保持します。",
    "restoreStrategyRestore": "これらの設定をバックアップから復元",
    "restoreStrategyRestoreDesc": "バックアップ内のセキュリティ設定と MCP 設定を使用します。",
    "restoreSuccess": "バックアップを復元しました。サービスを再起動してください。",
    "restoreSuccessPreserved": "バックアップを復元しました。ローカル設定を保持しました: {{keys}}。サービスを再起動してください。",
    "restoreSuccessWithBackup": "バックアップを復元しました。復元前バックアップID：{{preRestoreId}}。サービスを再起動してください。",
    "restoreFailed": "バックアップの復元に失敗しました",
    "restoreTargetBusy": "これらのディレクトリが使用中のため、復元に失敗しました。使用しているブラウザまたはプロセスを閉じてから再試行してください。それでもロックが解除されない場合は、システムを再起動してからもう一度お試しください。",
    "detailLoadFailed": "バックアップ詳細の読み込みに失敗しました。復元はできません",
    "trustLocalBanner": "ローカルバックアップ - 既定では完全復元",
    "trustForeignBanner": "インポートされたバックアップ - 既定ではローカルのセキュリティ設定と MCP を保持します",
    "trustLegacyBanner": "レガシーバックアップ - 復元前に信頼の確認が必要です",
    "trustForeignTitle": "このバックアップを信頼しますか？",
    "trustLegacyTitle": "レガシーバックアップを信頼しますか？",
    "unknownBackupName": "バックアップアーカイブ",
    "trustForeignDesc": "このバックアップはこのインスタンスで署名されていません。提供元を信頼できる場合のみ続行してください。復元時には既定でローカルのセキュリティ設定と MCP 設定が保持されます。",
    "trustLegacyDesc": "この古いバックアップにはローカル署名がありません。提供元を信頼できる場合のみ続行してください。復元前にこのインスタンスで署名します。",
    "deleteSuccess": "バックアップを削除しました",
    "deleteFailed": "バックアップの削除に失敗しました",
    "exportFailed": "バックアップのエクスポートに失敗しました",
    "exportWarningTitle": "機密情報の警告",
    "exportWarningContent": "このバックアップには機密の認証情報が含まれている可能性があります。エージェントワークスペースにはチャネル認証情報（ボットトークン、アプリシークレットなど）が含まれ、モデルプロバイダーのシークレットにはAPIキーが含まれます。バックアップファイルを他人と共有しないでください。",
    "exportConfirm": "エクスポートを確認",
    "importTitle": "バックアップをインポート",
    "importSuccess": "バックアップをインポートしました",
    "importFailed": "バックアップのインポートに失敗しました",
    "importConflictTitle": "バックアップが既に存在します",
    "importConflictDesc": "同じIDのバックアップが既に存在しています。既存のバックアップを上書きしますか？",
    "importReplace": "上書き",
    "agents": "{{count}}個のエージェント",
    "allAgents": "すべてのエージェント",
    "globalConfig": "グローバル設定",
    "skillPool": "スキルプール",
    "secrets": "シークレット",
    "selected": "{{count}}件選択中",
    "fileCount": "{{count}}ファイル",
    "totalSize": "{{size}}",
    "progressStarting": "バックアップを初期化中...",
    "progressAgent": "エージェント {{index}} / {{total}} をバックアップ中...",
    "progressSaving": "バックアップファイルを保存中...",
    "progressDone": "バックアップ完了",
    "localModelsNotice": "バックアップファイルにはローカルモデルファイルは含まれません。デバイス間の移行の場合は、対象デバイスで必要なローカルモデルを再ダウンロードしてください。"
  },
  "approval": {
    "title": "セキュリティ承認が必要です",
    "tool": "ツール",
    "severity": "重要度",
    "findings": "検出件数",
    "parameters": "パラメータ",
    "approve": "承認",
    "deny": "拒否",
    "source": "ソース",
    "subSession": "サブエージェント",
    "approved": "ツール呼び出しが承認されました",
    "denied": "ツール呼び出しが拒否されました",
    "approveFailed": "承認に失敗しました",
    "denyFailed": "拒否に失敗しました",
    "approvePattern": "常に許可",
    "strictModeHint": "厳格モードでは常に許可できません",
    "approveExact": "今回のみ",
    "approvalScope": "承認スコープ",
    "details": "詳細",
    "timeoutAutoDenied": "タイムアウト、自動拒否",
    "acknowledge": "了解",
    "builtinSource": "組み込み",
    "ownerAgent": "オーナーエージェント",
    "executingAgent": "実行エージェント"
  },
  "pluginManager": {
    "title": "プラグインマネージャー",
    "description": "サービスを再起動せずにプラグインのインストール、管理、削除を行います。",
    "installed": "インストール済みプラグイン",
    "noPlugins": "プラグインがまだインストールされていません",
    "installBtn": "プラグインをインストール",
    "installTitle": "プラグインのインストール",
    "dropPrimary": "フォルダまたはZIPファイルをドロップ",
    "dropSecondary": "またはクリックしてZIPファイルを選択",
    "orFromUrl": "またはURLから",
    "installFromUrl": "URLからインストール",
    "urlPlaceholder": "https://example.com/plugin.zip",
    "zipOnly": "ファイルとしてドロップできるのはZIPファイルのみです — ディレクトリからインストールする場合はフォルダをドラッグしてください",
    "dropFailed": "ドロップされたフォルダの読み取りに失敗しました",
    "restartHint": "一部のプラグイン（例：フック、monkey-patch）は、完全に有効化または削除するためにアプリの再起動が必要な場合があります。",
    "installing": "インストール中...",
    "installSuccess": "プラグインのインストールに成功しました",
    "installFailed": "プラグインのインストールに失敗しました",
    "uninstall": "アンインストール",
    "uninstallConfirm": "プラグイン \"{{name}}\" をアンインストールしますか？この操作は取り消せません。一部のプラグインは、完全に削除するためにアプリの再起動が必要な場合があります。",
    "uninstalling": "アンインストール中...",
    "uninstallSuccess": "プラグインのアンインストールに成功しました",
    "uninstallFailed": "プラグインのアンインストールに失敗しました",
    "statusLoaded": "実行中",
    "statusUnloaded": "未ロード",
    "type": "タイプ",
    "version": "バージョン",
    "author": "作成者",
    "unknown": "不明",
    "loadFailed": "プラグイン一覧の読み込みに失敗しました",
    "confirmTitle": "アンインストールの確認",
    "officialTitle": "公式プラグイン",
    "officialDesc": "ダウンロード CDN から公開済みプラグインをインストールします。",
    "catalogRefresh": "更新",
    "catalogEmpty": "利用可能な公式プラグインがありません（CDN カタログが空の可能性があります）",
    "catalogLoadFailed": "公式プラグインカタログの読み込みに失敗しました",
    "catalogInstall": "インストール",
    "catalogReinstall": "再インストール",
    "catalogUpgrade": "アップグレード可能",
    "catalogUpgradeBtn": "アップグレード",
    "catalogInstalled": "インストール済み",
    "catalogSha256": "SHA256",
    "kindBundle": "バンドル",
    "kindTool": "ツール",
    "filterByName": "名前で絞り込み",
    "filterByKind": "タグで絞り込み",
    "marketTitle": "Plugin Market",
    "marketEmpty": "No plugins found in market",
    "marketLoadFailed": "Failed to load plugin market",
    "marketUnavailable": "Plugin Market is currently under maintenance, please try again later",
    "marketAll": "All",
    "marketSearch": "Search plugins...",
    "marketCategory": "Filter by category",
    "marketSearchResult": "Found {{count}} plugins matching \"{{keyword}}\"",
    "marketDetails": "Details",
    "marketDownloads": "Downloads",
    "marketDeveloper": "Developer",
    "marketSortLabel": "Sort plugins",
    "marketSortDownloads": "Most downloaded",
    "marketSortUpdated": "Recently updated",
    "marketSortFavorites": "Most favorited"
  },
  "inbox": {
    "title": "受信トレイ",
    "tabApprovals": "承認",
    "tabPushMessages": "プッシュ通知",
    "tabHarvests": "AI Harvest",
    "summaryApprovals": "承認件数",
    "summaryPushUnread": "未読通知",
    "summaryHarvests": "Harvest",
    "from": "送信元：",
    "requestedBy": "リクエスト元",
    "markRead": "既読にする",
    "markAllRead": "すべて既読",
    "markAllReadNoUnread": "未読メッセージはありません",
    "markAllReadSuccess": "{{count}} 件を既読にしました",
    "selectAllCurrentPage": "このページを全選択",
    "selectedItems": "{{count}} 件選択中",
    "batchDeleteButton": "一括削除",
    "batchOperation": "一括操作",
    "exitBatch": "一括終了",
    "batchDeleteConfirm": "選択した {{count}} 件の通知を削除しますか？",
    "batchDeleteSuccess": "{{count}} 件の通知を削除しました",
    "pushCronHeader": "定期実行：{{name}}",
    "viewDetails": "詳細を見る",
    "deleteMessageConfirm": "この通知を削除しますか？",
    "viewAll": "すべて表示",
    "read": "既読",
    "approve": "承認",
    "reject": "拒否",
    "ready": "準備完了",
    "harvestNow": "今すぐ実行",
    "createHarvest": "Harvest を作成",
    "createFirstHarvest": "最初の Harvest を作成",
    "createSuccess": "Harvest を作成しました",
    "emptyApprovals": "保留中の承認はありません",
    "emptyPush": "通知はありません",
    "emptyHarvests": "Harvest はまだありません",
    "statusReadyToHarvest": "実行可能",
    "statusGrowing": "実行中",
    "harvestedTimes": "{{count}} 回実行済み",
    "harvestSuccessRate": "成功率 {{rate}}%",
    "messageDetailComingSoon": "詳細表示は準備中です",
    "harvestSettingsComingSoon": "Harvest 設定は準備中です",
    "messageDetailTitle": "実行詳細",
    "detailCronTitle": "定期実行：{{name}}",
    "detailHeartbeatTitle": "ハートビート",
    "messageNotFound": "メッセージが見つかりません",
    "detailTaskName": "タスク名",
    "detailTaskId": "タスクID",
    "detailStatus": "実行ステータス",
    "detailSeverity": "重要度",
    "detailAgent": "所属Agent",
    "detailSource": "ソース",
    "detailSourceCronJob": "定期実行",
    "detailSourceHeartbeat": "ハートビート",
    "detailTrigger": "トリガー",
    "detailDuration": "所要時間",
    "detailExecutedAt": "実行時刻",
    "detailReceivedAt": "受信時刻",
    "detailRunId": "実行ID",
    "detailContent": "出力",
    "detailPayload": "追加情報",
    "detailExecutionTrace": "実行トレース",
    "detailTraceEmpty": "実行トレースはありません",
    "filterByAgent": "エージェントで絞り込み",
    "filterBySourceType": "ソースで絞り込み",
    "sourceTypeCron": "Cron",
    "sourceTypeHeartbeat": "Heartbeat",
    "sourceTypeMemory": "Memory"
  },
  "codingMode": {
    "title": "コーディングモード",
    "experimental": "実験的機能",
    "experimentalDesc": "コーディングモードは QwenPaw を軽量な Web IDE に変換し、コードエディター、ファイルツリー、Git 統合、AI コーディング支援を提供します。",
    "experimentalNote": "この機能は実験的であり、現在も積極的に開発中です。一部の機能は制限されているか、将来のアップデートで変更される場合があります。",
    "confirmBtn": "コーディングモードを有効にする",
    "enterTooltip": "コーディングモードに入る",
    "exitTooltip": "コーディングモードを終了する",
    "btnCode": "コード",
    "btnChat": "チャット",
    "selectProject": "コーディングプロジェクトを選択",
    "selectProjectDesc": "作業するプロジェクトを選択するか、デフォルトのワークスペースを使用してください",
    "tabWorkspace": "デフォルトワークスペース",
    "tabClone": "リポジトリをクローン",
    "tabLocal": "ローカルプロジェクトをインポート",
    "tabNew": "新規プロジェクト",
    "workspaceDesc": "現在のエージェントのワークスペースディレクトリを使用",
    "cloneUrl": "GitリポジトリURL",
    "cloneUrlPlaceholder": "https://github.com/user/repo.git",
    "cloneName": "プロジェクト名（オプション）",
    "cloneNamePlaceholder": "空白の場合はURLから推測",
    "cloneBtn": "クローン開始",
    "cloning": "クローン中...",
    "localPath": "ローカルディレクトリパス",
    "localPathPlaceholder": "/Users/yourname/my-project",
    "localPathHint": "ローカルプロジェクトへの絶対パスを入力してください",
    "openBtn": "インポート",
    "newName": "プロジェクト名",
    "newNamePlaceholder": "my-project",
    "createBtn": "プロジェクト作成",
    "switchProject": "プロジェクト切替",
    "currentProject": "現在のプロジェクト",
    "resetToWorkspace": "デフォルトワークスペースにリセット",
    "dropPrimary": "フォルダをここにドラッグ、またはクリックして参照",
    "dropSecondary": "Finderからドラッグするか、下にパスを貼り付け",
    "pathHint": "絶対パスを入力してください（/ または ~ で始まる）",
    "importing": "インポート中...",
    "dropFailed": "フォルダの読み取りに失敗",
    "workingDir": "作業ディレクトリ",
    "importCopyNote": "フォルダは coding_projects/ にコピーされます。元のファイルは変更されません。",
    "importCopyDesc": "インポートするとフォルダのコピーが作成され、Agent はコピー上で作業します。元のファイルは変更されません。元のディレクトリで直接作業するには「ディレクトリを開く」を使用してください。",
    "tabOpenDir": "ディレクトリを開く",
    "openDirDesc": "ローカルの既存ディレクトリを直接開きます（ファイルはコピーされません）",
    "openDirBtn": "このディレクトリを開く",
    "openDirLoading": "読み込み中...",
    "openDirEmpty": "サブディレクトリがありません",
    "openDirHome": "ホーム",
    "openDirRefresh": "更新",
    "openDirHiddenFolders": "隠しフォルダ"
  },
  "market": {
    "searchPlaceholder": "プラットフォームを横断してスキルを検索",
    "categoryAll": "すべて",
    "categoryPlaceholder": "カテゴリを検索",
    "searchResult": "「{{keyword}}」に一致するスキルが {{count}} 件見つかりました",
    "providerUnavailable": "ソースが利用できません",
    "noResults": "結果が見つかりません",
    "startTyping": "上の検索ボックスにキーワードを入力してスキルを探します",
    "browseHint": "{{providers}} のスキルを閲覧するには、カテゴリを選択するかキーワードを入力してください",
    "noDescription": "説明はありません",
    "browseMarket": "マーケットを閲覧",
    "installQueue": "インストールキュー",
    "clearCompleted": "クリア",
    "retry": "再試行",
    "status": {
      "queued": "待機中",
      "installing": "インストール中",
      "completed": "完了",
      "failed": "失敗",
      "cancelled": "キャンセル済み"
    },
    "loadMore": "もっと読み込む",
    "noMoreResults": "これ以上ありません",
    "detail": {
      "title": "スキルの詳細",
      "version": "バージョン",
      "author": "作成者",
      "sourceUrl": "インストール URL",
      "slug": "識別子",
      "missing": "—"
    },
    "stats": {
      "downloads": "ダウンロード数",
      "stars": "スター",
      "installs": "インストール数",
      "likes": "いいね数",
      "views": "閲覧数",
      "category": "カテゴリ",
      "updatedAt": "更新日"
    },
    "queueMsg": {
      "timedOut": "インストールがタイムアウトしました",
      "failedPrefix": "失敗：{{msg}}"
    }
  },
  "startup": {
    "starting": "バックエンドを起動中...",
    "checking": "バックエンドに接続中...",
    "error": "バックエンドの起動に失敗しました。",
    "errorHint": "バックエンドプロセスを起動できませんでした。詳細はアプリケーションログを確認してください。",
    "errorDetails": "エラーの詳細を表示",
    "timeout": "{{seconds}} 秒以内にバックエンドの起動に失敗しました。",
    "timeoutHint": "バックエンドの起動に失敗しました。再試行するか、アプリケーションのログを確認してください。",
    "retry": "再試行"
  },
  "preview": {
    "error": {
      "SENSITIVE_FILE_BLOCKED": "このファイルはファイルガードによりブロックされています（機密ファイル保護）。",
      "OUTSIDE_WORKSPACE": "このファイルはワークスペースの範囲外です。設定 → セキュリティ → ファイルガード で「コンソールでワークスペース外ファイルのプレビューを許可」を有効にしてください。",
      "FORBIDDEN": "アクセス拒否：このファイルをプレビューする権限がありません。",
      "NOT_FOUND": "ファイルが見つかりません。移動または削除された可能性があります。相対パスを使用している場合は、絶対パスをお試しください。",
      "LOAD_FAILED": "ファイルプレビューの読み込みに失敗しました。",
      "LOAD_FAILED_DETAIL": "ファイルプレビューの読み込みに失敗しました: {{detail}}"
    }
  },
  "tool": {
    "readFile": "{{file}} を読み込む",
    "readFileDefault": "ファイルを読み込む",
    "writeFile": "{{file}} を作成",
    "writeFileDefault": "ファイルを作成",
    "editFile": "{{file}} を編集",
    "editFileDefault": "ファイルを編集",
    "appendFile": "{{file}} に追記",
    "appendFileDefault": "ファイルに追記",
    "grepSearch": "Grep {{pattern}}",
    "grepSearchDefault": "Grep 検索",
    "globSearch": "Glob {{pattern}}",
    "globSearchDefault": "Glob 検索",
    "viewImage": "画像 {{file}} を表示",
    "viewImageDefault": "画像を表示",
    "viewVideo": "動画 {{file}} を表示",
    "viewVideoDefault": "動画を表示",
    "desktopScreenshot": "デスクトップのスクリーンショット",
    "sendFile": "{{file}} を送信",
    "sendFileDefault": "ファイルを送信",
    "browserUse": "{{detail}} をブラウズ",
    "browserNavigate": "{{url}} を開く",
    "browserNavigateDefault": "ページを開く",
    "browserClick": "クリック",
    "browserType": "テキストを入力",
    "browserSnapshot": "スナップショットを取得",
    "browserScroll": "スクロール",
    "getCurrentTime": "現在時刻を取得",
    "setTimezone": "{{timezone}} に設定",
    "getTokenUsage": "トークン使用量を照会",
    "memorySearch": "メモリで {{query}} を検索",
    "memorySearchDefault": "メモリを検索",
    "listAgents": "エージェント一覧",
    "chatWithAgent": "{{agent}} とチャット",
    "chatWithAgentDefault": "エージェントとチャット",
    "submitToAgent": "{{agent}}{{task}} に送信",
    "submitToAgentDefault": "タスクを送信",
    "checkAgentTask": "{{agent}} #{{taskId}} を確認",
    "checkAgentTaskAgent": "{{agent}} を確認",
    "checkAgentTaskDefault": "タスクを確認",
    "delegateExternalAgent": "{{runner}} に委任",
    "delegateExternalAgentDefault": "外部エージェントに委任",
    "materializeSkill": "{{skill}} を作成",
    "materializeSkillDefault": "スキルを作成",
    "shell": "{{command}} を実行",
    "shellDefault": "コマンドを実行",
    "formatTable": {
      "file": "ファイル",
      "lineNumber": "行番号",
      "score": "スコア",
      "summary": "概要",
      "name": "名前",
      "id": "ID",
      "description": "説明",
      "status": "ステータス"
    },
    "loading": "読み込み中...",
    "inputProgress": "{{count}} 文字を受信",
    "rawInputPreview": "リアルタイムの未加工入力（末尾 4,096 文字）",
    "browserAction": {
      "startHeaded": "ブラウザを起動（表示あり）",
      "start": "ブラウザを起動",
      "stop": "ブラウザを停止",
      "open": "{{url}} を開く",
      "openDefault": "ページを開く",
      "navigate": "{{url}} に移動",
      "navigateDefault": "ページに移動",
      "navigateBack": "戻る",
      "click": "{{selector}} をクリック",
      "clickDefault": "要素をクリック",
      "type": "{{text}} を入力",
      "typeDefault": "テキストを入力",
      "snapshot": "スナップショットを取得",
      "screenshot": "スクリーンショット {{path}}",
      "screenshotDefault": "スクリーンショット",
      "eval": "{{code}} を評価",
      "evalDefault": "コードを評価",
      "runCode": "{{code}} を実行",
      "runCodeDefault": "コードを実行",
      "closePage": "ページを閉じる",
      "tabs": "タブ {{action}}",
      "tabsDefault": "タブを管理",
      "fillForm": "フォームを入力",
      "fileUpload": "{{filename}} をアップロード",
      "fileUploadDefault": "ファイルをアップロード",
      "fileDownload": "{{target}} をダウンロード",
      "fileDownloadDefault": "ファイルをダウンロード",
      "pressKey": "{{key}} を押す",
      "pressKeyDefault": "キーを押す",
      "hover": "{{selector}} にホバー",
      "hoverDefault": "要素にホバー",
      "drag": "ドラッグ",
      "selectOption": "オプションを選択",
      "waitFor": "{{target}} を待機",
      "waitForDefault": "要素を待機",
      "resize": "{{w}}x{{h}} にリサイズ",
      "resizeDefault": "ウィンドウをリサイズ",
      "pdf": "PDF {{path}} に出力",
      "pdfDefault": "PDF に出力",
      "install": "インストール",
      "batch": "バッチ"
    },
    "lineBadge": {
      "lines": "{{count}} 行",
      "addLines": "+{{count}} 行",
      "delLines": "-{{count}} 行",
      "matches": "{{count}} 件",
      "files": "{{count}} ファイル"
    },
    "inlineResult": {
      "taskId": "タスク #{{id}}",
      "submitted": "送信済み"
    },
    "execute": "{{tool}} を実行",
    "executeDefault": "ツールを実行"
  },
  "loop": {
    "gotoSettings": "エージェント Loop 設定",
    "selectorTitle": "Loop モード",
    "selectorHint": "エージェントの進め方を選択",
    "selectorAria": "Loop モードを選択",
    "builtInModes": "組み込み",
    "customModes": "カスタムとプラグイン",
    "starting": "開始中",
    "running": "実行中",
    "awaiting_user": "返信待ち",
    "activePersistentDescription": "このモードは完了するか会話をリセットするまで有効です。",
    "activeCustomDescription": "このカスタムモードは /mode off、/clear、/new のいずれかを使用するまで有効です。",
    "loadError": "一部の Loop モードを読み込めませんでした。",
    "retry": "再試行",
    "modes": {
      "default": {
        "name": "デフォルト",
        "description": "標準の制御されたエージェント Loop。"
      },
      "goal": {
        "name": "目標",
        "description": "具体的で検証可能な目標に向かって継続的に取り組みます。"
      },
      "mission": {
        "name": "ミッション",
        "description": "構造化された複数ステップのタスクを継続的に実行します。"
      }
    }
  }
}
