import type { LocaleCatalog } from './types.ts'

const strings: Record<string, string> = {
  'common.save': '保存',
  'common.cancel': 'キャンセル',
  'common.close': '閉じる',
  'common.delete': '削除',
  'common.remove': '削除',
  'common.retry': '再試行',
  'common.continue': '続行',
  'common.back': '戻る',
  'common.loading': '読み込み中…',
  'common.yes': 'はい',
  'common.no': 'いいえ',
  'common.unknown': '不明',
  'common.version': 'バージョン',

  'login.welcome': '{{brandName}} へようこそ',
  'login.signInGoogle': 'Googleでサインイン',
  'login.failed': 'サインインに失敗しました',
  'setup.welcomeUser': 'ようこそ、{{name}} さん',
  'setup.welcomeGeneric': '{{brandName}} へようこそ',
  'setup.description': 'この {{brandName}} のデフォルトプロバイダーとモデルを選択してください。',
  'setup.provider': 'プロバイダー',
  'setup.model': 'モデル',
  'setup.continue': '続行',
  'setup.saveFailed': '設定を保存できませんでした。',
  'setup.runtimeFailed': '指定された認証情報でランタイムを起動できませんでした。APIキーを確認して再試行してください。',
  'loading.boot': '起動中…',
  'loading.auth': '認証を確認中…',
  'loading.config': '設定を読み込み中…',
  'loading.runtime': 'ランタイムを起動中…',
  'loading.connecting': 'ランタイムに接続中…',
  'loading.almostThere': 'もう少しです…',
  'loading.runtimeNeedsAttention': 'ランタイムの設定に確認が必要です。',
  'loading.error.title': '{{brandName}} がランタイムを起動できませんでした',
  'loading.error.hint': '無効な設定を修正して、アプリを再起動してください。',

  'sidebar.home': 'ホーム',
  'sidebar.agents': 'エージェント',
  'sidebar.capabilities': '機能',
  'sidebar.settings': '設定',
  'sidebar.threads': 'スレッド',
  'sidebar.search': 'スレッドを検索…',
  'sidebar.searchTitle': 'スレッドを検索 (⌘K)',
  'sidebar.noThreads': 'スレッドはまだありません',
  'sidebar.noMatches': '一致するものがありません',
  'sidebar.threadFallback': 'スレッド {{id}}',
  'sidebar.newThread': '新しいスレッド',
  'sidebar.newThreadInProject': 'プロジェクトで新しいスレッド…',
  'newThread.blank': '空のスレッド',
  'newThread.blankHint': 'Build と現在利用可能なエージェント・ツール・スキルで開始',
  'newThread.project': 'プロジェクトを開く',
  'newThread.projectHint': 'フォルダを選択 — エージェントがファイルを読み書きできます',
  'sidebar.newChat': '新しいチャット',
  'newChat.blankUnavailableReason': 'このワークスペースではチャットを作成できません。',
  'newChat.unavailable': '利用できません',
  'newChat.blankHint': 'ローカルワークスペース - Build と現在利用可能な同僚、ツール、スキルで開始',
  'newChat.blankCloudHint': 'Cloud セーフな操作 - 同期された cloud チャットを開始',
  'newChat.localOnlyAction': 'ローカル専用操作',
  'newChat.cloudAction': 'Cloud 操作',
  'newChat.projectHint': 'ローカル専用操作 - 同僚が読み書きできるプロジェクトディレクトリを選択',
  'newChat.cloudProjectHint': 'Cloud セーフな操作 - Git を選択するか明示的なスナップショットをアップロード',
  'newChat.projectBlocked': 'プロジェクトチャットの作成は無効です。',
  'newChat.createFailed': '新しいプロジェクトチャットを作成できませんでした。もう一度お試しください。',
  'newChat.blank': '空のチャット',
  'newChat.cloudProjectSubtitle': 'Git または明示的にアップロードしたスナップショットから cloud プロジェクトチャットを開始します。',
  'newChat.createCloudProject': 'プロジェクトチャットを作成',
  'sidebar.busy': '処理中',
  'sidebar.awaitingQuestion': '回答待ち',

  'thread.rename': '名前を変更',
  'thread.exportMarkdown': 'Markdownにエクスポート',
  'thread.shareLink': 'リンクを共有',
  'thread.linkCopied': 'リンクをコピーしました!',
  'thread.viewChanges': '変更を表示',
  'thread.delete': '削除',
  'thread.deleteConfirm': 'このスレッドを削除しますか? この操作は元に戻せません。',
  'agent.deleteConfirm': 'エージェント「{{name}}」を削除しますか? この操作は元に戻せません。',
  'mcp.deleteConfirm': 'MCP「{{name}}」を削除しますか? この操作は元に戻せません。',
  'skill.deleteConfirm': 'スキル「{{name}}」を削除しますか? この操作は元に戻せません。',

  'statusbar.ready': '準備完了',
  'statusbar.runtimeError': 'ランタイムエラー',
  'statusbar.sessionUsage': 'セッション使用量',
  'statusbar.inputTokens': '入力トークン',
  'statusbar.outputTokens': '出力トークン',
  'statusbar.reasoningTokens': '推論トークン',
  'statusbar.cacheTokens': 'キャッシュトークン',
  'statusbar.totalTokens': '合計',
  'statusbar.totalCost': '合計コスト',

  'runtime.offline': 'ランタイム利用不可: {{error}}',
  'runtime.offlineLabel': 'ランタイム利用不可:',
  'runtime.tryAgain': '再試行',
  'runtime.restarting': '再起動中…',

  'homepage.title': 'ワークスペースの状態、機能、実行の健全性を一画面で。',
  'homepage.subtitle': 'ホームは観測用の画面として使い、スプラッシュ画面ではありません。何がロードされ、何が接続され、OpenCode が何を使っているか、どこから再開するかを確認します。',
  'homepage.diagnostics': '{{brandName}} 診断',
  'homepage.refresh': '更新',
  'homepage.refreshing': '更新中…',
  'homepage.range.last7d': '過去7日',
  'homepage.range.last30d': '過去30日',
  'homepage.range.ytd': '年初来',
  'homepage.range.all': '全期間',

  'homepage.pill.runtime': 'ランタイム',
  'homepage.pill.runtimeReady': '準備完了',
  'homepage.pill.runtimeLoading': '診断を読み込み中',
  'homepage.pill.runtimeNotReady': '準備未完了',
  'homepage.pill.provider': 'プロバイダー',
  'homepage.pill.providerNotConfigured': '未設定',
  'homepage.pill.context': 'コンテキスト',
  'homepage.pill.contextTokens': '{{count}} トークン',
  'homepage.pill.contextUnknown': '上限不明',
  'homepage.pill.mcp': 'MCP',
  'homepage.pill.mcpConnected': '{{connected}}/{{total}} 接続中',
  'homepage.pill.capabilities': '機能',
  'homepage.pill.capabilitiesSummary': '{{tools}} ツール · {{skills}} スキル',

  'homepage.card.toolsAndSkills': 'ツールとスキル',
  'homepage.card.configuredTools': '設定済みツール',
  'homepage.card.activeSkills': '有効なスキル',
  'homepage.card.customSkills': 'カスタムスキル',
  'homepage.card.customMcps': 'カスタムMCP',
  'homepage.card.connectedMcps': '接続済みMCP',
  'homepage.card.agents': '組み込みおよびカスタムエージェント',
  'homepage.card.primaryModes': 'プライマリモード',
  'homepage.card.builtinAgents': '組み込みエージェント',
  'homepage.card.enabledCustomAgents': '有効なカスタム',
  'homepage.card.invalidAgents': '要対応',
  'homepage.card.leadAgent': 'リードエージェント',
  'homepage.card.availableSubAgents': '利用可能なサブエージェント',
  'homepage.card.usage': 'スレッド、トークン、コスト',
  'homepage.card.threads': 'スレッド',
  'homepage.card.totalMessages': 'メッセージ',
  'homepage.card.trackedTokens': '追跡トークン',
  'homepage.card.trackedCost': '追跡コスト',
  'homepage.card.userMessages': 'ユーザーメッセージ',
  'homepage.card.assistantMessages': 'アシスタントメッセージ',
  'homepage.card.toolCalls': 'ツール呼び出し',
  'homepage.card.busySessions': 'アクティブセッション',
  'homepage.card.refreshedAt': '{{time}} に更新',
  'homepage.card.agentUsage': 'サブエージェント別使用状況',
  'homepage.card.agentUsageEmpty': '{{window}} にサブエージェントへの委任はありません。',
  'homepage.card.perf': 'ハイドレーションとパッチのパフォーマンス',
  'homepage.card.noPerfTelemetry': 'パフォーマンス計測はまだありません。',
  'homepage.card.bundledTools': '同梱ツール',
  'homepage.card.customTools': 'カスタムツール',
  'homepage.card.primaryMode': 'プライマリモード',
  'homepage.card.visibleBuiltins': '表示中の組み込み',
  'homepage.card.noToolsDiscovered': 'まだツールが見つかっていません。',
  'homepage.card.noBuiltinAgents': '利用可能な組み込みエージェントはありません。',
  'homepage.card.tokenMix': 'トークン構成',
  'homepage.card.window': 'ウィンドウ',
  'homepage.card.usageRefreshed': '使用量の更新時刻',
  'homepage.card.notLoaded': '未ロード',
  'homepage.card.busyRightNow': '現在アクティブ',
  'homepage.card.currentModel': '現在のモデル',
  'homepage.card.contextWindow': 'コンテキストウィンドウ',
  'homepage.card.notSet': '未設定',
  'homepage.card.unknownLimit': '不明',
  'homepage.card.historicalUsageNote': '履歴使用量はスレッド単位で保存され、現在ハイドレートされたライブセッションと重ねられます。合計値はスレッドを事前に開く必要がなくなりました。',
  'homepage.card.backfillCompleted': ' {{count}} 件の古い要約をバックグラウンドで更新しました。',
  'homepage.card.unknownSubAgent': '不明なサブエージェント',
  'homepage.card.tasks': 'タスク',
  'homepage.card.tokShort': 'tok',
  'homepage.card.historyLoadP95': '履歴読み込み p95',
  'homepage.card.coldSyncP95': 'コールドシンク p95',
  'homepage.card.flushP95': 'Flush p95',
  'homepage.card.slowEvents': '遅いイベント',
  'homepage.card.flushWaitP95': 'Flush 待機 p95',
  'homepage.card.patchPublishes': 'パッチ公開',
  'homepage.card.telemetrySamples': 'テレメトリサンプル',
  'homepage.card.perfLiveNote': '診断はメインプロセスエンジンからのライブ情報です。数値はチャットビューと同じハイドレーション/パッチパイプラインから取得されます。',
  'homepage.card.perfEmptyHint': 'パフォーマンス計測はまだありません。スレッドを開いて応答をストリームしたら、ここに戻ってランタイムのタイミングを確認してください。',

  'homepage.side.resumeThreads': 'スレッドを再開',
  'homepage.side.resumeEmpty': '{{window}} にスレッドはありません。',
  'homepage.side.recentWork': '最近の作業',
  'homepage.side.actions': 'アクション',
  'homepage.side.openWorkingSurface': '作業画面を開く',
  'homepage.side.newThread': '新しいスレッド',
  'homepage.side.newThreadHint': 'ワークスペースに紐付いた新規スレッドを開きます。',
  'homepage.side.openDirectory': 'フォルダを開く',
  'homepage.side.openDirectoryHint': '次のセッションを実際のコードベースやフォルダに紐付けます。',
  'homepage.side.currentInventory': '現在のインベントリ',
  'homepage.side.availableTools': '利用可能なツール',
  'homepage.side.skillBundles': 'スキルバンドル',
  'homepage.side.runtimeInputs': 'ランタイム入力',
  'homepage.side.opencodeVersion': 'OpenCode',
  'homepage.side.providerName': 'プロバイダー',
  'homepage.side.providerSource': 'プロバイダー出所',
  'homepage.side.model': 'モデル',
  'homepage.side.modelSource': 'モデル出所',
  'homepage.side.package': 'パッケージ',
  'homepage.side.packageFallback': '組み込み/ランタイム',
  'homepage.side.providerOptions': 'プロバイダーオプション',
  'homepage.side.credentialOverrides': '認証情報の上書き',
  'homepage.side.noOptions': '非機密のプロバイダーオプションはありません。',
  'homepage.side.usingDefaults': 'デフォルト値を使用。',

  'homepage.warning.backfillFailed': '{{count}} 件のセッションを再構築できませんでした — 合計が過小評価される可能性があります。',
  'homepage.warning.backfillPending': '{{count}} 件の古いセッションをバックグラウンドで読み込み中。合計は自動的に更新されます。',

  'tokens.input': '入力',
  'tokens.output': '出力',
  'tokens.reasoning': '推論',
  'tokens.cache': 'キャッシュ',
  'provider.none': 'プロバイダーなし',
  'agent.unknown': '不明',
  'thread.sandbox': 'サンドボックススレッド',
  'runtime.source.settings': '設定オーバーライド',
  'runtime.source.default': '設定デフォルト',
  'runtime.source.fallback': 'フォールバック',

  'settings.title': '設定',
  'settings.subtitle': 'シェル、モデルランタイム、ローカル権限を調整します。',
  'settings.done': '完了',
  'settings.save': '保存',
  'settings.saved': '✓ 保存しました',
  'settings.saveChanges': '変更を保存',
  'settings.saveHint': '外観の変更は即座に反映されます。プロバイダーや権限の変更は必要に応じてランタイムを再起動します。',
  'settings.tab.appearance': '外観',
  'settings.tab.appearanceDescription': 'テーマ、カラースキーム、フォント',
  'settings.tab.models': 'モデル',
  'settings.tab.modelsDescription': 'プロバイダー、モデル、認証情報',
  'settings.tab.permissions': '権限',
  'settings.tab.permissionsDescription': 'ローカルツールへのアクセス',
  'settings.tab.storage': 'ストレージ',
  'settings.tab.storageDescription': 'サンドボックスのアーティファクトとクリーンアップ',
  'settings.tab.language': '言語',
  'settings.appearance.colorScheme': 'カラースキーム',
  'settings.appearance.theme': 'テーマ',
  'settings.appearance.themeActive': '有効',
  'settings.appearance.uiFont': 'インターフェースフォント',
  'settings.appearance.monoFont': '等幅フォント',
  'settings.appearance.preview': 'プレビュー',
  'settings.appearance.previewHealth': 'ワークスペースの健全性',
  'settings.appearance.previewHealthDescription': 'プロバイダー接続済み、ランタイム準備完了',
  'settings.appearance.previewActive': '有効',
  'settings.appearance.previewMessage': 'テーマの変更は即座に反映されます。',
  'settings.appearance.previewMessageSecondary': 'プロバイダーや権限の変更は引き続き下の保存ボタンを使用します。',
  'settings.models.provider': 'プロバイダー',
  'settings.models.model': 'モデル',
  'settings.models.featured': 'おすすめ',
  'settings.models.allModels': 'すべてのモデル',
  'settings.models.refresh': '更新',
  'settings.models.refreshing': '更新中…',
  'settings.models.refreshTitle': '動的モデルカタログを更新',
  'settings.models.search': '{{count}} モデルから検索…',
  'settings.models.noMatches': '一致するモデルがありません。',
  'settings.models.credentialsHeader': '認証情報',
  'settings.permissions.header': '開発者ツール',
  'settings.permissions.bashTitle': 'シェルコマンド',
  'settings.permissions.bashDescription': 'アクティブなワークスペース内でエージェントがターミナルコマンドを実行できるようにします。',
  'settings.permissions.fileWriteTitle': 'ファイル編集',
  'settings.permissions.fileWriteDescription': 'ローカルワークスペース内でエージェントがファイルを作成・変更できるようにします。',
  'settings.storage.loading': 'サンドボックスストレージを読み込み中…',
  'settings.storage.supportDiagnostics': 'サポート診断',
  'settings.storage.supportDescription': 'プレーンテキストレポート（設定、ランタイム入力、最近のログ行）をクリップボードにコピーします。認証情報はマスク/編集されるため、バグレポートに安全に貼り付けできます。',
  'settings.storage.copyDiagnostics': '診断をクリップボードにコピー',
  'settings.storage.preparing': '準備中…',
  'settings.storage.copied': 'クリップボードにコピー済み',
  'settings.storage.copyFailed': '診断を生成できませんでした — 再試行してください',
  'settings.storage.diagnosticsHint': 'イシューを提出する際に便利 — このバンドルをレポートに含めてください。',
  'settings.storage.sandboxStorage': 'サンドボックスストレージ',
  'settings.storage.totalSize': '合計サイズ',
  'settings.storage.workspaces': 'ワークスペース',
  'settings.storage.referenced': '参照済み',
  'settings.storage.unreferenced': '未参照',
  'settings.storage.stale': '古いもの',
  'settings.storage.retention': '保持期間',
  'settings.storage.retentionDays': '{{days}} 日',
  'settings.storage.cleanup': 'クリーンアップ',
  'settings.storage.clearOld': '古いサンドボックスアーティファクトを削除',
  'settings.storage.clearOldDescription': '{{days}} 日以上古い未参照のサンドボックスワークスペースを削除します。',
  'settings.storage.clearAll': '未使用のサンドボックスアーティファクトをすべて削除',
  'settings.storage.clearAllDescription': 'アクティブなスレッドのワークスペースは保持したまま、未参照のサンドボックスワークスペースをすべて削除します。',
  'settings.storage.cleaning': 'クリーンアップ中…',
  'settings.storage.lastCleanup': '最後のクリーンアップで {{count}} ワークスペースを削除し、{{size}} を解放しました。',
  'settings.storage.sandboxNote': 'サンドボックススレッドは {{root}} 配下のプライベート Cowork ワークスペースに書き込みます。古い未参照ワークスペースは自動的に削除されますが、ここから手動でも実行できます。',
  'settings.updates.header': 'アップデート',
  'settings.updates.checkForUpdates': 'アップデートを確認',
  'settings.updates.description': 'GitHub Releases 公開APIで最新バージョンを照会します。読み取り専用 — 自動ダウンロードや自動インストールはありません。',
  'settings.updates.checking': '確認中…',
  'settings.updates.newAvailable': '新バージョン利用可能: {{version}}',
  'settings.updates.upToDate': '最新バージョンです ({{version}})',
  'settings.updates.unavailable': 'アップデート確認不可',
  'settings.updates.failed': 'アップデートを確認できませんでした',
  'settings.updates.hint': 'より新しいビルドがあれば GitHub のリリースページを開きます。',
  'settings.updates.currentHint': 'あなたは {{version}} にいます。下をクリックしてリリースノートを開きます。',
  'settings.updates.openReleaseNotes': 'リリースノートを開く',
  'settings.updates.resetFailed': 'アプリデータをリセットできませんでした: {{message}}',
  'settings.updates.resetCheckLogs': 'リセット失敗。ログを確認してください。',
  'settings.updates.checkFailedGeneric': 'アップデート確認に失敗しました。',
  'settings.reset.header': 'リセット',
  'settings.reset.title': 'すべてのアプリデータをリセット',
  'settings.reset.description': 'このマシン上のすべてのスレッド、認証情報、カスタムエージェント、スキル、MCP を削除します。アプリは初回起動フローで再起動します。アンインストール前や白紙デモに便利ですが、破壊的で元に戻せません。',
  'settings.reset.button': 'アプリデータをリセット',
  'settings.reset.resetting': 'リセット中…',
  'settings.reset.requiresConfirm': '明示的な確認が必要です。アプリは終了して再起動します。',
  'settings.reset.confirm': 'すべてのアプリデータをリセットしますか?\n\nこのマシン上のすべてのスレッド、認証情報、カスタムエージェント、スキル、MCP を削除します。アプリは初回起動フローで再起動します。元に戻せません。',
  'settings.language.label': '言語',
  'settings.language.description': 'インターフェース言語を選択します。この端末で選択が記憶されます。部分的にしか翻訳されていない言語では、欠けている文字列は英語で表示されます。',
  'settings.language.systemDefault': '自動検出 (システム)',

  'agents.tab.skills': 'スキル',
  'agents.tab.tools': 'ツール',
  'agents.tab.instructions': '指示',
  'agents.tab.inference': '推論',
  'agents.new': '新しいエージェント',
  'agents.save': '変更を保存',
  'agents.create': 'エージェントを作成',
  'agents.saving': '保存中…',
  'agents.openCapabilities': 'さらにツールやスキルが必要ですか?',
  'agents.openCapabilitiesLink': 'ツールとスキルを開く',

  'capabilities.tab.tools': 'ツール',
  'capabilities.tab.skills': 'スキル',
  'capabilities.addMcp': 'MCPを追加',
  'capabilities.addSkill': 'スキルを追加',
  'capabilities.noTools': '利用可能なツールはまだありません。機能ページからMCPを追加してください。',
  'capabilities.noSkills': '利用可能なスキルはまだありません。機能ページからスキルバンドルを追加してください。',

  'chat.placeholder': '{{brandName}} にメッセージを送信…',
  'chat.showContext': 'コンテキストを表示',
  'chat.hideContext': 'コンテキストを非表示',
  'chat.thinking': '考え中…',

  'error.viewError': 'ビューエラー',
  'error.viewErrorTitle': 'このページを表示できませんでした。',
  'error.viewErrorBody': '{{brandName}} はアプリの他の部分を復元しました。ホームに戻って再試行してください。',
  'error.backToHome': 'ホームに戻る',

  'approval.sendEmail': 'メール送信',
  'approval.createSpreadsheet': 'スプレッドシート作成',
  'approval.createDocument': 'ドキュメント作成',
  'approval.createPresentation': 'プレゼンテーション作成',
  'approval.delete': '削除',
  'approval.shareFile': 'ファイル共有',
  'approval.createEvent': 'イベント作成',
  'approval.allowAction': 'アクションを許可',
  'approval.deny': '拒否',
  'approval.approve': '承認',

  'messageActions.branchHere': 'ここで分岐',
  'messageActions.branchHereDescription': 'このメッセージで終わる新しいスレッドを作成',
  'messageActions.revertHere': 'ここに戻す',
  'messageActions.revertHereDescription': 'このメッセージの直前の状態に戻す',
  'messageActions.viewDiff': '差分を表示',
  'messageActions.viewDiffDescription': 'このメッセージが導入したファイル変更を表示',
  'messageActions.branchFailed': 'このメッセージから分岐できませんでした。再試行してください。',
  'messageActions.revertConfirm': 'このメッセージまでセッションを戻しますか? 元に戻すまで、その後のターンは非表示になります。',
  'messageActions.revertFailed': 'このメッセージに戻せませんでした。再試行してください。',

  'chat.attachFile': 'ファイルを添付',
  'chat.planMode': 'Plan',
  'chat.buildMode': 'Build',
  'chat.planModeDescription': 'Plan モード: 読み取り専用の分析・監査',
  'chat.buildModeDescription': 'Build モード: フルアクセスの作業と委任',
  'chat.forkThread': 'スレッドをフォーク',
  'chat.stopGenerating': '生成を停止 (Esc)',
  'chat.awaitingApproval': '承認待ち',
  'chat.awaitingApprovalTitle': '保留中のツール要求を承認または拒否して続行',
  'chat.awaitingAnswer': '回答待ち',
  'chat.awaitingAnswerTitle': '保留中の質問に回答して続行',
  'chat.placeholder.answerPending': '上の保留中の質問に回答して続行…',
  'chat.placeholder.askPlan': 'Plan に分析や作業の構造化を依頼…',
  'chat.placeholder.askBuild': 'Build に作業を依頼…',
  'chat.placeholder.noThread': '最初に新しいスレッドを開始してください',

  'diff.changesFromMessage': 'このメッセージからの変更',
  'diff.changes': '変更',
  'diff.closeChanges': '変更を閉じる',
  'diff.loading': '変更を読み込み中…',
  'diff.noChanges': 'このセッションにファイル変更はありません',
  'diff.filesChanged': '{{count}} ファイルが変更されました',
  'diff.unified': 'ユニファイド',
  'diff.split': '分割',
  'diff.noTextual': 'テキスト差分なし（バイナリファイル、リネーム、空白のみの変更）。',
  'diff.couldNotLoad': 'ファイル内容を読み込めませんでした',
  'diff.couldNotLoadWithError': '読み込めませんでした: {{error}}',
  'diff.showHiddenLines': '{{count}} 行の未変更行を表示',
  'diff.collapse': '折りたたむ',
  'diff.statusNew': '新規',
  'diff.statusDeleted': '削除',
  'diff.statusModified': '変更',

  'thinking.buildCoordinating': 'Build が調整中',
  'thinking.planning': '計画中',
  'thinking.generalWorking': 'General が作業中',
  'thinking.exploreWorking': 'Explore が作業中',
  'thinking.awaitingApproval': 'あなたの承認を待っています',
  'thinking.buildCoordinatingCount': 'Build が {{count}} エージェントを調整中',
  'thinking.buildMerging': 'Build がエージェントの結果を統合中',
  'thinking.agentWorking': '{{agent}} が作業中',
  'thinking.thinking': '考え中',
  'thinking.compacting': 'コンテキストを保持するため会話を圧縮中…',
  'thinking.agentPlan': 'エージェントの計画',
  'thinking.sessionTodos': 'セッションTODO',

  'compaction.running': '圧縮中',
  'compaction.done': '圧縮済み',
  'compaction.causeOverflow': 'オーバーフロー',
  'compaction.causeAuto': '自動',
  'compaction.causeManual': '手動',
  'compaction.runningOverflow': 'コンテキストウィンドウがオーバーフロー — 領域確保のため古いターンを短縮中。',
  'compaction.runningAuto': 'コンテキスト制限に接近 — プロアクティブに圧縮中。',
  'compaction.runningManual': '古いターンを圧縮するため手動で要約中。',
  'compaction.doneOverflow': 'コンテキストウィンドウが満杯のため、古いターンを要約しました。',
  'compaction.doneAuto': '新しい応答の領域を確保するため、古いターンを自動的に要約しました。',
  'compaction.doneManual': '古いターンを手動で要約しました。',

  'taskStatus.running': '実行中',
  'taskStatus.done': '完了',
  'taskStatus.errored': 'エラー',
  'taskStatus.queued': 'キュー待ち',

  'taskRun.deeperTitle': 'このサブエージェントはさらに {{count}} 件のサブタスクを派遣しました。レーンをクリックして詳細を表示します。',
  'taskDrillIn.backToParent': '親タスクに戻る',
  'taskDrillIn.abortTask': 'このタスクを中止',
  'taskDrillIn.abortTaskDescription': 'このサブエージェントのみ中止します。兄弟とプライマリは継続します。',
  'taskDrillIn.closeDrawer': 'パネルを閉じる',
  'questionDock.pendingCount': 'このスレッドに保留中の質問が {{count}} 件',
  'questionDock.scrollToToolCall': 'この質問のツール呼び出しまでスクロール',
  'questionDock.typeOwnAnswer': '独自の回答を入力',

  'mermaid.zoomOut': 'Mermaid ダイアグラムを縮小',
  'mermaid.resetZoom': 'Mermaid ズームをリセット',
  'mermaid.zoomIn': 'Mermaid ダイアグラムを拡大',
  'chatModelMenu.selectModel': 'モデルを選択',
  'chatModelMenu.search': 'モデルを検索…',

  'agentsPage.title': 'エージェント',
  'agentsPage.subtitle': 'スキル、ツール、指示からスペシャリストを構成します。カードをクリックしてビルダーで開きます。',
  'agentsPage.backToChat': 'チャットに戻る',
  'agentsPage.search': 'エージェント、スキル、ツール、指示を検索…',
  'agentsPage.importTitle': '.cowork-agent.json ファイルからカスタムエージェントをインポート',
  'agentsPage.import': 'インポート',
  'agentsPage.importFailed': '{{filename}} をインポートできませんでした: {{error}}',
  'agentsPage.importConflict': '「{{name}}」という名前のカスタムエージェントは既に存在します。インポートしたもので置き換えますか?',
  'studioTeamPage.eyebrow': 'チーム',
  'studioTeamPage.title': '同僚',
  'studioTeamPage.subtitle': 'OpenCodeエージェントを、明確な役割、スキル、ツール、チャット割り当てを持つ同僚一覧として構成します。',
  'studioTeamPage.customCount': 'カスタム',
  'studioTeamPage.builtInCount': '組み込み',
  'studioTeamPage.runtimeCount': 'ランタイム',
  'studioTeamPage.search': '同僚、スキル、ツール、指示を検索…',
  'studioTeamPage.filterLabel': '同僚フィルター',
  'studioTeamPage.importTitle': '.cowork-agent.json ファイルからカスタム同僚をインポート',
  'studioTeamPage.importFailed': '{{filename}} をインポートできませんでした: {{error}}',
  'studioTeamPage.importConflict': '「{{name}}」という名前のカスタム同僚は既に存在します。インポートしたもので置き換えますか?',
  'studioTeamPage.newCoworker': '新しい同僚',
  'studioTeamPage.customSection': 'カスタム同僚',
  'studioTeamPage.customSectionHelp': 'あなたが作成した同僚です。カードから編集、有効化、エクスポート、削除できます。',
  'studioTeamPage.noCustom': 'カスタム同僚はまだありません。繰り返し使う役割、指示、スキル、ツールをまとめる同僚を作成してください。',
  'studioTeamPage.noCustomMatch': '検索に一致するカスタム同僚はありません。',
  'studioTeamPage.builtInSection': '組み込み同僚',
  'studioTeamPage.builtInSectionHelp': 'バンドルされたスキルとツールで構成されたOpen Coworkスペシャリストです。',
  'studioTeamPage.noBuiltInMatch': '検索に一致する組み込み同僚はありません。',
  'studioTeamPage.runtimeSection': 'ランタイム登録同僚',
  'studioTeamPage.runtimeSectionHelp': 'SDKプラグインが登録した同僚です。ランタイム動作は引き続きOpenCodeが所有します。',
  'studioTeamPage.noRuntimeMatch': '検索に一致するランタイム同僚はありません。',
  'studioTeamPage.noOpenCodeMatch': '検索に一致するOpenCodeデフォルトはありません。',
  'agentCard.editAvatar': 'エージェントのアバターを編集',
  'agentCard.idPlaceholder': 'agent-id',
  'agentCard.descriptionPlaceholder': 'このエージェントの専門は?',
  'agentCard.enabledTitle': 'チャットで表示',
  'agentCard.disabledTitle': '無効 — チャットに表示されません',
  'agentCard.removeLabel': '{{label}} を削除',
  'agentCard.missingTool': 'ツール不足: {{label}}',
  'avatarEditor.setColor': '色を {{label}} に設定',
  'skillLibrary.empty': '利用可能なスキルはまだありません。機能ページからスキルバンドルを追加してください。',
  'skillLibrary.needsTools': '{{count}} ツールが必要',
  'toolLibrary.empty': '利用可能なツールはまだありません。機能ページからMCPを追加してください。',
  'toolLibrary.writeTooltip': 'このツールは書き込み可能 — エージェントのフットプリントが増えます',

  'agentCard.edit': '編集',
  'agentCard.export': 'エクスポート',
  'agentCard.exportTitle': 'このエージェントを共有可能なJSONバンドルとしてエクスポート',
  'agentCard.noDescription': '説明なし',

  'capabilities.title': 'ツールとスキル',
  'capabilities.subtitle': '現在のOpenCodeコンテキストで利用可能なツールとスキルバンドルを確認します。組み込み、マシン、プロジェクト、カスタムの追加を含みます。',
  'capabilities.addTool': 'ツールを追加',
  'capabilities.addSkillButton': 'スキルを追加',
  'capabilities.searchTools': 'ツール、説明、同僚を検索…',
  'capabilities.searchSkills': 'スキル、説明、同僚を検索…',
  'capabilities.details': '詳細',
  'capabilities.connection': '接続',
  'capabilities.linkedAgents': 'リンクされたエージェント',
  'capabilities.linkedCoworkers': 'リンクされた同僚',
  'capabilities.linkedTools': 'リンクされたツール',
  'capabilities.skillContent': 'スキル内容',
  'capabilities.usedByAgents': 'エージェントで使用',
  'capabilities.usedByCoworkers': '同僚で使用',
  'capabilities.bundleFiles': 'バンドルファイル',
  'capabilities.noToolsDiscovered': 'まだツールが見つかりません。カスタムMCPを追加してランタイムを拡張してください。',
  'capabilities.noToolsMatch': '検索に一致するツールはありません。',
  'capabilities.noSkillsDiscovered': 'まだスキルが見つかりません。カスタムバンドルを追加してエージェントを拡張してください。',
  'capabilities.noSkillsMatch': '検索に一致するスキルはありません。',
  'capabilities.kindOpencodeTool': 'OpenCodeツール',
  'capabilities.kindCustomMcp': 'カスタムMCP',
  'capabilities.kindBuiltinTool': '組み込みツール',
  'capabilities.kindMcpTool': 'MCPツール',
  'capabilities.kindCustomSkill': 'カスタムスキル',
  'capabilities.kindBuiltinSkill': '組み込みスキル',
  'capabilities.skillSourceBundled': '{{brand}} 同梱スキル',
  'capabilities.skillSourceProject': 'プロジェクトスキル',
  'capabilities.skillSourceMachine': 'マシンスキル',
  'capabilities.skillSourceBundle': 'スキルバンドル',

  'mcpForm.titleAdd': 'MCPツールを追加',
  'mcpForm.titleEdit': 'MCPツールを編集 — {{name}}',
  'mcpForm.subtitleAdd': 'Model Context Protocolサーバーに接続し、そのツールセットを {{brand}} とOpenCodeで利用できるようにします。',
  'mcpForm.subtitleEdit': 'このMCPの設定を更新します。変更は {{brand}} がランタイムをリロードした後に有効になります。',
  'mcpForm.saving': '保存中…',
  'mcpForm.saveChanges': '変更を保存',
  'mcpForm.addMcp': 'MCPを追加',
  'mcpForm.completeBeforeSave': '保存前にこれらを完了してください',
  'mcpForm.whereToSave': '保存先',
  'mcpForm.connectionType': '接続タイプ',
  'mcpForm.connectionDetails': '接続詳細',
  'mcpForm.mcpId': 'MCP ID',
  'mcpForm.displayName': '表示名',
  'mcpForm.displayNamePlaceholder': '例: GitHub, Jira, Slack',
  'mcpForm.description': '説明',
  'mcpForm.descriptionPlaceholder': 'このMCPがエージェントに提供するアクセス。',
  'mcpForm.command': 'コマンド',
  'mcpForm.commandPlaceholder': '例: npx, node, python',
  'mcpForm.arguments': '引数',
  'mcpForm.argumentsPlaceholder': '例: -y @modelcontextprotocol/server-github',
  'mcpForm.envVars': '環境変数',
  'mcpForm.envValuePlaceholder': '値',
  'mcpForm.url': 'URL',
  'mcpForm.headers': 'ヘッダー',
  'mcpForm.allowPrivateNetwork': 'プライベートネットワークを許可',
  'mcpForm.linkedSkills': 'リンクされたスキル',
  'mcpForm.preview': 'MCPプレビュー',

  'skillForm.titleAdd': 'スキルバンドルを追加',
  'skillForm.titleEdit': 'バンドルを編集 — {{name}}',
  'skillForm.subtitle': '本物のOpenCodeスキルバンドルを作成します。`SKILL.md` に加え、必要な参照、例、テンプレートを含めます。',
  'skillForm.addSkill': 'スキルを追加',
  'skillForm.importing': 'インポート中…',
  'skillForm.importDirectory': 'ディレクトリをインポート',
  'skillForm.bundleIdentity': 'バンドルID',
  'skillForm.skillDirectory': 'スキルディレクトリ',
  'skillForm.skillDirectoryPlaceholder': '例: code-review, data-pipeline',
  'skillForm.skillDirectoryHint': 'スキルバンドルディレクトリとして保存。小文字で安定した名前にしてください。',
  'skillForm.requiredTools': '必要なツール',
  'skillForm.additionalFiles': '追加ファイル',
  'skillForm.fileContents': 'ファイル内容',
  'skillForm.bundlePreview': 'バンドルプレビュー',

  'mcpRestriction.removeRestriction': 'クリックしてこの制限を削除',

  'commandPalette.search': 'アクション、エージェント、コマンドを検索…',
  'commandPalette.noMatches': '一致するアクションがありません。より広い検索を試してください。',
  'commandPalette.hint': 'Enterで実行。Escで閉じる。',

  'chart.generatedChart': '生成されたチャート',

  'chat.composerAriaLabel': 'メッセージコンポーザー（ファイルをドロップして添付）',
  'chat.revertedSessionTitle': 'このセッションは元に戻されています — クリックで以降のメッセージを復元',
  'chat.transcriptAriaLabel': 'チャットの記録',

  'homepage.card.usageEyebrow': '使用状況',
  'homepage.card.agentUsageEyebrow': 'エージェント使用状況',
  'homepage.card.perfEyebrow': 'パフォーマンス',
  'homepage.card.selectedWindow': '選択した期間',
  'homepage.side.selectedPeriod': '選択した期間',
  'homepage.side.noRecentThreads': '{{window}} にまだスレッドがありません。下のアクションから開始すると、ホームがキューになります。',

  'setup.modelIdPlaceholder': 'モデルID',

  'statusbar.thinking': '考え中…',
  'statusbar.agentWorking': '{{agent}} が作業中…',
  'statusbar.compacting': '圧縮中…',
  'statusbar.contextPercent': 'コンテキスト {{percent}}%',
  'statusbar.contextCompactingSoon': '{{percent}}% · 間もなく圧縮',
  'statusbar.contextCompactingDetail': 'コンテキスト保持のため古いターンを圧縮中',
  'statusbar.contextCompactedDetail': '{{limit}} の {{percent}}% の後に圧縮',
  'statusbar.contextNearThreshold': '{{limit}} の {{percent}}% — 自動圧縮が間もなく実行されます',
  'statusbar.contextOfLimit': '{{limit}} の {{percent}}%',
  'statusbar.tokensCount': '{{count}} トークン',
  'statusbar.cacheRead': 'キャッシュ読み込み',
  'statusbar.cacheWrite': 'キャッシュ書き込み',
  'statusbar.contextWindow': 'コンテキストウィンドウ',
  'statusbar.compactions': '圧縮回数',
  'statusbar.lastCompacted': '最後の圧縮',
  'statusbar.lastMeasuredInput': '最後に計測された入力',
  'statusbar.sessionCost': 'セッションコスト',
  'statusbar.totalAllSessions': '合計（全セッション）',

  'threadList.waitingForAnswer': 'あなたの回答を待っています',
  'threadList.working': '作業中',
  'threadList.forked': 'フォークされたスレッド',
  'threadList.forkedFrom': '別のスレッドからフォーク',
  'threadList.reverted': '戻し済み',
  'threadList.revertedTitle': 'セッションは以前のメッセージに戻されています',

  'agentBuilder.saveThisAgentIn': 'このエージェントの保存先',
  'agentCard.scope': 'スコープ',

  'agentPreview.title': '静的プレビュー',
  'agentPreview.subtitle': '呼び出し時にOpenCodeがこのエージェントをどう見るか。ネットワーク呼び出しなし — コンパイル済みのビューのみ。',
  'agentPreview.scopeLabel': '{{scope}} スコープ',
  'agentPreview.mention': 'メンション',
  'agentPreview.toolsResolved': '解決されたツール',
  'agentPreview.skillsResolved': '解決されたスキル',
  'agentPreview.nOfM': '{{m}} のうち {{n}}',
  'agentPreview.missingTools': '不足しているツール: {{list}}',
  'agentPreview.missingSkills': '不足しているスキル: {{list}}',
  'agentPreview.systemPrompt': 'システムプロンプト',
  'agentPreview.toolPatterns': 'ツールパターン',
  'agentPreview.skillsAvailable': '読み込み可能なスキル',

  'agentTemplate.title': '新しいエージェントを作成',
  'agentTemplate.subtitle': '空白のキャンバスを避けるためスターターを選択 — 後でいつでも変更できます。',
  'agentTemplate.startBlank': '空白から開始',
  'agentTemplate.startBlankHint': '事前選択されたツールや指示はなし — ゼロからエージェントを設計します。',
  'agentTemplate.temp': 'temp {{value}}',
  'agentTemplate.steps': '{{count}} ステップ',
  'agentTemplate.toolHints': '{{count}} ツールヒント',

  'avatarEditor.avatar': 'アバター',
  'avatarEditor.color': '色',

  'capabilities.noSkillContent': 'まだスキルバンドルの内容はありません。',
  'capabilities.skillNotTiedToTool': 'このスキルは特定のツールに紐付いていません。',

  'chart.savedAs': '保存名',

  'chatModelMenu.noMatches': '一致なし。',

  'instructions.headerHint': 'トーン、優先順位、出力形式を定めます。良い指示は具体的かつ運用的です。',
  'instructions.addSnippet': '+ スニペット',
  'instructions.noInstructions': '指示はありません。',
  'instructions.placeholderExamples': '例:\n- 結果を3つの箇条書きと根拠で要約。\n- ブログより公式ドキュメントを優先。\n- メールは送らず下書きのみ。\n- 外部書き込み前に承認を求める。',
  'instructions.charCount': '{{count}} 文字',
  'instructions.longPromptWarning': '長いプロンプトはトークンを消費します — 短縮を検討',
  'instructions.snippet.conciseLabel': '簡潔に',
  'instructions.snippet.conciseBody': '3〜5箇条書きで回答してください。文章は簡潔に。本質的でない部分は削除してください。',
  'instructions.snippet.askFirstLabel': '明確化の質問',
  'instructions.snippet.askFirstBody': 'リクエストが曖昧な場合、行動する前に明確化の質問を1つしてください。',
  'instructions.snippet.citeLabel': '出典を引用',
  'instructions.snippet.citeBody': '結果を要約する際は、各主張を出典ドキュメントまたはURLとともに引用してください。',
  'instructions.snippet.draftOnlyLabel': '下書きのみ、送信しない',
  'instructions.snippet.draftOnlyBody': '下書きのみを作成してください。確認なしでメッセージ、メール、外部アクションを送信しないでください。',
  'instructions.snippet.structuredLabel': '構造化出力',
  'instructions.snippet.structuredBody': '結果を短いエグゼクティブサマリーとして返し、続いて番号付き内訳を提示してください。',

  'mcpForm.mcpIdHint': 'ランタイムの名前空間と権限のプレフィックスになります。',
  'mcpForm.runtimeNamespace': 'ランタイム名前空間',
  'mcpForm.permissionPrefix': '権限プレフィックス',
  'mcpForm.connectionSummary': '接続サマリー',
  'mcpForm.connectivityTest': '接続テスト',
  'mcpForm.couldNotConnect': 'このMCPに接続できませんでした。',
  'mcpForm.runTestHint': '保存前にテストを実行して、サーバーが応答しメソッドを公開していることを確認してください。',
  'mcpForm.reloadsRuntimeNote': '保存後、{{brand}} が自動的にランタイムを再読込します。',

  'questionDock.question': '質問',
  'sessionInspector.planFromTaskRuns': 'アクティブなタスク実行から派生',
  'sessionInspector.session': 'セッション',

  'skillForm.bundleId': 'バンドルID',
  'skillForm.frontmatterName': 'Frontmatter名',
  'skillForm.noExtraBundleFiles': '追加のバンドルファイルはまだありません。',
  'skillForm.whatWillBeSaved': '保存される内容',

  'todo.untitled': '無題のTODO',

  'toolTrace.artifact': '成果物',
  'toolTrace.agent': 'エージェント',
  'toolTrace.subAgent': 'サブエージェント',
  'toolTrace.reveal': '表示',
  'toolTrace.saving': '保存中…',
  'toolTrace.saveAs': '名前を付けて保存…',
  'toolTrace.input': '入力',
  'toolTrace.output': '出力',
  'toolTrace.noDetails': '詳細は利用できません',
  'toolTrace.generatedInSubAgent': 'サブエージェント作業中に {{tool}} で生成',
  'toolTrace.generatedInThread': 'このスレッドで {{tool}} により生成',

  // ────────────────────────────────────────────────────────────
  // Home (welcoming landing)
  // ────────────────────────────────────────────────────────────
  'home.greeting.cowork': '今日は何を一緒に作りましょうか？',
  'home.subtitle': '{{brand}} · 何でも質問、または @ でエージェントを呼び出し',
  'home.composer.placeholder': '何でも質問、または @ でエージェントを呼び出し',
  'home.composer.send': '送信',
  'home.composer.dropZone': 'コンポーザー — ファイルをドロップして添付',
  'studioHome.greeting': '今日はチームで何に取り組みますか？',
  'studioHome.subtitle': '{{brand}} · リードする同僚を選び、専門家を @メンションし、作業を一か所で確認',
  'studioHome.composer.placeholder': '何でも質問、または同僚を @メンション',
  'studioHome.coachmark': 'プロンプトを書き、コンテキストを添付し、同僚を @メンション — コマンドは ⌘K。',
  'studioHome.agentNudge': '同僚を @メンション',
  'home.suggestions.title': '試す',
  'home.recent.title': '前回の続きから',
  'home.recent.untitled': '無題のスレッド',
  'home.statusStrip.ready': '準備完了',
  'home.statusStrip.mcps': '{{connected}}/{{total}} MCP',
  'home.statusStrip.viewMore': 'パルス',

}

export const ja: LocaleCatalog = {
  locale: 'ja',
  nativeLabel: '日本語',
  strings,
}
