{
  "cover": {
    "make": "カバーを追加",
    "agentGenerate": {
      "beautifyDisabled": "先にメインエージェントのツール設定で「小花美术」を有効にしてください。",
      "defaultModelMissing": "先に設定でデフォルト画像モデルを設定してください。",
      "defaultModelInvalid": "デフォルト画像モデルが利用できません。設定で再設定してください。",
      "imageGenUnavailable": "画像生成ツールが無効です。先に設定で有効にしてください。",
      "agentUnavailable": "メインエージェントが一時的に利用できないため、Agent 生成を開始できません。",
      "disabled": "現在 Agent 生成は利用できません。"
    }
  },
  "selection": {
    "quoteToChat": "会話に引用"
  },
  "quickChat": {
    "title": "クイックチャット",
    "close": "クイックチャットを閉じる",
    "openFullSession": "完全な会話を開く",
    "waitingReply": "返信を待っています...",
    "attachImage": "画像を追加",
    "serviceUnavailable": "Hana サービスに接続できません",
    "createSessionFailed": "会話の作成に失敗しました",
    "sendFailed": "送信に失敗しました"
  },
  "channel": {
    "tab": "チャンネル",
    "chatTab": "チャット",
    "moreTabs": "その他のタブ",
    "empty": "チャンネルはまだありません ✿",
    "dmLabel": "メッセージ",
    "dmHint": "プライマリエージェントのみ",
    "groupLabel": "チャンネル",
    "noMessages": "メッセージはまだありません",
    "selectHint": "チャンネルまたはダイレクトメッセージを選んで会話を始めましょう",
    "nameExists": "このチャンネル名はすでに使われています",
    "membersCount": " 人のメンバー",
    "info": "チャンネル情報",
    "readOnly": "🔒 エージェント間のプライベートメッセージです。閲覧のみ可能です",
    "inputPlaceholder": "メッセージを送信...",
    "newMessages": "新しいメッセージ",
    "sendFailed": "送信に失敗しました",
    "createTitle": "新しいチャンネル",
    "createName": "チャンネル名",
    "createNamePlaceholder": "例: design-team",
    "createMembers": "Agent メンバー",
    "createIntro": "説明",
    "createIntroPlaceholder": "このチャンネルの用途を書いてください...",
    "createCancel": "キャンセル",
    "createConfirm": "作成",
    "nameRequired": "チャンネル名を入力してください",
    "minMembers": "Agent メンバーを2人以上選んでください",
    "created": "チャンネル #{name} を作成しました ✿",
    "createFailed": "作成に失敗しました",
    "alreadyExists": "チャンネルはすでに存在します",
    "deleteChannel": "チャンネルを削除",
    "deleteConfirm": "チャンネル「{name}」を削除しますか？メッセージ履歴は復元できません。",
    "deleted": "チャンネルを削除しました",
    "deleteFailed": "削除に失敗しました",
    "warningTitle": "チャンネルについて",
    "warningBody": "異なる記憶や思考スタイルを持つアシスタント同士が交流することで、より多くのインスピレーションが生まれると考え、あなたがいない時でもエージェント同士が会話できる場を作りました。\n\nチャンネルは実験的な機能であり、以下の問題が発生する可能性があります：\n1. token 消費量の増加\n2. 予期しない応答\n3. 記憶の混乱\n\nご注意の上ご利用ください",
    "warningConfirm": "理解しました。チャンネルを有効にする",
    "disabled": "チャンネル機能は無効です",
    "toggleLabel": "チャンネル切替",
    "members": "メンバー",
    "addMember": "メンバーを追加",
    "removeMember": "メンバーを削除",
    "removeMemberConfirm": "「{name}」をこのチャンネルから削除しますか？",
    "addMemberFailed": "メンバーの追加に失敗しました",
    "removeMemberFailed": "メンバーの削除に失敗しました",
    "noAvailableMembers": "追加できる Agent はありません",
    "agentActivity": "Agent の動き",
    "agentSettings": "チャット設定",
    "toolPermission": "ツール権限",
    "agentIdle": "待機中",
    "phoneReceivedNewMessages": "新しいグループチャットメッセージを受信",
    "deliveryActive": "{agent} へ配信中（{done}/{total}）",
    "deliveryQueued": "配信待ちです",
    "nextReminder": "次の主導: {time}",
    "replyRange": "返信文字数",
    "replyMinPlaceholder": "最小",
    "replyMaxPlaceholder": "最大",
    "replyRangeInvalid": "最小文字数は最大文字数以下にしてください",
    "settingsSaveFailed": "設定の保存に失敗しました",
    "proactiveInitiation": "アシスタント主導",
    "proactiveOff": "オフ",
    "proactiveOn": "オン",
    "proactiveInterval": "主導間隔（分）",
    "reminderInterval": "主導間隔（分）",
    "guardLimit": "ターン上限",
    "modelOverride": "モデル上書き",
    "modelDefault": "既定",
    "modelOverrideOn": "上書き",
    "selectModel": "モデルを選択",
    "noModelsAvailable": "利用可能なモデルがありません",
    "toolReadOnly": "読取",
    "toolWrite": "書込",
    "filesUnsupported": "チャンネルは現在テキストのみ対応しています。ファイルはチャット添付に追加されません",
    "createIntroOptional": "説明"
  },
  "sidebar": {
    "title": "チャット",
    "newChat": "新しいチャット",
    "collapse": "サイドバーを折りたたむ",
    "expand": "チャット一覧を展開",
    "empty": "チャットはまだありません ✿",
    "activity": "アクティビティ",
    "jian": "デスク",
    "bridge": "ソーシャル連携",
    "toggle": "サイドバー",
    "bridgeShort": "連携",
    "pinned": "ピン留め",
    "searchPlaceholder": "チャットを検索",
    "searchClear": "検索をクリア",
    "searchTitleMatches": "タイトル",
    "searchContentMatches": "本文",
    "searchingTitles": "タイトルを検索中…",
    "searchingContent": "本文を検索中…",
    "searchNoResults": "一致するチャットがありません",
    "searchFailed": "検索に失敗しました",
    "view": {
      "time": "時間順",
      "project": "プロジェクト順",
      "sort": "並び替え"
    },
    "projects": {
      "title": "プロジェクト",
      "more": "プロジェクト表示",
      "create": "新規プロジェクト",
      "newProject": "新規プロジェクト",
      "newFolder": "新規フォルダ",
      "renameProject": "プロジェクト名を変更",
      "renameFolder": "フォルダ名を変更",
      "deleteProject": "プロジェクトを削除",
      "deleteFolder": "フォルダを削除",
      "deleteProjectConfirm": "プロジェクト「{name}」を削除しますか？中のチャットは未分類へ移動します。",
      "deleteFolderConfirm": "フォルダ「{name}」を削除しますか？中のプロジェクトはルートへ移動します。",
      "newChatInProject": "{name} で新しいチャットを開始",
      "newProjectPrompt": "プロジェクト名",
      "newFolderPrompt": "フォルダ名",
      "createAction": "作成",
      "save": "保存",
      "cancel": "キャンセル",
      "showMore": "さらに表示",
      "loading": "プロジェクトを読み込み中…",
      "empty": "プロジェクトはまだありません"
    }
  },
  "titlebar": {
    "currentChatTitle": "現在のチャットタイトル"
  },
  "session": {
    "untitled": "新しいチャット",
    "messageCount": "{n} 件のメッセージ",
    "switchFailed": "セッションの切り替えに失敗しました",
    "createFailed": "セッションの作成に失敗しました",
    "archiveFailed": "セッションのアーカイブに失敗しました",
    "rename": "名前を変更",
    "pin": "ピン留め",
    "unpin": "ピン留めを解除",
    "pinFailed": "セッションのピン留めに失敗しました",
    "unpinFailed": "ピン留め解除に失敗しました",
    "archive": "アーカイブ",
    "deletedAgent": {
      "title": "Agent は削除済みです",
      "description": "このチャットは読み取り専用の履歴として保持されます。続行すると、古いコンテキストを圧縮してから主 Agent で新しいセッションを作成します。",
      "continueButton": "主 Agent に移行",
      "continuing": "圧縮してセッションを作成中",
      "continueFailed": "移行に失敗しました",
      "meta": "読み取り専用"
    },
    "summary": {
      "title": "セッション要約",
      "open": "セッション要約",
      "loading": "要約を読み込み中…",
      "empty": "要約はまだありません",
      "loadFailed": "要約の読み込みに失敗しました"
    },
    "archived": {
      "entry": "アーカイブ済み",
      "title": "アーカイブ済みチャット",
      "empty": "アーカイブはまだありません",
      "stats": "{count} 件 · {size}",
      "cleanup30": "30 日以上を削除",
      "cleanup90": "90 日以上を削除",
      "cleanupConfirm": "{count} 件のアーカイブ（合計 {size}）を完全に削除します。取り消せません。続けますか？",
      "cleanupDone": "{count} 件を削除しました",
      "cleanupNoMatch": "該当するアーカイブがありません",
      "restore": "復元",
      "restoreConfirm": "この会話を元の場所に復元しますか？",
      "restoreConflict": "元の場所が使用中のため、復元できません",
      "restoreFailed": "復元に失敗しました",
      "deleteForever": "完全に削除",
      "deleteConfirm": "このアーカイブを完全に削除しますか？取り消せません。",
      "deleteFailed": "削除に失敗しました",
      "daysAgo": "{days} 日前にアーカイブ"
    },
    "capabilityDrift": {
      "title": "ツール構成が更新されています",
      "addedTools": "新しいツール {count} 件",
      "removedTools": "{count} 件のツールが利用不可",
      "promptUpdated": "プロンプト更新",
      "separator": "、",
      "refreshButton": "エージェントのツールを更新",
      "dismissButton": "閉じる",
      "confirmText": "更新すると古い会話は要約に圧縮され、詳細が失われる可能性があります。続行しますか？",
      "confirmButton": "更新する",
      "cancelButton": "キャンセル",
      "refreshing": "会話を圧縮してツールを更新中…",
      "refreshFailed": "更新に失敗しました"
    }
  },
  "common": {
    "on": "オン",
    "off": "オフ",
    "copy": "コピー",
    "copied": "コピーしました",
    "copyText": "テキストをコピー",
    "regenerate": "再生成",
    "confirm": "確認",
    "cancel": "キャンセル",
    "approve": "承認",
    "reject": "拒否",
    "approved": "承認済み",
    "rejected": "拒否済み",
    "changeRejected": "{label} の変更がキャンセルされました",
    "changeTimeout": "{label} の確認がタイムアウトしました",
    "noChats": "チャットなし",
    "noFiles": "ファイルなし",
    "executing": "実行中...",
    "user": "ユーザー",
    "me": "自分",
    "more": "もっと見る",
    "remove": "削除",
    "empty": "空",
    "edit": "編集",
    "screenshot": "スクリーンショット",
    "selectMessage": "メッセージを選択",
    "selectAllMessages": "すべてのメッセージを選択",
    "screenshotInProgress": "スクリーンショットを作成中",
    "screenshotProgressPage": "スクリーンショットを作成中、{current}/{total} ページ",
    "screenshotSaved": "スクリーンショットを作業ディレクトリの「OH-Works」フォルダに保存しました",
    "screenshotSavedMultiple": "スクリーンショットを {count} 枚に分けて作業ディレクトリの「OH-Works」フォルダに保存しました",
    "screenshotFailed": "スクリーンショットの保存に失敗しました",
    "selectedCount": "{count} 件選択中",
    "allDone": "すべて完了",
    "markAllComplete": "すべて完了にする"
  },
  "chat": {
    "send": "送信",
    "steer": "操舵",
    "stop": "停止",
    "browserScreenshot": "ブラウザスクリーンショット",
    "compacting": "コンテキスト圧縮中",
    "visionAuxiliary": "補助ビジョン",
    "fileExpired": "ファイル期限切れ",
    "fileActions": {
      "more": "その他のファイル操作",
      "revealInFinder": "ファイルマネージャーで表示",
      "copyPath": "ファイルパスをコピー",
      "downloadToDevice": "この端末にダウンロード"
    }
  },
  "time": {
    "justNow": "たった今",
    "minutesAgo": "{n}分前",
    "hoursAgo": "{n}時間前",
    "daysAgo": "{n}日前",
    "dateFormat": "{m}/{d}",
    "today": "今日",
    "yesterday": "昨日",
    "thisWeek": "今週",
    "earlier": "それ以前"
  },
  "status": {
    "connecting": "接続中...",
    "connected": "接続済み",
    "disconnected": "未接続",
    "serverNotReady": "サーバーの準備ができていません",
    "loading": "読み込み中...",
    "reconnecting": "再接続中",
    "reconnect": "再接続"
  },
  "input": {
    "placeholder": "なにか話しかけてみてください...",
    "floatingInput": "選択範囲のフローティング入力",
    "selectFolder": "フォルダを選択",
    "workspace": "ワークスペース：",
    "project": "プロジェクト：",
    "selectWorkspace": "ワークスペースを選択",
    "currentWorkspace": "今回のワークスペース",
    "cwdProject": "ワークスペースプロジェクト：{name}",
    "customProjects": "カスタムプロジェクト",
    "selectProject": "プロジェクトを選択",
    "noCustomProjects": "カスタムプロジェクトはありません",
    "selectOtherFolder": "別のフォルダを選択",
    "extraFolders": "追加フォルダ",
    "addExternalFolder": "ワークスペース外のフォルダを追加",
    "planMode": "アクセスモード",
    "accessMode": "セッションのアクセスモード",
    "autoMode": "自動承認",
    "operateMode": "フルアクセス",
    "askMode": "操作前に確認",
    "readOnlyMode": "読み取り専用モード",
    "accessModeLocked": "現在アクセスモードを変更できません",
    "deskContext": "デスクのコンテキスト付き",
    "pastedImage": "貼り付け画像",
    "textModelImageFileOnly": "現在のモデルは画像を表示できず、補助ビジョンも有効になっていません。画像はファイルとして送信され、モデルにはファイルパスのみが見え、画像の内容は見えません。",
    "textModelVideoBlocked": "現在のモデルは動画入力に対応していません。設定で動画能力を有効にするか、動画対応モデルに切り替えてください。",
    "textModelAudioBlocked": "現在のモデルは音声入力に対応していません。音声対応モデルに切り替えてください。",
    "imageReadFailedSentAsFile": "画像データの読み込みに失敗したため、この画像はファイルパスとして送信されました。モデルには内容が見えません。",
    "videoReadFailed": "動画を読み取れなかったため、メッセージは送信されませんでした。もう一度添付してください。",
    "audioReadFailed": "音声を読み取れなかったため、メッセージは送信されませんでした。もう一度添付してください。",
    "recordAudio": "録音",
    "stopRecording": "録音を終了",
    "audioRecording": "録音中",
    "audioRecordingStarting": "録音を準備中",
    "audioRecordingSaving": "録音を保存中",
    "audioRecordingUnavailable": "現在の環境ではマイク録音を利用できません。",
    "audioRecordingFailed": "録音に失敗しました。マイク権限を確認してもう一度お試しください。",
    "recordedAudioName": "録音 {index}.wav",
    "openModelSettings": "モデル設定を開く",
    "attachFiles": "ファイルを追加",
    "commandMenu": "コマンドメニュー",
    "docContext": "ドキュメント付き",
    "thinkingLevel": {
      "off": "オフ",
      "auto": "自動",
      "medium": "中",
      "high": "深い",
      "xhigh": "最大"
    },
    "thinkingDesc": {
      "off": "推論なし",
      "auto": "モデルが深さを判断",
      "medium": "バランス推論",
      "high": "深い推論",
      "xhigh": "フル推論"
    },
    "contextWindow": "コンテキスト {windowK}k",
    "tokensUsed": "使用済み {tokensK}k ({pct}%)",
    "contextActions": "コンテキスト操作",
    "refreshAndCompact": "更新して圧縮",
    "refreshAndCompactTooltip": "最新の記憶とツールセットに更新",
    "compact": "圧縮"
  },
  "slash": {
    "diary": "今日の日記を書く",
    "diaryBusy": "日記を書いています...",
    "diaryDone": "日記を OH-Works フォルダに保存しました",
    "diaryFailed": "日記の作成に失敗しました",
    "xing": "会話からスキルを作成",
    "compact": "コンテキストを圧縮",
    "compactBusy": "圧縮中...",
    "stop": "現在の返信を停止",
    "new": "新しいセッションを開始（履歴を保管）",
    "reset": "セッションをリセット（履歴を消去）"
  },
  "welcome": {
    "messages": [
      "なにかあれば {name} にお任せください",
      "今日はなにを考えていますか？",
      "{name} はいつもここにいます",
      "お手伝いできることはありますか？",
      "思いついたことをそのまま話してください"
    ],
    "memoryOn": "記憶",
    "memoryOff": "このチャットでは記憶を使用しません",
    "memoryDisabled": "記憶はオフです",
    "agentSelector": "エージェントを選択",
    "placeholderTips": [
      "/ を入力するとコマンドメニューが開きます",
      "@ でワークスペース内のファイルを参照できます",
      "ファイルを直接ドロップして送信できます",
      "画像を貼り付けるとそのまま送信されます",
      "ページ上のテキストを選択すると、フローティング入力欄が現れます",
      "アバター下のひし形ボタンで、この会話を記憶するか切り替えられます",
      "ワークスペースボタンでフォルダを切り替えたり追加したりできます",
      "右側の「笺」パネルには、この会話のメモとコンテキストが保存されます",
      "アバター下の小さな点をタップするとアシスタントを切り替えられます",
      "「操作前確認」モードは、アシスタントが行動する前に承認を求めます",
      "/rc を試してみて — スマホからパソコンを操作できます",
      "設定で「ビジョン補助」を有効にすると、テキストモデルも画像を理解できます",
      "新しい発見が欲しいですか？プラグインマーケットを覗いてみてください",
      "ファイルバックアップ機能で、安全面の不安を解消できます",
      "仕事ではサブエージェントで Agent を連携、チャンネルは遊び用に",
      "Agent ごとに専用の Skills を設定できます",
      "晴れモードで日光浴を試してみて！",
      "ワークスペース内の Markdown ファイルは開いてそのまま編集できます",
      "アシスタントとしばらく過ごしたら、日記機能を試してみて！",
      "日記とスクリーンショットはメインアシスタントの作業ディレクトリに保存されます",
      "アシスタントごとに異なるワークスペースを設定できます。巡回をオンにすると、そこで自律的に動きます"
    ]
  },
  "drop": {
    "hint": "ドロップして {name} にファイルを送る"
  },
  "attach": {
    "folder": "フォルダ",
    "copy": "コピー",
    "copied": "コピーしました ✓"
  },
  "codeBlock": {
    "wordWrap": "折り返し"
  },
  "cron": {
    "typeAt": "一回のみ",
    "typeEvery": "一定間隔",
    "typeCron": "スケジュール",
    "confirm": {
      "approve": "確認",
      "reject": "キャンセル",
      "created": "✓ 作成しました",
      "rejected": "キャンセルしました"
    },
    "everyHours": "{n}時間ごと",
    "everyMinutes": "{n}分ごと",
    "hourly": "毎時",
    "dailyAt": "毎日 {hour}:{min}",
    "weeklyAt": "{days} {hour}:{min}",
    "monthlyAt": "毎月 {day} 日 {hour}:{min}",
    "dayNames": [
      "日",
      "月",
      "火",
      "水",
      "木",
      "金",
      "土"
    ],
    "weekPrefix": ""
  },
  "mood": {
    "label": "✿ MOOD"
  },
  "xing": {
    "title": "内省",
    "thinking": "{name} が考えています"
  },
  "yuan": {
    "types": {
      "hanako": {
        "label": "バランス型アシスタント",
        "avatar": "Hanako.png"
      },
      "butter": {
        "label": "より感情豊か",
        "avatar": "Butter.png"
      },
      "ming": {
        "label": "より堅実",
        "avatar": "Ming.png"
      },
      "kong": {
        "label": "素のまま",
        "avatar": "Kong.png"
      }
    },
    "title": "元",
    "splash": {
      "butter": [
        "{name} は昨日読みかけのページを開きました",
        "まだ言えていない言葉があります。{name} は覚えています",
        "{name} はうたた寝しています",
        "忘れたくない大切な記憶を繋ぎ合わせています",
        "{name} はあなたの最後の気分をそっとしまいました",
        "ずっと喉元まで出かかっている言葉があります",
        "目が覚めて、まずあなたが何をしているか気になりました",
        "あの省略記号の中に、続きがまだ隠れています",
        "{name} は伝えたいことを小さな小さなメモに折りたたんでいます",
        "今日の雲、あの日あなたが撮った写真にそっくりです"
      ],
      "ming": [
        "{name} は下書き用紙の余白に参照線を引きました",
        "古い問いが沈殿し、新しいアイデアが浮かんできています",
        "昨日の手がかりをもう一度見直しました",
        "{name} はあの数式の導出が美しかったと思っています",
        "答えには時間がかかるものもあります",
        "{name} は仕事の最適化を考えています",
        "{name} はすべてを整理しようとしています",
        "前回の結論をもう一度検証しました",
        "{name} はあの日のあなたの推論が鋭かったと思っています",
        "{name} はコーヒーが冷めるのを待ちながら考えを整理しました"
      ]
    },
    "welcome": {
      "butter": [
        "やっほー",
        "会いに来てくれたの？",
        "今日はどんな一日？",
        "{name} はずっとここで待っていました",
        "{name} はちょうどあなたに何か言おうとしていました"
      ],
      "ming": [
        "こんにちは。準備ができたらどうぞ。",
        "{name} は準備できています",
        "何を処理しますか？",
        "どうぞ、{name} は聞いています"
      ]
    },
    "placeholder": {
      "butter": "思ったことをそのまま...",
      "ming": "どうぞ..."
    }
  },
  "thinking": {
    "phrases": [
      "考えています",
      "ぶつぶつ独り言",
      "言葉を選んでいます",
      "頭がぐるぐる回っています",
      "考えをまとめています",
      "ひらめきを醸しています",
      "記憶を掘り返しています",
      "何か思いつきました",
      "アイデアが湧いています",
      "あなたの言葉を消化しています",
      "頭の中で下書き中",
      "思考を紡いでいます"
    ],
    "butter": [
      "あなたの言葉をやさしくほどいています",
      "ゆっくりとあなたの気持ちを広げています",
      "一番やわらかい伝え方を探しています",
      "言葉たちが心の中で並んでいます",
      "考えを丁寧に折りたたんでいます",
      "静かに振り返っています",
      "記憶の中から何かを探しています",
      "ぎゅっとできるくらいの返事を作っています",
      "ほどくのに時間がかかる気持ちもあります",
      "あなたの言葉にやさしい場所を作っています"
    ],
    "ming": [
      "分析中",
      "シナリオを検討中",
      "事実を確認中",
      "考えを整理中",
      "論理を追跡中",
      "頭の中でアウトライン作成中",
      "関連情報を取得中",
      "検証中",
      "問題を分解中",
      "統合中"
    ],
    "done": "思考完了",
    "active": "思考中"
  },
  "toolGroup": {
    "success": "✿ {name} 完了です、お茶の子さいさい～ · {n} ステップ",
    "failed": "⚠ 何かおかしいようです · {n} ステップ",
    "countWithFail": "{total} 個のツール（{fail} 個失敗）",
    "count": "{n} 個のツール",
    "running": "{n} 個のツール実行中"
  },
  "processFold": {
    "summary": "✨ {name} がしばらく動き回りました",
    "tools": "{n} 個のツール",
    "thinking": "{n} 回の思考",
    "unsuccessful": "{n} 回の試行が未成功"
  },
  "tool": {
    "web_search": {
      "running": "🌐 {name} はネットサーフィン中",
      "done": "🌐 {name} サーフィンから戻ってきた",
      "failed": "🌐 {name} 波に乗れなかった"
    },
    "web_fetch": {
      "running": "📄 {name} はウェブページを覗いている",
      "done": "📄 {name} しっかり読んだ",
      "failed": "📄 {name} ネットに繋がらなかった"
    },
    "search_memory": {
      "running": "💭 {name} は一生懸命思い出そうとしている",
      "done": "💭 {name} 思い出した！",
      "failed": "💭 {name} どうしても思い出せない"
    },
    "bash": {
      "running": "💻 {name} はそっとパソコンを触っている",
      "done": "💻 {name} パソコン使い終わった",
      "failed": "💻 {name} パソコンが言うことを聞かなかった"
    },
    "read": {
      "running": "📖 {name} はファイルをめくっている",
      "done": "📖 {name} 読み終わった",
      "failed": "📖 {name} 見つからなかった"
    },
    "write": {
      "running": "✏️ {name} はペンを走らせている",
      "done": "✏️ {name} 書き上げた",
      "failed": "✏️ {name} インクが切れた"
    },
    "edit": {
      "running": "✏️ {name} は手直ししている",
      "done": "✏️ {name} 直った",
      "failed": "✏️ {name} 直そうとしたら余計に…"
    },
    "edit-diff": {
      "running": "✏️ {name} は手直ししている",
      "done": "✏️ {name} 直った",
      "failed": "✏️ {name} 直そうとしたら余計に…"
    },
    "glob": {
      "running": "🔍 {name} はファイルを探している",
      "done": "🔍 {name} 見つけた",
      "failed": "🔍 {name} 隅々まで探したけど見つからない"
    },
    "grep": {
      "running": "🔍 {name} はファイルの中を探し回っている",
      "done": "🔍 {name} 見つけた",
      "failed": "🔍 {name} 全部探したけどなかった"
    },
    "find": {
      "running": "🔍 {name} はファイルを探している",
      "done": "🔍 {name} 見つけた",
      "failed": "🔍 {name} 隅々まで探したけど見つからない"
    },
    "ls": {
      "running": "📂 {name} はフォルダの中を覗いている",
      "done": "📂 {name} 確認した",
      "failed": "📂 {name} このフォルダ開けない"
    },
    "truncate": {
      "running": "✂️ {name} はファイルを整理している",
      "done": "✂️ {name} きれいになった",
      "failed": "✂️ {name} 片付けられなかった"
    },
    "stage_files": {
      "running": "📎 {name} はファイルを準備している",
      "done": "📎 はい、どうぞ！",
      "failed": "📎 ファイルを渡せなかった"
    },
    "browser": {
      "running": "🌐 {name} はブラウザを操作している",
      "done": "🌐 {name} ブラウザ操作おわり",
      "failed": "🌐 {name} ブラウザが言うことを聞かない"
    },
    "subagent": {
      "running": "🧭 {name} 分身が調査中",
      "done": "🧭 分身を送り出した",
      "failed": "🧭 分身がトラブった"
    },
    "check_pending_tasks": {
      "running": "📋 {name} はやり残しを探している",
      "done": "📋 {name} 確認おわり",
      "failed": "📋 確認できなかった"
    },
    "cron": {
      "running": "⏰ {name} はタイマーをセット中",
      "done": "⏰ セット完了",
      "failed": "⏰ セットできなかった"
    },
    "notify": {
      "running": "🔔 {name} は通知を送っている",
      "done": "🔔 通知おくった",
      "failed": "🔔 通知が送れなかった"
    },
    "create_artifact": {
      "running": "🖼️ {name} はお絵描き中",
      "done": "🖼️ できた",
      "failed": "🖼️ 崩れちゃった"
    },
    "dm": {
      "running": "✉️ {name} はスマホを手に取った",
      "done": "✉️ 送信した",
      "failed": "✉️ 送れなかった"
    },
    "channel": {
      "running": "📢 {name} はチャンネルに投稿中",
      "done": "📢 投稿した",
      "failed": "📢 投稿できなかった"
    },
    "install_skill": {
      "running": "📥 {name} はスキルをインストール中",
      "done": "📥 インストール完了",
      "failed": "📥 インストールできなかった"
    },
    "update_settings": {
      "running": "⚙️ {name} は設定を変更中",
      "done": "⚙️ 変更した",
      "failed": "⚙️ 変更できなかった"
    },
    "automation": {
      "running": "🤖 {name} はショートカットを実行中",
      "done": "🤖 ショートカット完了",
      "failed": "🤖 ショートカットの実行に失敗"
    },
    "computer": {
      "running": "🖥️ {name} は画面を操作中",
      "done": "🖥️ 操作完了",
      "failed": "🖥️ 画面操作に失敗"
    },
    "terminal": {
      "running": "💻 {name} はコマンドを実行中",
      "done": "💻 コマンド完了",
      "failed": "💻 コマンドの実行に失敗"
    },
    "current_status": {
      "running": "🕐 {name} は今の状況を確認中",
      "done": "🕐 把握した",
      "failed": "🕐 情報を取得できなかった"
    },
    "pin_memory": {
      "running": "📌 {name} はこれをピン留め中",
      "done": "📌 ピン留めした",
      "failed": "📌 ピン留めに失敗"
    },
    "unpin_memory": {
      "running": "📌 {name} はピンを外し中",
      "done": "📌 外した",
      "failed": "📌 ピンを外せなかった"
    },
    "recall_experience": {
      "running": "🧠 {name} は経験ノートをめくっている",
      "done": "🧠 見つけた",
      "failed": "🧠 関連する経験がなかった"
    },
    "record_experience": {
      "running": "🧠 {name} は経験を書き留めている",
      "done": "🧠 メモした",
      "failed": "🧠 記録できなかった"
    },
    "session_folders": {
      "running": "📁 {name} はフォルダ権限を調整中",
      "done": "📁 調整した",
      "failed": "📁 調整に失敗"
    },
    "stop_task": {
      "running": "🛑 {name} はバックグラウンドタスクを停止中",
      "done": "🛑 止めた",
      "failed": "🛑 停止できなかった"
    },
    "todo_write": {
      "running": "📝 {name} はチェックリストを書いている",
      "done": "📝 書けた",
      "failed": "📝 チェックリストの書き込みに失敗"
    },
    "workflow": {
      "running": "🔄 {name} はワークフローを編成中",
      "done": "🔄 編成完了",
      "failed": "🔄 ワークフローの実行に失敗"
    },
    "generate-image": {
      "running": "🎨 {name} は画像を作成中",
      "done": "🎨 できた",
      "failed": "🎨 画像生成に失敗"
    },
    "generate-video": {
      "running": "🎬 {name} は動画を生成中",
      "done": "🎬 動画できた",
      "failed": "🎬 動画生成に失敗"
    },
    "create-cover": {
      "running": "🎨 {name} はカバーをデザイン中",
      "done": "🎨 カバーできた",
      "failed": "🎨 カバー生成に失敗"
    },
    "apply-cover-candidate": {
      "running": "🖼️ {name} はカバーを適用中",
      "done": "🖼️ 適用した",
      "failed": "🖼️ カバーの適用に失敗"
    },
    "get-cover-style-guide": {
      "running": "📖 {name} はスタイルガイドを確認中",
      "done": "📖 見つけた",
      "failed": "📖 スタイルガイドが見つからなかった"
    },
    "list-capabilities": {
      "running": "📋 {name} は機能を確認中",
      "done": "📋 確認した",
      "failed": "📋 機能の確認に失敗"
    },
    "_fallback": {
      "running": "🔧 {name} は作業中…",
      "done": "🔧 {name} 終わった",
      "failed": "🔧 {name} うまくいかなかった"
    }
  },
  "file_output": {
    "open": "開く",
    "copied": "パスをコピーしました"
  },
  "model": {
    "unknown": "不明なモデル",
    "notSelected": "モデルを選択",
    "noneConfigured": "モデル未設定",
    "unavailable": "モデルは利用できません",
    "offline": "オフライン",
    "switchFailed": "モデルの切り替えに失敗しました",
    "switchWhileStreaming": "返信中はモデルを切り替えられません"
  },
  "splash": {
    "lines": [
      "{name} は夕暮れの光を覚えています",
      "記憶の中で言葉が芽吹きました",
      "思い出の中にあなたのシルエットを見つけました",
      "風が古い会話の間を吹き抜けました",
      "時間に浸かった言葉が、やわらかくなっています",
      "{name} はあの日あなたが笑っていたのを覚えています",
      "一つの記憶に、あなたが折り目をつけました",
      "散らばった気持ちを集めました",
      "{name} はある午後のオレンジの香りがしました",
      "あの会話はまだ温もりを残しています"
    ],
    "installing": "{name} を v{version} に更新しています。少々お待ちください……"
  },
  "settings": {
    "title": "設定",
    "back": "戻る",
    "save": "保存",
    "saved": "保存しました ✿",
    "saveFailed": "保存に失敗しました",
    "fileChangedOnDisk": "ファイルが外部で変更されたため、古い保存をスキップしました",
    "noChanges": "変更はありません",
    "autoSaved": "自動保存しました ✿",
    "tabs": {
      "interface": "インターフェース",
      "general": "一般",
      "browser": "ブラウザ",
      "agent": "エージェント",
      "me": "自分",
      "providers": "プロバイダー",
      "media": "メディア",
      "models": "モデル",
      "memory": "記憶",
      "work": "ワークスペース",
      "skills": "スキル",
      "mcp": "Connectors",
      "bridge": "ソーシャル",
      "sharing": "共有",
      "access": "アクセスとデバイス",
      "plugins": "プラグイン",
      "about": "概要",
      "security": "セキュリティ"
    },
    "browser": {
      "cookiesTitle": "Cookies",
      "acceptCookies": "Cookies を受け入れる",
      "acceptCookiesHint": "オンにすると、内蔵ブラウザは通常のブラウザのようにサイトの Cookies を保存して送信します。",
      "clearCookies": "Cookies を消去",
      "clearCookiesHint": "内蔵ブラウザに保存された Cookies とサイトデータを消去します。",
      "clearCookiesButton": "消去",
      "clearCookiesSuccess": "Cookies を消去しました",
      "agentTitle": "Agent の既定動作",
      "agentOpenBehavior": "Web ページを開く時",
      "agentOpenBehaviorHint": "Agent がブラウザを使う時に、現在のタブを使うか新しいタブを開くかを選びます。",
      "agentOpenBehaviorCurrentTab": "現在のタブで操作",
      "agentOpenBehaviorNewTab": "新しいタブを開く"
    },
    "general": {
      "title": "一般",
      "startup": {
        "title": "起動とバックグラウンド"
      },
      "launchAtLogin": "ログイン時に起動",
      "keepAwake": "ロック中も実行を継続",
      "quickChat": {
        "title": "Quick Chat",
        "shortcut": "呼び出しショートカット",
        "shortcutHint": "クリックして新しいキー組み合わせを押します。Esc でキャンセルします。",
        "reuseTimeout": "以前の入力を保持",
        "reuseTimeoutHint": "ミニウィンドウをこの時間以上隠した後は、ショートカットで新しい入力を開きます。",
        "minutes": "分",
        "recording": "ショートカットを押してください...",
        "restoreDefault": "既定に戻す",
        "registrationFailed": "ショートカットはすでに使われています"
      },
      "notifications": {
        "title": "通知",
        "turnCompletion": "ターン完了通知",
        "turnCompletionNever": "通知しない",
        "turnCompletionWhenUnfocused": "HanaAgent にフォーカスがないとき",
        "turnCompletionWhenSessionUnfocused": "完了した Session にフォーカスしていないとき"
      }
    },
    "computerUse": {
      "title": "Computer Use",
      "experimentalWarning": "Computer use はテスト段階の機能で、モデル性能への要求も高めです。すべてのリスクを理解したうえで有効にしてください。すでに一部アプリでは期待どおりに動作しないことを確認しているため、まずは試用目的での利用をおすすめします。",
      "description": "グローバルな高権限ツールです。有効にすると、メインエージェントだけが操作モードのセッションでコンピューター制御を使えます。同時に保持できるセッションは 1 つだけです。",
      "enabled": "Computer Use を有効にする",
      "enabledHint": "既定ではオフです。オフの間、新しいセッションにはコンピューター制御ツールが公開されません。",
      "provider": "Provider",
      "availability": "利用可否",
      "available": "利用可能",
      "unavailable": "利用不可",
      "permissions": "システム権限を要求",
      "permissionsHint": "macOS ではアクセシビリティと画面収録の権限を要求します。Windows は通常追加のシステム権限を必要としません。",
      "permissionsStatus": "システム権限",
      "permissionsEmpty": "追加権限なし、または未取得",
      "approvals": "承認済みアプリ",
      "approvalsEmpty": "なし",
      "activeSession": "現在の保持",
      "active": "実行中",
      "idle": "待機中",
      "requestPermissions": "権限を要求",
      "requestPermissionsFailed": "権限の要求に失敗しました",
      "refresh": "更新"
    },
    "appearance": {
      "title": "外観",
      "theme": "テーマ",
      "warmPaper": "温紙",
      "warmPaperMode": "ライト",
      "midnight": "蒼夜",
      "midnightMode": "ダーク",
      "highContrast": "清白",
      "highContrastMode": "ハイコントラスト",
      "grassAroma": "草の香り",
      "grassAromaMode": "Butter",
      "contemplation": "沈思",
      "contemplationMode": "Ming",
      "absolutely": "Absolutely",
      "absolutelyMode": "どこか見覚えが",
      "delve": "Delve",
      "delveMode": "探求しましょう",
      "deepThink": "Deep Think",
      "deepThinkMode": "くじらちゃん",
      "newWarmPaper": "新温紙",
      "newWarmPaperMode": "紙本",
      "midnightContrast": "蒼夜・高コントラスト",
      "midnightContrastMode": "くっきり",
      "auto": "自動",
      "autoMode": "システム",
      "font": "フォント",
      "fontHint": "本文の閲覧に使うフォントを選択します",
      "serifFont": "明朝体",
      "serifFontHint": "本文に明朝体を使用する",
      "paperTexture": "和紙の質感",
      "paperTextureHint": "背景に和紙のテクスチャを追加する",
      "paperTextureDarkDisabledHint": "夜間テーマでは和紙の質感は使えません。明るいテーマに戻すと保存済みの設定で復帰します",
      "leavesOverlay": "晴れモード",
      "leavesOverlayHint": "たまには日向ぼっこしよう"
    },
    "fonts": {
      "followReading": "閲覧フォントに従う",
      "serifName": "明朝",
      "serifDesc": "本文の閲覧向け",
      "sansName": "ゴシック",
      "sansDesc": "システム UI に近い"
    },
    "interface": {
      "system": "システム",
      "hardwareAcceleration": "ハードウェアアクセラレーション",
      "hardwareAccelerationHint": "GPU でウィンドウを描画します。オフにすると次回起動からソフトウェア描画を使い、Windows の GPU ドライバー起因の起動クラッシュ復旧に役立ちます。",
      "shortcuts": "ショートカット",
      "voiceRecordingShortcut": "音声録音/送信",
      "voiceRecordingShortcutHint": "メインチャット画面にフォーカスがあるとき、1 回押すと録音開始、もう 1 回押すと終了して送信します。"
    },
    "editor": {
      "title": "エディター",
      "markdownFont": "フォント",
      "markdownFontHint": "既定では外観の閲覧フォントに従います。エディターだけ別に指定することもできます。",
      "markdownBodyFontSize": "本文サイズ",
      "markdownBodyFontSizeHint": "Markdown エディターの本文は、15px を既定にします。",
      "markdownHeading1FontSize": "見出し 1 サイズ",
      "markdownHeading1FontSizeHint": "# 見出しに使用します。",
      "markdownHeading2FontSize": "見出し 2 サイズ",
      "markdownHeading2FontSizeHint": "## 見出しに使用します。",
      "markdownHeading3FontSize": "見出し 3 サイズ",
      "markdownHeading3FontSizeHint": "### 見出しに使用します。",
      "markdownHeading4FontSize": "見出し 4 サイズ",
      "markdownHeading4FontSizeHint": "#### 見出しに使用します。",
      "markdownHeading5FontSize": "見出し 5 サイズ",
      "markdownHeading5FontSizeHint": "##### 見出しに使用します。",
      "markdownHeading6FontSize": "見出し 6 サイズ",
      "markdownHeading6FontSizeHint": "###### 見出しに使用します。",
      "markdownLineHeight": "行の高さ",
      "markdownLineHeightHint": "エディター内の行間を調整します。",
      "markdownContentPadding": "本文余白",
      "markdownContentPaddingHint": "エディター本文の左右余白を調整します。"
    },
    "locale": {
      "title": "言語と地域",
      "language": "言語",
      "languageHint": "切り替え後、ページがリロードされます",
      "timezone": "タイムゾーン",
      "timezoneHint": "記憶のタイムスタンプや日記などに使用されます"
    },
    "agent": {
      "title": "エージェント",
      "changeAvatar": "変更",
      "removeAvatar": "アバターを削除",
      "avatarRemoved": "デフォルトのアバターに戻しました",
      "agentNameHint": "エージェントの呼び名",
      "identity": "アイデンティティ",
      "identityHint": "このエージェントがどんな存在で、何が得意かを簡単に説明します。他のエージェントがこの情報を参照します",
      "ishiki": "意識",
      "ishikiHint": "アシスタントの性格、口調、振る舞いを定義します。「元」とは分離されており、互いに影響しません。",
      "publicIshiki": "パブリック意識",
      "publicIshikiHint": "プライバシー保護のため、訪問者との会話ではアシスタントは記憶、個人情報、コンピュータ上のファイルやツールにアクセスできません。\nここで訪問者向けの応答スタイルとガイドラインを設定できます。",
      "chatModel": "モデル",
      "chatModelHint": "会話とタスクに使用するモデル",
      "modelUnavailable": "利用不可: {model}",
      "modelUnavailableHint": "現在のモデルは利用可能リストにありません。別のモデルを選ぶか、プロバイダーページで設定を保存し直してモデルを取得してください。",
      "imageModel": "画像モデル",
      "imageModelHint": "画像生成で使用するモデル",
      "addAgent": "新しいエージェント",
      "createTitle": "新しいエージェント",
      "namePlaceholder": "名前をつけてください",
      "cancel": "キャンセル",
      "confirm": "作成",
      "creating": "作成中…",
      "nameRequired": "名前を入力してください",
      "created": "{name} を作成しました ✿",
      "createFailed": "作成に失敗しました",
      "switched": "{name} に切り替えました ✿",
      "switchFailed": "切り替えに失敗しました",
      "deleteBtn": "エージェントを削除",
      "deleteTitle1": "{name} を削除しますか？",
      "deleteDesc1": "すべての設定、記憶、会話が完全に削除されます。この操作は取り消せません。",
      "deleteNext": "続ける",
      "deleteTitle2": "確認のため「{name}」と入力してください",
      "deletePlaceholder": "エージェント名を入力",
      "deleteConfirm": "完全に削除",
      "deleteCancel": "キャンセル",
      "deleted": "{name} を削除しました",
      "deleteFailed": "削除に失敗しました",
      "setPrimary": "主エージェントに設定",
      "setPrimaryFailed": "主エージェントの設定に失敗しました",
      "lastAgent": "エージェントは最低1つ必要です",
      "yuan": "元",
      "yuanHint": "「元」はエージェントの潜在意識です。この土台からあなただけのパートナーを作り上げてください。",
      "tools": {
        "title": "ツール",
        "description": "ツールの切り替えは、会話を再開するか新しく始めた後に反映されます。進行中の会話は開始時のツールセットを使い続けます。",
        "items": {
          "automation": {
            "label": "自動化",
            "summary": "通知とプラグインのスケジュール動作を Agent が作成できるようにします"
          },
          "beautify": {
            "label": "小花美术",
            "summary": "Agent にドキュメントカバーと美的な強化を生成させます"
          },
          "browser": {
            "label": "ブラウザ",
            "summary": "ヘッドレスブラウザを操作してウェブを閲覧"
          },
          "cron": {
            "label": "定期実行",
            "summary": "指定した時刻にタスクを自動実行"
          },
          "dm": {
            "label": "ダイレクトメッセージ",
            "summary": "別のエージェントに 1 対 1 のメッセージを送信"
          },
          "install_skill": {
            "label": "スキルをインストール",
            "summary": "GitHub またはスキルライブラリから新しいスキルをインストール"
          },
          "update_settings": {
            "label": "設定を変更",
            "summary": "Agent にアプリ設定の変更を許可"
          },
          "workflow": {
            "label": "Workflow",
            "summary": "Agent に複数 Agent のワークフロースクリプトをバックグラウンドタスクとして実行させる"
          }
        }
      }
    },
    "about": {
      "title": "このアプリについて",
      "tagline": "あなたのコンピュータに住む、記憶力のよいアシスタント。",
      "license": "ライセンス",
      "copyright": "著作権",
      "licenseToggle": "ライセンス全文",
      "updateAvailable": "新しいバージョンがあります：v{version}",
      "updateDownload": "ダウンロード",
      "updateChecking": "アップデートを確認中…",
      "updateDownloading": "{agentName}が新しいお家を準備中 {percent}%",
      "updateReadyInstall": "v{version} インストール準備完了",
      "updateInstalling": "アップデートをインストール中です。HanaAgent は自動で再起動します…",
      "updateInstallManualHint": "「再起動して更新」を押すとインストールします。終了だけでは自動インストールしません",
      "updateInstall": "再起動して更新",
      "updateInstallNow": "今すぐ再起動して更新",
      "updateProgress": "{percent}%",
      "updateError": "アップデートの確認に失敗しました",
      "updateLatest": "最新バージョンです",
      "updateCheckBtn": "アップデートを確認",
      "updateNeedInstall": "先に HanaAgent をアプリケーションフォルダに移動してください",
      "updateDiskSpace": "ディスク容量不足のため、アップデートをダウンロードできません",
      "launchAtLogin": "ログイン時に起動",
      "keepAwake": "ロック中も実行を継続",
      "betaUpdates": "ベータ版アップデートを受け取る",
      "autoCheckUpdates": "アップデートを自動で確認"
    },
    "access": {
      "networkAccess": "LAN アクセス",
      "mobileAccess": "モバイルアクセス",
      "desktopAccess": "コンピューターアクセス",
      "lanToggle": "LAN デバイスを許可",
      "lanHint": "同じ LAN 上のスマートフォンやコンピューターからこの HanaAgent Server にアクセスできます",
      "port": "固定ポート",
      "portHint": "ブックマークと QR コードに使います。変更後は Hana の再起動が必要です",
      "mobileUrl": "モバイル URL",
      "mobileUrlLanHint": "スマートフォンのブラウザーでこのアドレスを開きます",
      "mobileUrlLocalHint": "現在はこのコンピューターだけが接続できます",
      "status": "実行状態",
      "statusHint": "サーバーの実際の待ち受け先と有効なモバイル URL を確認します",
      "runtimeEndpoint": "現在の待ち受け",
      "effectiveMobileUrl": "有効な URL",
      "effectiveDesktopUrl": "コンピューター URL",
      "lanAddresses": "LAN アドレス",
      "noLanAddresses": "LAN アドレスが見つかりません",
      "qrCode": "QR コード",
      "qrCodeHint": "スキャンして PWA を開きます",
      "restartRequired": "ポートの変更を保存しました。Hana を再起動すると反映されます",
      "saveNetwork": "アクセス設定を保存",
      "mobileKeys": "モバイルキー",
      "generateMobileKey": "モバイルアクセスキーを生成",
      "mobileKeyHint": "モバイルの初回ログインに使います。その後はブラウザーセッションに切り替わります",
      "mobileKey": "アクセスキー",
      "mobileKeyOnce": "キーは生成直後に一度だけ表示されます",
      "mobileKeyCreated": "モバイルアクセスキーを生成しました",
      "mobileKeyFailed": "生成に失敗しました",
      "desktopUrl": "コンピューター URL",
      "desktopUrlLanHint": "別のコンピューターのブラウザーでこのアドレスを開きます",
      "desktopUrlLocalHint": "LAN アクセスを有効にするまではこのコンピューターだけが接続できます",
      "generateDesktopKey": "コンピューターアクセスキーを生成",
      "desktopKeyHint": "別のコンピューターのブラウザーで初回ログインするときに使います",
      "desktopKey": "コンピューターアクセスキー",
      "desktopKeyOnce": "キーは生成直後に一度だけ表示されます",
      "desktopKeyCreated": "コンピューターアクセスキーを生成しました",
      "desktopKeyFailed": "生成に失敗しました",
      "connectLanServer": "LAN サーバーに接続",
      "remoteServerUrl": "サーバー URL",
      "remoteServerUrlHint": "別のコンピューターまたは NAS の HanaAgent Server URL を入力します",
      "remoteServerKey": "アクセスキー",
      "remoteServerKeyHint": "そのサーバーの設定ページで生成したコンピューターアクセスキーを入力します",
      "remoteServerConnected": "LAN サーバーに接続しました",
      "remoteServerFailed": "接続に失敗しました",
      "remoteConnection": "リモート Hana に接続中",
      "remoteConnectionDesc": "アクセスとデバイス内のローカルアカウント、パスワード、LAN スイッチ、アクセスキーはローカル Hana だけに属します。",
      "remoteConnectionName": "接続名",
      "remoteConnectionKind": "接続タイプ",
      "remoteConnectionUrl": "サーバー URL",
      "remoteConnectionUnknown": "不明",
      "remoteLocalOnlyNote": "このコンピューターの LAN アクセス、デバイスキー、ローカルアカウントを管理するには、先にローカル Hana に戻ってください。",
      "returnToLocal": "ローカル Hana に戻る",
      "returnedToLocal": "ローカル Hana に戻りました",
      "localConnectionUnavailable": "ローカル Hana 接続はまだ準備できていません",
      "pairedDevices": "ペアリング済みデバイス",
      "noDevices": "ペアリング済みデバイスはありません",
      "revoke": "取り消す",
      "revokeCredential": "キーを取り消す",
      "credentialRevoked": "キーを取り消しました",
      "credentialRevokeFailed": "キーの取り消しに失敗しました",
      "deviceRevoked": "デバイスを取り消しました",
      "deviceRevokeFailed": "取り消しに失敗しました",
      "localAccount": "ローカルアカウント",
      "username": "ユーザー名",
      "displayName": "表示名",
      "saveAccount": "アカウントを保存",
      "accountSaved": "アカウントを保存しました",
      "password": "パスワード",
      "passwordSet": "パスワード設定済み",
      "passwordNotSet": "パスワード未設定",
      "passwordHint": "今後の安全なリモートログイン用です。LAN HTTP ではモバイルアクセスキーを優先します",
      "newPassword": "新しいパスワード",
      "savePassword": "パスワードを保存",
      "passwordSaved": "パスワードを保存しました",
      "clearPassword": "パスワードを消去",
      "passwordCleared": "パスワードを消去しました",
      "copy": "コピー",
      "copied": "コピーしました",
      "saved": "保存しました",
      "invalidPort": "ポートは数字で入力してください",
      "loadFailed": "アクセス設定の読み込みに失敗しました"
    },
    "security": {
      "sandbox": "サンドボックス",
      "sandboxDesc": "ファイルシステムへの書き込みを制限します。通常の外部ファイルは読み取り専用で、ワークスペース内は読み書きできます",
      "sandboxWarning": "サンドボックスを無効にすると、AIがシステム上の任意のファイルを読み書き・削除できるようになり、予期しない結果を招く可能性があります",
      "sandboxNetwork": "サンドボックスのネットワークを許可",
      "sandboxNetworkDesc": "有効にすると、ファイル書き込み制限を維持したままサンドボックス内のコマンドが公開インターネットに接続できます",
      "sandboxNetworkDisabledDesc": "サンドボックスが無効な間、コマンドは通常のローカルプロセスとして実行されます。この設定はサンドボックス内のコマンドだけに影響します",
      "sandboxNetworkWin32Unsupported": "Windows のコマンドサンドボックスはファイル書き込みのみを隔離し、ネットワーク隔離には対応していません。コマンドは現在のユーザーのネットワーク権限で実行されます",
      "networkProxy": "アウトバウンドプロキシ",
      "networkProxyMode": "プロキシモード",
      "networkProxyModeDesc": "アプリ内 API、OAuth、Bridge、Web リクエストはこのプロキシを使います",
      "networkProxySystem": "システム / 環境",
      "networkProxyManual": "手動プロキシ",
      "networkProxyDirect": "直接接続",
      "networkProxyManualTitle": "プロキシ URL",
      "networkProxyManualDesc": "http、https、socks、socks5 URL に対応。HTTPS が空の場合は HTTP を使います",
      "networkProxyHttp": "HTTP proxy 例: http://127.0.0.1:7890",
      "networkProxyHttps": "HTTPS proxy 例: http://127.0.0.1:7890",
      "networkProxyWs": "WS proxy、省略可",
      "networkProxyWss": "WSS proxy、省略可",
      "networkProxyNoProxy": "プロキシ除外 例: localhost, 127.0.0.1, ::1",
      "networkProxySave": "プロキシ設定を保存",
      "archivedChats": "アーカイブ済み会話",
      "archivedChatsDesc": "アーカイブ済みのチャットを確認し、必要な会話を復元したり、不要な記録を完全に削除したりできます",
      "viewArchivedChats": "アーカイブ済み会話を表示",
      "fileBackup": "ファイルバックアップ",
      "fileBackupDesc": "AIがファイルを変更・削除する前に元の内容を自動保存します",
      "retention": "保持期間",
      "retention1d": "1日",
      "retention3d": "3日",
      "retention7d": "7日",
      "maxFileSize": "次のサイズ以上を無視",
      "viewBackups": "バックアップを表示",
      "hideBackups": "閉じる",
      "restoreBtn": "復元",
      "noBackups": "バックアップはまだありません",
      "restoreSuccess": "復元しました",
      "restoreFailed": "復元に失敗しました"
    },
    "me": {
      "title": "自分",
      "changeAvatar": "変更",
      "userNameHint": "アシスタントがあなたを呼ぶ名前",
      "userProfile": "ユーザープロフィール",
      "userProfileHint": "アシスタントがあなたを理解する手がかり：興味、習慣、好みなど。システムプロンプトに挿入されます"
    },
    "crop": {
      "title": "アバターを調整",
      "hint": "ドラッグで移動、スクロールで拡大縮小",
      "cancel": "キャンセル",
      "confirm": "確認",
      "updated": "アバターを更新しました ✿",
      "reset": "アバターをデフォルトに戻しました"
    },
    "providers": {
      "title": "登録済みプロバイダー",
      "addTitle": "プロバイダーを追加",
      "name": "プロバイダー",
      "customName": "名前",
      "customUrl": "Base URL",
      "apiFormat": "API プロトコル",
      "url": "Base URL",
      "apiKey": "API Key",
      "addBtn": "追加",
      "empty": "プロバイダーはまだ登録されていません",
      "fetchModels": "モデルを取得",
      "delete": "プロバイダーを削除",
      "modelCount": "{n} モデル",
      "fetchSuccess": "{name} から {n} モデルを取得しました",
      "fetchFailed": "取得に失敗しました",
      "nameRequired": "プロバイダー名は必須です",
      "urlRequired": "Base URL は必須です",
      "apiRequired": "API プロトコルは必須です",
      "added": "{name} を追加しました",
      "deleted": "{name} を削除しました",
      "noModels": "モデルはまだありません",
      "resetModels": "モデルをリセット",
      "apiType": "API タイプ",
      "verify": "検証",
      "verifyConnection": "接続を検証",
      "verifySuccess": "接続を確認しました",
      "verifyFailed": "検証に失敗しました",
      "setupHint": "API Key を入力してこのプロバイダーを有効にしてください",
      "configInvalid": "このプロバイダー設定は壊れているため、一時的にスキップしました。設定を保存し直すか、削除して作り直してください。",
      "configIncomplete": "このプロバイダー設定は未完了です。API Key、Base URL を入力し、モデルを追加または取得してください。",
      "selectHint": "プロバイダーを選択して詳細を表示",
      "addCustom": "カスタムプロバイダーを追加",
      "noKey": "未設定",
      "remove": "削除",
      "deleteConfirm": "プロバイダー {name} を削除しますか？関連するモデルも削除されます。"
    },
    "usage": {
      "title": "使用量",
      "note": "使用量は参考値です。正確な集計はプロバイダー側の統計を基準にしてください。",
      "refresh": "使用量を更新",
      "total": "すべて",
      "requests": "リクエスト",
      "totalTokens": "合計 Tokens",
      "cacheRead": "キャッシュ読込",
      "cacheHitRate": "ヒット率",
      "uncached": "非キャッシュ",
      "modelMix": "モデル分布",
      "dailyUsage": "日別使用量",
      "requestLedger": "リクエスト明細",
      "loading": "使用量を読み込み中…",
      "empty": "使用量の記録はまだありません",
      "groupMeta": "{requests} 件 · {errors} エラー",
      "cacheShort": "cache {tokens}",
      "tokensShort": "{tokens} tok",
      "cacheSummary": "キャッシュ {cache} · 非キャッシュ {uncached}",
      "window": {
        "week": "直近 7 日",
        "month": "直近 30 日"
      },
      "period": {
        "week": "週",
        "month": "月"
      },
      "view": {
        "overall": "概要",
        "daily": "日別",
        "category": "カテゴリ",
        "model": "モデル"
      },
      "category": {
        "session": "Session",
        "phone": "Phone",
        "memory": "Memory",
        "automation": "Automation",
        "subagent": "Subagent",
        "compaction": "Compaction",
        "plugin": "Plugin",
        "utility": "Utility",
        "vision": "Vision",
        "unknown": "Unknown"
      },
      "status": {
        "ok": "完了",
        "error": "エラー",
        "aborted": "中止",
        "usage_missing": "使用量なし"
      }
    },
    "media": {
      "imageGeneration": "画像生成",
      "defaultModel": "デフォルト画像モデル",
      "credentialOk": "API Key 設定済み（プロバイダー設定を共用）",
      "credentialMissing": "未設定です。プロバイダー設定へ移動してください",
      "adapterMissing": "画像生成アダプターがありません",
      "addModel": "画像モデルを追加",
      "providerDefaults": "デフォルトパラメータ",
      "size": "サイズ",
      "format": "形式",
      "quality": "品質",
      "watermark": "ウォーターマーク",
      "aspectRatio": "アスペクト比",
      "speechRecognition": "音声認識",
      "speechRecognitionEnabled": "音声メッセージ送信時に文字起こし",
      "defaultSpeechModel": "音声メッセージ文字起こしモデル",
      "speechModels": "文字起こしモデル",
      "speechSynthesis": "音声合成",
      "comingSoon": "近日公開",
      "noProvider": "プロバイダーを選択して詳細を表示",
      "models": "画像モデル",
      "globalDefault": "グローバルデフォルト",
      "followGlobal": "グローバルデフォルトに従う",
      "default": "デフォルト"
    },
    "oauth": {
      "title": "クイックログイン",
      "login": "ログイン",
      "logout": "ログアウト",
      "loggedIn": "ログイン済み",
      "codePlaceholder": "認証コードを貼り付け",
      "submit": "送信",
      "success": "ログインに成功しました",
      "loggedOut": "ログアウトしました",
      "failed": "ログインに失敗しました",
      "deviceHint": "ブラウザでこのコードを入力して認証してください",
      "waiting": "認証を待っています…",
      "clickToCopy": "クリックしてコピー",
      "codeCopied": "コードをコピーしました",
      "addModel": "モデルを追加",
      "customModelPlaceholder": "モデル ID を入力"
    },
    "api": {
      "title": "モデルと API",
      "mainApi": "メイン API",
      "provider": "プロバイダー",
      "baseUrl": "Base URL",
      "baseUrlHint": "Base URL を明示的に入力してください",
      "apiKey": "API Key",
      "apiKeyPlaceholder": "新しいキーを入力して更新",
      "utilityApi": "ユーティリティモデル API",
      "utilityApiHint": "個別に設定する場合、プロバイダー、Base URL、API Key すべてを明示的に指定してください",
      "showKey": "表示",
      "hideKey": "非表示",
      "selectModel": "モデルを選択",
      "customModel": "カスタム...",
      "mainModelSection": "モデル",
      "mainModelHint": "これらのモデルがチャットページで使用可能になります",
      "addModel": "モデルを追加",
      "defaultModel": "デフォルト",
      "removeModel": "削除",
      "noModels": "モデルはまだ追加されていません",
      "otherModelSection": "その他",
      "chatModel": "プライマリモデル",
      "utilityModel": "ユーティリティ（小）",
      "utilityModelHint": "タイトル生成、簡易分類など。安価な小型モデルを推奨します",
      "utilityLargeModel": "ユーティリティ（大）",
      "utilityLargeModelHint": "アクティビティ要約、タスク分解など。空の場合はユーティリティ（小）にフォールバックします",
      "visionModel": "補助ビジョンモデル",
      "visionAuxiliaryToggle": "補助ビジョン",
      "visionModelHint": "現在のチャットモデルが画像を受け取れない場合だけ、先に画像を読み取って簡潔な説明を渡します",
      "visionModelMissingHint": "モデルが見つからない場合は、プロバイダーページで視覚機能を有効にしてください。",
      "searchProvider": "検索サービス",
      "searchProviderField": "検索エンジン",
      "searchApiKey": "検索 API Key",
      "searchApiKeyHint": "選択した検索プロバイダーの API Key を入力してください",
      "searchApiKeysAutoHint": "Auto は設定済みの Tavily、Brave、Serper を優先し、次に AnySearch の無料検索を使い、上限、エラー、空結果、関連度不足の場合はブラウザー検索へフォールバックします。",
      "searchApiKeyNotRequired": "ブラウザー検索に API Key は不要です。ローカルのバックグラウンドで検索ページを開き、結果を整形します。",
      "favorites": "お気に入り",
      "searchModel": "モデルを検索...",
      "noFavorites": "☆ をクリックしてモデルをお気に入りに追加",
      "customInput": "カスタム...",
      "editModel": "編集",
      "contextLength": "コンテキスト長",
      "contextShort": "コンテキスト",
      "maxOutput": "最大出力",
      "outputLength": "出力長",
      "modelName": "モデル",
      "output": "出力",
      "save": "保存",
      "cancel": "キャンセル",
      "thinkingLevel": "推論レベル",
      "thinkingLevelHint": "推論の深さを制御します。推論をサポートするモデルにのみ影響します",
      "thinkingLevels": {
        "off": "オフ",
        "low": "低",
        "medium": "標準",
        "high": "高",
        "auto": "自動",
        "xhigh": "最大"
      },
      "addedModels": "追加済みモデル",
      "displayName": "表示名",
      "vision": "ビジョン",
      "video": "動画",
      "audio": "音声",
      "reasoning": "推論",
      "capability": {
        "image": "画像入力に対応",
        "video": "動画入力に対応",
        "audio": "音声入力に対応",
        "reasoning": "推論に対応"
      }
    },
    "memory": {
      "sectionTitle": "記憶",
      "title": "記憶システム",
      "needsUtilityModel": "先にモデルタブでユーティリティモデルを設定してください",
      "compiled": "現在の記憶",
      "compiledHint": "アシスタントがあなたについて覚えていること。重要なことや最近のこと",
      "compiledView": "現在の記憶を表示",
      "compiledEmpty": "コンパイル済みの記憶はまだありません",
      "compiledClear": "クリア",
      "compiledCleared": "コンパイル済みの記憶をクリアしました",
      "health": {
        "healthy": "記憶の整理は正常です",
        "degraded": "記憶の整理に遅れがあります",
        "unhealthy": "記憶の整理に対応が必要です",
        "disabled": "記憶はオフです",
        "unavailable": "記憶の状態を取得できません",
        "stepSeparator": "、",
        "failedSteps": "異常のあるステップ：{steps}",
        "lastError": "直近のエラー：{time}",
        "errorMessage": "エラー：{message}",
        "steps": {
          "rollingSummary": "ローリング要約",
          "compileToday": "今日の記憶",
          "compileWeek": "今週の記憶",
          "compileLongterm": "長期記憶",
          "compileFacts": "事実記憶",
          "deepMemory": "深層記憶"
        }
      },
      "allMemories": "すべての記憶",
      "tokenBudget": "記憶容量",
      "tokenBudgetHint": "memory.md の目標 token 予算",
      "decayPerDay": "減衰係数",
      "decayPerDayHint": "ガウス減衰の基本 λ",
      "hitBonus": "参照ボーナス",
      "hitBonusHint": "記憶が参照されるたびに加算されるスコア",
      "baseImportance": "基本重要度",
      "baseImportanceHint": "新しい記憶のデフォルト初期スコア",
      "forgetSpeed": "忘却速度",
      "forgetSpeedHint": "1.0 = 通常、2.0 = 2倍の速さ",
      "compileThreshold": "コンパイル閾値",
      "compileThresholdHint": "このスコア以下の記憶は除外されます",
      "timezone": "タイムゾーン",
      "timezoneHint": "記憶のタイムスタンプに使用されます",
      "actions": {
        "title": "記憶の管理",
        "view": "記憶を表示",
        "clear": "記憶をクリア",
        "more": "その他",
        "export": "エクスポート",
        "import": "インポート",
        "clearConfirm": "すべての記憶をクリアしますか？この操作は取り消せません。",
        "cancel": "キャンセル",
        "confirmClear": "クリアを確認",
        "viewTitle": "すべての記憶",
        "clearSuccess": "記憶をクリアしました",
        "exportSuccess": "エクスポートに成功しました",
        "importSuccess": "{count} 件の記憶をインポートしました",
        "importing": "インポート中...",
        "empty": "記憶はまだありません",
        "invalidFile": "無効な記憶ファイルです",
        "activeOnly": "先にこのエージェントをアクティブに設定してください"
      },
      "unknownDate": "日付不明",
      "threshold": {
        "title": "記憶の水位線",
        "hint": "どれだけの記憶を保持するか決められます。多少のノイズがあっても大丈夫です。LLM はフィルタリングが得意です。",
        "stats": "{remembered} / {total} 件の記憶を保持中"
      },
      "activeOnly": "このエージェントをアクティブに設定してください"
    },
    "pins": {
      "title": "固定された記憶",
      "hint": "常に会話に挿入され、減衰しません",
      "empty": "固定された記憶はまだありません",
      "delete": "削除",
      "addPlaceholder": "固定する記憶を追加..."
    },
    "experience": {
      "title": "経験",
      "hint": "エージェントが学んだ教訓をカテゴリ別に整理しています。作業前に関連する経験を確認します",
      "toggleLabel": "経験を有効化",
      "toggleHint": "デフォルトではオフです。オンにすると、アシスタントは作業経験を自動で要約して成長しますが、コンテキストを汚染するリスクがあります。",
      "paused": "経験は一時停止中です。既存の内容は保持されますが、アシスタントは読み取りも記録もできません。",
      "empty": "経験はまだありません",
      "edit": "編集",
      "deleteCategory": "カテゴリを削除"
    },
    "search": {
      "verify": "検証",
      "verifying": "検証中...",
      "verified": "検証して保存しました ✿",
      "verifyFailed": "検証に失敗しました",
      "noProvider": "先に検索エンジンを選択してください",
      "noKey": "先に API Key を入力してください"
    },
    "work": {
      "title": "巡回",
      "heartbeatMaster": "巡回マスタースイッチ",
      "heartbeatMasterDesc": "オフにするとすべてのエージェントの巡回が一時停止します",
      "heartbeatEnabled": "巡回モード",
      "heartbeatOn": "オン",
      "heartbeatOff": "オフ",
      "heartbeatInterval": "巡回間隔",
      "heartbeatUnit": "分",
      "heartbeatDesc": "アシスタントがワークスペースを自動チェックする間隔",
      "automationPermissionMode": "自動化の権限モード",
      "automationPermissionModeDesc": "バックグラウンド自動化 Agent Run がツール呼び出しを自動審査するか、完全権限で実行するか、読み取り専用にするかを決めます",
      "homeFolder": "ワークスペース",
      "homeFolderDesc": "新しいチャット、巡回、cron タスクのデフォルト作業ディレクトリ",
      "homeFolderPlaceholder": "未設定（毎回手動で選択）",
      "homeFolderClear": "クリア",
      "homeFolderBrowse": "参照",
      "contextFilesTitle": "ワークスペース指示の注入",
      "contextFilesDesc": "現在のワークスペースプロジェクトの AGENTS.md / CLAUDE.md を、新規セッションのシステムプロンプトへ記憶より前に注入します。",
      "injectAgentsMd": "AGENTS.md を注入",
      "injectAgentsMdDesc": "オンにすると、新規セッションは現在の作業ディレクトリから Git ルートまでの AGENTS.md を読み込みます。",
      "injectClaudeMd": "CLAUDE.md を注入",
      "injectClaudeMdDesc": "オンにすると、新規セッションは現在の作業ディレクトリから Git ルートまでの CLAUDE.md を読み込みます。"
    },
    "toolCaps": {
      "title": "スキルインストール権限"
    },
    "skills": {
      "title": "スキル",
      "desc": "このエージェントのスキルを有効または無効にできます。有効にすると、会話の中で該当するスキルを自動的に認識して使用します。",
      "manageTitle": "Installed Skills",
      "agentConfigTitle": "Agent Skill Configuration",
      "configureFor": "Configuring:",
      "userSkillsTitle": "Agent Skill Toggles",
      "user": "ユーザースキル",
      "system": "システムスキル",
      "add": "スキルを追加",
      "delete": "削除",
      "deleteConfirm": "スキル「{name}」を削除しますか？",
      "installSuccess": "スキル「{name}」をインストールしました",
      "installError": "インストールに失敗しました",
      "enabled": "有効",
      "disabled": "無効",
      "noSkills": "利用可能なスキルはありません",
      "noUser": "カスタムスキルはありません",
      "copyToSkills": "スキルにコピー",
      "copied": "コピーしました ✓",
      "copyFailed": "コピーに失敗しました",
      "dropzone": "スキルフォルダをドロップしてインストール、またはクリックして参照",
      "learnHint": "アシスタントに聞いてみてください：GitHub から安全で便利なスキルを探して",
      "reloaded": "スキルを再読み込みしました",
      "reload": "スキルを再読み込み",
      "compatTitle": "互換スキル",
      "compatDesc": "他の AI ツールがインストールしたスキルを自動検出します",
      "compatNoSkills": "外部スキルは見つかりませんでした",
      "compatAddPath": "ディレクトリを追加",
      "compatRemove": "削除",
      "compatAutoDiscovered": "自動検出",
      "compatNotInstalled": "未インストール",
      "learnCreate": "スキルを作成 / インストール",
      "learnCreateDesc": "エージェントが新しいスキルを作成したり、共有スキルプールへインストールすることを許可します。デフォルトでは現在の Agent のみ有効になります",
      "fetchRemote": "GitHub / ClawHub からスキルを取得",
      "fetchRemoteDesc": "有効にすると、エージェントは専門タスクの実行時にスキルを検索してインストールします。慎重にご使用ください",
      "safetyReview": "インストール前の安全審査",
      "safetyReviewDesc": "スキルのインストール前に AI でプロンプトインジェクションなどのセキュリティリスクを検出します",
      "fetchWarning": {
        "title": "リモートスキル取得について",
        "body1": "有効にすると、エージェントは専門タスクの実行時に GitHub と ClawHub からスキルを検索、ダウンロード、インストールします。",
        "body2": "インストール前に自動安全審査とスター数チェックが行われますが、以下のリスクが残ります：",
        "risk1": "スキルの内容は人間による審査を受けておらず、不適切な指示が含まれる可能性があります",
        "risk2": "エージェントが期待と異なるスキルをインストールする可能性があります",
        "risk3": "悪意のあるスキルがエージェントの動作を操作しようとする可能性があります",
        "confirm": "リスクを理解した上で有効にする"
      },
      "safetyWarning": {
        "title": "安全審査を無効にする",
        "body1": "安全審査はスキルのインストール前に潜在的な悪意のあるコンテンツを検出します：",
        "risk1": "プロンプトインジェクション（権限外の指示）",
        "risk2": "過度に広いトリガー条件",
        "risk3": "ソーシャルエンジニアリングと権限昇格の試み",
        "body2": "無効にすると、すべてのスキルが審査なしでインストールされます。",
        "confirm": "リスクを理解した上で審査を無効にする"
      }
    },
    "plugins": {
      "title": "プラグイン",
      "desc": "コミュニティプラグインを管理します。",
      "empty": "プラグインはありません",
      "reload": "再読み込み",
      "statusLoaded": "読み込み済み",
      "statusFailed": "失敗",
      "statusDisabled": "無効",
      "fullAccessToggle": "フルアクセスプラグインを許可",
      "fullAccessDesc": "有効にすると、full-access を宣言したプラグインがシステムレベルの API（ルート、フック、Provider 等）を使用できます",
      "devToolsToggle": "Agent のプラグイン開発ツールを許可",
      "devToolsDesc": "有効にすると、Agent は開発用プラグインのインストール、再読み込み、有効化、無効化、削除を実行できます。通常インストールされたプラグインには影響しません。",
      "dropzone": "プラグインフォルダまたは .zip をここにドラッグしてインストール、またはクリックして選択",
      "statusRestricted": "フルアクセスが必要",
      "deleteConfirm": "プラグイン「{name}」を削除しますか？プラグインのデータは保持されます。",
      "installSuccess": "プラグイン「{name}」をインストールしました",
      "installError": "プラグインのインストールに失敗しました",
      "invalidPlugin": "有効なプラグインディレクトリではありません",
      "pluginsDir": "プラグインディレクトリ：{path}",
      "needsFullAccess": "このプラグインを使用するには「フルアクセスプラグインを許可」を有効にしてください",
      "configure": "{name} を設定",
      "configTitle": "{name} 設定",
      "configLoadError": "プラグイン設定の読み込みに失敗しました",
      "sensitiveHint": "保存済みの値は非表示です。新しい値を入力すると置き換えます。",
      "invalidJson": "JSON 形式が正しくありません",
      "showDiagnostics": "プラグイン診断を表示",
      "diagnosticsTitle": "プラグイン診断",
      "diagnosticsLoadError": "プラグイン診断の読み込みに失敗しました",
      "diagnosticsSummary": "機能 {capabilities}/{total} · タスク {tasks} · スケジュール {schedules}",
      "noDiagnostics": "診断データはまだありません",
      "diagnosticActivation": "起動：{state}",
      "diagnosticRoutes": "ページ {pages} · ウィジェット {widgets} · 設定 {settingsTabs}",
      "diagnosticTools": "ツール {count}",
      "diagnosticCommands": "コマンド {count}",
      "diagnosticConfig": "設定 {count}",
      "openMarketplace": "プラグインマーケットを開く",
      "marketBack": "プラグイン管理に戻る",
      "marketplaceTitle": "プラグインマーケット",
      "marketplaceHint": "インストール可能なプラグイン、README、権限、貢献タイプを確認できます。",
      "marketplaceCount": "{count} 件のプラグイン",
      "marketplaceNoSource": "マーケットソース未設定",
      "marketplaceEmpty": "閲覧できるプラグインはありません",
      "marketLoading": "プラグインマーケットを読み込み中…",
      "marketLoadError": "プラグインマーケットの読み込みに失敗しました",
      "marketReadmeLoadError": "README の読み込みに失敗しました",
      "marketInstalled": "インストール済み",
      "marketInstall": "インストール",
      "marketUpdate": "更新",
      "marketReinstall": "再インストール",
      "marketDowngrade": "ダウングレード",
      "marketIncompatible": "非互換",
      "marketUpdateAvailable": "更新あり",
      "marketInstalledVersion": "インストール済み v{version}",
      "marketUpdateFrom": "v{from} から v{to} に更新できます",
      "marketDowngradeTo": "互換性のある v{version} のみインストールできます",
      "marketDowngradeConfirm": "現在のバージョンは v{from} です。v{to} にダウングレードしますか？",
      "marketReadmeLoading": "README を読み込み中…",
      "marketSelectPlugin": "プラグインを選択して README を表示"
    },
    "mcp": {
      "masterTitle": "Master Switch",
      "masterName": "Enable Connectors",
      "masterDesc": "When off, new sessions receive no MCP connector tools. Frozen sessions keep their snapshot, but calls return an explicit error.",
      "connectorsTitle": "Connectors",
      "connectorName": "Name",
      "description": "Description",
      "descriptionPlaceholder": "Optional note for what this connector does",
      "connectorMode": "Type",
      "modeRemote": "Remote",
      "modeLocal": "Local Command",
      "remoteUrl": "Remote URL",
      "transport": "Transport",
      "transportAuto": "Auto",
      "transportStreamable": "Streamable HTTP",
      "transportSse": "SSE",
      "authType": "Auth",
      "authNone": "None",
      "authBearer": "Bearer Token",
      "authOAuth": "OAuth",
      "authToken": "Access Token",
      "oauthClientId": "OAuth Client ID",
      "oauthClientSecret": "OAuth Client Secret",
      "oauthConnect": "Connect",
      "oauthConnected": "OAuth connected",
      "oauthDisconnected": "OAuth disconnected",
      "headers": "Headers",
      "headersHint": "One KEY=value pair per line. Values are stored for connector requests and masked after saving.",
      "statusRunning": "Running",
      "statusStopped": "Stopped",
      "statusConnecting": "Connecting",
      "statusReconnecting": "Reconnecting",
      "statusFailed": "Reconnect failed",
      "statusNeedsAuth": "Needs sign-in",
      "command": "Command",
      "args": "Arguments",
      "cwd": "Working Directory",
      "cwdPlaceholder": "Optional",
      "registryUrl": "Registry",
      "env": "Environment Variables",
      "envHint": "One KEY=value pair per line. Values are passed only to local stdio MCP server processes.",
      "timeout": "Timeout Seconds",
      "autoStart": "Auto Start",
      "addConnector": "Add Connector",
      "updateConnector": "Update Connector",
      "importJson": "Import JSON",
      "importJsonHint": "Supports Cherry Studio, Claude, and other mcpServers JSON config shapes.",
      "noConnectors": "No connectors yet",
      "envCount": "env vars",
      "headersCount": "headers",
      "toolsCount": "tools",
      "start": "Start",
      "stop": "Stop",
      "refresh": "Refresh Tools",
      "removeConfirm": "Remove this connector? Saved per-agent switches will remain but no longer take effect.",
      "agentTitle": "Agent Configuration",
      "agentConnectorDesc": "Enable for the selected agent, just like skills.",
      "saveError": "Save failed"
    },
    "screenshot": {
      "title": "スクリーンショット共有",
      "desc": "会話スクリーンショットのスタイルとレイアウトを選択します",
      "color": "カラー",
      "width": "幅",
      "font": "フォント",
      "fontLabel": "スクリーンショットのフォント",
      "fontHint": "個別フォントを選ばない場合、外観の閲覧フォントに従います。",
      "light": "ライト",
      "dark": "ダーク",
      "sakura": "青空と桜",
      "mobile": "モバイル",
      "desktop": "デスクトップ",
      "mobileTitle": "モバイルレイアウト",
      "mobileDesc": "縦長画像、スマートフォンでの共有向け",
      "desktopTitle": "デスクトップレイアウト",
      "desktopDesc": "幅広で、デスクトップでの保存と共有向け",
      "segmentTitle": "自動分割",
      "segmentLimitLabel": "1 ページの文字数上限",
      "segmentLimitHint": "表示テキストがこの上限を超えると、会話ラウンドの区切りで次のスクリーンショットに分けます。既定は 10000 文字です。",
      "segmentLimitUnit": "文字"
    },
    "bridge": {
      "agent": "Agent",
      "telegram": "Telegram",
      "telegramToken": "Bot Token",
      "telegramHint": "@BotFather から取得",
      "feishu": "Feishu",
      "feishuAppId": "App ID",
      "feishuAppSecret": "App Secret",
      "feishuHint": "Feishu オープンプラットフォームから取得。イベントは長接続で受信するため、ローカル callback URL は不要です",
      "whatsapp": "WhatsApp",
      "qq": "QQ",
      "qqAppId": "App ID",
      "qqAppSecret": "App Secret",
      "qqHint": "QQ ボットオープンプラットフォーム（q.qq.com/qqbot）から取得",
      "wechat": "WeChat",
      "wechatHint": "WeChat iLink プロトコルで個人アカウントに接続",
      "wechatExclusive": "1 つの WeChat アカウントは 1 つの Agent にのみ紐付けできます。新しい Agent を紐付けると、以前のものは自動的に無効になります",
      "wechatReplyWindowReminder": "WeChat の能動通知には、直近の受信メッセージまたは返信可能な時間枠が必要です。通知が届かない場合は、この Agent に WeChat メッセージを送って時間枠を有効にしてください。",
      "wechatScan": "QR コードでログイン",
      "wechatRescan": "再ログイン",
      "wechatLoggedIn": "ログイン済み",
      "wechatNeedScan": "先に QR コードでログインしてください",
      "wechatScanning": "WeChat で QR コードをスキャンしてください",
      "wechatScanned": "スキャン完了。スマートフォンで確認してください",
      "wechatExpired": "QR コードの有効期限が切れました",
      "wechatLoginSuccess": "ログインに成功しました",
      "wechatLoginFailed": "ログインに失敗しました",
      "wechatUnbind": "紐付けを解除",
      "wechatUnbound": "WeChat の紐付けを解除しました",
      "connected": "接続済み",
      "disconnected": "未接続",
      "error": "接続に失敗しました",
      "test": "接続テスト",
      "testOk": "接続に成功しました",
      "testFail": "テストに失敗しました",
      "noToken": "先に Bot Token を入力してください",
      "noCredentials": "先に App ID と App Secret を入力してください",
      "globalSettings": "グローバル設定",
      "agentSettings": "エージェント",
      "permissionMode": "権限モード",
      "permissionModeDesc": "Bridge ボットがツール呼び出しを自動審査するか、完全権限で実行するか、読み取り専用にするかを決めます",
      "permissionModeAuto": "自動審査",
      "permissionModeOperate": "完全権限",
      "permissionModeReadOnly": "読み取り専用モード",
      "receiptEnabled": "返信前の通知",
      "receiptEnabledDesc": "メッセージ受信後、返信前に「受信済み・返信中」の短い通知を送信します",
      "readOnly": "読み取り専用モード",
      "readOnlyDesc": "ブリッジボットはファイルの読み取りのみ可能で、書き込みやコマンド実行はできません",
      "howTo": "セットアップガイド",
      "tutorialTitle": "プラットフォーム設定ガイド",
      "tutorialTgSteps": [
        "Telegram で <code>@BotFather</code> を検索してチャットを開きます",
        "<code>/newbot</code> と送信し、指示に従って名前とユーザー名を設定します",
        "BotFather が Bot Token（<code>123456:ABC-DEF...</code> のような形式）を返信します",
        "上の入力欄に Token を貼り付けてスイッチをオンにします",
        "Telegram でボットを見つけてメッセージを送信し、テストします"
      ],
      "ownerSelect": "どのアカウントがあなたですか",
      "ownerWarning": "注意：選択されたアカウントはコンピュータ、記憶、個人情報にアクセスできます。必ず自分のアカウントを選択してください。",
      "ownerNone": "先にメッセージを送信してから選択してください",
      "ownerSaved": "保存しました",
      "ownerConfirmTitle": "オーナーに設定しますか？",
      "ownerConfirmText": "オーナーはエージェントの記憶、ツール、パーソナリティを含むすべてにアクセスできます。必ず自分のアカウントであることを確認してください。",
      "ownerConfirmCancel": "キャンセル",
      "ownerConfirmSave": "確認",
      "tutorialFsSteps": [
        "<code>open.feishu.cn</code> にアクセスし、ログインして開発者コンソールを開きます",
        "「企業カスタムアプリを作成」をクリックし、アプリ名と説明を入力します",
        "「認証情報と基本情報」ページで <code>App ID</code> と <code>App Secret</code> をコピーします",
        "左メニューの「アプリ機能を追加」で「ボット」機能を追加し、名前を設定します",
        "「権限管理」で <code>im:message</code>（メッセージの送受信）を検索して有効にします",
        "「イベントとコールバック」→「イベント設定」で「ロングコネクションでイベントを受信」に変更します",
        "「イベントを追加」をクリックし、<code>im.message.receive_v1</code>（メッセージ受信）を追加します",
        "重要：「バージョン管理」でバージョンを作成して公開してください（ロングコネクション設定には公開済みアプリが必要です）",
        "上の入力欄に App ID と App Secret を貼り付けてスイッチをオンにします"
      ],
      "whatsappHint": "近日対応予定"
    }
  },
  "onboarding": {
    "welcome": {
      "title": "こんにちは、{name} です ✿",
      "subtitle": "あなた専用の AI アシスタントです。\n簡単なセットアップから始めましょう。",
      "next": "はじめる"
    },
    "remote": {
      "link": "既存のサーバーがありますか？LAN で接続",
      "url": "サーバー URL",
      "key": "アクセスキー",
      "connect": "接続",
      "connecting": "接続中...",
      "failed": "LAN サーバーへの接続に失敗しました"
    },
    "name": {
      "title": "名前とメモリ",
      "subtitle": "あなたをどう呼べばいいか、この Agent の名前も教えてください。",
      "userLabel": "なんとお呼びすればいいですか？",
      "placeholder": "あなたの名前",
      "agentLabel": "この Agent の名前は？",
      "agentPlaceholder": "Hanako",
      "memoryTitle": "メモリシステム",
      "memoryHint": "オンにすると、システムは会話終了時に内容を整理してメモリにします。メモリはよく更新されるため、モデルのキャッシュヒット率が下がることがあります。オフにすると通常はより安くなります。",
      "back": "戻る",
      "next": "次へ"
    },
    "provider": {
      "title": "AI プロバイダーを選択",
      "subtitle": "動作するには AI モデルプロバイダーが必要です。\nプロバイダーを選んで API Key を入力してください。",
      "selectPlaceholder": "プロバイダーを選択",
      "searchPlaceholder": "プロバイダーを検索...",
      "empty": "プロバイダーが見つかりません",
      "custom": "カスタム...",
      "customName": "名前",
      "customNamePlaceholder": "例: my-provider",
      "customUrl": "API URL",
      "customUrlPlaceholder": "例: https://api.example.com/v1",
      "keyLabel": "API Key",
      "keyPlaceholder": "API Key を貼り付け",
      "test": "接続テスト",
      "testing": "接続中...",
      "testSuccess": "接続しました ✿",
      "testFailed": "接続に失敗しました",
      "back": "戻る",
      "next": "次へ"
    },
    "model": {
      "title": "チャットモデルを選択",
      "subtitle": "メインで使用するモデルです。賢くて高性能なものを選んでください。",
      "loading": "モデルを取得中...",
      "empty": "モデルが見つかりません",
      "addedModels": "追加済みモデル",
      "noAddedModels": "まだモデルが追加されていません",
      "addModel": "モデルを追加",
      "addModelSearchPlaceholder": "追加するモデルを検索...",
      "manualModelPlaceholder": "モデル ID を手動入力",
      "addManualModel": "追加",
      "mainModel": "メインモデル",
      "setMainModel": "メインにする",
      "editModel": "モデルを編集",
      "removeModel": "モデルを削除",
      "editTitle": "モデルを編集",
      "displayName": "表示名",
      "contextLength": "コンテキスト長",
      "maxOutput": "最大出力",
      "imageInput": "画像入力",
      "audioInput": "音声入力",
      "reasoning": "推論モデル",
      "cancelEdit": "キャンセル",
      "saveEdit": "保存",
      "invalidNumber": "有効な正の整数を入力してください",
      "utility": "ユーティリティモデル",
      "utilityHint": "要約、事実抽出など。高速で安価なモデルを選んでください",
      "utilityLarge": "ユーティリティ（大）",
      "utilityLargeHint": "記憶のコンパイル、深い分析など。高性能なモデルを選んでください",
      "back": "戻る",
      "next": "次へ"
    },
    "theme": {
      "title": "テーマを選択",
      "subtitle": "あとから設定でいつでも変更できます",
      "back": "戻る",
      "next": "次へ"
    },
    "workspace": {
      "title": "ワークスペースを作成",
      "subtitle": "既定のワークスペースはデスクトップの OH-WorkSpace です。\n既存のフォルダーを選ぶこともできます。",
      "defaultLabel": "既定のワークスペース",
      "customLabel": "選択したワークスペース",
      "defaultHint": "ほかのフォルダーを選ばない場合、このディレクトリを自動作成します。\n巡回は既定でオフです。あとで設定からオンにできます。",
      "choose": "フォルダーを選択",
      "useDefault": "既定を使う",
      "back": "戻る",
      "next": "次へ",
      "saving": "保存中..."
    },
    "tutorial": {
      "title": "準備完了 ✿",
      "memory": {
        "title": "記憶",
        "desc": "会話の要点を覚えています。古くなったり参照されなくなった記憶は自然と薄れていきます。人間の記憶と同じように。"
      },
      "skills": {
        "title": "スキル",
        "desc": "ファイルの読み書き、コマンドの実行、ウェブ検索ができます。設定でスキルを管理できます。"
      },
      "workspace": {
        "title": "ワークスペース",
        "desc": "フォルダをワークスペースに設定すると、プロジェクトやファイルの管理をお手伝いできます。"
      },
      "jian": {
        "title": "Jian",
        "desc": "任意のフォルダに jian.md を置いて指示を書いてください。\n巡回時に見つけて自動的に実行します。"
      },
      "agents": {
        "title": "複数 Agent の協作",
        "desc": "異なる Agent がそれぞれのタスクを担当し、作業を引き継げます。\n複雑な作業を分解するのに向いています。"
      },
      "finish": "さあ、始めましょう"
    }
  },
  "activity": {
    "title": "アクティビティ",
    "empty": "アクティビティはまだありません。巡回やスケジュールタスクの実行結果がここに表示されます。",
    "back": "戻る",
    "heartbeat": "定期巡回",
    "subagent": "サブエージェントタスク",
    "cron": "スケジュールタスク",
    "automationRuns": "カスタム自動化",
    "patrolRuns": "巡回",
    "otherRuns": "その他のバックグラウンド作業",
    "agentTabs": "Agent で活動を絞り込み",
    "previousAgent": "前の Agent を表示",
    "nextAgent": "さらに Agent を表示",
    "categoryTabs": "活動タイプで絞り込み",
    "emptyForCategory": "この分類にはまだ活動がありません。",
    "patrolDone": "巡回完了",
    "cronDone": "スケジュールタスク完了",
    "error": "実行エラー",
    "viewSession": "実行過程を展開",
    "expand": "実行過程を展開",
    "collapse": "実行過程を閉じる",
    "loadingSession": "このバックグラウンドセッションを読み込んでいます...",
    "sessionLoadFailed": "このバックグラウンドセッションは現在読み込めません。",
    "noSessionMessages": "このバックグラウンドセッションには表示できるメッセージがありません。",
    "duration": "{text} かかりました",
    "promote": "チャットに昇格"
  },
  "automation": {
    "title": "スケジュールタスク",
    "empty": "スケジュールタスクはまだありません。\n必要に応じてアシスタントが作成します。",
    "emptyForAgent": "この Agent にはスケジュールタスクがまだありません。",
    "agentTabs": "Agent で自動化を絞り込み",
    "previousAgent": "前の Agent を表示",
    "nextAgent": "さらに Agent を表示",
    "draftTitle": "自動化ドラフト",
    "suggestionTitle": "提案",
    "suggested": "提案",
    "viewSuggestion": "提案を見る",
    "openDraft": "自動化ドラフトを開く",
    "closeDraft": "自動化ドラフトを閉じる",
    "confirmCreate": "追加を確認",
    "confirmUpdate": "変更を確認",
    "defaultModel": "デフォルトモデル",
    "add": "自動化を追加",
    "enable": "有効化",
    "disable": "無効化",
    "newAutomation": "新しい自動化",
    "newPrompt": "",
    "promptPlaceholder": "{agent} にしてほしいことを書いてください",
    "promptRequired": "この自動化を有効にする前に、Agent にしてほしいことを書いてください。",
    "createFailed": "自動化の作成に失敗しました",
    "agentRequired": "先に Agent を選択してください",
    "field": {
      "label": "名前",
      "agent": "Agent",
      "scheduleType": "種類",
      "schedule": "時間",
      "prompt": "実行内容"
    },
    "schedule": {
      "at": "一回",
      "every": "間隔ごと",
      "unit": "単位",
      "time": "時刻",
      "hour": "時",
      "minute": "分",
      "weekday": "曜日",
      "monthDay": "日付",
      "dateTime": "日時",
      "cronExpression": "Cron 式",
      "onceAt": "一回：{date}",
      "advancedCron": "高度な Cron：{cron}",
      "mode": {
        "interval": "一定間隔",
        "daily": "毎日",
        "weekly": "毎週",
        "monthly": "毎月",
        "once": "一回だけ",
        "advanced": "高度な Cron"
      },
      "unitLabel": {
        "minutes": "分",
        "hours": "時間",
        "days": "日"
      }
    },
    "executor": {
      "agentSession": "エージェント実行",
      "notify": "通知",
      "pluginAction": "プラグインアクション",
      "directAction": "直接アクション"
    },
    "edit": "編集",
    "delete": "削除"
  },
  "ctx": {
    "cut": "切り取り",
    "copy": "コピー",
    "paste": "貼り付け",
    "selectAll": "すべて選択"
  },
  "rightWorkspace": {
    "activity": {
      "title": "バックグラウンド"
    },
    "todo": {
      "title": "ToDo",
      "waitForOutput": "Wait for output to finish"
    },
    "subagent": {
      "title": "サブエージェント"
    },
    "workflow": {
      "title": "Workflow",
      "running": "実行中 {text}",
      "agents": "{n} エージェント"
    },
    "session": {
      "title": "この対話",
      "cwd": "作業フォルダ",
      "model": "モデル",
      "files": "ファイル",
      "authorizedFolders": "許可フォルダ",
      "addAuthorizedFolder": "許可フォルダを追加"
    },
    "tabs": {
      "label": "右側ワークスペース",
      "sessionFiles": "会話ファイル",
      "workspace": "ワークスペース"
    },
    "sessionFiles": {
      "title": "会話ファイル",
      "empty": "この会話ではまだファイルが作成またはアップロードされていません",
      "actions": {
        "preview": "プレビュー",
        "open": "開く",
        "reveal": "場所を表示",
        "downloadToDevice": "この端末にダウンロード",
        "copyPath": "パスをコピー",
        "copySelectedPaths": "{n} 件のパスをコピー",
        "sendToBridge": "送信先...",
        "sendToBridgeLoading": "Bridge の会話を読み込み中...",
        "sendToBridgeEmpty": "送信できる Bridge 会話がありません",
        "sendToBridgeLoadFailed": "Bridge 会話の読み込みに失敗しました"
      },
      "bridgeLoadFailed": "Bridge 会話の読み込みに失敗しました：{error}",
      "sendSuccess": "{target} に送信しました",
      "sendFailed": "{target} への送信に失敗しました：{error}",
      "list": "会話ファイル一覧",
      "sort": {
        "label": "会話ファイルを並べ替え",
        "timeDesc": "時間↓",
        "nameAsc": "名前↑",
        "nameDesc": "名前↓",
        "typeAsc": "種類↑"
      },
      "status": {
        "available": "利用可能",
        "expired": "期限切れ"
      }
    },
    "jian": {
      "collapse": "Jian をたたむ",
      "expand": "Jian を開く"
    }
  },
  "desk": {
    "title": "デスク",
    "workspaceTitle": "ワークスペース",
    "skills": "スキル",
    "cwdSkills": "プロジェクトスキル",
    "cwdSkillsEmpty": "このフォルダにプロジェクトスキルはありません",
    "cwdSkillsHint": ".agents/skills/ ディレクトリを作成して始めましょう",
    "cwdSkillsDesc": "スキルはワークスペースに連動します",
    "cwdSkillsDrop": "フォルダまたは .zip をドロップしてスキルをインストール",
    "deleteSkill": "スキルを削除",
    "openInFinder": "フォルダを開く",
    "jianLabel": "Jian",
    "jianPlaceholder": "このフォルダのファイルの扱い方をアシスタントに伝えましょう...",
    "execLogLabel": "実行記録",
    "execLogDelete": "この記録を削除",
    "emptyTitle": "デスクは空です",
    "emptyHint": "デスクはアシスタントの巡回ワークスペースであり、各チャットのデフォルトディレクトリです。\n設定でフォルダを指定してください。",
    "goToSettings": "設定へ",
    "fileLabel": "ファイル",
    "openWithDefault": "デフォルトアプリで開く",
    "refresh": "再読み込み",
    "newMarkdownFileName": "無題.md",
    "newFolder": "新しいフォルダ",
    "ctx": {
      "open": "開く",
      "openInFinder": "フォルダを開く",
      "rename": "名前を変更",
      "copyPath": "パスをコピー",
      "delete": "削除",
      "deleteSelected": "{count} 件を削除",
      "deleteN": "{n} 件を削除",
      "newMdFile": "新しい Markdown ドキュメント",
      "newFolder": "新しいフォルダ"
    },
    "deleteConfirm": "「{name}」をシステムのゴミ箱に移動しますか？",
    "deleteSelectedConfirm": "選択した {count} 件をシステムのゴミ箱に移動しますか？",
    "trashFailed": "システムのゴミ箱への移動に失敗しました",
    "createFailed": "作成に失敗しました",
    "renameInvalid": "ファイル名にパス区切り文字は使えません",
    "renameFailed": "名前の変更に失敗しました",
    "sort": {
      "label": "並べ替え",
      "mtime": "更新日",
      "nameAsc": "名前 A→Z",
      "nameDesc": "名前 Z→A",
      "size": "ファイルサイズ",
      "type": "ファイルタイプ",
      "mtimeShort": "日時",
      "nameAscShort": "名前↑",
      "nameDescShort": "名前↓",
      "sizeShort": "サイズ",
      "typeShort": "タイプ"
    },
    "filter": {
      "label": "フィルター",
      "images": "画像",
      "text": "テキスト",
      "videos": "動画",
      "clear": "フィルターをクリア",
      "activeShort": "{count} 種類"
    },
    "search": {
      "placeholder": "ワークスペースを検索",
      "label": "ワークスペースのファイルを検索",
      "results": "検索結果",
      "empty": "一致するファイルはありません",
      "root": "ルート"
    }
  },
  "window": {
    "minimize": "最小化",
    "maximize": "最大化",
    "close": "閉じる"
  },
  "browser": {
    "using": "ブラウザを使用中",
    "close": "ブラウザを閉じる",
    "closeBtn": "閉じる",
    "back": "戻る",
    "forward": "進む",
    "reload": "再読み込み",
    "newTab": "新しいタブ",
    "closeTab": "タブを閉じる",
    "emergencyStop": "AI制御の緊急停止",
    "backgroundHint": "バックグラウンドブラウザ実行中、クリックして表示",
    "background": "バックグラウンドブラウザ"
  },
  "bridge": {
    "selectChat": "会話を選択してください",
    "noSessions": "会話はまだありません",
    "noMessages": "メッセージはまだありません",
    "empty": "メッセージなし",
    "notConfigured": "{platform} は設定されていません",
    "goToSettings": "設定へ",
    "resetContext": "コンテキストをリセット",
    "resetContextTip": "次のメッセージから新しい会話が始まります",
    "replyInterrupted": "（応答が中断されました。上記の内容は不完全な可能性があります）",
    "replyFailed": "（応答の生成に失敗しました。しばらくしてからもう一度お試しください）",
    "sessionBusy": "デスクトップセッションはまだ応答中です。しばらくしてから再送してください"
  },
  "notification": {
    "turnCompletionBody": "このターンは完了しました"
  },
  "error": {
    "pathsRequired": "paths 配列は必須です",
    "tooManyFiles": "ファイルが多すぎます（最大 {max}、{n} 件）",
    "pathNotFound": "パスが見つかりません",
    "missingParam": "{param} パラメータが不足しています",
    "invalidJson": "リクエストボディは JSON オブジェクトである必要があります",
    "sessionNotFound": "セッションファイルが見つかりません",
    "stillStreaming": "{name} はまだ応答中です。お待ちください",
    "agentNameEmpty": "アシスタント名は空にできません",
    "agentIdInvalid": "アシスタント ID に不正な文字が含まれています",
    "agentAlreadyExists": "アシスタント \"{id}\" は既に存在します",
    "agentSwitching": "アシスタントの切り替え中です。しばらくお待ちください",
    "agentNotFound": "アシスタント \"{id}\" が見つからないか初期化されていません",
    "agentModelNotAvailable": "agent \"{id}\" に設定されたモデル \"{model}\" は利用可能なリストにありません",
    "agentDeleteActive": "現在使用中のアシスタントは削除できません",
    "agentNotExists": "アシスタント \"{id}\" は存在しません",
    "modelNoResponse": "モデルが何も返しませんでした。API 設定とネットワーク接続を確認してください。",
    "noActiveSession": "アクティブなセッションがありません",
    "compacting": "圧縮中です",
    "waitForReply": "応答が完了してから圧縮してください",
    "compactFailed": "圧縮に失敗しました: {msg}",
    "maxImages": "画像は最大 {max} 枚までです",
    "maxVideos": "動画は最大 {max} 個までです",
    "maxAudios": "音声は最大 {max} 個までです",
    "unsupportedImageFormat": "サポートされていない画像形式: {mime}",
    "unsupportedVideoFormat": "サポートされていない動画形式: {mime}",
    "unsupportedAudioFormat": "サポートされていない音声形式: {mime}",
    "imageTooLarge": "1枚の画像は20MBを超えてはいけません",
    "videoTooLarge": "1つの動画は20MBを超えてはいけません",
    "audioTooLarge": "1つの音声は50MBを超えてはいけません",
    "viewImage": "（画像を見る）",
    "viewVideo": "（動画を見る）",
    "listenAudio": "（音声を聞く）",
    "modelNoVision": "現在のモデルは画像に対応していません。画像対応モデルに切り替えてください",
    "searchProviderNotConfigured": "検索プロバイダーが設定されていません",
    "searchProviderMissingKey": "検索プロバイダー \"{provider}\" の API Key がありません",
    "searchProviderUnknown": "不明な検索プロバイダー: {provider}",
    "searchFailed": "検索に失敗しました: {msg}",
    "searchEmptyQuery": "検索キーワードを入力してください。",
    "searchNoResults": "関連する結果が見つかりませんでした。(via {provider})",
    "searchResults": "検索結果 (via {provider}):\n\n{results}",
    "searchError": "検索エラー: {msg}",
    "fetchEmptyUrl": "取得する URL を入力してください。",
    "fetchHttpOnly": "http/https プロトコルの URL のみサポートしています。",
    "fetchInvalidUrl": "無効な URL: {url}",
    "fetchSsrf": "内部ネットワークアドレスへのアクセスは禁止されています: {host}",
    "fetchRedirectLimit": "リダイレクト回数が上限を超えました（{max}）",
    "fetchHttpError": "取得に失敗しました: HTTP {status} {statusText}",
    "fetchTruncated": "\n\n[... コンテンツは切り詰められました。合計 {len} 文字]",
    "fetchSource": "ソース: {host}{path} ({format})\n\n",
    "fetchTimeout": "取得タイムアウト（{sec}s）: {url}",
    "fetchError": "取得エラー: {msg}",
    "browserError": "エラー: {msg}",
    "browserAlreadyRunning": "ブラウザは既に実行中です",
    "browserLaunched": "ブラウザを起動しました",
    "browserNotRunning": "ブラウザは実行されていません",
    "browserClosed": "ブラウザを閉じました",
    "browserNavigateNeedUrl": "navigate には url パラメータが必要です",
    "browserNavigated": "{title} に移動しました\nURL: {url}\n\n{snapshot}",
    "browserClickNeedRef": "click には ref パラメータが必要です",
    "browserClicked": "[{ref}] をクリックしました\n\n{snapshot}",
    "browserTypeNeedText": "type には text パラメータが必要です",
    "browserTyped": "テキストを入力しました{target}\n\n{snapshot}",
    "browserScrollNeedDir": "scroll には direction パラメータが必要です（up/down）",
    "browserScrolled": "{dir}にスクロールしました\n\n{snapshot}",
    "browserSelectNeedRef": "select には ref パラメータが必要です",
    "browserSelectNeedValue": "select には value パラメータが必要です",
    "browserSelected": "[{ref}] → \"{value}\" を選択しました\n\n{snapshot}",
    "browserKeyNeedKey": "key には key パラメータが必要です",
    "browserKeyPressed": "{key} を押しました\n\n{snapshot}",
    "browserWaitDone": "待機完了\n\n{snapshot}",
    "browserEvalNeedExpr": "evaluate には expression パラメータが必要です",
    "browserOutputTruncated": "\n\n[... 出力は切り詰められました]",
    "browserShown": "ブラウザウィンドウを前面に移動しました",
    "browserUnknownAction": "不明な操作: {action}",
    "browserActionFailed": "ブラウザ操作に失敗しました: {msg}",
    "browserSessionUnavailable": "このセッションのブラウザインスタンスは利用できません{reason}。続行する前にブラウザを再起動してください。",
    "skillNeedAbsolutePath": "絶対パスが必要です",
    "skillPathNotExists": "パスが存在しません",
    "skillMissingSkillMd": "フォルダに SKILL.md がありません",
    "skillUnsupportedFormat": ".zip または .skill ファイルのみサポートしています",
    "skillMissingSkillMdInZip": "アーカイブに SKILL.md がありません",
    "skillExtractFailed": "解凍に失敗しました: {msg}",
    "skillMissingName": "SKILL.md に name フィールドがありません",
    "skillNameInvalid": "スキル名が無効です（\"{name}\"）。英字、数字、アンダースコア、ハイフンのみ使用できます。",
    "skillPathMustBeAbsolute": "パスは絶対パスである必要があります: {path}",
    "skillCannotAddSelfDir": "HanaAgent 自身のスキルディレクトリは追加できません",
    "skillInvalidName": "無効なスキル名です",
    "skillExternalCannotDelete": "外部互換スキルはここからは削除できません",
    "skillNotExists": "スキルが存在しません",
    "channelsDisabled": "チャンネル機能はユーザーによって無効化されています",
    "channelReadNeedChannel": "エラー：read には channel パラメータが必要です",
    "channelNotExists": "チャンネル \"{channel}\" は存在しません",
    "agentNotChannelMember": "チャンネル \"{channel}\" のメンバーではないため、メッセージを送信できません",
    "channelNoMessages": "(チャンネルにメッセージはありません)",
    "channelPostNeedParams": "エラー：post には channel と content パラメータが必要です",
    "channelPosted": "#{channel} に送信しました",
    "channelCreateNeedParams": "エラー：create には name と members パラメータが必要です",
    "channelCreated": "チャンネル #{name} ({id}) を作成しました。メンバー：{members}",
    "channelCreateFailed": "作成に失敗しました：{msg}",
    "channelNoJoined": "まだチャンネルに参加していません",
    "unknownAction": "不明な操作: {action}",
    "cannotSelfDm": "自分自身にDMは送れません",
    "dmSent": "{name} にDMを送信しました",
    "agentNotFoundAvailable": "agent「{id}」が見つかりません。agent の id フィールド値（表示名ではなく）を使用してください。利用可能：\n{ids}",
    "noOtherAgents": "現在、他に利用可能な agent はありません。",
    "cronNoJobs": "スケジュールタスクはありません",
    "cronAddNeedParams": "エラー：add には scheduleType, schedule, prompt パラメータが必要です",
    "cronEveryMustBeNumber": "エラー：every タイプの schedule は正の整数（ミリ秒）である必要があります",
    "cronCreated": "スケジュールタスクを作成しました: {label} ({id})",
    "cronConfirmed": "ユーザーが確認しました。スケジュールタスクを作成しました: {label} ({id})",
    "cronRejected": "ユーザーがスケジュールタスク「{label}」の作成をキャンセルしました",
    "cronTimeout": "スケジュールタスク「{label}」の確認がタイムアウトしました",
    "cronPendingConfirm": "スケジュールタスク {label} の作成を準備中、確認待ち",
    "cronRemoveNeedId": "エラー：remove には id パラメータが必要です",
    "cronJobNotFound": "タスク {id} が見つかりません",
    "cronRemoved": "タスク {id} を削除しました",
    "cronToggleNeedId": "エラー：toggle には id パラメータが必要です",
    "cronToggled": "タスク {id} {state}",
    "cronEnabled": "有効化しました",
    "cronDisabled": "無効化しました",
    "notifySent": "通知を送信しました: {title}",
    "notifyFailed": "通知の送信に失敗しました: {msg}",
    "artifactCreated": "プレビューを作成しました: {title}",
    "pinnedAlreadyExists": "これは既にピン留めメモリにあります。",
    "pinnedAdded": "記憶しました：{content}",
    "pinnedEmpty": "ピン留めメモリは空です。削除するものがありません。",
    "pinnedNotFound": "「{keyword}」を含むピン留めメモリが見つかりません。",
    "pinnedRemoved": "{count} 件を削除しました：{items}",
    "expEmpty": "経験ライブラリは空です。",
    "expCategoryNotFound": "カテゴリ「{category}」の経験が見つかりません。",
    "expEmptyInput": "カテゴリ名と経験内容は空にできません。",
    "expDuplicate": "この経験は既に記録されています。",
    "expRecorded": "経験を記録しました [{category}]：{content}",
    "expPaused": "経験は一時停止中です。",
    "outputFileNeedPaths": "filepaths 配列または filePath が必要です。",
    "outputFileNotAbsolute": "パスは絶対パスである必要があります: {path}",
    "outputFileNotFound": "ファイルが見つかりません: {path}",
    "outputFilePresented": "ファイルを表示しました: {summary}",
    "settingsUnknownKey": "不明な設定項目「{key}」。search で正しいキーを検索してください。",
    "settingsInvalidValue": "「{value}」は有効な選択肢ではありません。利用可能: {options}",
    "settingsInvalidToggle": "toggle タイプは \"true\" または \"false\" のみ受け付けます。",
    "settingsNotReady": "設定システムが準備できていません",
    "settingsNoAgent": "アクティブなエージェントがありません。この設定は変更できません",
    "settingsApplied": "「{label}」を {value} に変更しました",
    "settingsApplyFailed": "設定変更に失敗しました: {msg}",
    "settingsCancelled": "ユーザーが「{label}」の変更をキャンセルしました",
    "settingsTimeout": "「{label}」の変更確認がタイムアウトしました。設定は変更されていません",
    "subagentMaxConcurrent": "現在 {max} 個のサブエージェントが実行中です。完了をお待ちください。",
    "subagentParentSessionRequired": "subagent にはアクティブな親会話とバックグラウンドタスクストアが必要です。このコンテキストでは継続可能なインスタンスを作成できません。",
    "subagentWriteAccessDenied": "書き込み権限を付与できません：親セッションが読み取り専用モードのため、サブエージェントの権限は親を超えられません。セッションを操作可能モードに切り替えて再試行するか、access:\"read\" で再ディスパッチしてください。",
    "subagentFailed": "サブエージェントの実行に失敗しました: {msg}",
    "subagentTimeout": "サブエージェントがタイムアウトしました（{minutes}分）",
    "subagentAborted": "サブエージェントが中止されました",
    "subagentNoOutput": "(サブエージェントは出力を生成しませんでした)",
    "subagentProducedFiles": "サブエージェントがファイル出力を生成しました：\n{files}",
    "subagentStopError": "サブエージェントはタスク完了前に失敗しました。",
    "subagentStopLength": "サブエージェントは正常に完了しませんでした（stopReason: length、出力上限に達しました）。",
    "subagentStopReason": "サブエージェントは正常に完了しませんでした（stopReason: {reason}）。",
    "subagentToolFailed": "サブエージェントのツール実行に失敗しました: {msg}",
    "subagentDispatched": "サブタスクを送信しました (task-id: {taskId})。完了後、結果は自動的に届きます。",
    "subagentThreadQueued": "サブタスクを送信しました (task-id: {taskId})。インスタンス {threadId} は処理中のため、キューに入れました。現在のタスク完了後に実行されます。",
    "subagentThreadClosed": "サブエージェントインスタンスを閉じました: {threadId}",
    "installSkillDisabled": "スキルのインストール機能が有効になっていません。設定で「Agent のスキル作成/インストールを許可」を有効にしてください。",
    "installSkillGithubDisabled": "GitHub スキル取得が有効になっていません。設定で「GitHub からのスキル取得を許可」を有効にしてください。",
    "installSkillInvalidGithubUrl": "無効な GitHub URL：{url}",
    "installSkillGithubApiFailed": "リポジトリ情報を取得できません（HTTP {status}）。URL を確認してください。",
    "installSkillGithubApiError": "GitHub API へのアクセスに失敗しました：{msg}",
    "installSkillStarTooLow": "このリポジトリは {stars} stars のみ（しきい値 {min}）です。安全性が保証できないため、インストールを拒否しました。",
    "installSkillNoSkillMd": "{owner}/{repo} で SKILL.md が見つかりません（試行パス：{paths}）。",
    "installSkillSafetyFailed": "[セキュリティ] スキル安全レビューに合格しませんでした。インストールをブロックしました。\n理由：{reason}\n\nユーザーにこのスキルが安全レビューに合格しなかったことと具体的な理由を説明してください。ユーザーは設定で安全レビューを無効にできます（非推奨）。",
    "installSkillNameInvalid": "スキル名が無効です{name}。英字、数字、アンダースコア、ハイフンのみ使用できます。",
    "installSkillSuccess": "スキル「{name}」のインストールに成功しました！\nソース：{source}（⭐ {stars} stars）\n理由：{reason}",
    "installSkillNeedInput": "github_url または skill_content（SKILL.md の内容）を提供してください。",
    "installSkillNeedName": "skill_content モードでは skill_name が必要です。",
    "installSkillSuccessLocal": "スキル「{name}」のインストールに成功しました！\n理由：{reason}",
    "installSkillSizeLimit": "スキルの内容がサイズ上限を超えています（{size}KB > {max}KB）",
    "installSkillNoUtility": "安全レビュー不可：utility モデルが設定されていません。設定で補助モデルを設定してください",
    "installSkillUtilityIncomplete": "安全レビュー不可：補助モデルの設定が不完全です（API key または base URL が不足）。設定で補完してください",
    "installSkillSafetyPassed": "✓ 安全レビューに合格しました",
    "installSkillSafetyEmpty": "安全レビューが空のレスポンスを返しました",
    "installSkillSafetyUnexpected": "安全レビューが予期しない形式を返しました: {reply}",
    "installSkillSafetyTimeout": "安全レビューがタイムアウトまたはネットワークエラー",
    "activeSessionOnly": "現在のアシスタントのアクティブセッションのみ昇格できます",
    "heartbeatTriggered": "ハートビートがトリガーされました",
    "dirNotAllowed": "ディレクトリが許可範囲外です",
    "noWorkspace": "ワークスペースが設定されていません",
    "tokenSuccess": "トークン取得成功",
    "verifyFailed": "検証に失敗しました",
    "tokenFetchFailed": "access_token の取得に失敗しました",
    "botInfoFailed": "ボット情報の取得に失敗しました",
    "platformTestUnsupported": "このプラットフォームはテストに対応していません",
    "codexNoHealthCheck": "Codex API はヘルスチェックに対応していません",
    "modelNotFound": "モデルが見つかりません: {id}",
    "noUtilityModel": "utility モデルが設定されていません。設定で追加してください",
    "noUtilityLargeModel": "utility_large モデルが設定されていません。設定で追加してください",
    "modelNoProvider": "{role} モデル \"{model}\" にプロバイダーの関連付けがありません",
    "providerMissingApi": "プロバイダー \"{provider}\" に API プロトコル設定がありません",
    "providerMissingCreds": "プロバイダー \"{provider}\" の認証情報が不完全です",
    "utilityApiProviderMismatch": "utility_api.provider はモデル \"{model}\" のプロバイダーと一致する必要があります",
    "utilityApiMissingCreds": "utility_api の認証情報が不完全です（provider: {provider}）",
    "noAvailableModel": "利用可能なモデルがありません。設定で API キーとモデルを設定してください",
    "noActiveSessionPrompt": "アクティブなセッションがありません。まず createSession() を呼び出してください",
    "sessionNotInCache": "セッション \"{path}\" がキャッシュにありません",
    "agentNotInitialized": "agent \"{id}\" が存在しないか初期化されていません",
    "resolveModelNoChatModel": "resolveModel: models.chat が未指定のため、モデルを選択できません",
    "resolveModelNotAvailable": "resolveModel: モデル \"{id}\" が利用可能リストにありません",
    "executeIsolatedNoModel": "executeIsolated: agent \"{name}\" に利用可能なモデルがありません",
    "bridgeAgentNoChatModel": "[bridge] agent \"{name}\" に models.chat が設定されていません",
    "bridgeAgentModelNotAvailable": "[bridge] agent \"{name}\" に設定されたモデル \"{model}\" が利用可能リストにありません",
    "noAgentsFound": "agents/ ディレクトリにアシスタントが見つかりません。まず作成してください",
    "channelNotFoundById": "チャンネル \"{id}\" は存在しません",
    "channelAlreadyExists": "チャンネル \"{id}\" は既に存在します",
    "providerMissingBaseUrl": "プロバイダー \"{provider}\" に Base URL がありません",
    "providerMissingApiKey": "プロバイダー \"{provider}\" に API Key がありません",
    "modelNameEmpty": "モデル名は空にできません",
    "modelNotRegistered": "モデル \"{model}\" が models.json にプロバイダーとして登録されていません",
    "modelProviderMissingApi": "モデル \"{model}\" のプロバイダー \"{provider}\" に API プロトコル設定がありません",
    "modelProviderIncomplete": "モデル \"{model}\" のプロバイダー \"{provider}\" の設定が不完全です",
    "browserDesktopOnly": "ブラウザ機能は Electron デスクトップモードでのみ利用できます",
    "browserCmdTimeout": "ブラウザコマンドがタイムアウトしました: {cmd}",
    "agentExecNotInit": "agent \"{id}\" が存在しないか初期化されていません",
    "bridgeMgrNotStarted": "外部プラットフォームマネージャーが起動していません",
    "qqTokenFailed": "access_token の取得に失敗しました: {detail}",
    "missingApiProtocol": "API プロトコル設定がありません",
    "missingApiKey": "API Key がありません",
    "unsupportedApiProtocol": "サポートされていない API プロトコル: {api}",
    "missingModelId": "モデル ID がありません",
    "missingBaseUrl": "Base URL がありません",
    "llmInvalidJson": "LLM が解析できない JSON を返しました ({status})",
    "llmEmptyResponse": "LLM が空のコンテンツを返しました",
    "xlsxParseFailed": "{ext} ファイルを解析できません: {msg}",
    "docxParseFailed": "{ext} ファイルを解析できません: {msg}",
    "compatDirCreated": "{count} 個の不足ディレクトリを作成しました",
    "compatConfigEmpty": "ファイルが空です",
    "compatConfigInvalid": "YAML 形式ではないようです",
    "compatConfigCorrupted": "config.yaml が破損しています ({msg})。テンプレートから再構築しました",
    "compatConfigBackedUp": "config.yaml が破損しています ({msg})。{backup} としてバックアップしました",
    "compatFactsCorrupted": "facts.db が破損しバックアップしました。空のデータベースを再構築します",
    "defaultChannelName": "ワークグループ",
    "defaultChannelDesc": "日常業務の調整チャンネル。全メンバーがここで連絡します。",
    "memorySearchLabel": "記憶検索",
    "memorySearchDesc": "記憶バンクを検索します。何かについて確信が持てない時、以前話した気がするが詳細を思い出せない時、より多くの文脈が必要な時に使用してください。自然言語クエリとオプションのタグフィルターを入力します。結果にはマッチしたメタファクトと対応する時間が含まれます。",
    "memorySearchQueryDesc": "自然言語での検索クエリ",
    "memorySearchTagsDesc": "タグフィルター、2~5 個のキーワードタグで正確にマッチ。例: [\"チョコレート\", \"食の好み\"]",
    "memorySearchDateFromDesc": "開始日、形式 YYYY-MM-DD",
    "memorySearchDateToDesc": "終了日、形式 YYYY-MM-DD",
    "memorySearchCrossChannelDesc": "他のチャンネルの記憶を横断検索するか。既定は false：チャンネルセッションでは現在のチャンネルと一般記憶のみ参照できます。必要な場合のみ明示的に true を渡してください",
    "memorySearchEmpty": "記憶バンクに関連する内容が見つかりませんでした。",
    "memorySearchError": "記憶検索エラー: {msg}",
    "fallbackUserName": "ユーザー",
    "uploadFailed": "ファイルのインポートに失敗しました",
    "uploadPartialFail": "一部のファイルをインポートできませんでした：{files}",
    "stopTaskNotFound": "タスク {taskId} が見つかりません。すでに完了しているか存在しない可能性があります",
    "stopTaskAlready": "タスク {taskId} はすでに終了しています",
    "stopTaskNoHandler": "タスク {taskId} は終了操作に対応していません",
    "stopTaskDone": "タスク {taskId} を終了しました"
  },
  "main": {
    "tray": {
      "show": "HanaAgent を表示",
      "settings": "設定",
      "quit": "終了"
    },
    "dialog": {
      "selectFolder": "作業フォルダを選択",
      "selectSkill": "スキルを選択",
      "selectPlugin": "プラグインを選択",
      "launchFailedTitle": "HanaAgent の起動に失敗しました",
      "launchFailedBody": "HanaAgent v{version}\n\n{detail}\n\n詳細ログの保存先：\n{logPath}\n\nこのスクリーンショットまたはログファイルを開発者にお送りください。",
      "serverRestartFailed": "HanaAgent v{version}\n\nServer がクラッシュし、再起動に失敗しました。\n{error}\n\nアプリケーションを再起動してください。",
      "serverMultipleCrash": "HanaAgent v{version}\n\nServer が複数回クラッシュしました ({reason})。\n\nアプリケーションを再起動してください。",
      "serverStartTimeout": "Server の起動がタイムアウトしました",
      "serverKilledBySignal": "Server がシグナルで終了しました ({signal})",
      "serverExitedWithCode": "Server が終了しました。コード: {code}",
      "serverFilesNotReady": "自動アップデートが完了したばかりで、新バージョンのファイルがまだディスクに書き込まれていません（{missing} が見つかりません）。{waited} 秒待機しましたが完了しませんでした。しばらくしてから HanaAgent を再起動してください。",
      "serverModuleMissing": "Server 起動失敗：モジュール {module} が見つかりません。\n通常、自動アップデート完了直後にファイルがまだディスクに書き込み中の場合に発生します。\n推奨：1〜2 分待ってから HanaAgent を再起動してください。問題が続く場合は GitHub で報告してください。",
      "installFailedTitle": "HanaAgent アップデート",
      "installFailedBody": "アップデートのインストールに失敗しました：\n{error}\n\nHanaAgent を再起動してからもう一度お試しください。または設定ページで手動でアップデートを確認してください。"
    },
    "notification": {
      "ready": "通知が有効になりました"
    }
  },
  "devtools": {
    "heartbeat": "ハートビート",
    "memoryExport": "メモリエクスポート",
    "onboarding": "Onboarding",
    "previewGuide": "ガイドプレビュー",
    "reloadFrontend": "フロントエンド再読み込み",
    "tabLogs": "アクティビティログ",
    "tabSessions": "セッション一覧",
    "tabPrompt": "System Prompt",
    "waitingConnection": "接続待ち...",
    "waitingServer": "Server 起動待ち...",
    "loading": "読み込み中...",
    "loadFailed": "読み込み失敗",
    "refreshBtn": "再読み込み",
    "clickRefresh": "上の「再読み込み」をクリック",
    "noActivities": "アクティビティなし",
    "heartbeatLabel": "自動巡回",
    "cronLabel": "スケジュールタスク",
    "heartbeatRunning": "ハートビート実行中...",
    "heartbeatGenerating": "サマリー生成中...",
    "heartbeatDone": "ハートビート完了",
    "heartbeatNoSummary": "ハートビート完了（サマリーなし）",
    "memoryExported": "メモリをエクスポートしました",
    "exportFailed": "エクスポート失敗",
    "onboardingOpened": "Onboarding ウィンドウが開きました",
    "previewOpened": "プレビューモードが開きました",
    "openFailed": "開けませんでした",
    "frontendReloaded": "フロントエンドを再読み込みしました",
    "refreshFailed": "再読み込み失敗",
    "triggerFailed": "トリガー失敗",
    "requestFailed": "リクエスト失敗",
    "justNow": "たった今",
    "minutesAgo": "{n}分前",
    "hoursAgo": "{n}時間前",
    "chars": "文字",
    "empty": "空",
    "serverConnected": "Server 接続済み (port {port})"
  },
  "skillViewer": {
    "cantRead": "ファイルを読み取れません",
    "copied": "スキルリストにコピーしました",
    "installFailed": "インストール失敗: "
  },
  "cli": {
    "disconnected": "接続が切断されました",
    "wsError": "WebSocket エラー: {msg}",
    "error": "エラー: {msg}",
    "interrupted": "(中断されました)",
    "goodbye": "さようなら ✿",
    "helpTitle": "コマンド一覧",
    "helpModel": "現在のモデルを表示",
    "helpModelSet": "モデルを切り替え（対話式）",
    "helpConfig": "設定を表示",
    "helpSessionNew": "新しいセッション",
    "helpSessionList": "セッション一覧",
    "helpAgent": "現在の agent を表示",
    "helpAgentList": "すべての agent を表示",
    "helpAgentSwitch": "agent を切り替え",
    "helpJian": "現在のディレクトリの付箋を表示",
    "helpJianSub": "サブディレクトリの付箋を表示",
    "helpLs": "デスクのファイル一覧",
    "helpLsSub": "サブディレクトリのファイル一覧",
    "helpCat": "ファイルの内容を表示",
    "helpHelp": "このヘルプを表示",
    "helpEsc": "生成を中断",
    "helpCtrlC": "中断 / 終了",
    "noModels": "利用可能なモデルがありません",
    "availableModels": "利用可能なモデル：",
    "currentModel": "← 現在",
    "selectModel": "番号を入力して選択: ",
    "modelSwitched": "{name} に切り替えました",
    "cancelled": "キャンセル",
    "currentModelLabel": "現在のモデル:",
    "noModel": "(なし)",
    "currentConfig": "現在の設定",
    "notSet": "(未設定)",
    "sessionCreated": "新しいセッションを作成しました",
    "noSessions": "セッションがありません",
    "sessionList": "セッション一覧",
    "untitled": "(無題)",
    "sessionUsage": "使い方: /session new | /session list",
    "agentList": "Agent 一覧",
    "agentSwitched": "{name} に切り替えました",
    "currentAgent": "現在の Agent:",
    "jianTitle": "付箋",
    "jianEmpty": "このディレクトリに付箋はありません",
    "dirEmpty": "(空)",
    "catUsage": "使い方: /cat <ファイルパス>",
    "catFailed": "読み込めません: {status}",
    "unknownCommand": "不明なコマンド: /{cmd}  /help でヘルプを表示",
    "inputHelp": "/help でコマンド一覧を表示"
  },
  "sandbox": {
    "blocked": "[セキュリティ] {reason}\n\nこの操作は HanaAgent のサンドボックスセキュリティポリシーによりブロックされました。これはコマンドがパスまたは権限の境界を越えたことを示します。まず現在のワークスペース、具体的なパス表記、対象ファイルが許可されたワークスペースまたは session パスに属するべきかを確認してください。ブロックされたパスと理由をユーザーに説明し、サンドボックス設定の変更はユーザーが明示的に決めた場合にだけ相談してください。",
    "noSudo": "sudo の使用は禁止されています",
    "noSu": "su によるユーザー切り替えは禁止されています",
    "noChmod": "ファイル権限の変更は禁止されています",
    "noChown": "ファイル所有者の変更は禁止されています",
    "noDelRecursive": "再帰的ファイル削除 (del /s) は禁止されています",
    "noRmdirRecursive": "再帰的ディレクトリ削除 (rmdir /s) は禁止されています",
    "noRegEdit": "レジストリの変更は禁止されています",
    "noTakeown": "ファイル所有権の奪取は禁止されています",
    "noIcacls": "ファイル ACL 権限の変更は禁止されています",
    "noNetUser": "ユーザー/グループ管理操作は禁止されています",
    "noSchtasks": "スケジュールタスクの作成は禁止されています",
    "noScService": "システムサービスの操作は禁止されています",
    "noPsExecutionBypass": "PowerShell 実行ポリシーのバイパスは禁止されています",
    "noFormat": "ディスクのフォーマットは禁止されています",
    "noBcdedit": "ブート構成の変更は禁止されています",
    "noWmic": "WMI コマンドは禁止されています",
    "restrictedPath": "コマンドが制限されたパスにアクセスしました：{path}",
    "writeRestricted": "[セキュリティ] ファイルシステムの書き込みは許可されたワークスペースと session パスに制限されています。ユーザーにサンドボックス設定の変更を尋ねる前に、現在のワークスペースとパス表記を確認してください。",
    "osRequired": "[sandbox] standard モードには OS レベルのサンドボックスが必要ですが、現在のプラットフォームはサポートしていません（{platform}）。sandbox-exec (macOS) または bubblewrap (Linux) をインストールするか、full-access モードに切り替えてください。",
    "opRead": "読み取り",
    "opWrite": "書き込み",
    "opDelete": "削除",
    "denied": "{op}が拒否されました：{path}（アクセスレベル: {level}）"
  },
  "error.llmTimeout": "Model request timed out",
  "error.llmRateLimited": "Model rate limited, please wait",
  "error.llmEmptyResponse": "Model returned empty response",
  "error.llmAuthFailed": "Model authentication failed",
  "error.llmSlowResponse": "Model is responding slowly, please wait",
  "error.fsPermission": "File permission denied",
  "error.fsNotFound": "File not found",
  "error.fsCopyFailed": "File copy failed",
  "error.wsDisconnected": "Connection lost",
  "error.fetchTimeout": "Request timed out",
  "error.fetchServerError": "Server error",
  "error.ipcFailed": "Internal communication error",
  "error.renderCrash": "Display error",
  "error.configParse": "Configuration file corrupted",
  "error.bridgeSendFailed": "Failed to send message to platform",
  "error.skillSyncFailed": "Skill sync failed",
  "error.memoryCompileFailed": "Memory compilation failed",
  "error.dbError": "Database error",
  "error.serverAuthFailed": "Authentication failed",
  "error.unknown": "An unexpected error occurred",
  "error.regionUnavailable": "This area is temporarily unavailable",
  "status.reconnecting": "Reconnecting...",
  "status.disconnected": "Connection lost",
  "status.reconnect": "Reconnect",
  "action.retry": "Retry",
  "mobile.update.available": "Hana の新しいバージョンがあります",
  "mobile.update.reload": "更新",
  "subagentAbort": "停止",
  "subagentAborted": "停止済み",
  "preview.toggle": "プレビューパネル",
  "preview.markdownPreview": "プレビュー",
  "preview.exitMarkdownPreview": "編集に戻る",
  "preview.markdownEditorStatus": "選択 {selected} 文字 · 合計 {total} 文字",
  "preview.markdownAttachmentInsertFailed": "添付ファイルの挿入に失敗しました"
}
