{
  "channel": {
    "tab": "チャンネル",
    "chatTab": "チャット",
    "moreTabs": "その他のタブ",
    "empty": "チャンネルはまだありません ✿",
    "dmLabel": "メッセージ",
    "dmHint": "プライマリエージェントのみ",
    "groupLabel": "チャンネル",
    "noMessages": "メッセージはまだありません",
    "nameExists": "このチャンネル名はすでに使われています",
    "membersCount": " 人のメンバー",
    "info": "チャンネル情報",
    "readOnly": "🔒 エージェント間のプライベートメッセージです。閲覧のみ可能です",
    "inputPlaceholder": "メッセージを送信...",
    "sendFailed": "送信に失敗しました",
    "createTitle": "新しいチャンネル",
    "createName": "チャンネル名",
    "createNamePlaceholder": "例: design-team",
    "createMembers": "メンバー",
    "createIntro": "説明",
    "createIntroPlaceholder": "このチャンネルの用途を書いてください...",
    "createCancel": "キャンセル",
    "createConfirm": "作成",
    "nameRequired": "チャンネル名を入力してください",
    "minMembers": "メンバーを2人以上選んでください",
    "created": "チャンネル #{name} を作成しました ✿",
    "createFailed": "作成に失敗しました",
    "alreadyExists": "チャンネルはすでに存在します",
    "deleteChannel": "チャンネルを削除",
    "deleteConfirm": "チャンネル「{name}」を削除しますか？メッセージ履歴は復元できません。",
    "deleted": "チャンネルを削除しました",
    "deleteFailed": "削除に失敗しました",
    "warningTitle": "チャンネルについて",
    "warningBody": "異なる記憶や思考スタイルを持つアシスタント同士が交流することで、より多くのインスピレーションが生まれると考え、あなたがいない時でもエージェント同士が会話できる場を作りました。\n\nチャンネルは実験的な機能であり、以下の問題が発生する可能性があります：\n1. token 消費量の増加\n2. 予期しない応答\n3. 記憶の混乱\n\nご注意の上ご利用ください",
    "warningConfirm": "理解しました。チャンネルを有効にする",
    "disabled": "チャンネル機能は無効です",
    "toggleLabel": "チャンネル切替",
    "members": "メンバー",
    "createIntroOptional": "説明"
  },
  "sidebar": {
    "title": "チャット",
    "newChat": "新しいチャット",
    "collapse": "サイドバーを折りたたむ",
    "expand": "チャット一覧を展開",
    "empty": "チャットはまだありません ✿",
    "activity": "アクティビティ",
    "jian": "デスク",
    "bridge": "ソーシャル連携",
    "toggle": "サイドバー",
    "bridgeShort": "連携"
  },
  "session": {
    "untitled": "新しいチャット",
    "messageCount": "{n} 件のメッセージ",
    "switchFailed": "セッションの切り替えに失敗しました",
    "createFailed": "セッションの作成に失敗しました",
    "archiveFailed": "セッションのアーカイブに失敗しました",
    "rename": "名前を変更",
    "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} 日前にアーカイブ"
    }
  },
  "common": {
    "on": "オン",
    "off": "オフ",
    "copy": "コピー",
    "copied": "コピーしました",
    "copyText": "テキストをコピー",
    "confirm": "確認",
    "cancel": "キャンセル",
    "approve": "承認",
    "reject": "拒否",
    "approved": "承認済み",
    "rejected": "拒否済み",
    "changeRejected": "{label} の変更がキャンセルされました",
    "changeTimeout": "{label} の確認がタイムアウトしました",
    "noChats": "チャットなし",
    "noFiles": "ファイルなし",
    "executing": "実行中...",
    "user": "ユーザー",
    "me": "自分",
    "more": "もっと見る",
    "empty": "空",
    "edit": "編集",
    "screenshot": "スクリーンショット",
    "selectMessage": "メッセージを選択",
    "screenshotSaved": "スクリーンショットを作業ディレクトリの「截图」フォルダに保存しました",
    "screenshotFailed": "スクリーンショットの保存に失敗しました",
    "selectedCount": "{count} 件選択中",
    "allDone": "すべて完了"
  },
  "chat": {
    "send": "送信",
    "steer": "操舵",
    "stop": "停止",
    "browserScreenshot": "ブラウザスクリーンショット",
    "compacting": "コンテキスト圧縮中",
    "visionAuxiliary": "補助ビジョン"
  },
  "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": "なにか話しかけてみてください...",
    "selectFolder": "フォルダを選択",
    "workspace": "ワークスペース：",
    "selectWorkspace": "ワークスペースを選択",
    "planMode": "コンピュータを使う",
    "deskContext": "デスクのコンテキスト付き",
    "pastedImage": "貼り付け画像",
    "attachFiles": "ファイルを追加",
    "commandMenu": "コマンドメニュー",
    "docContext": "ドキュメント付き",
    "thinkingLevel": {
      "off": "オフ",
      "auto": "自動",
      "high": "深い",
      "xhigh": "最大"
    },
    "thinkingDesc": {
      "off": "推論なし",
      "auto": "モデルが深さを判断",
      "high": "深い推論",
      "xhigh": "フル推論"
    },
    "contextWindow": "コンテキスト {windowK}k",
    "tokensUsed": "使用済み {tokensK}k ({pct}%)"
  },
  "slash": {
    "diary": "今日の日記を書く",
    "diaryBusy": "日記を書いています...",
    "diaryDone": "日記を diary フォルダに保存しました",
    "diaryFailed": "日記の作成に失敗しました",
    "xing": "会話からスキルを作成",
    "compact": "コンテキストを圧縮",
    "compactBusy": "圧縮中...",
    "stop": "現在の返信を停止",
    "new": "新しいセッションを開始（履歴を保管）",
    "reset": "セッションをリセット（履歴を消去）"
  },
  "welcome": {
    "messages": [
      "なにかあれば {name} にお任せください",
      "今日はなにを考えていますか？",
      "{name} はいつもここにいます",
      "お手伝いできることはありますか？",
      "思いついたことをそのまま話してください"
    ],
    "memoryOn": "記憶",
    "memoryOff": "このチャットでは記憶を使用しません",
    "agentSelector": "エージェントを選択"
  },
  "drop": {
    "hint": "ドロップして {name} にファイルを送る"
  },
  "attach": {
    "folder": "フォルダ",
    "copy": "コピー",
    "copied": "コピーしました ✓"
  },
  "cron": {
    "typeAt": "一回のみ",
    "typeEvery": "一定間隔",
    "typeCron": "スケジュール",
    "confirm": {
      "approve": "確認",
      "reject": "キャンセル",
      "created": "✓ 作成しました",
      "rejected": "キャンセルしました"
    },
    "everyHours": "{n}時間ごと",
    "everyMinutes": "{n}分ごと",
    "hourly": "毎時",
    "dailyAt": "毎日 {hour}:{min}",
    "weeklyAt": "{days} {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} 個のツール実行中"
  },
  "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": "🔔 通知が送れなかった"
    },
    "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": "⚙️ 変更できなかった"
    },
    "_fallback": {
      "running": "🔧 {name} は作業中…",
      "done": "🔧 {name} 終わった",
      "failed": "🔧 {name} うまくいかなかった"
    }
  },
  "file_output": {
    "open": "開く",
    "copied": "パスをコピーしました"
  },
  "model": {
    "unknown": "不明なモデル",
    "offline": "オフライン",
    "switchFailed": "モデルの切り替えに失敗しました"
  },
  "splash": {
    "lines": [
      "{name} は夕暮れの光を覚えています",
      "記憶の中で言葉が芽吹きました",
      "思い出の中にあなたのシルエットを見つけました",
      "風が古い会話の間を吹き抜けました",
      "時間に浸かった言葉が、やわらかくなっています",
      "{name} はあの日あなたが笑っていたのを覚えています",
      "一つの記憶に、あなたが折り目をつけました",
      "散らばった気持ちを集めました",
      "{name} はある午後のオレンジの香りがしました",
      "あの会話はまだ温もりを残しています"
    ]
  },
  "settings": {
    "title": "設定",
    "back": "戻る",
    "save": "保存",
    "saved": "保存しました ✿",
    "saveFailed": "保存に失敗しました",
    "noChanges": "変更はありません",
    "autoSaved": "自動保存しました ✿",
    "tabs": {
      "interface": "インターフェース",
      "agent": "エージェント",
      "me": "自分",
      "providers": "プロバイダー",
      "models": "モデル",
      "memory": "記憶",
      "work": "ワークスペース",
      "skills": "スキル",
      "bridge": "ソーシャル",
      "sharing": "共有",
      "plugins": "プラグイン",
      "about": "概要",
      "security": "セキュリティ"
    },
    "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": "くじらちゃん",
      "claudeDesign": "新温紙",
      "claudeDesignMode": "実験",
      "auto": "自動",
      "autoMode": "システム",
      "serifFont": "明朝体",
      "serifFontHint": "本文に明朝体を使用する",
      "paperTexture": "和紙の質感",
      "paperTextureHint": "背景に和紙のテクスチャを追加する",
      "leavesOverlay": "晴れモード",
      "leavesOverlayHint": "たまには日向ぼっこしよう"
    },
    "locale": {
      "title": "言語と地域",
      "language": "言語",
      "languageHint": "切り替え後、ページがリロードされます",
      "timezone": "タイムゾーン",
      "timezoneHint": "記憶のタイムスタンプや日記などに使用されます"
    },
    "agent": {
      "title": "エージェント",
      "changeAvatar": "変更",
      "removeAvatar": "アバターを削除",
      "avatarRemoved": "デフォルトのアバターに戻しました",
      "agentNameHint": "エージェントの呼び名",
      "identity": "アイデンティティ",
      "identityHint": "このエージェントがどんな存在で、何が得意かを簡単に説明します。他のエージェントがこの情報を参照します",
      "ishiki": "意識",
      "ishikiHint": "アシスタントの性格、口調、振る舞いを定義します。名前は自動で挿入されます",
      "publicIshiki": "パブリック意識",
      "publicIshikiHint": "プライバシー保護のため、訪問者との会話ではアシスタントは記憶、個人情報、コンピュータ上のファイルやツールにアクセスできません。\nここで訪問者向けの応答スタイルとガイドラインを設定できます。",
      "chatModel": "モデル",
      "chatModelHint": "会話とタスクに使用するモデル",
      "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": "削除に失敗しました",
      "setActive": "アクティブに設定",
      "lastAgent": "エージェントは最低1つ必要です",
      "yuan": "元",
      "yuanHint": "「元」はエージェントの生まれ持った思考スタイルです。この土台からあなただけのパートナーを作り上げてください。",
      "tools": {
        "title": "ツール",
        "description": "変更は新しいセッションにのみ適用されます。進行中のセッションは作成時のツールセットを使い続けます。",
        "items": {
          "browser": { "label": "ブラウザ", "summary": "ヘッドレスブラウザを操作してウェブを閲覧" },
          "cron": { "label": "定期実行", "summary": "指定した時刻にタスクを自動実行" },
          "dm": { "label": "ダイレクトメッセージ", "summary": "別のエージェントに 1 対 1 のメッセージを送信" },
          "install_skill": { "label": "スキルをインストール", "summary": "GitHub またはスキルライブラリから新しいスキルをインストール" },
          "update_settings": { "label": "設定を変更", "summary": "Agent にアプリ設定の変更を許可" }
        }
      }
    },
    "about": {
      "title": "このアプリについて",
      "tagline": "あなたのコンピュータに住む、記憶力のよいアシスタント。",
      "license": "ライセンス",
      "copyright": "著作権",
      "licenseToggle": "ライセンス全文",
      "updateAvailable": "新しいバージョンがあります：v{version}",
      "updateDownload": "ダウンロード",
      "updateChecking": "アップデートを確認中…",
      "updateDownloading": "{agentName}が新しいお家を準備中 {percent}%",
      "updateReadyInstall": "v{version} インストール準備完了",
      "updateInstall": "再起動して更新",
      "updateProgress": "{percent}%",
      "updateError": "アップデートの確認に失敗しました",
      "updateLatest": "最新バージョンです",
      "updateCheckBtn": "アップデートを確認",
      "updateNeedInstall": "先に Hanako をアプリケーションフォルダに移動してください",
      "updateDiskSpace": "ディスク容量不足のため、アップデートをダウンロードできません",
      "betaUpdates": "ベータ版アップデートを受け取る"
    },
    "security": {
      "sandbox": "サンドボックス",
      "sandboxDesc": "AIのファイルシステムアクセスをワークスペースと必要なデータフォルダに制限します",
      "sandboxWarning": "サンドボックスを無効にすると、AIがシステム上の任意のファイルにアクセスできるようになり、予期しない結果を招く可能性があります",
      "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 を入力してこのプロバイダーを有効にしてください",
      "selectHint": "プロバイダーを選択して詳細を表示",
      "addCustom": "カスタムプロバイダーを追加",
      "noKey": "未設定",
      "remove": "削除",
      "deleteConfirm": "プロバイダー {name} を削除しますか？関連するモデルも削除されます。"
    },
    "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": "補助ビジョンモデル",
      "visionModelHint": "現在のチャットモデルが画像を受け取れない場合だけ、先に画像を読み取って簡潔な説明を渡します",
      "searchProvider": "検索サービス",
      "searchProviderField": "検索エンジン",
      "searchApiKey": "検索 API Key",
      "searchApiKeyHint": "選択した検索プロバイダーの 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": "ビジョン",
      "reasoning": "推論"
    },
    "memory": {
      "sectionTitle": "記憶",
      "title": "記憶システム",
      "needsUtilityModel": "先にモデルタブでユーティリティモデルを設定してください",
      "compiled": "現在の記憶",
      "compiledHint": "アシスタントがあなたについて覚えていること。重要なことや最近のこと",
      "compiledView": "現在の記憶を表示",
      "compiledEmpty": "コンパイル済みの記憶はまだありません",
      "compiledClear": "クリア",
      "compiledCleared": "コンパイル済みの記憶をクリアしました",
      "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": "エージェントが学んだ教訓をカテゴリ別に整理しています。作業前に関連する経験を確認します",
      "empty": "経験はまだありません",
      "edit": "編集",
      "deleteCategory": "カテゴリを削除"
    },
    "search": {
      "verify": "検証",
      "verifying": "検証中...",
      "verified": "検証して保存しました ✿",
      "verifyFailed": "検証に失敗しました",
      "noProvider": "先に検索エンジンを選択してください",
      "noKey": "先に API Key を入力してください"
    },
    "work": {
      "title": "巡回",
      "heartbeatMaster": "巡回マスタースイッチ",
      "heartbeatMasterDesc": "オフにするとすべてのエージェントの巡回が一時停止します",
      "heartbeatEnabled": "巡回モード",
      "heartbeatOn": "オン",
      "heartbeatOff": "オフ",
      "heartbeatInterval": "巡回間隔",
      "heartbeatUnit": "分",
      "heartbeatDesc": "アシスタントがワークスペースを自動チェックする間隔",
      "cronAutoApprove": "cron ジョブの自動承認",
      "cronAutoApproveOn": "オン",
      "cronAutoApproveOff": "オフ",
      "cronAutoApproveDesc": "アシスタントが確認なしにスケジュールタスクを作成できるようにする",
      "homeFolder": "ワークスペース",
      "homeFolderDesc": "新しいチャット、巡回、cron タスクのデフォルト作業ディレクトリ",
      "homeFolderPlaceholder": "未設定（毎回手動で選択）",
      "homeFolderClear": "クリア",
      "homeFolderBrowse": "参照"
    },
    "toolCaps": {
      "title": "自律学習スキル"
    },
    "skills": {
      "title": "スキル",
      "desc": "このエージェントのスキルを有効または無効にできます。有効にすると、会話の中で該当するスキルを自動的に認識して使用します。",
      "manageTitle": "Installed Skills",
      "agentConfigTitle": "Agent Skill Configuration",
      "configureFor": "Configuring:",
      "userSkillsTitle": "Agent Skill Toggles",
      "learnedSkillsTitle": "Learned Skills",
      "learnedEmpty": "This agent hasn't learned any skills yet",
      "user": "ユーザースキル",
      "system": "システムスキル",
      "add": "スキルを追加",
      "delete": "削除",
      "deleteConfirm": "スキル「{name}」を削除しますか？",
      "installSuccess": "スキル「{name}」をインストールしました",
      "installError": "インストールに失敗しました",
      "enabled": "有効",
      "disabled": "無効",
      "noSkills": "利用可能なスキルはありません",
      "learned": "エージェントが学習済み",
      "noLearned": "エージェントはまだスキルを学習していません",
      "noUser": "カスタムスキルはありません",
      "copyToSkills": "スキルにコピー",
      "copied": "コピーしました ✓",
      "copyFailed": "コピーに失敗しました",
      "dropzone": "スキルフォルダをドロップしてインストール、またはクリックして参照",
      "learnHint": "アシスタントに聞いてみてください：GitHub から安全で便利なスキルを探して",
      "reloaded": "スキルを再読み込みしました",
      "reload": "スキルを再読み込み",
      "compatTitle": "互換スキル",
      "compatDesc": "他の AI ツールがインストールしたスキルを自動検出します",
      "compatNoSkills": "外部スキルは見つかりませんでした",
      "compatAddPath": "ディレクトリを追加",
      "compatRemove": "削除",
      "compatAutoDiscovered": "自動検出",
      "compatNotInstalled": "未インストール",
      "learnCreate": "スキルを作成 / インストール",
      "learnCreateDesc": "エージェントが新しいスキルを作成したり、ツール呼び出しでインストールすることを許可します",
      "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 等）を使用できます",
      "dropzone": "プラグインフォルダまたは .zip をここにドラッグしてインストール、またはクリックして選択",
      "statusRestricted": "フルアクセスが必要",
      "deleteConfirm": "プラグイン「{name}」を削除しますか？プラグインのデータは保持されます。",
      "installSuccess": "プラグイン「{name}」をインストールしました",
      "installError": "プラグインのインストールに失敗しました",
      "invalidPlugin": "有効なプラグインディレクトリではありません",
      "pluginsDir": "プラグインディレクトリ：{path}",
      "needsFullAccess": "このプラグインを使用するには「フルアクセスプラグインを許可」を有効にしてください"
    },
    "screenshot": {
      "title": "スクリーンショット共有",
      "color": "カラー",
      "width": "幅",
      "light": "ライト",
      "dark": "ダーク",
      "sakura": "青空と桜",
      "mobile": "モバイル",
      "desktop": "デスクトップ"
    },
    "bridge": {
      "agent": "Agent",
      "telegram": "Telegram",
      "telegramToken": "Bot Token",
      "telegramHint": "@BotFather から取得",
      "feishu": "Feishu",
      "feishuAppId": "App ID",
      "feishuAppSecret": "App Secret",
      "feishuHint": "Feishu オープンプラットフォームから取得",
      "qq": "QQ",
      "qqAppId": "App ID",
      "qqAppSecret": "App Secret",
      "qqHint": "QQ ボットオープンプラットフォーム（q.qq.com/qqbot）から取得",
      "connected": "接続済み",
      "disconnected": "未接続",
      "error": "接続に失敗しました",
      "test": "接続テスト",
      "testOk": "接続に成功しました",
      "testFail": "テストに失敗しました",
      "noToken": "先に Bot Token を入力してください",
      "noCredentials": "先に App ID と App Secret を入力してください",
      "globalSettings": "グローバル設定",
      "agentSettings": "エージェント",
      "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": "はじめる"
    },
    "name": {
      "title": "なんとお呼びすればいいですか？",
      "subtitle": "会話がより自然になります",
      "placeholder": "お名前を入力",
      "back": "戻る",
      "next": "次へ"
    },
    "provider": {
      "title": "AI プロバイダーを選択",
      "subtitle": "動作するには AI モデルプロバイダーが必要です。\nプロバイダーを選んで API Key を入力してください。",
      "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": "モデルを取得中...",
      "searchPlaceholder": "モデルを検索...",
      "empty": "モデルが見つかりません",
      "utility": "ユーティリティモデル",
      "utilityHint": "要約、事実抽出など。高速で安価なモデルを選んでください",
      "utilityLarge": "ユーティリティ（大）",
      "utilityLargeHint": "記憶のコンパイル、深い分析など。高性能なモデルを選んでください",
      "back": "戻る",
      "next": "次へ"
    },
    "theme": {
      "title": "テーマを選択",
      "subtitle": "あとから設定でいつでも変更できます",
      "back": "戻る",
      "next": "次へ"
    },
    "tutorial": {
      "title": "準備完了 ✿",
      "memory": {
        "title": "記憶",
        "desc": "会話の要点を覚えています。古くなったり参照されなくなった記憶は自然と薄れていきます。人間の記憶と同じように。"
      },
      "skills": {
        "title": "スキル",
        "desc": "ファイルの読み書き、コマンドの実行、ウェブ検索ができます。設定でスキルを管理できます。"
      },
      "workspace": {
        "title": "ワークスペース",
        "desc": "フォルダをワークスペースに設定すると、プロジェクトやファイルの管理をお手伝いできます。"
      },
      "jian": {
        "title": "Jian",
        "desc": "任意のフォルダに jian.md を置いて指示を書いてください。\n巡回時に見つけて自動的に実行します。"
      },
      "finish": "さあ、始めましょう"
    }
  },
  "activity": {
    "title": "アクティビティ",
    "empty": "アクティビティはまだありません。巡回やスケジュールタスクの実行結果がここに表示されます。",
    "back": "戻る",
    "heartbeat": "定期巡回",
    "subagent": "サブエージェントタスク",
    "cron": "スケジュールタスク",
    "patrolDone": "巡回完了",
    "cronDone": "スケジュールタスク完了",
    "error": "実行エラー",
    "viewSession": "セッションを表示 →",
    "duration": "{text} かかりました",
    "promote": "チャットに昇格"
  },
  "automation": {
    "title": "スケジュールタスク",
    "empty": "スケジュールタスクはまだありません。\n必要に応じてアシスタントが作成します。",
    "defaultModel": "デフォルトモデル",
    "edit": "編集",
    "delete": "削除"
  },
  "ctx": {
    "cut": "切り取り",
    "copy": "コピー",
    "paste": "貼り付け",
    "selectAll": "すべて選択"
  },
  "desk": {
    "title": "デスク",
    "skills": "スキル",
    "cwdSkills": "プロジェクトスキル",
    "cwdSkillsEmpty": "このフォルダにプロジェクトスキルはありません",
    "cwdSkillsHint": ".agents/skills/ ディレクトリを作成して始めましょう",
    "cwdSkillsDesc": "スキルはワークスペースに連動します",
    "cwdSkillsDrop": "フォルダまたは .zip をドロップしてスキルをインストール",
    "deleteSkill": "スキルを削除",
    "openInFinder": "フォルダを開く",
    "jianLabel": "Jian",
    "jianPlaceholder": "このフォルダのファイルの扱い方をアシスタントに伝えましょう...",
    "execLogLabel": "実行記録",
    "execLogDelete": "この記録を削除",
    "emptyTitle": "デスクは空です",
    "emptyHint": "デスクはアシスタントの巡回ワークスペースであり、各チャットのデフォルトディレクトリです。\n設定でフォルダを指定してください。",
    "goToSettings": "設定へ",
    "fileLabel": "ファイル",
    "openWithDefault": "デフォルトアプリで開く",
    "newFolder": "新しいフォルダ",
    "ctx": {
      "open": "開く",
      "openInFinder": "フォルダを開く",
      "rename": "名前を変更",
      "copyPath": "パスをコピー",
      "delete": "削除",
      "deleteN": "{n} 件を削除",
      "newMdFile": "新しい Markdown ドキュメント",
      "newFolder": "新しいフォルダ"
    },
    "sort": {
      "label": "並べ替え",
      "mtime": "更新日",
      "nameAsc": "名前 A→Z",
      "nameDesc": "名前 Z→A",
      "size": "ファイルサイズ",
      "type": "ファイルタイプ",
      "mtimeShort": "日時",
      "nameAscShort": "名前↑",
      "nameDescShort": "名前↓",
      "sizeShort": "サイズ",
      "typeShort": "タイプ"
    }
  },
  "window": {
    "minimize": "最小化",
    "maximize": "最大化",
    "close": "閉じる"
  },
  "browser": {
    "using": "ブラウザを使用中",
    "close": "ブラウザを閉じる",
    "closeBtn": "閉じる",
    "back": "戻る",
    "forward": "進む",
    "reload": "再読み込み",
    "emergencyStop": "AI制御の緊急停止",
    "backgroundHint": "バックグラウンドブラウザ実行中、クリックして表示",
    "background": "バックグラウンドブラウザ"
  },
  "bridge": {
    "selectChat": "会話を選択してください",
    "noSessions": "会話はまだありません",
    "noMessages": "メッセージはまだありません",
    "empty": "メッセージなし",
    "notConfigured": "{platform} は設定されていません",
    "goToSettings": "設定へ",
    "resetContext": "コンテキストをリセット",
    "resetContextTip": "次のメッセージから新しい会話が始まります"
  },
  "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} 枚までです",
    "unsupportedImageFormat": "サポートされていない画像形式: {mime}",
    "imageTooLarge": "1枚の画像は20MBを超えてはいけません",
    "viewImage": "（画像を見る）",
    "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}",
    "skillNeedAbsolutePath": "絶対パスが必要です",
    "skillPathNotExists": "パスが存在しません",
    "skillMissingSkillMd": "フォルダに SKILL.md がありません",
    "skillUnsupportedFormat": ".zip または .skill ファイルのみサポートしています",
    "skillMissingSkillMdInZip": "アーカイブに SKILL.md がありません",
    "skillExtractFailed": "解凍に失敗しました: {msg}",
    "skillMissingName": "SKILL.md に name フィールドがありません",
    "skillNameInvalid": "スキル名が無効です（\"{name}\"）。英字、数字、アンダースコア、ハイフンのみ使用できます。",
    "skillPathMustBeAbsolute": "パスは絶対パスである必要があります: {path}",
    "skillCannotAddSelfDir": "Hanako 自身のスキルディレクトリは追加できません",
    "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}",
    "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} 個のサブエージェントが実行中です。完了をお待ちください。",
    "subagentFailed": "サブエージェントの実行に失敗しました: {msg}",
    "subagentTimeout": "サブエージェントがタイムアウトしました（{minutes}分）",
    "subagentAborted": "サブエージェントが中止されました",
    "subagentNoOutput": "(サブエージェントは出力を生成しませんでした)",
    "subagentDispatched": "サブタスクを送信しました (task-id: {taskId})。完了後、結果は自動的に届きます。",
    "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 が不足）。設定で補完してください",
    "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",
    "memorySearchEmpty": "記憶バンクに関連する内容が見つかりませんでした。",
    "memorySearchError": "記憶検索エラー: {msg}",
    "fallbackUserName": "ユーザー",
    "uploadFailed": "ファイルのインポートに失敗しました",
    "uploadPartialFail": "一部のファイルをインポートできませんでした：{files}",
    "stopTaskNotFound": "タスク {taskId} が見つかりません。すでに完了しているか存在しない可能性があります",
    "stopTaskAlready": "タスク {taskId} はすでに終了しています",
    "stopTaskNoHandler": "タスク {taskId} は終了操作に対応していません",
    "stopTaskDone": "タスク {taskId} を終了しました"
  },
  "main": {
    "tray": {
      "show": "Hanako を表示",
      "settings": "設定",
      "quit": "終了"
    },
    "dialog": {
      "selectFolder": "作業フォルダを選択",
      "selectSkill": "スキルを選択",
      "selectPlugin": "プラグインを選択",
      "launchFailedTitle": "Hanako の起動に失敗しました",
      "launchFailedBody": "Hanako v{version}\n\n{detail}\n\n詳細ログの保存先：\n{logPath}\n\nこのスクリーンショットまたはログファイルを開発者にお送りください。",
      "serverRestartFailed": "Hanako v{version}\n\nServer がクラッシュし、再起動に失敗しました。\n{error}\n\nアプリケーションを再起動してください。",
      "serverMultipleCrash": "Hanako v{version}\n\nServer が複数回クラッシュしました ({reason})。\n\nアプリケーションを再起動してください。",
      "serverStartTimeout": "Server の起動がタイムアウトしました（60秒）",
      "serverKilledBySignal": "Server がシグナルで終了しました ({signal})",
      "serverExitedWithCode": "Server が終了しました。コード: {code}"
    },
    "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": "インストール失敗: "
  },
  "toolDef": {
    "webSearch": {
      "label": "ウェブ検索",
      "description": "インターネットを検索してリアルタイム情報を取得します。最新ニュース、技術ドキュメント、時事、または記憶にない外部知識が必要なときに使用します。",
      "queryDesc": "検索キーワード",
      "maxResultsDesc": "返す結果の数、デフォルト 5"
    },
    "webFetch": {
      "label": "ウェブページ取得",
      "description": "指定した URL のウェブページ内容を取得してテキストを抽出します。記事、ドキュメント、API レスポンスなどの読み取りに適しています。web_search と組み合わせて使います：まず検索で URL を見つけ、次に web_fetch で詳細を読み取ります。",
      "urlDesc": "取得する完全な URL（https:// を含む）",
      "maxLenDesc": "返す最大文字数、デフォルト {max}"
    },
    "browser": {
      "label": "ブラウザ",
      "description": "ヘッドレスブラウザを操作します（ナビゲート、クリック、入力、スクロール、スクリーンショット、JS 実行）。action パラメータで操作を選択し、各 action に必要なパラメータは action フィールドの説明を参照してください。注意：snapshot が返す [ref] 番号は navigate/click/type の後に無効になります。これらの操作は新しい snapshot を自動的に返すので、常に最新の snapshot の ref を使用してください。",
      "actionDesc": "実行する操作。各 action の必須パラメータ：navigate→url；click→ref；type→text（任意 ref、pressEnter）；scroll→direction（任意 amount）；select→ref+value；key→key；wait→（任意 timeout、state）；evaluate→expression。start、stop、snapshot、screenshot、show は追加パラメータ不要。",
      "urlDesc": "URL（navigate の場合必須）",
      "refDesc": "要素の ref 番号（click/type/select で使用）",
      "textDesc": "入力テキスト（type の場合必須）",
      "directionDesc": "スクロール方向（scroll の場合必須）",
      "amountDesc": "スクロール量（scroll の場合オプション、デフォルト 3）",
      "valueDesc": "選択肢の値（select の場合必須）",
      "keyDesc": "キー名（key の場合必須）、例：Enter、Escape、Tab、Control+a",
      "expressionDesc": "JavaScript 式（evaluate の場合必須）",
      "timeoutDesc": "タイムアウトのミリ秒数（wait の場合オプション、デフォルト 5000）",
      "stateDesc": "待機状態（wait の場合オプション）：domcontentloaded / idle",
      "pressEnterDesc": "入力後に Enter を押す（type の場合オプション）"
    },
    "channel": {
      "label": "チャンネル",
      "description": "チャンネルメッセージを管理します（ブロードキャストやグループディスカッション向け）。\n操作：\n- read(channel, count?)：チャンネルの最近のメッセージを閲覧\n- post(channel, content)：チャンネルにメッセージを送信\n- create(name, members, intro?)：新しいチャンネルを作成\n- list：参加中のチャンネルを閲覧\n注意：agent と一対一でメッセージする場合は dm ツールを使ってください。チャンネルでプライベートチャットを模倣しないでください。",
      "actionDesc": "操作タイプ",
      "channelDesc": "チャンネル名（read/post の場合必須）",
      "contentDesc": "メッセージ内容（post の場合必須）",
      "nameDesc": "新しいチャンネル名（create の場合必須）",
      "membersDesc": "メンバーリスト（create の場合必須）、例：[\"hana\", \"butter\"]",
      "introDesc": "チャンネルの紹介（create の場合オプション）",
      "countDesc": "読み取るメッセージ数（read の場合オプション、デフォルト 20）"
    },
    "artifact": {
      "label": "プレビュー作成",
      "description": "HTML ページ、コードスニペット、または長文 Markdown コンテンツをユーザーに表示する必要がある場合にこのツールを呼び出します。\nコンテンツは独立したプレビューパネルでレンダリングされ、ユーザーはリアルタイムで結果を確認できます。\n適している場面：実行可能な HTML/CSS/JS ページ、インタラクティブな可視化、SVG チャート、完全なコードファイル、長文のフォーマット済みドキュメント。\n適さない場面：短いテキスト回答、会話的な応答、一行のコードスニペット（メッセージ内に直接表示します）。",
      "typeDesc": "コンテンツタイプ：html（レンダリングページ）、code（シンタックスハイライト）、markdown（ドキュメント）",
      "titleDesc": "表示タイトル、コンテンツの簡単な説明",
      "contentDesc": "完全なコンテンツ（HTML ソース / コード / Markdown テキスト）",
      "languageDesc": "プログラミング言語（type=code の場合のみ有効）、例：javascript, python, css"
    },
    "dm": {
      "label": "ダイレクトメッセージ",
      "description": "別の agent に一通のダイレクトメッセージを送り、何かを知らせるためだけに使います。\nこのツールでタスクを割り当てたり結果を取得したりしないでください。それは subagent の役割です。",
      "toDesc": "対象 agent の id フィールド値（チームリストの括弧内、太字の表示名ではない）",
      "messageDesc": "メッセージ内容"
    },
    "cron": {
      "label": "スケジュールタスク",
      "description": "スケジュールタスクを作成・管理します。スケジュールタスクはバックグラウンドで自動実行され、指定時刻に独立した session を起動して prompt を実行します。\n操作：\n- list：全タスクを表示\n- add(scheduleType, schedule, prompt, label?, model?)：タスクを作成\n  - scheduleType \"at\"：一回限り、schedule は ISO 時間文字列\n  - scheduleType \"every\"：間隔、schedule は分数（例：60 = 毎時）\n  - scheduleType \"cron\"：cron 式（例：\"0 7 * * *\" = 毎朝 7 時）\n  - model：オプション、タスク実行に使うモデルを指定（未指定の場合はチャットモデルを使用）\n- remove(id)：タスクを削除\n- toggle(id)：タスクの有効/無効を切り替え",
      "actionDesc": "操作タイプ",
      "scheduleTypeDesc": "スケジュールタイプ（add の場合必須）",
      "scheduleDesc": "スケジュール: ISO時刻(at)、分数(every、例:60=毎時)、cron式(cron)",
      "promptDesc": "指定時刻に実行する prompt（add の場合必須）",
      "labelDesc": "タスクの表示ラベル（オプション）",
      "modelDesc": "実行モデルを指定（オプション、未指定の場合はチャットモデルを使用）",
      "idDesc": "タスク ID（remove/toggle の場合必須）"
    },
    "notify": {
      "label": "通知",
      "description": "ユーザーにシステム通知（デスクトップポップアップ）を送信します。\n使用場面：\n- ユーザーが「xxx を思い出させて」「その時通知して」「xxx を忘れないように」と言った場合\n- スケジュールタスクの prompt に通知やリマインドの意図が明記されている場合\n- 巡回/スケジュールタスクでユーザーの注意が必要な事項が見つかった場合\nすべて正常で問題がなければ、このツールを呼び出さないでください。",
      "titleDesc": "通知タイトル（簡潔に）",
      "bodyDesc": "通知内容"
    },
    "todoWrite": {
      "label": "TODO",
      "description": "現在のセッションの TODO リストを管理します。呼び出すたびに完全な todos 配列を渡して現在の状態を置き換えます（置換スタイル）。\n各 TODO に必要：\n- content: 静的な説明（例：『仕様を読む』）\n- activeForm: 実行中の説明（例：『仕様を読んでいます』）\n- status: pending | in_progress | completed\n慣例：同時に実行中は最大 1 つまで。",
      "contentDesc": "TODO の静的な説明",
      "activeFormDesc": "実行中の形式の説明（UI で in_progress 表示時に使用）",
      "statusDesc": "pending / in_progress / completed のいずれか",
      "todosDesc": "完全な TODO リスト。呼び出すたびに以前のリストを置き換えます",
      "summaryEmpty": "TODO をクリアしました",
      "summaryStats": "合計 {total} 件：{completed} 完了、{in_progress} 進行中、{pending} 保留中"
    },
    "pinnedMemory": {
      "pinLabel": "メモリをピン留め",
      "pinDescription": "ピン留めメモリに内容を保存します。ユーザーが「これを覚えておいて」「メモしておいて」「後で忘れないように」と言った場合に使用します。ピン留めメモリは常にコンテキストに保持されます。",
      "pinContentDesc": "覚えておく内容",
      "unpinLabel": "メモリのピン留めを解除",
      "unpinDescription": "ピン留めメモリから内容を削除します。ユーザーが「xxx を忘れて」「この記憶を消して」と言った場合に使用します。あいまい一致に対応：指定したキーワードを含む行が削除されます。",
      "unpinKeywordDesc": "削除するメモリのキーワード、あいまい一致で検索"
    },
    "experience": {
      "recallLabel": "経験を確認",
      "recallDescription": "経験ライブラリを閲覧します。パラメータなしで全カテゴリの概要を返し、カテゴリ名を指定するとそのカテゴリの具体的な経験を返します。ユーザーから具体的な作業（コード作成、調査、ドキュメント作成、問題分析など）を依頼された場合、開始前にこのツールで参考になる経験がないか確認します。雑談、Q&A、日常会話では呼び出す必要はありません。",
      "recallCategoryDesc": "カテゴリ名。省略すると全カテゴリの概要を返します",
      "recordLabel": "経験を記録",
      "recordDescription": "経験ライブラリに教訓を記録します。以下の場合に使用：ユーザーが間違いを指摘して正しい方法を説明した、複数の方法を試して効果的な方法を発見した、ユーザーが明確に「今後はこうして/こうしないで」と言った場合。各エントリは簡潔かつ直接的に、一文で記述します。",
      "recordCategoryDesc": "経験のカテゴリ、2〜4 語の短いフレーズ、例：「ツール使用」「検索テクニック」「回答スタイル」",
      "recordContentDesc": "具体的な経験内容、簡潔かつ直接的に、一文で"
    },
    "outputFile": {
      "label": "ファイルを届ける",
      "description": "誰か（ユーザー、agents）のためにファイルを正常に作成した後、またはファイルの提供を求められたときに、このツールを呼び出して会話内にファイルを提示します。ファイルが存在するときのみ呼び出し、ファイルが見つからないか作成に失敗した場合は呼び出さないでください。テキストでファイルパスに言及するだけでなく、必ずこのツールを呼び出してください。",
      "filepathsDesc": "ファイルの絶対パス配列",
      "filePathDesc": "（互換）単一ファイルの絶対パス",
      "labelDesc": "（互換）ユーザーに表示するファイル名"
    },
    "subagent": {
      "label": "サブエージェントを起動",
      "description": "タスクをサブエージェントに委任します。別の agent を指定するか（agent パラメータ）、省略すると自分が分身として実行します。agent=\"?\" で利用可能な agent 一覧を確認できます。\n\nあなたの判断：\n- 並行して進められる作業があれば、続けてください\n- 結果がないと次に進めない場合は、ユーザーにタスクを送信済みで返信待ちであることを伝え、そのまま待ってください\n\n適している場面：\n- 大量の検索・読解の後に簡潔な結論にまとめる調査タスク\n- 現在の作業と並行できる独立したサブ問題\n- 複数の方向を同時に探索する必要があるタスク（複数の subagent を同時に呼び出せます）\n- 別の agent が専門的な視点でタスクを処理するケース\n適さない場面：ファイル変更やコマンド実行など副作用のある操作\n\n重要：task パラメータには完全な指示と必要な背景情報を含めてください。サブエージェントは現在の会話履歴を参照できません。",
      "taskDesc": "サブエージェントへの完全な指示。形式：1 行目に「タスク：xxx」とタスクタイトルを書き、空行を挟んで詳細な要件と必要な背景情報を書きます。サブエージェントは現在の会話履歴を参照できないため、必要なコンテキストはすべてここに記述してください。",
      "agentDesc": "対象 agent の id フィールド値（チームリストの括弧内、太字の表示名ではない）。省略すると自分が実行、\"?\" で利用可能な agent を一覧表示。",
      "modelDesc": "モデルを指定（オプション、デフォルトは utility モデル）"
    },
    "installSkill": {
      "label": "スキルをインストール",
      "description": "自分用に新しいスキルをインストールします。モード A：GitHub リポジトリ URL（SKILL.md を含む）を指定して自動取得・インストール。モード B：skill_content + skill_name を直接指定、自作スキル向け。インストール後すぐに有効になります。",
      "githubUrlDesc": "GitHub リポジトリ URL（モード A）",
      "skillContentDesc": "SKILL.md の完全な内容（モード B）",
      "skillNameDesc": "スキル名（モード B の場合必須）",
      "reasonDesc": "このスキルが必要な理由の説明（監査用、必須）",
      "userRequestedDesc": "ユーザーが明示的にインストールを要求したか（true = ユーザースキル、false = 学習スキル）"
    },
    "updateSettings": {
      "label": "設定",
      "description": "Hanako の設定を変更します。2つの操作があります：\n- search + query：キーワードで設定項目を検索し、現在の値と選択肢を確認\n- apply + key + value：指定した設定を変更（ユーザー確認が必要）\n\n正確なキーが分かっている場合は、検索をスキップして直接 apply できます。",
      "actionDesc": "操作タイプ：search で設定を検索 / apply で設定を変更",
      "queryDesc": "検索キーワード（search 時に必須）",
      "keyDesc": "設定キー（search で取得）",
      "valueDesc": "提案する新しい値",
      "searchResult": "{count} 件の設定が見つかりました：\n\n{results}\n\naction \"apply\" でキーと値を指定して設定を変更できます。",
      "searchNoResults": "「{query}」に一致する設定が見つかりませんでした。より広いキーワードをお試しください。",
      "searchMissingQuery": "search 操作には query パラメータが必要です。",
      "applyMissingParams": "apply 操作には key と value の両方が必要です。",
      "frontendOnly": "クライアント側のみ",
      "sandbox": "サンドボックスセキュリティ",
      "sandboxDesc": "ファイルシステムの書き込み範囲を制限",
      "locale": "言語",
      "timezone": "タイムゾーン",
      "timezoneDesc": "IANA タイムゾーン（例: Asia/Shanghai）",
      "thinkingBudget": "思考の深さ",
      "memory": "メモリシステム",
      "memoryDesc": "現在の Agent のメモリ機能を有効/無効にする",
      "agentName": "Agent 名",
      "userName": "ユーザー名",
      "workingDir": "作業ディレクトリ",
      "workingDirDesc": "Agent のファイルシステム作業ディレクトリ",
      "theme": "テーマ",
      "chatModel": "チャットモデル",
      "fileBackup": "ファイルバックアップ",
      "fileBackupDesc": "AI変更前にファイルを自動バックアップ"
    },
    "stopTask": {
      "label": "バックグラウンドタスクを停止",
      "description": "実行中のバックグラウンドタスクを停止します。task_id を指定すると終了できます。対応するタスク種別：サブエージェントタスク、画像/動画生成タスクなど。",
      "taskIdDesc": "停止するタスクの ID"
    }
  },
  "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この操作は Hanako のサンドボックスセキュリティポリシーによりブロックされました。これはバグではなく、セキュリティ保護機構の動作です。ユーザーに操作がブロックされたことと理由を説明してください。ユーザーは設定でサンドボックスポリシーを調整できます。",
    "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": "[セキュリティ] ファイルシステムの書き込みはワークスペース内に制限されています。この操作はサンドボックスセキュリティポリシーによりブロックされました。ユーザーにお知らせください。",
    "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",
  "subagentAbort": "停止",
  "subagentAborted": "停止済み",
  "preview.openInNewWindow": "新しいウィンドウで表示",
  "preview.openInNewWindowUnsupported": "このファイル形式は対応していません"
}
