// Japanese (ja).
export default {
  'brand': 'WebBrain',

  'sp.status.disconnected': '未接続',
  'sp.status.connected': '接続済み ({model})',
  'sp.status.error': 'エラー: {msg}',
  'sp.status.failed': '接続に失敗しました',
  'sp.btn.verbose': '詳細ツールログを切り替え',
  'sp.btn.language': '言語',
  'sp.btn.settings': '設定',
  'sp.btn.clear': '新しい会話（履歴をクリア）',
  'sp.btn.send': '送信',
  'sp.btn.stop.title': 'エージェントを停止',
  'sp.btn.stop.label': '停止',

  'sp.inspection': 'WebBrain がこのページの解析を開始しました',

  'sp.greeting.html': 'こんにちは！<strong>WebBrain</strong> です。このページを読み、質問に答え、ボタンを押し、フォームに入力し、複数ステップのタスクを自動化できます。',
  'sp.greeting.hint': 'お試し:「このページを要約して」または「料金に関するリンクを全部探して」',
  'sp.help_message': 'このページで何をお手伝いしましょうか？',
  'sp.cleared_message': '会話をクリアしました。何かお手伝いできますか？',

  'sp.mode.ask': '質問',
  'sp.mode.ask.title': 'ページについて質問する — 変更は行いません',
  'sp.mode.act': '操作',
  'sp.mode.act.title': 'WebBrain にクリック・入力・操作を任せる',
  'sp.mode.act.warning': '操作モード：WebBrain があなたの代わりにページを操作します。自己責任でご利用ください。',
  'sp.mode.act.confirm': '操作モードでは WebBrain があなたの代わりにクリック・入力・スクロール・遷移を行います。\n\nログイン済みのブラウザセッション内で動くため、あなたがログインしている各サイトで、あなたと同じアクセス権を持ちます。\n\n動作を見守り、◼ ボタンでいつでも停止してください。\n\n続行しますか？',

  'sp.input.ask_placeholder': 'このページについて何でも聞いてください...',
  'sp.input.act_placeholder': 'このページで何をするか指示してください...',

  'sp.activity.thinking': '考え中...',
  'sp.activity.thinking_step': '考え中（ステップ {step}）...',
  'sp.activity.continuing': '続行中...',
  'sp.activity.stopping': '停止中...',

  'sp.copy': 'コピー',
  'sp.copied': 'コピーしました！',
  'sp.copy.code.title': 'コードをコピー',

  'sp.error_prefix': 'エラー: {msg}',
  'sp.stopped_by_user': '[ユーザーが停止]',
  'sp.stopped_by_user_html': '<em>ユーザーが停止しました。</em>',

  'sp.continue_bar': 'ステップ上限に達しました（{steps} ステップ）。続けますか？',
  'sp.continue_btn': '続ける',

  'sp.step.details': '詳細',
  'sp.step.input_label': '入力',
  'sp.step.result_label': '結果',

  'sp.api.enabled_html': '🔓 この会話で <strong>API による変更が有効</strong> になりました。エージェントは UI より API のほうが確実だと判断したとき、fetch_url と execute_js で POST/PUT/PATCH/DELETE を使えるようになります。UI 優先という基本方針は変わりません。このフラグは会話をリセットするとクリアされます。',
  'sp.api.badge_html': '<span>🔓 API による変更を許可</span>',

  'tool.read_page': 'ページを読み取り中',
  'tool.get_interactive_elements': '操作可能な要素をスキャン中',
  'tool.click': 'クリック',
  'tool.type_text': '入力',
  'tool.scroll': 'スクロール',
  'tool.navigate': '移動',
  'tool.extract_data': 'データを抽出',
  'tool.wait_for_element': '要素を待機',
  'tool.get_selection': '選択範囲を読み取り',
  'tool.execute_js': 'スクリプトを実行',
  'tool.new_tab': '新しいタブを開く',
  'tool.screenshot': 'スクリーンショットを取得',
  'tool.done': '仕上げ中',
  'tool.click.selector': '「{selector}」をクリック',
  'tool.click.index': '要素 #{index} をクリック',
  'tool.type_text.text': '「{text}」と入力',
  'tool.navigate.url': '{url} へ移動',
  'tool.new_tab.url': '{url} を開く',
  'tool.scroll.direction': '{direction} へスクロール',
  'tool.extract_data.type': '{type} を抽出',
  'tool.wait_for_element.selector': '「{selector}」を待機',

  'st.title': 'WebBrain 設定',
  'st.subtitle': 'LLM プロバイダーと表示設定を構成 · v{version}',
  'st.tab.display': '表示',
  'st.tab.providers': 'プロバイダー',
  'st.tab.vision': '画像認識',
  'st.tab.profile': 'プロフィール',
  'st.tab.account': 'アカウント',

  'st.account.not_signed_in': 'サインインしていません',
  'st.account.sign_in': 'サインイン / 登録',
  'st.account.sign_out': 'サインアウト',
  'st.account.provider_name': 'WebBrain Cloud',

  'st.display.language.label': '言語',
  'st.display.language.desc': 'WebBrain プラグインのインターフェース言語です。',
  'st.display.verbose.label': '詳細モード',
  'st.display.verbose.desc': 'ツール呼び出しの詳細・引数・生の JSON 結果をすべて表示します。チャットをすっきり見せるため、デフォルトはオフです。',
  'st.display.screenshot.label': 'スクリーンショットのフォールバック',
  'st.display.screenshot.desc': 'DOM の読み取りに失敗、または内容が不十分なときにページのスクリーンショットを取得します。画像認識対応モデルが必要です。',
  'st.display.site_adapters.label': 'サイトアダプター',
  'st.display.site_adapters.desc': '主要サイト（GitHub、Gmail、Stripe、AWS など）向けに、人手で用意した短いガイダンスをエージェントの最初のメッセージに注入します。よくある行き詰まりを避けるのに役立ちます。マッチしたサイトでの最初のターンにわずかなトークンコストが加わります。',
  'st.display.auto_screenshot.label': '自動スクリーンショット',
  'st.display.auto_screenshot.desc': 'エージェントがページを操作したあとに自動でビューポートのスクリーンショットを取得し、画像認識対応モデルが変化を見られるようにします。トークン消費が増えます。画像非対応モデルでは静かに無効化されます。',
  'st.display.auto_screenshot.off': 'オフ',
  'st.display.auto_screenshot.navigation': '遷移時',
  'st.display.auto_screenshot.state_change': '状態変化時（デフォルト）',
  'st.display.auto_screenshot.every_step': '毎ステップ',
  'st.display.tracing.label': 'トレースを記録（モデル比較用）',
  'st.display.tracing.desc_html': 'すべての実行（LLM リクエスト、レスポンス、ツール呼び出し、スクリーンショット）をローカルの IndexedDB に保存し、モデルを並べて検査・比較できるようにします。別の「トレース」タブで開きます。毎ステップで書き込みが増えるためデフォルトはオフです。<a href="traces.html" target="_blank" style="color:var(--accent);">トレースページを開く →</a>',
  'st.display.allow_local_network.label': 'エージェントにローカルネットワークへのアクセスを許可',
  'st.display.allow_local_network.desc': 'エージェントの fetch_url ツールがループバック（127.0.0.1、localhost）やプライベート/RFC1918 アドレス（10.x、192.168.x、172.16–31.x）に届くようになります。ローカル開発サーバー、社内ツール、セルフホスト API に便利です。デフォルトはオフ — オフのときは prompt 注入されたページがエージェントにローカルネットワークの探索をさせることはできません。クラウドメタデータアドレス（169.254.169.254）と *.internal/*.local ホスト名はオンでもブロックされたままです。',
  'st.display.notify_sound.label': '完了サウンド',
  'st.display.notify_sound.desc': 'エージェントがタスクを完了したときにサイドパネルで短いチャイムを鳴らします。実行をキャンセルした場合は鳴りません。',
  'st.display.max_steps.label': 'エージェントの最大ステップ数',
  'st.display.max_steps.desc': '1 メッセージあたりに使えるツール呼び出しステップの上限です。値を大きくすると複雑な多段タスクが可能になりますが、トークン消費が増えることがあります。',
  'st.display.traces_link.label': 'トレース',
  'st.display.traces_link.desc': '記録された実行を並べて確認できます。トレースをオンにしているときだけ利用できます。',
  'st.display.traces_link.open': 'トレースを開く →',

  'st.providers.info.html': '<strong>llama.cpp を始める：</strong><br><code>llama-server -m your-model.gguf --port 8080</code> を実行してローカルサーバーを起動します。<br>API キーは不要 — 完全にあなたのマシン上で動きます。',
  'st.providers.save': '保存',
  'st.providers.test': '接続テスト',
  'st.providers.set_active': '有効化',
  'st.providers.active': '有効',
  'st.providers.saved': '保存しました！',
  'st.providers.testing': 'テスト中...',
  'st.providers.connected': '接続しました！モデル: {model}',
  'st.providers.unknown_model': '不明',
  'st.providers.failed': '失敗: {error}',
  'st.providers.load_models': 'モデルを読み込み',
  'st.providers.loading': '読み込み中…',
  'st.providers.models_loaded': '{count} 個のモデルを読み込みました',

  'st.provider.field.server_url': 'サーバー URL',
  'st.provider.field.api_base_url': 'API ベース URL',
  'st.provider.field.api_key': 'API キー',
  'st.provider.field.model': 'モデル',
  'st.provider.field.model_optional': 'モデル（任意）',
  'st.provider.field.supports_vision': 'モデルは画像認識（マルチモーダル）対応',
  'st.provider.field.compact_prompt': 'コンパクト prompt（小型モデル推奨、デフォルトでオン）',
  'st.provider.field.model_loaded_hint': '空欄にすると読み込み済みモデルを使用',

  'st.vision.desc': '設定すると、ページ読み取り用のスクリーンショットはこのモデルに送られ、プランニングとツール呼び出しはアクティブなプロバイダーが担当します。空欄なら画像認識もアクティブなプロバイダーを使います。OpenAI 互換エンドポイントのみ対応。',
  'st.vision.save': '保存',
  'st.vision.test': '接続テスト',
  'st.vision.clear': 'クリア',
  'st.vision.cleared': 'クリアしました。',
  'st.vision.saved': '保存しました！',
  'st.vision.testing': 'テスト中...',
  'st.vision.connected': '接続しました！モデル: {model}',
  'st.vision.failed': '失敗: {error}',
  'st.vision.fill_required': '先にベース URL とモデルを入力してください。',

  'st.profile.desc_html': '名前・仕事用メール・所属会社・低リスクな登録向けの<em>使い捨て</em>パスワードなど、エージェントがサインアップフォームを毎回聞かずに埋めるための短いプロフィールを保存します。有効にすると、下のテキストは毎回の会話でエージェントのシステム prompt に追記されます。',
  'st.profile.enabled.label': 'プロフィール自動入力を有効化',
  'st.profile.enabled.desc': 'プロフィールテキストをエージェントのシステム prompt に注入します。無効 = エージェントはこのテキストを一切見ません。',
  'st.profile.text.label': 'プロフィール本文',
  'st.profile.text.placeholder': '私は Jane Doe です。メールは jane@example.com、勤務先は Acme Inc.。低リスクな登録用のデフォルトパスワードは SomePhrase-42! です。ベルリン在住です。',
  'st.profile.save': '保存',
  'st.profile.clear': 'クリア',
  'st.profile.saved': '保存しました。',
  'st.profile.cleared': 'クリアしました。',
  'st.profile.security_html': '<strong>セキュリティ — 必ずお読みください：</strong><br><ul style="margin:6px 0 0 18px;padding:0;line-height:1.55;"><li>ここに入力したテキストはブラウザのローカルストレージに<strong>平文</strong>で保存されます。WebBrain プロジェクトへは<strong>送信されません</strong>が、設定済みの LLM プロバイダーへはシステム prompt の一部として毎ターン<strong>送信されます</strong>。</li><li>重要アカウント（Google、Apple、iCloud、銀行、社内 SSO、メインのメール）のパスワードは<strong>絶対にここに入れないでください</strong>。それらは 2FA を有効にすべきで、そもそもエージェントに渡すべきではありません。</li><li>意図された使い方は、低リスクの登録（メルマガ、無料体験、フォーラム）で使い回す<strong>使い捨てパスワード</strong>です。</li><li>このブラウザプロファイルが侵害された場合、ディスクにアクセスできる攻撃者はこのテキストを読み取れます。最小限にとどめてください。</li></ul>',

  'tr.title': 'WebBrain トレース',
  'tr.runs': '{n} 件の実行',
  'tr.run': '{n} 件の実行',
  'tr.btn.refresh': '↻ 更新',
  'tr.btn.refresh.title': '実行リストを再読み込み',
  'tr.btn.compare': '⇔ 比較',
  'tr.btn.compare.title': '比較モードに入る（2 件選択）',
  'tr.btn.compare.picking': '⇔ 比較（2 件選択）',
  'tr.btn.export': '⇩ JSON エクスポート',
  'tr.btn.export.title': '選択中の実行を JSON で書き出す',
  'tr.btn.delete': '✕ 削除',
  'tr.btn.delete.title': '選択中の実行を削除',
  'tr.btn.clear_all': 'すべて削除',
  'tr.btn.clear_all.title': '保存されたすべての実行を削除',

  'tr.filter.placeholder': 'タスク / モデル / URL で絞り込み',
  'tr.filter.all_models': 'すべてのモデル',
  'tr.no_match': '該当する実行はありません。',
  'tr.no_task': '（タスクなし）',

  'tr.conversation.label': '会話',
  'tr.conversation.turn_of': '{total} 回中 {n} 回目',
  'tr.conversation.tooltip': '{n} ターンの会話の一部です（{id}）。実行を開くとターン間を行き来できます。',

  'tr.cost.label': 'コスト：',
  'tr.cost.tooltip': 'プロバイダーが報告した LLM の合計コスト（USD）。$0.50 以上で最終回答なしの場合はオレンジで強調 — おそらく無駄になった実行です。',

  'tr.empty.title': '実行が選択されていません。',
  'tr.empty.hint_html': '左のリストから実行を選ぶと、ステップごとのタイムラインが表示されます。<b>比較</b>をクリックして 2 件を選ぶと、並べて確認できます。',

  'tr.compare_mode.title': '比較モード',
  'tr.compare_mode.picked': '{n}/2 選択中。もう 1 件選ぶと比較が完了します。',
  'tr.compare_mode.hint': 'リスト内の 2 件をクリックすると並べて比較できます。',

  'tr.status.label': '状態',
  'tr.steps.label': 'ステップ',
  'tr.step': '{n} ステップ',
  'tr.steps_plural': '{n} ステップ',
  'tr.duration.label': '所要時間',
  'tr.intokens.label': '入力トークン',
  'tr.outtokens.label': '出力トークン',
  'tr.tokens_short': '{n} tok',
  'tr.unknown_model': '不明',
  'tr.final_label': '最終：',

  'tr.deleted': '削除しました。',
  'tr.all_deleted': 'すべての実行を削除しました。',
  'tr.select_first': '先に実行を選択してください。',
  'tr.confirm_delete': 'この実行を削除しますか？',
  'tr.confirm_delete_all': '記録されたすべての実行を削除しますか？この操作は取り消せません。',

  'tr.event.llm_request': '→ LLM リクエスト',
  'tr.event.llm_response': '← LLM レスポンス',
  'tr.event.vision_sub_call': '👁 画像認識サブ呼び出し',
  'tr.event.error_kind': '⚠ エラー',
  'tr.event.messages_tools': 'メッセージ {m}、ツール {t} · {model}',
  'tr.event.screenshot_caption': 'スクリーンショット',
  'tr.event.screenshot_missing': '（スクリーンショット blob が見つかりません）',
  'tr.event.description_truncated': '... [比較ビューで省略]',
  'tr.event.vision_failed': '画像認識サブ呼び出しに失敗: {error}',
  'tr.event.description': '説明',
  'tr.event.args': '引数',
  'tr.event.result': '結果',
  'tr.event.step': 'ステップ {step}',
};
