import type { TranslationKeys } from './en';

const ja: TranslationKeys = {
  // ── Common ──
  'common.rename': '名前を変更',
  'common.duplicate': '複製',
  'common.delete': '削除',
  'common.cancel': 'キャンセル',
  'common.save': '保存',
  'common.close': '閉じる',
  'common.connect': '接続',
  'common.disconnect': '切断',
  'common.yes': 'はい',
  'common.no': 'いいえ',
  'common.import': 'インポート',
  'common.export': 'エクスポート',
  'common.name': '名前',
  'common.untitled': '無題',
  'common.best': '最適',
  'common.selected': '{{count}} 件選択中',

  // ── Toolbar ──
  'toolbar.select': '選択',
  'toolbar.text': 'テキスト',
  'toolbar.frame': 'フレーム',
  'toolbar.hand': 'ハンド',
  'toolbar.undo': '元に戻す',
  'toolbar.redo': 'やり直す',
  'toolbar.variables': '変数',
  'toolbar.uikitBrowser': 'UIKit ブラウザ',

  // ── Shapes ──
  'shapes.rectangle': '長方形',
  'shapes.ellipse': '楕円',
  'shapes.polygon': 'ポリゴン',
  'shapes.line': '線',
  'shapes.icon': 'アイコン',
  'shapes.importImageSvg': '画像または SVG をインポート\u2026',
  'shapes.pen': 'ペン',
  'shapes.shapeTools': 'シェイプツール',
  'shapes.moreShapeTools': 'その他のシェイプツール',

  // ── Top Bar ──
  'topbar.hideLayers': 'レイヤーを非表示',
  'topbar.showLayers': 'レイヤーを表示',
  'topbar.new': '新規',
  'topbar.open': '開く',
  'topbar.save': '保存',
  'topbar.importFigma': 'Figma をインポート',
  'topbar.codePanel': 'コード',
  'topbar.lightMode': 'ライトモード',
  'topbar.darkMode': 'ダークモード',
  'topbar.fullscreen': 'フルスクリーン',
  'topbar.exitFullscreen': 'フルスクリーンを終了',
  'topbar.edited': '— 編集済み',
  'topbar.closeConfirmMessage': '閉じる前に変更を保存しますか？',
  'topbar.closeConfirmDetail': '保存しないと変更内容が失われます。',
  'topbar.dontSave': '保存しない',
  'topbar.agentsAndMcp': 'Agents & MCP',
  'topbar.setupAgentsMcp': 'Agents & MCP を設定',
  'topbar.connected': '接続済み',
  'topbar.agentStatus': '{{agents}} Agent{{agentSuffix}} · {{mcp}} MCP',

  // ── Git パネル ──
  'git.openPanel': 'Git パネルを開く',
  'git.closePanel': 'Git パネルを閉じる',
  'git.title': 'Git · {{fileName}}',
  'git.titleNoFile': 'Git · (ファイル未選択)',
  'git.close': '閉じる',
  'git.initializing': 'リポジトリを初期化中…',
  'git.conflict.title': 'マージコンフリクト',
  'git.conflict.description':
    '以下のカードで各コンフリクトを解決してから、マージを適用してください。',
  'git.conflict.abort': 'マージを中止',
  'git.conflict.nonOp.title': '.op 以外のファイルによりマージが一時停止しました',
  'git.conflict.nonOp.description':
    '.op ファイルのマージは完了しましたが、このリポジトリ内の他のファイルがまだ未解決です。OpenPencil の外で解決してから続行してください。',
  'git.conflict.nonOp.unresolvedHeading_one': '1 個のファイルに対応が必要',
  'git.conflict.nonOp.unresolvedHeading_other': '{{count}} 個のファイルに対応が必要',
  'git.conflict.nonOp.continue': 'マージを続行',
  'git.conflict.nonOp.abort': 'マージを中止',
  // ── Git 競合バナー (Phase 7b) ──
  'git.conflict.banner.progress': '{{resolved}} / {{total}} 解決済み',
  'git.conflict.banner.apply': 'マージを適用',
  'git.conflict.banner.continue': '続行',
  'git.conflict.banner.finalizeError': '適用できませんでした: {{message}}',
  'git.conflict.banner.pollError': 'エラーのためステータスポーリングを一時停止中: {{message}}',
  // placeholder — future localization
  'git.conflict.banner.reopenMessage':
    'マージ中にパネルが再開されました — 中止して再度プルしてください。',

  // ── Git 競合リスト (Phase 7c) ──
  'git.conflict.list.heading': 'すべての競合',
  'git.conflict.list.progress': '{{resolved}} / {{total}} 解決済み',
  'git.conflict.list.allResolved': 'すべて解決済み',
  'git.conflict.list.allOurs': 'すべて自分のものに',
  'git.conflict.list.allTheirs': 'すべて相手のものに',

  // ── Git 競合アイテム (Phase 7c) ──
  'git.conflict.item.nodeConflict': 'ノード競合',
  'git.conflict.item.fieldConflict': 'フィールド競合',
  'git.conflict.item.resolved': '解決済み',

  // ── Git 競合カード (Phase 7c) ──
  'git.conflict.card.ours': '自分',
  'git.conflict.card.theirs': '相手',
  'git.conflict.card.base': 'ベース',
  'git.conflict.card.keepMine': '自分のものを使用',
  'git.conflict.card.keepTheirs': '相手のものを使用',
  'git.conflict.card.oursThumbnailAlt': '自分のバージョン',
  'git.conflict.card.theirsThumbnailAlt': '相手のバージョン',

  // ── Git 競合 JSON エディタ (Phase 7c) ──
  'git.conflict.editor.editManually': '手動で編集',
  'git.conflict.editor.cancel': 'キャンセル',
  'git.conflict.editor.apply': '適用',
  'git.conflict.editor.invalidJson': '無効な JSON',
  'git.conflict.editor.textareaLabel': 'JSON 値を編集',

  'git.error.dismiss': '閉じる',
  'git.error.retry': '再試行',
  'git.error.title': '問題が発生しました',

  // ── Git 空状態 ──
  'git.empty.heading': 'まだバージョン履歴がありません',
  'git.empty.optional': 'Git は任意 — スキップしても問題ありません',
  'git.empty.requireSavedFile': '履歴を作成するには .op ファイルを保存してください',
  'git.empty.newCard': '新規',
  'git.empty.newCardDescription': 'ローカル履歴を作成',
  'git.empty.openCard': '開く',
  'git.empty.openCardDescription': '既存のリポジトリ',
  'git.empty.cloneCard': 'クローン',
  'git.empty.cloneCardDescription': 'リモートから',

  // ── Git 作者フォーム ──
  'git.author.heading': 'コミット作者',
  'git.author.subheading': '最初のコミットには名前とメールが必要です',
  'git.author.nameLabel': '名前',
  'git.author.namePlaceholder': 'あなたの名前',
  'git.author.emailLabel': 'メール',
  'git.author.emailPlaceholder': 'you@example.com',
  'git.author.submit': '保存',
  'git.author.cancel': 'キャンセル',
  'git.author.validationName': '名前を入力してください',
  'git.author.validationEmail': '有効なメールアドレスを入力してください',

  // ── Git ピッカー (Phase 4b) ──
  'git.picker.heading': 'このリポジトリには {{count}} 個の .op ファイルがあります:',
  'git.picker.milestoneCount': '{{count}} マイルストーン',
  'git.picker.noHistory': '履歴なし',
  'git.picker.lastCommit': '{{message}} · {{time}}',
  'git.picker.bindButton': 'このファイルを追跡',
  'git.picker.bindAndOpenButton': '追跡して開く',
  'git.picker.back': '戻る',
  'git.picker.backClose': 'キャンセル',
  'git.picker.empty.heading': 'このリポジトリには .op ファイルがありません',
  'git.picker.empty.body': 'Git パネルには少なくとも 1 つの .op ファイルが必要です',
  'git.picker.empty.close': 'パネルを閉じる',

  // ── Git 自動バインドバナー (Phase 4b) ──
  'git.autoBind.confirmHeading': '{{fileName}} が見つかりました — エディタで開きますか?',
  'git.autoBind.openButton': '開く',
  'git.autoBind.dismissButton': 'スキップ',

  // ── Git 相対時間 (Phase 4b) ──
  'git.relativeTime.justNow': '今',
  'git.relativeTime.minutesAgo': '{{count}}分前',
  'git.relativeTime.hoursAgo': '{{count}}時間前',
  'git.relativeTime.daysAgo': '{{count}}日前',

  // ── Git Commit Input (Phase 4c) ──
  'git.commit.placeholder': 'この変更を説明…',
  'git.commit.submitButton': 'マイルストーンとして保存',
  'git.commit.saveRequiredTitle': 'まず文書を保存してください',
  'git.commit.saveRequiredBody':
    '未保存の変更があります。続行するには文書を保存してください: {{label}}',
  'git.commit.saveRequiredSave': '保存',
  'git.commit.saveRequiredCancel': 'キャンセル',

  // ── Git Header (Phase 4c → 6c) ──
  'git.header.autosaveError': '自動保存エラー',
  'git.header.autosaveErrorTitle': '前回の自動保存が失敗',
  'git.header.authorMissingWarning': 'コミット作者を設定してください',
  'git.header.overflowSwitchTracked': '追跡ファイルを切替…',
  'git.header.overflowClearAuthor': 'コミット作者をクリア',
  'git.header.overflowCloseRepo': 'リポジトリを閉じる',
  'git.header.overflowRemoteSettings': 'リモート設定…',
  'git.header.overflowSshKeys': 'SSH 鍵…',
  'git.header.overflowMoreActions': 'その他の操作',

  // ── Git History List (Phase 4c) ──
  'git.history.empty': '履歴なし',
  'git.history.autosaveGroup_one': '1 件の自動保存',
  'git.history.autosaveGroup_other': '{{count}} 件の自動保存',
  'git.history.autosaveLabel': 'auto {{time}}',
  'git.history.milestoneDetailTitle': 'マイルストーン詳細',
  'git.history.restoreButton': '復元',
  'git.history.copyHashButton': 'ハッシュをコピー',
  'git.history.copiedToast': 'コピー済み',
  // ── Git 履歴差分 (Phase 7b) ──
  'git.history.diff.loading': '差分を読み込み中…',
  'git.history.diff.initialCommit': '初回コミット — 比較できる親コミットがありません',
  'git.history.diff.noChanges': '変更なし',
  'git.history.diff.error': '差分を利用できません: {{message}}',
  'git.history.diff.framesChanged_one': '1 件のフレームが変更されました',
  'git.history.diff.framesChanged_other': '{{count}} 件のフレームが変更されました',
  'git.history.diff.nodesAdded_one': 'ノードが 1 件追加されました',
  'git.history.diff.nodesAdded_other': 'ノードが {{count}} 件追加されました',
  'git.history.diff.nodesRemoved_one': 'ノードが 1 件削除されました',
  'git.history.diff.nodesRemoved_other': 'ノードが {{count}} 件削除されました',
  'git.history.diff.nodesModified_one': 'ノードが 1 件変更されました',
  'git.history.diff.nodesModified_other': 'ノードが {{count}} 件変更されました',
  'git.history.promoteButton': 'マイルストーンに昇格',
  'git.history.promoteSuccessToast': 'マイルストーンに昇格しました',
  'git.history.loadMore': 'さらに読み込む',
  'git.autosave.messagePrefix': 'auto',
  'git.autosave.messageDiffSuffix': '',

  // ── Git ブランチピッカー (Phase 5) ──
  'git.branch.listHeading': 'ブランチ',
  'git.branch.createAction': '新規ブランチ',
  'git.branch.createPlaceholder': 'feature/login-redesign',
  'git.branch.createSubmit': 'ブランチを作成',
  'git.branch.createEmpty': 'ブランチ名を入力してください',
  'git.branch.createExists': 'ブランチ {{name}} は既に存在します',
  'git.branch.mergeAction': 'ブランチをマージ…',
  'git.branch.mergeHeading': '{{name}} にマージ',
  'git.branch.deletePrompt': 'ブランチ {{name}} を削除しますか?',
  'git.branch.deleteLabel': 'ブランチ {{name}} を削除',
  'git.branch.deleteWarning': 'ブランチ {{name}} に未マージのコミットがあります',
  'git.branch.deleteConfirm': '削除',
  'git.branch.deleteForce': '強制削除',
  'git.branch.cancel': 'キャンセル',
  'git.branch.conflictDisabled': 'ブランチを切り替える前にマージを完了してください',
  'git.branch.noCommits': 'コミットがまだありません',

  // ── Git Clone Wizard (Phase 6a) ──
  'git.wizard.clone.heading': 'リモートリポジトリをクローン',
  'git.wizard.clone.subheading': 'リモート URL とコピー先フォルダを選択してください。',
  'git.wizard.clone.urlLabel': 'リモート URL',
  'git.wizard.clone.urlPlaceholder': 'https://github.com/owner/repo.git',
  'git.wizard.clone.destLabel': 'コピー先フォルダ',
  'git.wizard.clone.destPlaceholder': '/path/to/clone',
  'git.wizard.clone.destPickButton': '参照…',
  'git.wizard.clone.usernameLabel': 'ユーザー名(任意)',
  'git.wizard.clone.tokenLabel': 'アクセストークン(任意)',
  'git.wizard.clone.tokenPlaceholder': 'ghp_… 公開リポジトリは空欄可',
  'git.wizard.clone.anonymousHint': '空欄のままにすると匿名でクローンします(公開リポジトリのみ)。',
  'git.wizard.clone.sshHint': 'この URL には SSH 鍵認証が必要です。',
  'git.wizard.clone.hostDetected': '検出: {{host}} · {{mode}}',
  'git.wizard.clone.authMode.token-or-anon': 'トークンまたは匿名',
  'git.wizard.clone.authMode.ssh': 'SSH 鍵',
  'git.wizard.clone.cancel': 'キャンセル',
  'git.wizard.clone.submit': 'クローン',
  'git.wizard.clone.validationUrl': 'リモート URL を入力してください',
  'git.wizard.clone.validationDest': 'コピー先フォルダを選択してください',
  'git.wizard.clone.validationTokenUsername': 'トークンを指定する場合はユーザー名が必要です',
  'git.wizard.clone.error.clone-network':
    'クローン中にネットワークエラーが発生しました。接続を確認して再試行してください。',
  'git.wizard.clone.error.network': 'ネットワークエラー。接続を確認して再試行してください。',
  'git.wizard.clone.error.timeout':
    'クローンがタイムアウトしました。再試行するか、より小さなリポジトリを使用してください。',
  'git.wizard.clone.error.auth-required': 'このリポジトリは認証が必要です。',
  'git.wizard.clone.error.auth-failed':
    '認証に失敗しました。ユーザー名とトークンを確認してください。',
  'git.wizard.clone.error.auth-token-invalid':
    'アクセストークンが拒否されました。新しいトークンを生成して再試行してください。',
  'git.wizard.clone.error.clone-failed':
    'クローンに失敗しました。URL が実在するリポジトリを指していることを確認してください。',
  'git.wizard.clone.error.clone-target-exists':
    'コピー先フォルダが既に存在するか、空ではありません。',

  // ── Git プル / プッシュ (Phase 6b) ──
  'git.pull.label': 'プル',
  'git.pull.tooltip': 'origin からプル',
  'git.pull.noRemote': 'リモートが設定されていません — Git 設定で追加してください',
  'git.pull.retry': 'プルを再試行',
  'git.push.label': 'プッシュ',
  'git.push.tooltip_one': '1 件のコミットを origin にプッシュ',
  'git.push.tooltip_other': '{{count}} 件のコミットを origin にプッシュ',
  'git.push.noRemote': 'リモートが設定されていません — Git 設定で追加してください',
  'git.push.upToDate': 'プッシュする内容はありません — 最新の状態です',
  'git.push.retry': 'プッシュを再試行',
  'git.push.rejectedBody':
    'リモートに未取得のコミットがあります。先にプルしてから再度プッシュしてください。',
  'git.push.rejectedDismiss': '閉じる',
  'git.push.rejectedPull': '今すぐプル',
  'git.remote.dismissError': '閉じる',

  // ── Git リモート設定 (Phase 6c) ──
  'git.remote.settingsLabel': 'リモート設定',
  'git.remote.settingsHeading': 'リモート',
  'git.remote.back': '戻る',
  'git.remote.cancel': 'キャンセル',
  'git.remote.emptyNoOrigin': 'リモートが設定されていません。追加してください:',
  'git.remote.urlLabel': 'Origin URL',
  'git.remote.urlPlaceholder': 'https://github.com/owner/repo.git',
  'git.remote.saveButton': '保存',
  'git.remote.clearButton': 'クリア',
  'git.remote.clearConfirmHeading': 'origin をクリアしますか?',
  'git.remote.clearConfirmBody': 'このリポジトリから origin リモートが削除されます。',
  'git.remote.clearConfirmAction': '確認',
  'git.remote.aheadBehind': '{{ahead}} 先行 · {{behind}} 遅延',
  'git.remote.fetchButton': 'Fetch',
  'git.remote.sshIsoUnsupported':
    '内蔵エンジンは SSH トランスポートをサポートしていません。システム git をインストールするか、HTTPS リモート URL に切り替えてください。',
  'git.remote.storedAuthLabel': '保存済み認証情報',
  'git.remote.storedAuth.token': 'トークン',
  'git.remote.storedAuth.ssh': 'SSH 鍵',
  'git.remote.storedAuth.none': 'なし',
  'git.remote.storedAuth.loading': '読み込み中…',
  'git.remote.storedAuth.noHost': 'ホストが検出されません',
  'git.remote.clearAuthButton': '保存済み認証情報をクリア',

  // ── Git SSH 鍵 (Phase 6c) ──
  'git.ssh.label': 'SSH 鍵',
  'git.ssh.heading': 'SSH 鍵',
  'git.ssh.back': '戻る',
  'git.ssh.cancel': 'キャンセル',
  'git.ssh.isoUnsupported':
    '現在のリモートは SSH を使用していますが、内蔵エンジンは SSH トランスポートを実行できません。システム git をインストールするか、リモート URL を HTTPS に変更してください。',
  'git.ssh.emptyList': 'SSH 鍵はまだありません。',
  'git.ssh.generateAction': '新しく生成',
  'git.ssh.importAction': '既存のものをインポート',
  'git.ssh.copyPublicKey': '公開鍵をコピー',
  'git.ssh.copiedHint': 'コピーしました',
  'git.ssh.copyUnsupported': 'クリップボードを利用できません。この鍵を手動でコピーしてください。',
  'git.ssh.deleteKey': '{{name}} を削除',
  'git.ssh.deletePrompt': 'SSH 鍵 {{name}} を削除しますか?',
  'git.ssh.deleteConfirm': '削除',
  'git.ssh.currentHostBadge': '現在のホスト',
  'git.ssh.hostLabel': 'ホスト',
  'git.ssh.hostPlaceholder': 'github.com',
  'git.ssh.commentLabel': 'コメント',
  'git.ssh.commentPlaceholder': 'laptop@home',
  'git.ssh.generateSubmit': '生成',
  'git.ssh.importPathLabel': '秘密鍵のパス',
  'git.ssh.importPathPlaceholder': '/path/to/id_ed25519',
  'git.ssh.importBrowse': '参照…',
  'git.ssh.importSubmit': 'インポート',
  'git.ssh.validationHost': 'ホストを入力してください',
  'git.ssh.validationComment': 'コメントを入力してください',
  'git.ssh.validationImportPath': 'インポートする秘密鍵ファイルを選択してください',
  'git.ssh.providerLink': '{{host}} の SSH 鍵設定を開く',
  'git.ssh.genericGuidance': '公開鍵をコピーして、Git プロバイダの SSH 鍵設定に追加してください。',

  // ── Git 認証フォーム (Phase 6b) ──
  'git.auth.formLabel': 'Git 認証情報',
  'git.auth.heading': '{{host}} に対して認証',
  'git.auth.headingUnknown': 'このリモートに対して認証',
  'git.auth.modeToggleLabel': '認証情報の種類',
  'git.auth.modeToken': 'トークン',
  'git.auth.modeSsh': 'SSH',
  'git.auth.usernameLabel': 'ユーザー名(任意)',
  'git.auth.tokenLabel': 'アクセストークン',
  'git.auth.tokenPlaceholder': 'ghp_… または PAT',
  'git.auth.sshKeyLabel': 'SSH キー',
  'git.auth.sshNoKeys':
    '利用可能な SSH キーがありません。先に Git 設定でインポートまたは生成してください。',
  'git.auth.rememberLabel': 'このホストの認証情報を記憶する',
  'git.auth.rememberHint': 'このホストの認証情報を記憶する',
  'git.auth.cancel': 'キャンセル',
  'git.auth.validationToken': 'アクセストークンは必須です',
  'git.auth.validationSshKey': 'SSH キーを選択してください',
  'git.auth.error.auth-required': 'このリモートには認証が必要です。',
  'git.auth.error.auth-failed': '認証に失敗しました。認証情報を確認して再度お試しください。',
  'git.auth.error.auth-token-invalid':
    'アクセストークンが拒否されました。新しいトークンを生成してから再試行してください。',
  // ── Right Panel ──
  'rightPanel.design': 'デザイン',
  'rightPanel.code': 'コード',
  'rightPanel.noSelection': '要素を選択してください',

  // ── Pages ──
  'pages.title': 'ページ',
  'pages.addPage': 'ページを追加',
  'pages.moveUp': '上に移動',
  'pages.moveDown': '下に移動',

  // ── Status Bar ──
  'statusbar.zoomOut': '縮小',
  'statusbar.zoomIn': '拡大',
  'statusbar.resetZoom': 'ズームをリセット',
  'statusbar.focusContent': 'すべての内容を表示',
  'statusbar.focusSelection': '選択範囲にフォーカス',

  // ── Updater ──
  'updater.softwareUpdate': 'ソフトウェアアップデート',
  'updater.dismiss': '閉じる',
  'updater.current': '現在のバージョン',
  'updater.latest': '最新バージョン',
  'updater.unknown': '不明',
  'updater.checking': '確認中...',
  'updater.downloadProgress': 'ダウンロード進捗',
  'updater.checkAgain': '再確認',
  'updater.restartInstall': '再起動してインストール',
  'updater.installing': 'インストール中...',
  'updater.releaseDate': 'リリース日：{{date}}',
  'updater.restartHint': '再起動してアップデートを適用します。再起動には通常 10〜15 秒かかります。',
  'updater.unknownError': '不明なアップデートエラーです。',
  'updater.title.checking': 'アップデートを確認中',
  'updater.title.available': 'アップデートが見つかりました',
  'updater.title.downloading': 'アップデートをダウンロード中',
  'updater.title.downloaded': 'インストール準備完了',
  'updater.title.error': 'アップデートに失敗しました',
  'updater.subtitle.checking': '最新リリースを確認中...',
  'updater.subtitle.available': 'バージョン {{version}} が利用可能です。',
  'updater.subtitle.availableGeneric': '新しいバージョンが利用可能です。',
  'updater.subtitle.downloading': 'バージョン {{version}} をバックグラウンドでダウンロード中。',
  'updater.subtitle.downloadingGeneric':
    'アップデートパッケージをバックグラウンドでダウンロード中。',
  'updater.subtitle.downloaded': 'バージョン {{version}} のダウンロードが完了しました。',
  'updater.subtitle.downloadedGeneric': 'アップデートのダウンロードが完了しました。',
  'updater.subtitle.error': 'アップデートの確認またはダウンロードができませんでした。',

  // ── Layers ──
  'layers.title': 'レイヤー',
  'layers.empty': 'レイヤーがありません。ツールバーからシェイプを描画してください。',

  // ── Layer Context Menu ──
  'layerMenu.groupSelection': '選択をグループ化',
  'layerMenu.createComponent': 'コンポーネントを作成',
  'layerMenu.detachComponent': 'コンポーネントを解除',
  'layerMenu.detachInstance': 'インスタンスを解除',
  'layerMenu.booleanUnion': '合体',
  'layerMenu.booleanSubtract': '前面で型抜き',
  'layerMenu.booleanIntersect': '交差',
  'layerMenu.toggleLock': 'ロックの切り替え',
  'layerMenu.toggleVisibility': '表示の切り替え',

  // ── Property Panel ──
  'property.createComponent': 'コンポーネントを作成',
  'property.detachComponent': 'コンポーネントを解除',
  'property.goToComponent': 'コンポーネントに移動',
  'property.detachInstance': 'インスタンスを解除',

  // ── Fill ──
  'fill.title': '塗り',
  'fill.solid': '単色',
  'fill.linear': '線形グラデーション',
  'fill.radial': '放射グラデーション',
  'fill.image': '画像',
  'fill.stops': 'カラーストップ',
  'fill.angle': '角度',

  // ── Image ──
  'image.title': '画像',
  'image.fit': 'フィットモード',
  'image.fill': '塗りつぶし',
  'image.fitMode': 'フィット',
  'image.crop': 'クロップ',
  'image.tile': 'タイル',
  'image.clickToUpload': 'クリックしてアップロード',
  'image.changeImage': '画像を変更',
  'image.adjustments': '調整',
  'image.exposure': '露出',
  'image.contrast': 'コントラスト',
  'image.saturation': '彩度',
  'image.temperature': '色温度',
  'image.tint': '色合い',
  'image.highlights': 'ハイライト',
  'image.shadows': 'シャドウ',
  'image.reset': 'リセット',

  // ── Stroke ──
  'stroke.title': '線',

  // ── Appearance ──
  'appearance.layer': 'レイヤー',
  'appearance.opacity': '不透明度',

  // ── Layout ──
  'layout.flexLayout': 'フレックスレイアウト',
  'layout.freedom': 'フリー（レイアウトなし）',
  'layout.vertical': '垂直レイアウト',
  'layout.horizontal': '水平レイアウト',
  'layout.alignment': '配置',
  'layout.gap': '間隔',
  'layout.spaceBetween': '均等配置（両端）',
  'layout.spaceAround': '均等配置（周囲）',
  'layout.dimensions': 'サイズ',
  'layout.fillWidth': '幅を埋める',
  'layout.fillHeight': '高さを埋める',
  'layout.hugWidth': '幅に合わせる',
  'layout.hugHeight': '高さに合わせる',
  'layout.clipContent': 'コンテンツをクリップ',

  // ── Padding ──
  'padding.title': 'パディング',
  'padding.paddingMode': 'パディングモード',
  'padding.paddingValues': 'パディング値',
  'padding.oneValue': '全辺統一値',
  'padding.horizontalVertical': '水平/垂直',
  'padding.topRightBottomLeft': '上/右/下/左',

  // ── Typography ──
  'text.typography': 'タイポグラフィ',
  'text.lineHeight': '行の高さ',
  'text.letterSpacing': '文字間隔',
  'text.horizontal': '水平',
  'text.vertical': '垂直',
  'text.alignLeft': '左揃え',
  'text.alignCenter': '中央揃え',
  'text.alignRight': '右揃え',
  'text.justify': '均等割り付け',
  'text.top': '上',
  'text.middle': '中央',
  'text.bottom': '下',
  'text.weight.thin': 'Thin',
  'text.weight.light': 'Light',
  'text.weight.regular': 'Regular',
  'text.weight.medium': 'Medium',
  'text.weight.semibold': 'Semibold',
  'text.weight.bold': 'Bold',
  'text.weight.black': 'Black',
  'text.font.search': 'フォントを検索\u2026',
  'text.font.bundled': 'バンドル',
  'text.font.system': 'システム',
  'text.font.loading': 'フォントを読み込み中\u2026',
  'text.font.noResults': 'フォントが見つかりません',

  // ── Text Layout ──
  'textLayout.title': 'レイアウト',
  'textLayout.dimensions': 'サイズ',
  'textLayout.resizing': 'リサイズ',
  'textLayout.autoWidth': '自動 W',
  'textLayout.autoWidthDesc': '自動幅 \u2014 テキストが水平に拡張',
  'textLayout.autoHeight': '自動 H',
  'textLayout.autoHeightDesc': '自動高さ \u2014 幅固定、高さが自動調整',
  'textLayout.fixed': '固定',
  'textLayout.fixedDesc': '固定サイズ \u2014 幅と高さの両方が固定',
  'textLayout.fillWidth': '幅を埋める',
  'textLayout.fillHeight': '高さを埋める',

  // ── Effects ──
  'effects.title': 'エフェクト',
  'effects.dropShadow': 'ドロップシャドウ',
  'effects.blur': 'ぼかし',
  'effects.spread': '広がり',
  'effects.color': '色',

  // ── Export ──
  'export.title': 'エクスポート',
  'export.format': '形式',
  'export.scale': '倍率',
  'export.selectedOnly': '選択項目のみエクスポート',
  'export.exportFormat': '{{format}} をエクスポート',
  'export.exportLayer': 'レイヤーをエクスポート',
  'export.pdfMultiPage': 'PDF にはすべての {{count}} ページが含まれます。',

  // ── Polygon ──
  'polygon.sides': '辺の数',

  // ── Ellipse ──
  'ellipse.start': '開始',
  'ellipse.sweep': 'スイープ',
  'ellipse.innerRadius': '内径',

  // ── Corner Radius ──
  'cornerRadius.title': '角丸',

  // ── Size / Position ──
  'size.position': '位置',

  // ── Icon ──
  'icon.title': 'アイコン',
  'icon.searchIcons': 'アイコンを検索...',
  'icon.noIconsFound': 'アイコンが見つかりません',
  'icon.typeToSearch': '入力して Iconify アイコンを検索',
  'icon.iconsCount': '{{count}} 個のアイコン',

  // ── Variables Panel ──
  'variables.addTheme': 'テーマを追加',
  'variables.addVariant': 'バリアントを追加',
  'variables.addVariable': '変数を追加',
  'variables.searchVariables': '変数を検索...',
  'variables.noMatch': '一致する変数がありません',
  'variables.noDefined': '変数が定義されていません',
  'variables.closeShortcut': '閉じる (\u2318\u21e7V)',
  'variables.presets': 'プリセット',
  'variables.savePreset': '現在の設定をプリセットとして保存…',
  'variables.loadPreset': 'プリセットを読み込み',
  'variables.importPreset': 'ファイルからインポート…',
  'variables.exportPreset': 'ファイルにエクスポート…',
  'variables.presetName': 'プリセット名',
  'variables.noPresets': '保存されたプリセットはありません',

  // ── Design System (design.md) ──
  'designMd.title': 'デザインシステム',
  'designMd.import': 'design.md をインポート',
  'designMd.export': 'design.md をエクスポート',
  'designMd.autoGenerate': 'デザインから自動生成',
  'designMd.empty': 'デザインシステムが読み込まれていません',
  'designMd.importCta': 'design.md をインポート',
  'designMd.autoGenerateCta': '自動生成',
  'designMd.visualTheme': 'ビジュアルテーマ',
  'designMd.colors': 'カラー',
  'designMd.typography': 'タイポグラフィ',
  'designMd.font': 'フォント',
  'designMd.headings': '見出し',
  'designMd.body': '本文',
  'designMd.componentStyles': 'コンポーネントスタイル',
  'designMd.layoutPrinciples': 'レイアウト原則',
  'designMd.generationNotes': '生成メモ',
  'designMd.syncAllToVariables': 'すべてを変数に同期',
  'designMd.addAsVariable': '+Var',
  'designMd.copyHex': '16進数をコピー',
  'designMd.remove': 'デザインシステムを削除',
  'toolbar.designSystem': 'デザインシステム',

  // ── AI Chat ──
  'ai.newChat': '新しいチャット',
  'ai.collapse': '折りたたむ',
  'ai.tryExample': 'サンプルを試してデザイン...',
  'ai.tipSelectElements':
    'ヒント：チャットの前にキャンバス上の要素を選択するとコンテキストが提供されます。',
  'ai.generating': '生成中...',
  'ai.designWithAgent': 'Agent でデザイン...',
  'ai.attachImage': '画像を添付',
  'ai.stopGenerating': '生成を停止',
  'ai.sendMessage': 'メッセージを送信',
  'ai.loadingModels': 'モデルを読み込み中...',
  'ai.noModelsConnected': 'モデルが接続されていません',
  'ai.searchModels': 'モデルを検索...',
  'ai.noModelsFound': 'モデルが見つかりません',
  'ai.quickAction.loginScreen': 'モバイルログイン画面をデザイン',
  'ai.quickAction.loginScreenPrompt':
    'メール入力、パスワード入力、ログインボタン、ソーシャルログインオプションを含む、モダンなモバイルログイン画面をデザインしてください',
  'ai.quickAction.foodApp': 'フードアプリのホームページ',
  'ai.quickAction.foodAppPrompt': 'Generate a well-designed food mobile app homepage',
  'ai.quickAction.bottomNav': 'ボトムナビゲーションバーをデザイン',
  'ai.quickAction.bottomNavPrompt':
    'ホーム、検索、追加、メッセージ、プロフィールの 5 つのタブを含むモバイルアプリのボトムナビゲーションバーをデザインしてください',
  'ai.quickAction.colorPalette': 'アプリのカラーパレットを提案',
  'ai.quickAction.colorPalettePrompt':
    'ペットケアアプリ向けのモダンなカラーパレットを提案してください',
  'ai.startDesigning': 'Start designing with AI',
  'ai.maximize': 'Maximize',
  'ai.restore': 'Restore',
  'ai.quickAction.loginScreenDesc': 'Mobile login with social auth',
  'ai.quickAction.foodAppDesc': 'App homepage design',
  'ai.quickAction.bottomNavDesc': '5-tab navigation bar',
  'ai.quickAction.colorPaletteDesc': 'Color palette recommendation',

  // ── File Menu ──
  'fileMenu.newFile': 'New file',
  'fileMenu.openFile': 'Open file...',
  'fileMenu.save': 'Save',
  'fileMenu.saveAs': 'Save as...',
  'fileMenu.exportImage': '画像をエクスポート...',
  'fileMenu.recentFiles': 'Recent files',
  'fileMenu.clearHistory': 'Clear history',
  'fileMenu.noRecentFiles': 'No recent files',
  'fileMenu.saved': 'Saved',
  'fileMenu.justNow': 'just now',
  'fileMenu.minutesAgo': '{{count}}m ago',
  'fileMenu.hoursAgo': '{{count}}h ago',
  'fileMenu.yesterday': 'yesterday',
  'fileMenu.daysAgo': '{{count}}d ago',

  // ── Unsaved Changes ──
  'unsaved.title': 'Unsaved changes',
  'unsaved.message': 'Save changes to "{{name}}"?',
  'unsaved.dontSave': "Don't Save",

  // ── Code Panel ──
  'code.reactTailwind': 'React + Tailwind',
  'code.htmlCss': 'HTML + CSS',
  'code.cssVariables': 'CSS Variables',
  'code.copyClipboard': 'クリップボードにコピー',
  'code.copied': 'コピーしました！',
  'code.download': 'コードファイルをダウンロード',
  'code.closeCodePanel': 'コードパネルを閉じる',
  'code.genCssVars': 'ドキュメント全体の CSS 変数を生成中',
  'code.genSelected': '{{count}} 個の選択要素のコードを生成中',
  'code.genDocument': 'ドキュメント全体のコードを生成中',
  'code.aiEnhance': 'AI で改善',
  'code.cancelEnhance': '改善をキャンセル',
  'code.resetEnhance': '元に戻す',
  'code.enhancing': 'AI がコードを改善中...',
  'code.enhanced': 'AI により改善済み',

  // ── Save Dialog ──
  'save.saveAs': '名前を付けて保存',
  'save.fileName': 'ファイル名',

  // ── Agent Settings ──
  'agents.title': 'Agents & MCP を設定',
  'agents.agentsOnCanvas': 'キャンバス上の Agents',
  'agents.mcpIntegrations': 'ターミナルでの MCP 連携',
  'agents.transport': 'トランスポート',
  'agents.port': 'ポート',
  'agents.mcpRestart': 'MCP 連携はターミナルの再起動後に有効になります。',
  'agents.mcpReinstallHint':
    'OpenPencil のバージョンアップ後、互換性を確保するため MCP 統合を再インストールしてください。',
  'agents.modelCount': '{{count}} 個のモデル',
  'agents.connectionFailed': '接続に失敗しました',
  'agents.serverError': 'サーバーエラー {{status}}',
  'agents.failedTo': '{{action}}に失敗しました',
  'agents.failedToMcp': 'MCP サーバーの{{action}}に失敗しました',
  'agents.failedTransport': 'トランスポートの更新に失敗しました',
  'agents.failedMcpTransport': 'MCP トランスポートの更新に失敗しました',
  'agents.claudeCode': 'Claude Code',
  'agents.claudeModels': 'Claude モデル',
  'agents.codexCli': 'Codex CLI',
  'agents.openaiModels': 'OpenAI モデル',
  'agents.opencode': 'OpenCode',
  'agents.opencodeDesc': '75 以上の LLM プロバイダー',
  'agents.copilot': 'GitHub Copilot',
  'agents.copilotDesc': 'GitHub Copilot モデル',
  'agents.geminiCli': 'Gemini CLI',
  'agents.geminiDesc': 'Google Gemini モデル',
  'agents.mcpServer': 'MCP サーバー',
  'agents.mcpServerStart': '開始',
  'agents.mcpServerStop': '停止',
  'agents.mcpServerRunning': '実行中',
  'agents.mcpServerStopped': '停止中',
  'agents.mcpLanAccess': 'LAN アクセス',
  'agents.mcpClientConfig': 'クライアント設定',
  'agents.stdio': 'stdio',
  'agents.http': 'http',
  'agents.stdioHttp': 'stdio + http',
  'agents.autoUpdate': '自動アップデート確認',
  'agents.notInstalled': '未インストール',
  'agents.install': 'インストール',
  'agents.installing': 'インストール中...',
  'agents.installFailed': 'インストール失敗',
  'agents.viewDocs': 'ドキュメント',
  'settings.title': '設定',
  'settings.agents': 'Agents',
  'settings.mcp': 'MCP',
  'settings.images': 'Images',
  'settings.system': 'システム',
  'settings.autoUpdateDesc': '起動時に新しいバージョンを自動的に確認する',
  'settings.systemDesktopOnly': 'システム設定はデスクトップアプリで利用できます。',
  'settings.envHint': '{{path}} で追加の環境変数を設定できます。',

  // ── Builtin Providers ──
  'builtin.title': '組み込みプロバイダー',
  'builtin.description': 'API キーを直接設定 — CLI ツール不要。',
  'builtin.addProvider': 'プロバイダーを追加',
  'builtin.empty': '組み込みプロバイダーはまだ設定されていません。',
  'builtin.displayName': '表示名',
  'builtin.displayNamePlaceholder': '例：My Anthropic Key',
  'builtin.provider': 'プロバイダー',
  'builtin.region': 'リージョン',
  'builtin.regionChina': '中国',
  'builtin.regionGlobal': 'グローバル',
  'builtin.apiKey': 'API Key',
  'builtin.model': 'モデル',
  'builtin.searchModels': '利用可能なモデルを検索',
  'builtin.filterModels': 'モデルを絞り込み...',
  'builtin.noModels': 'モデルが見つかりません',
  'builtin.baseUrl': 'Base URL',
  'builtin.baseUrlRequired': 'Base URL（必須）',
  'builtin.apiFormat': 'API フォーマット',
  'builtin.openaiCompat': 'OpenAI Compatible',
  'builtin.ready': '準備完了',
  'builtin.add': '追加',
  'builtin.searchError': 'モデルを検索するには Base URL が必要です',
  'builtin.custom': 'カスタム',
  'builtin.apiKeyBadge': 'API Key',
  'builtin.viaApiKey': '{{name}} API Key 経由',
  'builtin.errorProviderNotFound': '組み込みプロバイダーが見つかりません。設定を確認してください。',
  'builtin.errorApiKeyEmpty': 'API キーが空です。設定で API キーを追加してください。',
  'builtin.parallelAgents': '並列サブエージェント：{{count}}x（クリックで切替）',
  'builtin.baseUrlPlaceholder': 'https://api.example.com/v1',
  'builtin.teamDescription':
    'デザイン生成用のモデルを選択します。設定すると、デザインタスクはこのモデルを使用する専門エージェントに自動的に委任されます。',
  'builtin.teamDesignModel': 'デザインモデル',
  'builtin.teamSelectModel': 'なし（シングルエージェント）',

  // ── ACP Agents ──
  'acp.title': 'ACP Agent',
  'acp.description': '外部の ACP 互換 Agent を接続します。',
  'acp.addAgent': 'Agent を追加',
  'acp.empty': 'ACP Agent はまだ設定されていません。',
  'acp.displayName': '表示名',
  'acp.displayNamePlaceholder': '例：デザイン Agent',
  'acp.connectionType': '接続タイプ',
  'acp.local': 'ローカル',
  'acp.remote': 'リモート',
  'acp.command': 'コマンド',
  'acp.commandPlaceholder': '/usr/bin/myagent',
  'acp.args': '引数',
  'acp.argsPlaceholder': '--stdio',
  'acp.env': '環境変数',
  'acp.envPlaceholder': 'KEY=VALUE（1行に1つ）',
  'acp.url': 'URL',
  'acp.urlPlaceholder': 'ws://localhost:8100',
  'acp.connected': '接続済み',
  'acp.notConnected': '未接続',
  'acp.connect': '接続',
  'acp.disconnect': '切断',
  'acp.localDesktopOnly': 'ローカル Agent はデスクトップアプリでのみ使用できます。',

  // ── Figma Import ──
  'figma.title': 'Figma からインポート',
  'figma.dropFile': '.fig ファイルをここにドロップ',
  'figma.orBrowse': 'またはクリックして参照',
  'figma.exportTip': 'Figma からエクスポート：ファイル \u2192 ローカルコピーを保存 (.fig)',
  'figma.selectFigFile': '.fig ファイルを選択してください',
  'figma.noPages': '.fig ファイルにページが見つかりません',
  'figma.parseFailed': '.fig ファイルの解析に失敗しました',
  'figma.convertFailed': 'Figma ファイルの変換に失敗しました',
  'figma.parsing': '.fig ファイルを解析中...',
  'figma.converting': 'ノードを変換中...',
  'figma.selectPage':
    'このファイルには {{count}} ページあります。インポートするページを選択してください：',
  'figma.layers': '{{count}} レイヤー',
  'figma.importAll': 'すべてのページをインポート',
  'figma.importComplete': 'インポート完了！',
  'figma.moreWarnings': '...他 {{count}} 件の警告',
  'figma.tryAgain': '再試行',
  'figma.layoutMode': 'レイアウトモード：',
  'figma.preserveLayout': 'Figma のレイアウトを維持',
  'figma.autoLayout': 'OpenPencil 自動レイアウト',
  'figma.comingSoon': '近日公開',

  // ── Landing Page ──
  'landing.open': 'Open',
  'landing.pencil': 'Pencil',
  'landing.tagline': 'オープンソースのベクターデザインツール。Design as Code。',
  'landing.newDesign': '新規デザイン',
  'landing.shortcutHint': '{{key1}} + {{key2}} を押して新規デザインを作成',

  // ── 404 ──
  'notFound.message': 'ページが見つかりません',

  // ── Component Browser ──
  'componentBrowser.title': 'UIKit ブラウザ',
  'componentBrowser.exportKit': 'キットをエクスポート',
  'componentBrowser.importKit': 'キットをインポート',
  'componentBrowser.kit': 'キット：',
  'componentBrowser.all': 'すべて',
  'componentBrowser.imported': '（インポート済み）',
  'componentBrowser.components': 'コンポーネント',
  'componentBrowser.searchComponents': 'コンポーネントを検索...',
  'componentBrowser.deleteKit': '{{name}} を削除',
  'componentBrowser.category.all': 'すべて',
  'componentBrowser.category.buttons': 'ボタン',
  'componentBrowser.category.inputs': '入力',
  'componentBrowser.category.cards': 'カード',
  'componentBrowser.category.nav': 'ナビゲーション',
  'componentBrowser.category.layout': 'レイアウト',
  'componentBrowser.category.feedback': 'フィードバック',
  'componentBrowser.category.data': 'データ',
  'componentBrowser.category.other': 'その他',

  // ── Variable Picker ──
  'variablePicker.boundTo': '--{{name}} にバインド済み',
  'variablePicker.bindToVariable': '変数にバインド',
  'variablePicker.unbind': 'バインドを解除',
  'variablePicker.noVariables': '{{type}} 型の変数が定義されていません',
} as const;

export default ja;
