{
  "common": {
    "next": "次へ",
    "prev": "前へ",
    "finish": "完了",
    "cancel": "キャンセル",
    "save": "保存",
    "loading": "読み込み中...",
    "confirm": "確認",
    "success": "成功",
    "error": "エラー",
    "delete": "削除",
    "edit": "編集",
    "add": "追加",
    "search": "検索",
    "clear": "クリア",
    "close": "閉じる",
    "yes": "はい",
    "no": "いいえ",
    "submit": "送信",
    "reset": "リセット",
    "import": "インポート",
    "export": "エクスポート",
    "create": "作成",
    "update": "更新",
    "refresh": "更新",
    "view": "表示",
    "name": "名前",
    "status": "状態",
    "operation": "操作",
    "description": "説明",
    "total": "{{count}} 件",
    "noData": "データなし",
    "pleaseSelect": "選択してください",
    "pleaseEnter": "入力してください",
    "readOnly": "読み取り専用モード",
    "none": "なし",
    "more": "もっと"
  },
  "oobe": {
    "title": "SecScoreへようこそ",
    "subtitle": "教育ポイント管理エキスパート",
    "step": "ステップ {{current}}/{{total}}",
    "skip": "スキップ",
    "steps": {
      "entry": {
        "title": "開始",
        "description": "次の操作を選択してください",
        "enterOobe": "OOBEに入る",
        "connectPostgresAutoSync": "PostgreSQLに接続して自動同期",
        "skipDirect": "OOBEをスキップして直接入る"
      },
      "postgresql": {
        "title": "PostgreSQLに接続",
        "description": "PostgreSQL接続文字列を入力してください。自動接続・同期後にアプリに入ります。",
        "connectionPlaceholder": "postgresql://user:password@host:port/database?sslmode=require",
        "autoSyncAndEnter": "接続・自動同期して入る"
      },
      "language": {
        "title": "言語を選択",
        "description": "お好みのインターフェース言語を選択してください"
      },
      "theme": {
        "title": "テーマを設定",
        "description": "お好みの外観を選択してください",
        "mode": "モード",
        "lightMode": "ライト",
        "darkMode": "ダーク",
        "primaryColor": "メインカラー",
        "backgroundGradient": "背景グラデーション"
      },
      "password": {
        "title": "パスワードを設定",
        "description": "データを保護するログインパスワードを設定（任意）",
        "adminPassword": "管理者パスワード",
        "adminPasswordHint": "全機能にアクセス可能、6桁の数字",
        "pointsPassword": "ポイントパスワード",
        "pointsPasswordHint": "ポイント操作のみ、6桁の数字",
        "passwordPlaceholder": "6桁の数字を入力",
        "hint": "空欄でスキップ、後で設定で構成できます"
      },
      "students": {
        "title": "名簿をインポート",
        "description": "生徒名簿を追加してポイント管理を開始",
        "import": "名簿をインポート",
        "manual": "手動追加",
        "importHint": "Excel (.xlsx) または JSON ファイルに対応",
        "manualHint": "複数行のテキストを貼り付け、1行に1名前",
        "dragDrop": "ファイルをここにドラッグ、またはクリックして選択",
        "supportedFormats": ".xlsx, .json 形式に対応",
        "studentName": "生徒名",
        "addStudent": "生徒を追加",
        "noStudents": "生徒がいません。追加またはインポートしてください",
        "studentCount": "{{count}} 名の生徒を追加",
        "studentExists": "生徒は既に存在します",
        "importSuccess": "{{count}} 名の生徒をインポート成功",
        "noNewStudents": "インポートする新規生徒はいません",
        "parseFailed": "ファイル解析に失敗",
        "unsupportedFormat": "サポートされていないファイル形式"
      },
      "reasons": {
        "title": "理由を設定",
        "description": "よく使うポイント変動理由を追加",
        "addReason": "理由を追加",
        "reasonName": "理由名",
        "points": "ポイント",
        "positive": "加点",
        "negative": "減点",
        "noReasons": "理由がありません。よく使う理由を追加してください",
        "reasonCount": "{{count}} 件の理由を追加",
        "reasonExists": "理由は既に存在します"
      },
      "start": {
        "title": "準備完了",
        "description": "すべて準備が整いました。SecScoreを使い始めましょう！",
        "features": {
          "score": "生徒のポイントを簡単管理",
          "history": "完全なポイント変動履歴",
          "settlement": "決済とアーカイブに対応"
        },
        "startButton": "始める"
      }
    }
  },
  "settings": {
    "title": "設定",
    "tabs": {
      "appearance": "外観",
      "security": "セキュリティ",
      "account": "アカウント",
      "database": "クラウド同期",
      "dataManagement": "データ管理",
      "urlProtocol": "URLプロトコル",
      "about": "について"
    },
    "language": "言語",
    "languageHint": "インターフェースの表示言語を選択",
    "fontFamily": "グローバルフォント",
    "fontFamilyHint": "アプリのフォントを選択（完全に反映するにはページの更新が必要）",
    "theme": "テーマ",
    "password": "パスワードを設定",
    "themeMode": "モード",
    "lightMode": "ライト",
    "darkMode": "ダーク",
    "primaryColor": "メインカラー",
    "backgroundGradient": "背景グラデーション",
    "searchKeyboard": {
      "title": "検索キーボード",
      "hint": "検索ボックス下に表示するキーボードレイアウトを選択",
      "disableToggle": "検索キーボードを無効化",
      "disableHint": "有効にすると、検索ボックス下にキーボードが表示されなくなります",
      "options": {
        "qwerty26": "26キー (QWERTY)",
        "t9": "9キー (T9)"
      }
    },
    "interfaceZoom": "インターフェースズーム",
    "zoomOptions": {
      "small70": "小 (70%)",
      "default100": "デフォルト (100%)",
      "large150": "大 (150%)"
    },
    "general": {
      "saved": "保存しました",
      "saveFailed": "保存に失敗しました"
    },
    "zoomHint": "アプリのインターフェースの全体サイズを調整",
    "mobile": {
      "navigationTitle": "ページショートカット",
      "bottomNav": {
        "label": "下部ナビゲーション機能",
        "hint": "モバイル下部バーに表示する機能を選択。バーは最大4項目、残りは「もっと見る」に収納。"
      },
      "dragHint": "ドラッグで並べ替え。最初の4項目が下部バーに表示、残りは「もっと見る」に。",
      "dropHere": "ここにドロップ",
      "bottomSection": "下部バー（最大4）",
      "moreSection": "もっと見る",
      "moveToMore": "もっと見るに移動",
      "moveToBottom": "下部バーに移動"
    },
    "zoomUpdated": "ズームが更新されました",
    "updateFailed": "更新に失敗しました",
    "security": {
      "title": "パスワード保護システム",
      "adminPassword": "管理者パスワード",
      "pointsPassword": "ポイントパスワード",
      "recoveryString": "復旧文字列",
      "set": "設定済み",
      "notSet": "未設定",
      "generated": "生成済み",
      "notGenerated": "未生成",
      "enterPassword": "6桁の数字を入力（空欄でスキップ）",
      "adminPasswordPlaceholder": "6桁の管理者パスワードを入力（空欄でスキップ）",
      "pointsPasswordPlaceholder": "6桁のポイントパスワードを入力（空欄でスキップ）",
      "recoveryPlaceholder": "復旧文字列を入力",
      "savePassword": "パスワードを保存",
      "savePasswords": "パスワードを保存",
      "generateRecovery": "復旧文字列を生成",
      "clearAllPasswords": "全パスワードをクリア",
      "recoveryReset": "復旧文字列リセット",
      "enterRecovery": "復旧文字列を入力",
      "resetPassword": "パスワードをリセット",
      "resetHint": "リセットすると管理者/ポイントパスワードがクリアされ、新しい復旧文字列が生成されます。",
      "confirmClear": "全パスワードをクリアしますか？",
      "clearHint": "クリア後、保護が無効になります（パスワードがない場合、管理者権限がデフォルト）。",
      "saved": "パスワードが更新されました",
      "saveFailed": "更新に失敗しました",
      "generateFailed": "生成に失敗しました",
      "resetFailed": "リセットに失敗しました",
      "cleared": "クリアしました",
      "clearFailed": "クリアに失敗しました",
      "passwordClearedNewRecovery": "パスワードがクリアされ、新しい復旧文字列",
      "newRecoveryString": "新しい復旧文字列（保存してください）"
    },
    "account": {
      "title": "SECTL Auth アカウント",
      "notLoggedIn": "SECTL Auth にログインしていません",
      "oauthHint": "SECTL Auth アカウントでログインして、統合認証とリモートログアウトを利用",
      "loginButton": "SECTL Auth でログイン",
      "loginSuccess": "ログイン成功",
      "logout": "ログアウト",
      "userId": "ユーザーID",
      "permission": "権限レベル"
    },
    "database": {
      "title": "データベース接続",
      "currentStatus": "現在のデータベース状態",
      "sqliteLocal": "SQLite ローカルデータベース",
      "postgresqlRemote": "PostgreSQL リモートデータベース",
      "connected": "接続済み",
      "disconnected": "未接続",
      "postgresqlConnection": "PostgreSQL リモート接続",
      "connectionHint": "PostgreSQL接続文字列を入力してリモートデータベースに接続。マルチデバイス同期に対応。",
      "testConnection": "接続テスト",
      "switchToPostgreSQL": "PostgreSQLに切り替え",
      "switchToSQLite": "ローカルSQLiteに切り替え",
      "connectionTestSuccess": "接続テスト成功",
      "connectionTestFailed": "接続テスト失敗",
      "switchedTo": "{{type}} データベースに切り替えました",
      "switchedToSQLite": "SQLite ローカルデータベースに切り替えました",
      "switchFailed": "切り替えに失敗しました",
      "syncDescription": "マルチデバイス同期情報",
      "syncPoint1": "PostgreSQLリモートデータベースを使用すると、マルチデバイスデータ同期が可能です。",
      "syncPoint2": "内蔵の操作キューメカニズムにより、同時操作時のデータ整合性を確保。",
      "syncPoint3": "データベース切り替え後、アプリの再起動が必要です。",
      "syncPoint4": "推奨クラウドデータベースサービス：Neon、Supabase、AWS RDSなど。",
      "enterConnectionString": "PostgreSQL接続文字列を入力してください",
      "connectionExample": "例：postgresql://xxxxxx_xxxxx:xxxxxxxx@xx-xxx.xxx.neon.xxxx/xxxxdxx?sslmode=require",
      "uploadButton": "ローカルデータをリモートにアップロード",
      "uploadHint": "リモートデータベース接続後、ローカルSQLiteの履歴データをリモートにアップロード・マージ。",
      "uploadNeedRemote": "先にPostgreSQLリモートデータベースに接続してください",
      "noNeedUpload": "ローカルとリモートのデータは既に一致しています",
      "uploadConfirmTitle": "ローカルデータをリモートにアップロードしますか？",
      "uploadConfirmContent": "ローカルデータを優先して同期します。ローカルのみ {{localOnly}}、リモートのみ {{remoteOnly}}、競合 {{conflicts}} を検出。",
      "uploadSuccess": "ローカルデータをリモートにアップロードしました",
      "uploadFailed": "アップロード失敗"
    },
    "cloudSync": {
      "title": "クラウド同期",
      "selectMethod": "同期方法を選択",
      "selectMethodHint": "データ同期方法を選択してください。2つの方法は排他で、切り替えると新しい同期チャネルが使用されます。",
      "postgresql": "自建 PostgreSQL データベース",
      "postgresqlDesc": "自建の PostgreSQL データベースに接続し、データを完全に管理できます。サーバーをお持ちのユーザーに最適です。",
      "sectlCloud": "SECTL クラウド同期",
      "sectlCloudDesc": "SECTL クラウドプラットフォームでデータ同期。自建データベース不要、すぐに使えます。",
      "loginRequired": "先に SECTL Auth アカウントにログインしてください",
      "loginHint": "SECTL クラウド同期には SECTL Auth アカウントが必要です。「アカウント」タブからログインしてください。",
      "statusTitle": "同期状態",
      "configured": "準備完了",
      "notConfigured": "未準備",
      "syncing": "同期中...",
      "lastSync": "前回の同期",
      "never": "未同期",
      "syncActions": "同期操作",
      "syncDirection": "同期方向",
      "bidirectional": "双方向同期（推奨）— ローカルとクラウドのデータを自動的にマージ",
      "pushOnly": "アップロードのみ — ローカルデータでクラウドデータを上書き",
      "pullOnly": "ダウンロードのみ — クラウドデータでローカルデータを上書き",
      "startSync": "同期開始",
      "uploadToCloud": "クラウドにアップロード",
      "downloadFromCloud": "クラウドからダウンロード",
      "fullSync": "双方向同期",
      "syncInProgress": "同期中です。お待ちください",
      "syncConfirm": "{{direction}}を実行しますか？",
      "storageUsage": "ストレージ使用量",
      "usedStorage": "使用済み",
      "table": "テーブル",
      "records": "レコード数",
      "size": "サイズ",
      "clickToLoadStats": "更新ボタンをクリックして統計を読み込む",
      "description": "SECTL クラウド同期ガイド",
      "descriptionPoint1": "SECTL クラウドサービスでデータ同期。自建データベース不要。データは SECTL Auth アカウントで分離されます。",
      "descriptionPoint2": "KV ストレージアーキテクチャに基づき、各データテーブルはキーバリューペアとして保存され、効率的な読み書きを実現。",
      "descriptionPoint3": "双方向、アップロードのみ、ダウンロードのみの3つのモードをサポート。",
      "descriptionPoint4": "データは HTTPS で暗号化され、OAuth 2.0 認証でセキュリティを確保。"
    },
    "data": {
      "title": "データ管理",
      "settlement": "決済",
      "settlementAndRestart": "決済して再開",
      "settlementHint": "現在の未決済レコードを1つのフェーズにまとめ、全生徒のポイントをゼロにリセット。",
      "importExport": "インポート / エクスポート",
      "exportJson": "JSONエクスポート",
      "importJson": "JSONインポート",
      "importHint": "インポートは既存の生徒/理由/レコード/設定を上書きします（セキュリティ設定は除く）。",
      "logs": "ログ",
      "logLevel": "ログレベル",
      "logOperation": "ログ操作",
      "viewLogs": "ログを表示",
      "exportLogs": "ログをエクスポート",
      "clearLogs": "ログをクリア",
      "logsCleared": "ログをクリアしました",
      "systemLogs": "システムログ（最新200件）",
      "noLogs": "ログなし",
      "logLevelUpdated": "ログレベルが更新されました",
      "readLogsFailed": "ログの読み取りに失敗しました",
      "logsExported": "ログをエクスポートしました",
      "exportFailed": "エクスポートに失敗しました",
      "exportSuccess": "エクスポート成功",
      "importSuccess": "インポート成功、更新中",
      "importFailed": "インポートに失敗しました",
      "clearFailed": "クリアに失敗しました",
      "confirmSettlement": "決済して再開しますか？",
      "settlementConfirm1": "現在の未決済レコードを1つのフェーズにアーカイブし、全生徒のポイントをゼロにリセットします。",
      "settlementConfirm2": "生徒名簿は変更されません。決済履歴は「決済履歴」ページで確認できます。",
      "settlementSuccess": "決済成功、ポイントを再開しました",
      "settlementFailed": "決済に失敗しました",
      "settle": "決済",
      "logLevels": {
        "debug": "DEBUG (デバッグ)",
        "info": "INFO (情報)",
        "warn": "WARN (警告)",
        "error": "ERROR (エラー)"
      }
    },
    "url": {
      "title": "URLプロトコル (secscore://)",
      "protocol": "URLプロトコル",
      "description": "URLリンクからSecScoreを起動して操作を実行できます。例：",
      "register": "URLプロトコルを登録",
      "registered": "URLプロトコルが登録されました",
      "registerFailed": "登録に失敗しました",
      "installerRequired": "インストール版のSecScoreが必要です。開発モードでは動作しない場合があります。",
      "checkStatus": "ステータス確認",
      "reRegister": "再登録",
      "unregister": "登録解除",
      "unregistered": "URLプロトコルの登録が解除されました",
      "unregisterFailed": "登録解除に失敗しました",
      "statusRegistered": "登録済み",
      "statusNotRegistered": "未登録",
      "statusCheckFailed": "ステータス確認に失敗しました",
      "retrying": "リトライ中 ({{current}}/{{max}})",
      "retryFailed": "最大リトライ回数に達しました。登録に失敗しました",
      "retrySuccess": "リトライ #{{n}} が成功しました",
      "operationLog": "操作ログ",
      "logRegisterStart": "URLプロトコルの登録を開始...",
      "logRegisterVerify": "登録コマンドを実行しました。検証中...",
      "logRegisterSuccess": "登録の検証に成功しました",
      "logRegisterFailed": "登録の検証に失敗しました",
      "logUnregisterStart": "登録解除中...",
      "logUnregisterSuccess": "登録解除に成功しました",
      "logUnregisterFailed": "登録解除に失敗しました",
      "logMaxRetries": "最大リトライ回数 (7回) に達しました"
    },
    "elevation": {
      "title": "管理者権限",
      "description": "アプリケーションが管理者/root権限で実行されているか確認します。一部の機能（ポートリッスニング、システムレベル操作など）には昇格権限が必要です。",
      "elevated": "昇格済み",
      "notElevated": "未昇格",
      "request": "管理者権限をリクエスト",
      "requestSuccess": "管理者権限をリクエストしました。アプリが再起動します",
      "requestFailed": "管理者権限のリクエストに失敗しました",
      "windowsHint": "Windows：UAC プロンプトが表示されます。確認後、アプリが管理者として再起動します。",
      "macosHint": "macOS：システム認証ダイアログが表示されます。管理者パスワードを入力してアプリを再起動します。",
      "linuxHint": "Linux：pkexec を使用して root 権限をリクエストします。パスワードを入力してアプリを再起動します。"
    },
    "mcp": {
      "title": "MCPサービス",
      "description": "内蔵MCP HTTPサービスを管理。外部MCPクライアントからの呼び出しに対応。",
      "running": "実行中",
      "stopped": "停止",
      "noUrl": "URLなし",
      "host": "ホスト",
      "port": "ポート",
      "start": "開始",
      "stop": "停止",
      "refresh": "状態を更新",
      "hint": "127.0.0.1のみにバインドすることを推奨。開始後、エンドポイントは http://host:port/mcp",
      "hostRequired": "MCPホストを入力してください",
      "portInvalid": "有効なポートを入力してください（1-65535）",
      "startSuccess": "MCPサーバーが開始しました",
      "startFailed": "MCPサーバーの開始に失敗しました",
      "stopSuccess": "MCPサーバーが停止しました",
      "stopFailed": "MCPサーバーの停止に失敗しました",
      "startTimeout": "MCPサーバーの開始がタイムアウトしました。後でもう一度お試しください",
      "stopTimeout": "MCPサーバーの停止がタイムアウトしました。後でもう一度お試しください"
    },
    "app": {
      "title": "アプリ制御",
      "description": "アプリを素早く再起動または終了。",
      "restart": "アプリを再起動",
      "quit": "アプリを終了",
      "confirmRestartTitle": "アプリを再起動しますか？",
      "confirmRestartContent": "アプリはすぐに閉じて再起動します。",
      "confirmQuitTitle": "アプリを終了しますか？",
      "confirmQuitContent": "アプリはすぐに終了します。",
      "restartFailed": "再起動に失敗しました",
      "quitFailed": "終了に失敗しました"
    },
    "about": {
      "title": "について",
      "appName": "教育ポイント管理",
      "version": "バージョン",
      "copyright": "著作権",
      "ipcStatus": "IPC状態",
      "ipcConnected": "接続済み",
      "ipcDisconnected": "未接続（Preload失敗）",
      "environment": "環境",
      "toggleDevTools": "開発者ツールを切り替え",
      "license": "SecScoreはGPL3.0ライセンスに従います",
      "copyRightText": "CopyRight © 2025-{{year}} SECTL"
    }
  },
  "sidebar": {
    "home": "ホーム",
    "students": "生徒管理",
    "score": "ポイント操作",
    "boards": "ボード",
    "leaderboard": "ランキング",
    "settlements": "決済履歴",
    "reasons": "理由管理",
    "autoScore": "自動加点",
    "rewardExchange": "報酬交換",
    "rewardSettings": "報酬設定",
    "settings": "設定",
    "remoteDb": "リモートDB",
    "refreshStatus": "状態を更新",
    "syncNow": "今すぐ同期",
    "syncSuccess": "同期成功",
    "syncFailed": "同期失敗",
    "getDbStatusFailed": "データベース状態の取得に失敗しました",
    "notRemoteMode": "リモートデータベースモードではありません。アプリを再起動してください",
    "dbNotConnected": "データベース未接続"
  },
  "auth": {
    "unlock": "権限ロック解除",
    "unlockHint": "6桁のパスワードを入力：管理者パスワード＝全機能、ポイントパスワード＝ポイント操作のみ。",
    "unlockButton": "ロック解除",
    "unlocked": "権限がロック解除されました",
    "logout": "読み取り専用に切り替え",
    "passwordPlaceholder": "例：123456",
    "passwordError": "パスワードが間違っています",
    "enterPassword": "パスワードを入力",
    "lock": "ロック"
  },
  "languages": {
    "zh-CN": "简体中文",
    "en-US": "English",
    "ja-JP": "日本語",
    "fr-FR": "Français",
    "es-ES": "Español",
    "ko-KR": "한국어",
    "ru-RU": "Русский",
    "de-DE": "Deutsch",
    "pt-BR": "Português",
    "ar-SA": "العربية"
  },
  "theme": {
    "colorAndBackground": "色と背景",
    "gradientLabels": {
      "blue": "爽やかブルー",
      "pink": "ソフトピンク",
      "cyan": "シアン",
      "purple": "パープル"
    },
    "gradientDirections": {
      "vertical": "縦",
      "horizontal": "横",
      "diagonal": "斜め"
    },
    "generate": "生成",
    "saved": "保存しました",
    "saveFailed": "保存に失敗しました",
    "mode": "モード",
    "myTheme": "マイテーマ"
  },
  "permissions": {
    "admin": "管理者権限",
    "points": "ポイント権限",
    "view": "読み取り専用"
  },
  "home": {
    "title": "生徒ポイントホーム",
    "subtitle": "{{count}} 名の生徒、カードをクリックしてポイント操作",
    "searchPlaceholder": "名前/ピンインで検索...",
    "sortBy": {
      "alphabet": "名前順",
      "surname": "姓グループ",
      "group": "グループ順",
      "score": "ポイント順"
    },
    "layoutBy": {
      "grouped": "グループリスト",
      "squareGrid": "正方形グリッド",
      "largeAvatar": "大型アバター"
    },
    "noStudents": "生徒データがありません。生徒管理で追加してください",
    "noMatch": "一致する生徒が見つかりません",
    "clearSearch": "検索をクリア",
    "points": "点",
    "currentScore": "現在のポイント",
    "quickOptions": "クイックオプション",
    "adjustPoints": "ポイントを調整",
    "customPoints": "カスタムポイント",
    "customPointsHint": "入力ボックスで任意の値を入力できます",
    "reason": "理由",
    "reasonPlaceholder": "ポイント変動の理由を入力（任意）",
    "preview": "変更プレビュー",
    "noReason": "（理由なし）",
    "ungrouped": "未グループ",
    "category": {
      "others": "その他"
    },
    "scoreAdded": "{{name}} に {{points}} 点を加点しました",
    "scoreDeducted": "{{name}} から {{points}} 点を減点しました",
    "submitFailed": "送信に失敗しました",
    "pleaseSelectPoints": "ポイントを選択または入力してください",
    "reasonDefault": "{{action}}{{points}}点",
    "studentCount": "{{count}} 名",
    "operationTitle": "ポイント操作：{{name}}",
    "submitOperation": "操作を送信",
    "operationTitleBatch": "ポイント操作：{{count}} 名選択中",
    "undoLastAction": "元に戻す",
    "undoLastHint": "最新の操作を元に戻す：{{name}} {{delta}}",
    "undoUnavailable": "元に戻せるポイント操作がありません",
    "undoLastSuccess": "最後のポイント操作を元に戻しました",
    "multiSelect": "複数選択",
    "batchMode": "バッチモード",
    "selectAll": "全選択",
    "clearSelected": "選択をクリア",
    "batchOperate": "バッチポイント",
    "selected": "選択済み",
    "selectedCount": "{{count}} 名選択",
    "batchSuccess": "{{count}} 名の生徒にポイントを送信しました",
    "batchPartial": "{{success}}/{{total}} 名の生徒に送信成功",
    "selectStudentFirst": "先に生徒を選択してください",
    "addPoints": "加点",
    "deductPoints": "減点",
    "pointsChange": "ポイント変更",
    "reasonLabel": "理由："
  },
  "students": {
    "title": "生徒管理",
    "importList": "名簿をインポート",
    "addStudent": "生徒を追加",
    "name": "名前",
    "group": "グループ",
    "avatar": "アバター",
    "currentScore": "現在のポイント",
    "tags": "タグ",
    "noTags": "タグなし",
    "editTags": "タグを編集",
    "editAvatar": "アバターを設定",
    "deleteConfirm": "この生徒を削除しますか？",
    "addTitle": "生徒を追加",
    "addConfirm": "追加",
    "namePlaceholder": "生徒名を入力",
    "groupPlaceholder": "グループ名を入力（任意）",
    "nameRequired": "名前を入力してください",
    "nameExists": "生徒名は既に存在します",
    "addSuccess": "追加成功",
    "addFailed": "追加に失敗しました",
    "deleteSuccess": "削除成功",
    "deleteFailed": "削除に失敗しました",
    "tagSaveSuccess": "タグを保存しました",
    "tagSaveFailed": "タグの保存に失敗しました",
    "importTitle": "名簿をインポート",
    "importTextHint": "複数行のテキストを貼り付け、1行に1名前",
    "importTextPlaceholder": "例：\\n田中\\n佐藤\\n鈴木",
    "importByText": "テキストからインポート",
    "importByXlsx": "xlsxからインポート",
    "importByBanyou": "班優からインポート",
    "xlsxPreview": "xlsxプレビューとインポート",
    "file": "ファイル",
    "selectNameCol": "ヘッダーをクリックして名前列を選択",
    "previewRows": "最初の50行をプレビュー",
    "importConfirm": "インポート",
    "importComplete": "インポート完了：{{inserted}} 件追加、{{skipped}} 件スキップ",
    "workerNotReady": "Workerが初期化されていません",
    "parseXlsxFailed": "xlsxの解析に失敗しました",
    "selectNameColFirst": "先に「名前列」を選択してください",
    "noNamesFound": "選択した列にインポート可能な名前が見つかりません",
    "importFailed": "インポートに失敗しました",
    "banyouCookieHint": "班優ウェブ版にログイン後、完全なCookieをコピーして下に貼り付けてください。",
    "banyouCookiePlaceholder": "uid=...; accessToken=...; ...",
    "banyouCookieRequired": "先にCookieを貼り付けてください",
    "banyouFetch": "クラス一覧を取得",
    "banyouFetchSuccess": "{{count}} 件のクラスを取得",
    "banyouFetchFailed": "班優クラスの取得に失敗しました",
    "banyouCreatedClasses": "作成したクラス",
    "banyouJoinedClasses": "参加したクラス",
    "banyouNoClasses": "クラスデータなし",
    "banyouClassTeacher": "担任：",
    "banyouStudentCount": "生徒：",
    "banyouPraiseCount": "表彰：",
    "banyouFetchDetailFailed": "クラス詳細の取得に失敗しました",
    "banyouClassDetail": "クラス詳細",
    "banyouDetailEmpty": "クラス詳細データなし",
    "banyouReasonList": "理由一覧",
    "banyouStudentList": "生徒一覧",
    "banyouTeamList": "グループ一覧",
    "banyouNoTeams": "グループデータなし（teamPlanIdを入力して再度開いてみてください）",
    "banyouTeamPlanSelector": "グループプラン",
    "banyouLoadTeamPlan": "このプランを読み込む",
    "banyouTeamPlanSource": "プランソースAPI：",
    "banyouSelectTeamPlanFirst": "先にグループプランを選択してください",
    "banyouImportSelected": "選択項目をインポート",
    "banyouNothingSelected": "インポートする項目を少なくとも1つ選択してください",
    "banyouImportSummary": "班優インポート完了：生徒 +{{studentsInserted}}/{{studentsSkipped}} スキップ、理由 +{{reasonsInserted}}/{{reasonsSkipped}} スキップ、グループ {{groupsUpdated}} 更新/{{groupsSkipped}} スキップ",
    "editTagTitle": "タグを編集 - {{name}}",
    "editGroup": "グループを設定",
    "editGroupTitle": "グループを設定 - {{name}}",
    "groupSaveSuccess": "グループを保存しました",
    "groupSaveFailed": "グループの保存に失敗しました",
    "existingGroups": "既存のグループ（クリックで入力）",
    "noExistingGroups": "利用可能なグループがありません",
    "groupBoardEdit": "グループを編集",
    "groupBoardTitle": "クイックグループエディタ",
    "groupBoardHint": "生徒をグループ列にドラッグして保存で一括適用。",
    "groupBoardNewGroupPlaceholder": "新しいグループ名を入力",
    "groupBoardAddGroup": "新しいグループ",
    "groupBoardGroupExists": "グループは既に存在します",
    "groupBoardGroupNameRequired": "グループ名を入力してください",
    "groupBoardGroupNameInvalid": "無効なグループ名",
    "groupBoardEmpty": "生徒をここにドラッグ",
    "groupBoardNoChanges": "グループに変更はありません",
    "groupBoardSaveSuccess": "{{count}} 名の生徒のグループを更新しました",
    "groupBoardSaveFailed": "保存に失敗、{{failed}} 名の生徒が更新されませんでした",
    "noGroup": "未グループ",
    "editAvatarTitle": "アバターを設定 - {{name}}",
    "avatarUpload": "画像をアップロード",
    "avatarClear": "アバターをクリア",
    "noAvatar": "アバターなし",
    "avatarTip": "一般的な画像形式に対応、2MB以下",
    "avatarSaveSuccess": "アバターを保存しました",
    "avatarSaveFailed": "アバターの保存に失敗しました",
    "avatarInvalidFile": "画像ファイルを選択してください",
    "avatarTooLarge": "画像は2MB以下にしてください",
    "avatarReadFailed": "画像の読み取りに失敗しました",
    "avatarClipboardImport": "クリップボードから取り込み",
    "avatarClipboardUnsupported": "この環境ではクリップボード画像を読み取れません",
    "avatarClipboardNoImage": "クリップボードに画像がありません",
    "avatarClipboardReadFailed": "クリップボード画像の読み取りに失敗しました"
  },
  "score": {
    "title": "ポイント管理",
    "student": "生徒",
    "change": "変動",
    "reason": "理由",
    "time": "時間",
    "undoConfirm": "このレコードを元に戻しますか？生徒のポイントがロールバックされます。",
    "undo": "元に戻す",
    "undoSuccess": "操作を元に戻しました",
    "undoFailed": "元に戻すのに失敗しました",
    "recentRecords": "最近のレコード",
    "pleaseSelectStudent": "生徒を選択または検索してください",
    "selectAllStudents": "全クラス",
    "clearSelectedStudents": "クリア",
    "selectedCount": "{{selected}} / {{total}} 名選択",
    "points": "ポイント",
    "addPoints": "加点",
    "deductPoints": "減点",
    "quickReason": "クイック理由",
    "selectReason": "プリセット理由を選択",
    "reasonContent": "理由内容",
    "reasonPlaceholder": "手動入力またはクイック理由を選択",
    "submit": "確認して送信",
    "pleaseEnterInfo": "完全な情報を入力してください",
    "pleaseEnterPoints": "ポイントを入力するかプリセット理由を選択してください",
    "batchSuccess": "{{count}} 名の生徒にポイントを送信しました",
    "batchPartial": "{{success}}/{{total}} 名の生徒に送信成功"
  },
  "reasons": {
    "title": "理由管理",
    "addReason": "プリセット理由を追加",
    "category": "カテゴリ",
    "content": "理由内容",
    "presetPoints": "プリセットポイント",
    "deleteConfirm": "この理由を削除しますか？",
    "addTitle": "理由を追加",
    "addConfirm": "追加",
    "categoryPlaceholder": "例：学習、規律",
    "contentPlaceholder": "理由を入力",
    "pointsPlaceholder": "例：2 または -2",
    "contentRequired": "理由内容を入力してください",
    "pointsRequired": "プリセットポイントを入力してください",
    "reasonExists": "このカテゴリに同じ理由が既に存在します",
    "addSuccess": "追加成功",
    "addFailed": "追加に失敗しました",
    "deleteSuccess": "削除成功",
    "deleteFailed": "削除に失敗しました",
    "others": "その他"
  },
  "rewardExchange": {
    "title": "報酬交換",
    "enterMode": "交換モードに入る",
    "exitMode": "交換モードを終了",
    "modeHint": "報酬交換モードがアクティブです。生徒カードをクリックして利用可能な報酬を選択。",
    "normalHint": "現在のカードは元のスコアを表示しています。モードに入ると交換可能ポイントが表示されます。",
    "remainingRewardPoints": "残り交換ポイント",
    "currentScore": "現在のスコア",
    "chooseRewardTitle": "{{name}} の報酬を選択",
    "currentRewardPoints": "現在の交換可能ポイント：{{points}}",
    "costLabel": "消費ポイント：{{points}}",
    "redeemNow": "今すぐ交換",
    "noAffordableRewards": "現在交換できる報酬がありません。もっとポイントを貯めてください。",
    "redeemSuccess": "{{student}} が「{{reward}}」を交換し、{{points}} ポイントを消費しました",
    "redeemFailed": "交換に失敗しました",
    "recordsTitle": "交換記録",
    "recordStudent": "生徒",
    "recordReward": "報酬",
    "recordCost": "消費ポイント",
    "recordTime": "交換日時"
  },
  "rewardSettings": {
    "title": "報酬設定",
    "addReward": "報酬を追加",
    "addTitle": "報酬を追加",
    "editTitle": "報酬を編集",
    "rewardName": "報酬名",
    "costPoints": "消費ポイント",
    "namePlaceholder": "例：宿題免除券",
    "costPlaceholder": "消費ポイントを入力",
    "nameRequired": "報酬名を入力してください",
    "costRequired": "正の整数のポイントを入力してください",
    "createSuccess": "報酬を作成しました",
    "createFailed": "報酬の作成に失敗しました",
    "updateSuccess": "報酬を更新しました",
    "updateFailed": "報酬の更新に失敗しました",
    "deleteSuccess": "報酬を削除しました",
    "deleteFailed": "報酬の削除に失敗しました",
    "deleteConfirm": "報酬「{{name}}」を削除しますか？"
  },
  "board": {
    "title": "ボード",
    "editable": "編集可能",
    "readonly": "読み取り専用",
    "addBoard": "ボードを追加",
    "removeBoard": "ボードを削除",
    "removeBoardConfirm": "現在のボードを削除しますか？",
    "boardConfig": "ボード設定",
    "boardNamePlaceholder": "ボード名を入力",
    "renameBoard": "ボード名を変更",
    "newBoard": "新しいボード",
    "untitledBoard": "無題ボード",
    "addList": "生徒リストを追加",
    "removeList": "リストを削除",
    "removeListConfirm": "現在の生徒リストを削除しますか？",
    "editList": "編集",
    "sqlEditorTitle": "生徒リストを編集",
    "splitHorizontal": "左右分割",
    "splitVertical": "上下分割",
    "dragHandle": "ドラッグしてレイアウトを調整",
    "listNamePlaceholder": "リスト名を入力",
    "newList": "新しいリスト",
    "applyPreset": "プリセットを適用",
    "run": "SQLを実行",
    "runAll": "すべて実行",
    "viewModes": {
      "list": "リスト表示",
      "card": "カード表示",
      "grid": "グリッド表示",
      "largeAvatar": "大型アバター表示"
    },
    "scoreDisplayModes": {
      "total": "合計スコアを表示",
      "split": "加点と減点を表示"
    },
    "metrics": {
      "totalScore": "合計",
      "addScore": "加点",
      "deductScore": "減点",
      "rewardPoints": "報酬",
      "weekChange": "7日間",
      "weekDeducted": "7日間減点",
      "todayAnswered": "今日"
    },
    "sqlPlaceholder": "SQLを入力（単一のSELECT / WITHクエリのみ）",
    "templateHint": "テンプレート変数：{{today_start}}、{{this_week_start}}、{{last_week_start}}、{{since_7d}}、{{since_30d}}、{{now}}",
    "templateDescription": "SQL内でテンプレート変数を直接使用。実行時にISOタイムスタンプに自動置換（SQLiteとPostgreSQL両対応）。",
    "saving": "保存中...",
    "saveFailed": "ボードの保存に失敗しました",
    "runFailed": "クエリの実行に失敗しました",
    "keepAtLeastOneBoard": "少なくとも1つのボードを保持してください",
    "keepAtLeastOneList": "少なくとも1つの生徒リストを保持してください",
    "presets": {
      "weekLowDeduct": {
        "name": "低減点ランキング（7日間）",
        "description": "過去1週間の減点 < 3 の生徒ランキング"
      },
      "todayActive": {
        "name": "今日のアクティブ",
        "description": "今日の回答回数とスコア変動でソート"
      },
      "rewardRanking": {
        "name": "報酬ポイントランキング",
        "description": "報酬ポイントと合計スコアでソート"
      }
    }
  },
  "leaderboard": {
    "title": "ポイントランキング",
    "rank": "順位",
    "name": "名前",
    "totalScore": "合計ポイント",
    "todayChange": "今日の変動",
    "weekChange": "今週の変動",
    "monthChange": "今月の変動",
    "viewHistory": "表示",
    "exportXlsx": "XLSXエクスポート",
    "exportSuccess": "エクスポート成功",
    "queryFailed": "クエリに失敗しました",
    "historyTitle": "{{name}} - 操作履歴",
    "close": "閉じる",
    "today": "今日",
    "week": "今週",
    "month": "今月",
    "operationRecord": "操作記録",
    "change": "変動"
  },
  "settlements": {
    "title": "決済履歴",
    "phase": "フェーズ #{{id}}",
    "viewLeaderboard": "ランキングを表示",
    "recordCount": "レコード数：{{count}}",
    "noRecords": "決済レコードなし",
    "noSettlements": "決済レコードなし",
    "back": "戻る",
    "leaderboardTitle": "決済ランキング",
    "phaseScore": "フェーズポイント",
    "queryFailed": "クエリに失敗しました",
    "rank": "順位",
    "name": "名前"
  },
  "autoScore": {
    "title": "自動加点管理",
    "name": "自動化名",
    "namePlaceholder": "例：毎日チェックイン加点",
    "nameRequired": "自動化名を入力してください",
    "triggers": "トリガー",
    "actions": "アクション",
    "applicableStudents": "対象生徒",
    "allStudents": "全生徒",
    "lastExecuted": "最終実行",
    "notExecuted": "未実行",
    "invalidTime": "無効な時間",
    "addTrigger": "ルールを追加",
    "addAction": "アクションを追加",
    "whenTriggered": "以下のルールがトリガーされた時",
    "triggeredActions": "ルールが満たされた時にトリガーされるアクション",
    "addAutomation": "自動化を追加",
    "updateAutomation": "自動化を更新",
    "cancelEdit": "編集をキャンセル",
    "resetForm": "フォームをリセット",
    "deleteConfirm": "この自動化を削除しますか？",
    "adminRequired": "自動加点の表示には管理者権限が必要です",
    "adminCreateRequired": "自動加点の作成・更新には管理者権限が必要です",
    "adminDeleteRequired": "自動加点の削除には管理者権限が必要です",
    "adminToggleRequired": "自動加点の有効化/無効化には管理者権限が必要です",
    "fetchFailed": "自動化の取得に失敗しました",
    "unsupportedLogic": "現在の保存はAND条件のみ対応。OR / NOT論理はバックエンド未対応",
    "triggerRequired": "少なくとも1つのトリガーを追加してください",
    "actionRequired": "少なくとも1つのアクションを追加してください",
    "createSuccess": "自動化を作成しました",
    "updateSuccess": "自動化を更新しました",
    "createFailed": "自動化の作成に失敗しました",
    "updateFailed": "自動化の更新に失敗しました",
    "deleteSuccess": "自動化を削除しました",
    "deleteFailed": "自動化の削除に失敗しました",
    "enabled": "自動化が有効になりました",
    "disabled": "自動化が無効になりました",
    "enableFailed": "自動化の有効化に失敗しました",
    "disableFailed": "自動化の無効化に失敗しました",
    "noTriggerAvailable": "利用可能なトリガータイプがありません",
    "noActionAvailable": "利用可能なアクションタイプがありません",
    "sort": "並べ替え",
    "status": "状態",
    "triggerCount": "{{count}} 件のトリガー",
    "actionCount": "{{count}} 件のアクション",
    "studentCount": "{{count}} 名の生徒",
    "studentPlaceholder": "生徒を選択または検索（空欄で全生徒）",
    "triggerCondition": "トリガー条件",
    "executeAction": "アクションを実行",
    "addOperation": "操作を追加",
    "scoreLabel": "スコア",
    "tagNameLabel": "タグ名",
    "operationNoteLabel": "操作メモ（任意）",
    "triggerIntervalTime": "間隔時間",
    "triggerStudentTag": "生徒タグ",
    "actionAddScore": "加点",
    "actionAddTag": "タグを追加",
    "intervalAmountPlaceholder": "間隔数を入力",
    "intervalUnitMonth": "ヶ月後",
    "intervalUnitDay": "日後",
    "intervalUnitMinute": "分後",
    "minutesPlaceholder": "分数を入力",
    "minutes": "分",
    "tagsPlaceholder": "タグ名を入力",
    "scorePlaceholder": "スコアを入力",
    "tagNamePlaceholder": "タグ名を入力",
    "reasonPlaceholder": "理由を入力",
    "relationAnd": "かつ",
    "relationOr": "または"
  },
  "triggers": {
    "studentTag": {
      "label": "生徒タグ",
      "description": "生徒が特定のタグに一致した時にトリガー",
      "placeholder": "タグを選択",
      "required": "タグ名を入力してください"
    },
    "randomTime": {
      "label": "ランダム時間トリガー",
      "description": "指定時間範囲内でランダムにトリガー",
      "required": "有効な時間範囲（分）を入力してください"
    },
    "intervalTime": {
      "label": "間隔時間トリガー",
      "description": "間隔時間に達した時にトリガー",
      "placeholder": "時間間隔を入力",
      "required": "有効な時間を入力してください",
      "monthLabel": "月",
      "weekLabel": "週",
      "timeLabel": "時間"
    }
  },
  "actions": {
    "sendNotification": {
      "label": "通知を送信",
      "description": "生徒に通知を送信",
      "placeholder": "通知内容を入力"
    },
    "addTag": {
      "label": "タグを追加",
      "description": "生徒にタグを追加",
      "placeholder": "タグを入力"
    },
    "addScore": {
      "label": "スコアを追加",
      "description": "生徒にスコアを追加",
      "pointsPlaceholder": "スコアを入力",
      "reasonPlaceholder": "理由を入力"
    }
  },
  "wizard": {
    "welcomeTitle": "SecScore ポイント管理へようこそ",
    "welcomeDesc": "SecScoreを選択いただきありがとうございます。開始前に、基本設定を1分で完了してください。",
    "configComplete": "設定完了！",
    "configFailed": "設定の保存に失敗しました",
    "startJourney": "ポイント管理を始める"
  },
  "tags": {
    "editTitle": "タグを編集",
    "inputPlaceholder": "タグ名を入力、Enterで追加",
    "selectedTags": "選択済みタグ（クリックで解除）",
    "noTagsSelected": "タグ未選択",
    "availableTags": "利用可能なタグ（クリックで選択）",
    "noAvailableTags": "利用可能なタグなし",
    "fetchFailed": "タグの取得に失敗しました",
    "nameTooLong": "タグ名は30文字以内にしてください",
    "addFailed": "タグの追加に失敗しました",
    "deleteSuccess": "タグを削除しました",
    "deleteFailed": "タグの削除に失敗しました"
  },
  "recovery": {
    "title": "SecScore 復旧文字列",
    "saved": "保存しました",
    "export": "テキストファイルをエクスポート",
    "exportHint": "エクスポート後にオフライン保存を推奨。紛失すると復旧できません。",
    "hint": "エクスポート後にオフライン保存を推奨。紛失すると復旧できません。"
  }
}
