{
  "nav": {
    "search": "検索",
    "scanner": "リスト生成",
    "showcase": "ブラウズ",
    "help": "ヘルプ",
    "help_title": "使い方",
    "settings": "設定",
    "toggle_sidebar": "開閉"
  },
  "common": {
    "locale": {
      "zh-TW": "繁",
      "zh-CN": "简",
      "ja": "あ",
      "en": "EN"
    },
    "action": {
      "confirm": "確認",
      "cancel": "キャンセル"
    },
    "no_image": "画像なし"
  },
  "search": {
    "page_title": "検索",
    "drag_overlay": {
      "hint": "ここにドロップして番号を検索"
    },
    "placeholder": {
      "query": "番号、女優名またはファイルをドロップ...",
      "tag": "タグ名"
    },
    "hint": {
      "partial_search": "ヒント：IPZZ-03 のような部分番号で 030〜039 を検索できます。女優名でも検索可能"
    },
    "action": {
      "search": "検索",
      "cancel_search": "検索をキャンセル",
      "clear": "クリア",
      "toggle_grid": "グリッド表示に切替",
      "toggle_detail": "詳細表示に切替",
      "add_files": "ファイルを追加",
      "add_folder": "フォルダを追加",
      "favorite": "お気に入り",
      "load_favorite": "お気に入りフォルダを読み込む",
      "load_favorite_folder": "読み込む：{folder}",
      "add_tag": "タグを追加",
      "edit_title": "タイトルを編集",
      "translate_ai": "AI 翻訳",
      "edit_chinese_title": "中国語タイトルを編集",
      "switch_source": "バージョン切替",
      "open_source_url": "ソースページを開く",
      "open_folder": "フォルダを開く",
      "back_to_detail": "詳細に戻る"
    },
    "empty": {
      "hint": "番号を入力して検索、またはファイルを追加",
      "drag_hint": "ファイルやフォルダを直接ドロップすることもできます"
    },
    "error": {
      "hint": "番号の形式を確認するか、しばらくしてから再試行してください",
      "tag_api_failed": "タグの保存に失敗しました。しばらくしてから再試行してください"
    },
    "nav": {
      "prev": "前へ (←)",
      "next": "次へ (→)"
    },
    "label": {
      "actor": "出演者",
      "date": "発売日",
      "maker": "メーカー",
      "director": "監督",
      "duration": "収録時間",
      "label": "レーベル",
      "series": "シリーズ",
      "tags": "タグ",
      "title": "タイトル",
      "chinese_title": "中国語タイトル",
      "chinese_title_ai": "AI 翻訳タイトル"
    },
    "unit": {
      "minutes": "分",
      "age": "歳",
      "cup": "カップ"
    },
    "actress": {
      "add_favorite": "お気に入りに追加",
      "favorited": "お気に入り済み",
      "favorite_success": "お気に入りに追加しました",
      "favorite_error": "追加に失敗しました。後でもう一度お試しください",
      "favorite_timeout": "タイムアウトしました。後でもう一度お試しください"
    },
    "badge": {
      "subtitle": "中国語字幕"
    },
    "lightbox": {
      "close": "閉じる (ESC)",
      "prev": "前の作品 (←)",
      "next": "次の作品 (→)"
    },
    "gallery": {
      "prev": "前の画像 (←)",
      "next": "次の画像 (→)",
      "sample_prefix": "サンプル"
    },
    "grid": {
      "sample_prefix": "サンプル画像",
      "thumb_prefix": "サムネイル",
      "detail_title": "詳細を見る",
      "unknown_actor": "不明",
      "unknown_title": "タイトル不明"
    },
    "cover": {
      "alt": "カバー"
    },
    "local": {
      "has_local": "ローカルに存在（クリックしてフォルダを開く）",
      "has_local_count": "ローカルに {count} バージョン存在（クリックしてフォルダを開く）"
    },
    "button": {
      "search_all": "一括検索",
      "continue": "続行",
      "pause": "一時停止",
      "retry_failed": "失敗を再試行 ({count})",
      "search_range": "検索 {start}-{end} / {total}",
      "translating_progress": "翻訳中 ({processed}/{total})",
      "translate_all_count": "すべて翻訳 ({count})",
      "searching": "検索中...",
      "load_more": "もっと読み込む"
    },
    "mode": {
      "exact": "完全品番検索",
      "partial": "部分品番検索",
      "prefix": "シリーズ検索",
      "actress": "あいまい検索",
      "keyword": "全文検索",
      "uncensored": "無修正検索"
    },
    "filelist": {
      "search_all_title": "未検索のファイルをすべて一括検索",
      "translate_all_title": "すべての日本語タイトルを翻訳",
      "scrape_all_title": "検索済みのファイルをすべて整理（リネーム + フォルダ作成 + NFO）",
      "scrape_all": "一括整理",
      "processing_prefix": "処理中",
      "organizing_prefix": "整理中",
      "remove_file": "このファイルを削除",
      "scrape_nfo": "この作品を整理",
      "failed": "失敗",
      "retry": "再試行",
      "enter_number": "番号を手動入力",
      "file_count": "ファイル {current}/{total}",
      "result_count": "検索結果 ({count})",
      "unrecognized": "品番を識別できません: {filename}",
      "not_found": "{number} のデータが見つかりません",
      "search_failed": "検索失敗",
      "connection_error": "接続エラー、後でもう一度お試しください",
      "already_organized": "整理済み"
    },
    "toast": {
      "no_searchable_files": "検索するファイルがありません",
      "search_complete": "一括検索完了：成功 {success}、失敗 {failed}",
      "no_scrapable_files": "整理するファイルがありません",
      "scrape_complete": "一括整理完了：成功 {success}、失敗 {failed}",
      "scrape_complete_dup": "一括整理完了：成功 {success}、失敗 {failed}、重複 {duplicate}",
      "no_search_results": "このファイルの検索結果がありません",
      "scrape_failed": "{filename} の整理に失敗しました",
      "no_valid_files": "有効な動画ファイルがありません（番号を識別できません）",
      "desktop_only": "この機能はデスクトップアプリで使用する必要があります",
      "load_failed": "読み込みに失敗しました。もう一度お試しください",
      "translate_failed": "翻訳に失敗しました。もう一度お試しください",
      "db_not_synced": "未同期 — 整理完了後も Showcase に表示されません",
      "db_sync_failed": "DB 同期失敗（ファイルは整理済みですが Showcase に表示されません）"
    },
    "duplicate": {
      "title": "ファイルが重複しています",
      "body": "対象ファイルはすでに存在します。続行すると上書きされます：",
      "explanation": "これは同じ作品に複数バージョン（CD1/CD2、4K、UC）がある場合に発生します。",
      "instruction": "<strong>設定 → 高度なスクレイプ設定 → バージョンマーク</strong> でキーワードを追加し、ファイル命名形式に <code class=\"badge badge-sm\">{suffix}</code> 変数が含まれていることを確認してください。",
      "acknowledge": "了解",
      "go_settings": "設定へ"
    }
  },
  "settings": {
    "page_title": "設定",
    "tabs": {
      "display": "表示設定",
      "scraping": "スクレイプ設定",
      "sources": "スキャンソース",
      "organize": "整理ルール",
      "translate": "AI 翻訳",
      "advanced": "高度な設定"
    },
    "display": {
      "font_size_label": "フォントサイズ",
      "locale_label": "表示言語",
      "theme_label": "テーマ"
    },
    "sources": {
      "uncensored_mode_label": "無修正モード",
      "uncensored_mode_on": "無修正モード：オン",
      "uncensored_mode_off": "無修正モード：オフ",
      "uncensored_mode_off_hint": "無修正モードをオフにするには、有修正ソースをいずれか手動で再有効化してください（オフにしても有修正ソースは自動的に再有効化されません）",
      "counter_prefix": "有効",
      "cap_tag": "上限",
      "select_all": "すべて有効",
      "manual_only_badge": "BETA",
      "cap_exceeded_title": "有効化上限に達しました",
      "cap_exceeded_body": "上限の 10 個に達しました。先にいずれかのソースを無効にするか、高度な検索でソースを 1 つ手動選択して上書きしてください。",
      "warn_all_disabled": "現在有効なソースがありません。有修正の完全一致検索はデータなしになります。例外：女優 / キーワード検索は JavBus の always-on ルールで引き続き動作します；FC2 / HEYZO / 日付形式の品番は無修正ソースへの自動 fallback が機能します。",
      "counter_help": "自動検索のソースは最大 10 個まで。設定した順番に上から順に検索されます。",
      "mt_server_url_label": "Server URL",
      "mt_token_label": "Bearer Token",
      "mt_connect_btn": "接続",
      "mt_connected_status": "✓ 接続済み",
      "mt_edit_btn": "編集",
      "mt_disconnect_btn": "切断",
      "mt_connected_tier_hint": "接続後、すべての provider はデフォルトで下のリスト（Active Row 外）に留まります。⭐ は推奨の起点ですが、provider は自動有効化されません — 手動で追加してください。",
      "mt_provider_list_header": "Provider リスト",
      "mt_provider_list_expand_aria": "Provider リストを展開",
      "mt_provider_list_collapse_aria": "Provider リストを折りたたむ",
      "mt_promote_hint": "クリックして Active Row に追加",
      "mt_disconnect_toast": "Metatube が切断されました。下の Section 3 から再接続してください。",
      "mt_enable_label": "Metatube 接続を有効にする",
      "mt_enable_help": "有効にすると下に Metatube 接続設定が展開されます。自己ホスト型 metatube サーバーを入力して 30 以上のソースを利用できます。",
      "mt_lan_mode_label": "LAN 自己ホスト（ローカル IP アドレスを許可）",
      "mt_connecting_btn": "接続中…",
      "mt_connect_network_error": "接続に失敗しました。ネットワークを確認してもう一度お試しください",
      "mt_connect_success_toast": "接続しました。{count} 個の provider が Provider リストに追加されました",
      "mt_probe_testing": "ソースをテスト中",
      "mt_retest_btn": "再テスト",
      "mt_probe_hint_title": "一部のソースがグレーアウトしているのはなぜ？",
      "mt_probe_hint_reason1": "metatube サーバーに日本の proxy が設定されていないか有効でない（地域ブロック対象のソース — FANZA / MGS 等）。",
      "mt_probe_hint_reason2": "ログインが必要なソース、または Bot 対策がある（SOD など、IP 変更でも解決しない）。",
      "mt_probe_hint_reason3": "サイトリニューアルで metatube scraper が機能しなくなったソース（JAV321 / KIN8 など、お使いの環境とは無関係）。",
      "mt_promote_unavailable_warning": "このソースは現在到達不可ですが、Active Row に追加しました。データを取得できない可能性があります",
      "mt_probe_failed_pill_hint": "このソースは現在到達不可です。追加後にデータを取得できない可能性があります。先に「再テスト」で確認することをお勧めします",
      "dmm_proxy_required_hint": "DMM を使用するには Proxy が必要です。設定で Proxy を有効にしてください"
    },
    "advanced_search": {
      "toggle_label": "高度な検索 (Beta)",
      "help": "有効にすると、検索ページで検索ボタンを長押しして、すべてのソース（未有効化を含む）から 1 つ選んで 1 回だけ上書き検索できます。",
      "metatube_keyword_hint": "Metatube ソースは女優 / キーワード検索に対応していません。完全な番号を入力することをお勧めします。",
      "group_metatube_empty": "Metatube ソースがまだありません"
    },
    "toast": {
      "desktop_only": "この機能はデスクトップアプリで使用する必要があります"
    },
    "header": {
      "title": "設定",
      "font_size_prefix": "フォントサイズ",
      "switch_dark": "ダークモードに切替",
      "switch_light": "ライトモードに切替",
      "locale_prefix": "言語"
    },
    "section": {
      "search": "検索・スクレイプ",
      "scraper_advanced": "高度なスクレイプ設定",
      "gallery_advanced": "高度な表示設定",
      "system": "システム設定"
    },
    "search": {
      "uncensored_mode": "無修正モード",
      "proxy_dmm_hint": "DMM は日本 IP が必要",
      "proxy_placeholder": "http://ユーザー:パスワード@ホスト:ポート — 日本 IP があれば direct と入力",
      "favorite_folder_label": "お気に入りフォルダ",
      "favorite_folder_hint": "よく使うフォルダをワンクリックで読み込み",
      "favorite_folder_placeholder": "空欄 = システムのダウンロードフォルダ",
      "favorite_folder_example_prefix": "例：C:\\Users\\&lt;ユーザー名&gt;\\Downloads"
    },
    "translate": {
      "enabled_label": "タイトル翻訳を有効にする",
      "provider_label": "翻訳サービス",
      "ollama_local": "（ローカル）",
      "gemini_cloud": "（Google クラウド）",
      "model_label": "モデル",
      "test_connection_placeholder": "先に接続テストを行ってください",
      "test_model_title": "モデルをテスト",
      "test_translation_title": "翻訳機能をテスト",
      "test_apikey_placeholder": "先に API Key をテストしてください",
      "gemini_free_hint": "無料で申請可能",
      "security_title": "セキュリティ注意：",
      "security_item1": "API Key は config.json に平文で保存されます",
      "security_item2": "config.json を他人に共有しないでください",
      "security_item3_prefix": "取り消す場合は",
      "security_item3_suffix": "で再生成してください",
      "openai_compatible": "OpenAI 互換",
      "openai_api_key_placeholder": "空白 = Authorization ヘッダーなし",
      "openai_api_key_hint": "ローカル LLM は空白可、クラウドサービスは API Key が必要",
      "openai_model_placeholder": "例: gpt-4o-mini",
      "openai_custom_model": "カスタム..."
    },
    "scraper": {
      "suffix_keywords_label": "バージョンマーク",
      "suffix_keywords_hint": "ファイル名にこれらのキーワードが含まれる場合 {suffix} として保持されます（複数指定時はリスト順に連結）",
      "create_folder_label": "フォルダを作成",
      "folder_layers_label": "フォルダ階層",
      "folder_layer_outer": "外層",
      "folder_layer_middle": "中間層",
      "folder_layer_inner": "内層",
      "preview_prefix": "プレビュー",
      "filename_format_label": "ファイル命名形式",
      "max_title_length_label": "タイトル長さ制限",
      "unit_chars": "文字",
      "max_filename_length_label": "ファイル名長さ制限",
      "path_length_help_aria": "Windows パス長さの説明",
      "path_length_help_line1": "Windows のデフォルトパス上限は 260 文字です（Windows 10 1607+ / Windows 11 対応）。",
      "path_length_help_line2": "長いファイル名が必要な場合は、<strong>管理者として</strong> PowerShell を開いて実行：",
      "path_length_help_line3": "再起動後に有効になります。",
      "path_length_help_line4": "macOS / Linux にはこの制限はありませんが、macOS/Linux で生成した長いファイル名を LongPathsEnabled が無効な Windows に移動すると失敗する場合があります。",
      "video_extensions_label": "動画拡張子",
      "video_extensions_hint": "カンマ区切り",
      "jellyfin_mode_label": "Jellyfin / Emby 画像モード",
      "jellyfin_mode_hint": "{stem}-poster.jpg + {stem}-fanart.jpg を自動生成。poster と NFO は Jellyfin / Emby 両対応、fanart は Jellyfin のみ（Emby はこの命名に非対応）",
      "download_sample_images_label": "サンプル画像をダウンロード（extrafanart）",
      "download_sample_images_hint": "整理時にスクリーンショットを extrafanart/ にダウンロード（「フォルダー作成」が必要）"
    },
    "gallery": {
      "output_dir_label": "出力ディレクトリ",
      "select_folder_title": "フォルダを選択",
      "output_filename_label": "出力ファイル名",
      "default_mode_label": "デフォルト表示モード",
      "mode_image": "画像モード",
      "mode_detail": "詳細モード",
      "mode_text": "テキストモード",
      "default_sort_label": "デフォルト並び替え",
      "sort_date": "発売日",
      "sort_mdate": "更新日",
      "sort_num": "番号",
      "sort_title": "タイトル",
      "sort_actor": "出演者",
      "sort_maker": "メーカー",
      "sort_size": "ファイルサイズ",
      "order_desc": "降順",
      "order_asc": "昇順",
      "items_per_page_label": "1ページあたりの表示数",
      "all": "すべて",
      "min_size_label": "最小動画サイズ",
      "min_size_hint": "0 = フィルタなし"
    },
    "system": {
      "default_page_label": "起動時に開くページ",
      "player_label": "動画プレイヤー",
      "player_placeholder": "空欄 = システムデフォルトを使用",
      "player_hint_prefix": "例：",
      "reset_label": "すべての設定をリセット",
      "reset_hint": "すべてのカスタム設定を削除してデフォルトに戻す"
    },
    "action": {
      "test": "テスト",
      "variable": "変数",
      "reset": "デフォルトにリセット",
      "save": "設定を保存"
    },
    "var": {
      "num": "番号",
      "title": "タイトル",
      "actor": "女優",
      "actors": "女優(全員)",
      "maker": "メーカー",
      "date": "日付",
      "year": "年",
      "month": "月",
      "day": "日",
      "suffix": "サフィックス"
    },
    "dirty_modal": {
      "title": "未保存の変更",
      "body": "保存されていない変更があります。どうしますか？",
      "discard": "保存しない",
      "save": "変更を保存"
    },
    "reset_modal": {
      "title": "すべての設定をリセット",
      "body": "すべての設定をリセットしてもよろしいですか？この操作はすべてのカスタム設定を削除し、元に戻せません。",
      "confirm": "リセットを確認"
    },
    "status": {
      "loading_models": "モデル読込中...",
      "connecting": "接続中...",
      "testing": "テスト中...",
      "connection_failed": "接続失敗",
      "no_models": "利用可能なモデルなし",
      "n_models": "{count} モデル",
      "enter_url": "URLを入力してください",
      "enter_api_key": "API Keyを入力してください",
      "select_model": "モデルを選択してください",
      "network_error": "✗ ネットワークエラー",
      "connect_failed": "接続失敗",
      "connected_n_models": "接続済み、{count} モデル",
      "enter_api_key_first": "API Keyを入力してください",
      "gemini_n_flash_models": "{count} 個の Flash モデル",
      "test_failed": "テスト失敗: {msg}",
      "testing_translation": "翻訳テスト中...",
      "translation_success": "翻訳テスト成功！ ({translation})",
      "openai_connection_failed": "接続失敗",
      "openai_http_error": "HTTPリクエスト失敗",
      "openai_auth_failed": "認証失敗、API Key を確認してください",
      "openai_forbidden": "アクセス権限がありません",
      "openai_not_found": "APIエンドポイントが見つかりません、Base URL を確認してください",
      "openai_rate_limited": "レート制限超過、後でもう一度お試しください",
      "openai_missing_base_url": "Base URL を入力してください",
      "openai_missing_model": "モデル名を入力してください",
      "openai_connection_timeout": "接続タイムアウト",
      "openai_api_error": "API エラー",
      "openai_translate_failed": "翻訳テスト失敗",
      "openai_unknown_response_format": "不明なレスポンス形式",
      "ja_skip": "日本語モード：翻訳スキップ"
    },
    "favorite_folder": {
      "pick_from_scanner": "Scanner のフォルダから選択",
      "no_directories": "Scanner のフォルダが未設定です",
      "linked_text": "✓ Scanner と連動済み",
      "not_linked_text": "⚠ Scanner と未連動"
    }
  },
  "scanner": {
    "page_title": "リスト生成",
    "toast": {
      "desktop_only": "この機能はデスクトップアプリで使用する必要があります",
      "folder_already_added": "このフォルダはすでにリストにあります",
      "copy_path_failed": "コピーに失敗しました：{path}",
      "generate_error": "生成に失敗しました。ログを確認してください",
      "nfo_update_error": "NFO 補完に失敗しました。ログを確認してください",
      "jellyfin_update_error": "Jellyfin 画像補完に失敗しました。ログを確認してください"
    },
    "copy_fail_modal": {
      "title": "ログのコピーに失敗",
      "body": "クリップボードへの書き込みに失敗しました。以下のテキストを選択して Ctrl+C でコピーしてください：",
      "close": "閉じる"
    },
    "drag_overlay": {
      "hint": "フォルダを追加するにはドロップ"
    },
    "folder": {
      "section_title": "スキャンフォルダ",
      "select_title": "フォルダを選択",
      "manual_title": "手動入力",
      "placeholder": "フォルダパスを入力...",
      "empty_line1": "フォルダが追加されていません",
      "empty_line2": "上のボタンをクリックするかフォルダをドラッグ",
      "remove_title": "削除",
      "output_prefix": "出力:",
      "settings_link": "設定",
      "copy_path": "パスをコピー"
    },
    "terminal": {
      "filter_all": "すべて",
      "filter_all_title": "すべて表示",
      "filter_error": "エラー",
      "filter_error_title": "エラーのみ表示",
      "filter_warn": "警告",
      "filter_warn_title": "警告のみ表示",
      "copy_title": "ログをコピー",
      "clear_display_title": "画面をクリア（リロード後に復元）",
      "clear_all_title": "すべてクリア（履歴含む）"
    },
    "stats": {
      "cached_prefix": "スキャン済み:",
      "cached_suffix": "本",
      "clear_cache_title": "キャッシュをクリア",
      "nfo_prefix": "NFO項目不完全:",
      "nfo_suffix": "本",
      "nfo_update_title": "NFO項目を補完",
      "jellyfin_prefix": "Jellyfin 専用カバー形式が不足:",
      "jellyfin_suffix": "本",
      "jellyfin_update_title": "Jellyfin poster + fanart を補完",
      "jellyfin_check_btn": "Jellyfin 画像を確認",
      "jellyfin_check_idle_label": "Jellyfin カバー未確認",
      "jellyfin_checking": "確認中...",
      "jellyfin_check_done_ok": "確認済み — 問題なし",
      "last_run_prefix": "最終実行: ",
      "last_added": "({count}本追加)",
      "generate_idle": "ページ生成",
      "generate_loading": "生成中...",
      "nfo_idle": "項目補完",
      "nfo_loading": "補完中...",
      "jellyfin_help_line1": "Jellyfin / Emby などのメディアサーバーには追加のカバー形式が必要です：",
      "jellyfin_help_line2": "<code>{stem}-poster.jpg</code> — カバー画像の<strong>右側を切り取り</strong>生成（縦型ポスター）",
      "jellyfin_help_line3": "<code>{stem}-fanart.jpg</code> — カバー画像をそのままコピー（横型背景）",
      "jellyfin_help_line4": "「補完」をクリックすると既存のカバーから自動生成します。ネットワーク不要。",
      "jellyfin_idle": "画像補完",
      "jellyfin_loading": "補完中...",
      "btn_done": "完了",
      "missing_both_prefix": "NFO+カバー不足:",
      "missing_nfo_prefix": "NFO不足:",
      "missing_cover_prefix": "カバー不足:",
      "missing_suffix": "本",
      "missing_enrich_idle": "一括補完",
      "missing_enrich_loading": "補完中...",
      "missing_enrich_preparing": "準備中...",
      "missing_enrich_done": "補完完了",
      "missing_enrich_toast_success": "補完完了！{success} 本成功",
      "missing_enrich_toast_mixed": "補完完了！{success} 本成功、{failed} 本失敗",
      "missing_enrich_batch_fail": "バッチ補完失敗 ({status}): {error}",
      "missing_enrich_disconnect": "接続が切断されました、次回再開できます",
      "missing_enrich_error": "補完に失敗しました、後ほど再試行してください",
      "missing_enrich_stream_error": "補完エラー、次回再開できます",
      "missing_enrich_interrupted": "補完が中断されました、次回再開できます",
      "missing_resume_label": "前回の補完が未完了、残り",
      "missing_resume_suffix": "本",
      "missing_resume_btn": "再開",
      "missing_resume_dismiss": "無視",
      "missing_enrich_confirm_title": "大量一括補完の確認",
      "missing_enrich_confirm_body_prefix": "合計 ",
      "missing_enrich_confirm_body_middle": " 件の動画を補完します。予想所要時間は約 ",
      "missing_enrich_confirm_body_suffix": " 分です。続行しますか？",
      "missing_enrich_confirm_cancel": "キャンセル",
      "missing_enrich_confirm_confirm": "補完を確認"
    },
    "alias": {
      "section_title": "女優名管理",
      "collapse_title": "展開/折りたたむ",
      "search_placeholder": "女優を追加 / 絞り込み...",
      "filter_hint": "絞り込み中 — {count} 件一致、Enterまたは[追加]で「{name}」を作成",
      "add": "追加",
      "online_search": "オンライン検索",
      "loading": "読み込み中...",
      "empty": "エイリアス記録なし",
      "no_results": "候補が見つかりません",
      "add_alias": "+ エイリアス",
      "alias_input_placeholder": "エイリアスを入力",
      "confirm": "確認",
      "delete_group_title": "この名前グループを削除",
      "delete_alias_title": "このエイリアスを削除",
      "error_conflict": "エイリアスの競合",
      "delete_group_modal": {
        "title": "エイリアスグループを削除",
        "body": "「{name}」のエイリアスグループ全体を削除してもよろしいですか？この操作は元に戻せません。",
        "cancel": "キャンセル",
        "confirm": "削除を確認"
      }
    },
    "dirty_modal": {
      "title": "未保存の変更",
      "body": "フォルダリストを変更しましたが、ページを生成していません。どうしますか？",
      "cancel": "キャンセル",
      "discard": "変更を破棄",
      "save": "保存して終了"
    },
    "clear_cache_modal": {
      "title": "動画キャッシュをクリア",
      "body_prefix": "この操作はキャッシュされた全動画メタデータ（計",
      "body_suffix": "本）を削除します。次回は再スキャンが必要です。よろしいですか？",
      "cancel": "キャンセル",
      "confirm": "削除する"
    },
    "tag_alias": {
      "section_title": "Tag エイリアス管理",
      "collapse_title": "展開 / 折りたたむ",
      "new_group_placeholder": "例：メイド / 女中 / Maid",
      "add": "追加",
      "loading": "読み込み中...",
      "empty": "Tag エイリアスの記録がありません",
      "add_alias_aria": "エイリアスを追加",
      "delete_group_title": "この Tag エイリアスグループを削除",
      "delete_alias_title": "このエイリアスを削除",
      "error_conflict": "Tag エイリアスの競合",
      "delete_group_modal": {
        "title": "Tag エイリアスグループを削除",
        "body": "「{name}」の Tag エイリアスグループをすべて削除しますか？この操作は元に戻せません。",
        "cancel": "キャンセル",
        "confirm": "削除を確認"
      },
      "ai_hint": {
        "icon_title": "AI 整理の提案",
        "tooltip": "💡 AI agent が /api/capabilities を使って整理するほうが速い"
      },
      "toast": {
        "add_group_success": "Tag エイリアスグループを追加しました：{name}",
        "delete_success": "削除しました：{name}"
      },
      "error": {
        "unknown": "不明なエラー",
        "load_failed": "読み込み失敗: {error}",
        "add_failed": "追加失敗: {error}",
        "delete_failed": "削除失敗: {error}",
        "add_alias_failed": "エイリアス追加失敗: {error}",
        "remove_failed": "削除失敗: {error}"
      }
    }
  },
  "showcase": {
    "page_title": "動画ブラウズ",
    "rescrape": {
      "modal_title": "高度な再スクレイプ",
      "search_title": "高度な検索",
      "entry_tooltip": "高度な再スクレイプ",
      "number_label": "番号",
      "filename_hint": "元のファイル名",
      "source_question": "どのソースを使う？",
      "auto_source": "自動",
      "searching": "検索中…",
      "not_found": "見つかりません。番号かソースを変えてお試しください。",
      "offline_tooltip": "現在接続できません。設定で再テストしてください",
      "overwrite_warning": "既存のカバー + NFO を上書き（取り消し不可）",
      "confirm": "上書き",
      "back_to_pick": "ソースを変更",
      "close": "閉じる",
      "success": "上書きしました（カバー + NFO）",
      "fail": "再スクレイプに失敗しました。後でもう一度お試しください。",
      "jl_desktop_only": "デスクトップアプリ（standalone）のみ利用可能",
      "jl_cf_solving": "Cloudflare 認証中……通過後、自動的に続きます"
    },
    "placeholder": {
      "search": "番号・女優名・タイトルを検索..."
    },
    "action": {
      "clear_search": "検索をクリア",
      "search": "検索",
      "toggle_order": "並び順を切替",
      "toggle_info": "情報を表示/非表示 (S)",
      "play_video": "動画を開く",
      "play": "再生",
      "enrich": "情報補完"
    },
    "toolbar": {
      "sort_prefix": "並び替え",
      "mode_prefix": "表示"
    },
    "sort": {
      "date": "日付",
      "num": "番号",
      "title": "タイトル",
      "actor": "女優",
      "maker": "メーカー",
      "size": "サイズ",
      "mdate": "更新日時",
      "random": "ランダム",
      "actress": {
        "video_count": "作品数",
        "name": "名前",
        "added_at": "追加日時",
        "age": "年齢",
        "height": "身長",
        "cup": "カップ"
      }
    },
    "mode": {
      "grid": "グリッド",
      "table": "テーブル",
      "list": "リスト",
      "actress": "女優モード",
      "video": "動画モード"
    },
    "unit": {
      "videos": "本",
      "minutes": "分",
      "minutes_abbr": "分",
      "videos_count": "本",
      "films": "作品",
      "actresses": "人"
    },
    "status": {
      "total_prefix": "全",
      "total_suffix": "本",
      "search_prefix": "\"",
      "search_middle": "\" の検索結果：",
      "search_suffix": "本",
      "search_empty": "該当する作品はありません",
      "search_actresses_prefix": "見つかった ",
      "search_actresses_middle": " 人 \"",
      "search_actresses_suffix": "\""
    },
    "nav": {
      "prev_page": "前のページ",
      "next_page": "次のページ"
    },
    "grid": {
      "unknown_actor": "不明",
      "unknown_title": "タイトル不明",
      "unknown_size": "不明"
    },
    "label": {
      "actor": "出演者",
      "maker": "メーカー",
      "date": "日付",
      "series": "シリーズ",
      "duration": "収録時間",
      "director": "監督",
      "label": "レーベル"
    },
    "table": {
      "col_number": "番号",
      "col_title": "タイトル",
      "col_actor": "女優",
      "col_maker": "メーカー",
      "col_director": "監督",
      "col_duration": "時間",
      "col_date": "日付",
      "col_tags": "タグ",
      "col_size": "サイズ"
    },
    "lightbox": {
      "close": "閉じる (ESC)",
      "prev": "前の作品 (←)",
      "next": "次の作品 (→)",
      "unknown_number": "不明",
      "add_tag": "タグを追加",
      "tag_placeholder": "タグ名",
      "tag_api_failed": "タグの保存に失敗しました",
      "user_tags_label": "カスタムタグ",
      "alias_label": "別名",
      "alias_source_hint": "Scanner から同期"
    },
    "gallery": {
      "prev": "前の画像 (←)",
      "next": "次の画像 (→)",
      "sample_prefix": "サンプル",
      "sample_alt": "サンプル画像",
      "thumb_alt": "サムネイル"
    },
    "shortcut": {
      "switch_mode": "表示切替",
      "toggle_info": "情報表示",
      "pagination": "ページ送り",
      "close": "閉じる"
    },
    "enrich": {
      "success": "情報補完が完了しました",
      "failed": "情報補完に失敗しました。後ほど再試行してください"
    },
    "search": {
      "actress": "女優名を検索...",
      "video": "番号・女優名・タイトルを検索..."
    },
    "actress": {
      "add": "+ 女優を追加",
      "addPlaceholder": "女優名を入力...",
      "addSuccess": "お気に入りに追加しました",
      "addDuplicate": "すでにお気に入りに登録済みです",
      "addNotFound": "女優が見つかりませんでした",
      "addTimeout": "スクレイピングがタイムアウトしました。後でもう一度お試しください",
      "remove": "お気に入りを解除",
      "remove_modal": {
        "title": "お気に入りから削除",
        "body": "お気に入りから「{name}」を削除してもよろしいですか？この操作は元に戻せません。",
        "cancel": "キャンセル",
        "confirm": "削除を確認"
      },
      "removeSuccess": "お気に入りから削除しました",
      "empty": "お気に入り女優がいません",
      "emptyHint": "右上の + をクリックして追加してください",
      "search_films": "関連動画を検索",
      "addFavorite": "お気に入りに追加",
      "favorited": "お気に入り済み",
      "change_photo": "写真を変更",
      "picker": {
        "empty": "候補写真が見つかりません",
        "empty_hint": "保存している動画が多いほど、ローカルの選択肢が増えます。",
        "loading": "候補を取得中…",
        "error": "取得に失敗しました",
        "replaced": "写真を変更しました。いつでも再変更できます。",
        "current_source": "現在：{source}",
        "source_local_crop": "ローカル",
        "source_graphis": "Graphis",
        "source_gfriends": "gfriends",
        "source_wiki": "Wiki",
        "source_minnano": "Minnano"
      }
    },
    "samples": {
      "fetch_btn": "取得",
      "fetching": "取得中...",
      "success": "サンプル画像を取得しました",
      "fetch_failed": "画像の取得に失敗しました。後でもう一度お試しください",
      "multi_video_error": "このフォルダに他の動画があります。画像を取得すると他の動画に影響します。動画を専用フォルダに移動してからお試しください。"
    }
  },
  "help": {
    "hero": {
      "page_title": "使い方",
      "subtitle": "JAV メタデータ管理ツール",
      "privacy": "🔒 完全ローカル — ユーザーデータを収集しません",
      "btn_tutorial": "チュートリアルを再表示",
      "btn_check_update": "確認中…",
      "btn_check_update_idle": "アップデートを確認",
      "update_available_prefix": "新バージョン",
      "update_available_suffix": "利用可能",
      "up_to_date": "最新バージョンです",
      "ai_instruction": "AIエージェントに貼り付けるだけでOpenAverを操作できます",
      "ai_hint_unsupported": "ウェブ版チャットには非対応",
      "ai_tools": "AI エージェントに貼り付けて OpenAver を操作 — Claude Code · Cursor · Codex など"
    },
    "workflow": {
      "title": "初めてですか？3ステップで始めましょう",
      "subtitle": "フォルダ追加からメタデータ補完まで、3ステップで始める",
      "step1_title": "ライブラリフォルダを追加",
      "step1_desc": "Scanner で AV 動画フォルダをトラッキング",
      "step2_title": "ページを生成",
      "step2_desc": "ワンクリックでスキャンして閲覧可能なコレクションページを作成",
      "step3_title": "NFO 補完",
      "step3_desc": "カバーやデータが不足？ワンクリックでネットから自動補完",
      "next_steps_title": "✅ 完了！次はこれを試して",
      "next_steps_similar": "ライトボックスの魔法杖ボタン：類似作品をあいまい探索",
      "next_steps_favorite": "お気に入りの女優をコレクションに追加",
      "next_steps_tag_alias": "tag chip をクリックすると同義語が展開されます（中日英 cross-language 自動対応）"
    },
    "power_user": {
      "title": "もっと細かく制御したい方へ",
      "intro": "細部まで自分で押さえたい方へ。OpenAver には本格的な詳細設定が揃っています — 1本ずつ精密にスクレイプ、命名規則のカスタマイズ、複数言語の別名管理など、下の Search・Settings・Tag エイリアス管理セクションをご覧ください。"
    },
    "tag_alias": {
      "title": "Tag エイリアス管理",
      "intro": "中日英の同義語を一元管理することで、検索ボックス・chip フィルター・あいまい探索がすべて同じ言語で動きます。",
      "h6_scanner": "Scanner でエイリアスグループを作成",
      "scanner_chipwall": "chip ウォールにすべての Tag エイリアスグループが表示されます。「+」をクリックして alias を追加。プライマリ名はピンク、エイリアスはグレーで表示されます。",
      "scanner_ai_hint": "「?」をクリックすると AI 提案パネルが開きます。tag の要件を AI に説明すると、提案エイリアスグループをそのままインポートできます。",
      "h6_showcase": "Showcase で自動展開",
      "showcase_expand": "検索ボックスに入力するか chip をクリックすると、同義語フィルターが自動展開されます。女優エイリアスと同じ動作です。",
      "showcase_click": "任意の tag chip をクリック → 同義語を持つすべての動画を絞り込み。正しい日本語表記を知らなくても大丈夫。",
      "h6_tips": "応用ヒント",
      "tip_ranker": "エイリアスを作成すると、星座モード（あいまい探索）にも即反映されます — 同義語タグの動画が類似スコアに加算されます。"
    },
    "search": {
      "title": "検索機能",
      "h6_methods": "対応する検索方法",
      "h6_dragdrop": "ファイルのドロップ",
      "h6_grid": "グリッドモード（カバーウォール）",
      "h6_badge": "バージョンバッジ",
      "method_full": "<strong>完全な番号</strong>：例 <code>SONE-001</code>、完全一致検索",
      "method_partial": "<strong>部分番号</strong>：例 <code>SONE-0</code>、001～009 を検索",
      "method_series": "<strong>シリーズ検索</strong>：例 <code>SONE</code>、シリーズ最新作を検索",
      "method_actress": "<strong>女優名</strong>：例 <code>河北彩花</code>、その女優の作品を検索",
      "drag_auto": "動画ファイルをウィンドウにドロップして番号を自動抽出・検索",
      "drag_batch": "複数ファイルのバッチ処理に対応（一度に最大 20 個）",
      "drag_generate": "検索成功後、「この作品を整理」をクリックしてファイル名変更・カバーダウンロード・フォルダ作成・NFO 書き込み",
      "grid_switch": "検索後にカバーウォール表示に切り替え可能、カバーをクリックして Lightbox を開く",
      "grid_lightbox": "<strong>Lightbox</strong>：全画面カバー表示。<kbd class=\"kbd kbd-sm\">←</kbd> <kbd class=\"kbd kbd-sm\">→</kbd> でナビゲート、<kbd class=\"kbd kbd-sm\">Esc</kbd> で閉じる",
      "grid_detail": "Lightbox には監督・再生時間・シリーズ・レーベルなどの詳細情報を表示（データがある場合のみ）",
      "grid_gallery": "「サンプル」ボタンでサンプル画像ギャラリーを開く。キーボード <kbd class=\"kbd kbd-sm\">←</kbd> <kbd class=\"kbd kbd-sm\">→</kbd> とスワイプに対応",
      "badge_keywords": "ファイル名に <code>-4k</code> や <code>-uc</code> などのキーワードが含まれると、結果カードにカラーバッジが表示される",
      "h6_advanced_picker": "高度な検索 Picker（Beta）",
      "picker_longpress": "① 検索ボタンを長押しすると単一ソースを選んで検索できます（Beta、Settings › 高度な設定で有効化が必要）",
      "picker_panel_switch": "② 結果パネルの 🔄 を長押しするとソースを切り替えられます",
      "picker_showcase_enrich": "③④ Showcase のカバーウォールまたはライトボックスで補完ボタン（🔍）を長押し → 既存作品を再スクレイプしてソースを指定。",
      "picker_lightbox_gear": "⑤ Showcase のライトボックスで番号の横の ⚙ をクリック → 既存作品の高度な再スクレイプ（長押し不要、クリックで開く）。"
    },
    "batch": {
      "title": "バッチファイル検索",
      "h6_add": "複数ファイルの追加",
      "h6_favorite": "お気に入りフォルダ",
      "h6_pause": "一時停止と再開",
      "h6_generate_all": "一括整理",
      "h6_badge": "バージョンタグの保持",
      "add_folder": "<strong>フォルダをドロップ</strong>：フォルダ内の動画ファイルを自動スキャン",
      "add_filter": "<strong>自動フィルタ</strong>：動画以外のファイルや設定サイズ未満のファイルを除外",
      "add_batch": "<strong>バッチ検索</strong>：1 バッチ 20 ファイル、同時 2 リクエスト",
      "add_progress": "<strong>進捗表示</strong>：リアルタイム進捗表示（例：処理中 15/100）",
      "fav_settings": "<strong>設定ページ</strong>でよく使うフォルダパスを設定。Scanner でトラッキング中のフォルダからドロップダウンで選択でき、連動状態がインラインでリアルタイム表示されます（✓ Scanner と連動済み / ⚠ トラッキング範囲外）",
      "fav_load": "「⭐ お気に入り」ボタンをクリックして即時読み込み",
      "fav_auto": "自動的に最初の 20 ファイルの検索を開始",
      "fav_nfo_skip": "同名の .nfo が存在する場合は整理済みとみなし、scraper を再実行しません",
      "pause_pause": "バッチ検索中に「一時停止」ボタンをクリック",
      "pause_resume": "「再開」をクリックして停止位置から再開",
      "generate_all": "バッチ検索完了後、成功した結果をまとめて整理（リネーム・フォルダ作成・カバーダウンロード・NFO 書き込み）",
      "badge_suffix": "ファイル名内の <code>-cd1</code>、<code>-4k</code> などは自動的に <code>{suffix}</code> として保持される"
    },
    "format": {
      "title": "フォーマット変数一覧",
      "h6_default": "デフォルトフォーマット",
      "h6_fallback": "フォールバックルール",
      "col_var": "変数",
      "col_desc": "説明",
      "col_example": "例",
      "col_fallback": "フォルダフォールバック",
      "var_num_desc": "番号",
      "var_title_desc": "タイトル",
      "var_actor_desc": "最初の女優",
      "var_actors_desc": "全女優",
      "var_maker_desc": "メーカー",
      "var_date_desc": "発売日",
      "var_year_desc": "年",
      "var_month_desc": "月（2桁）",
      "var_day_desc": "日（2桁）",
      "var_suffix_desc": "バージョンタグ",
      "fallback_unknown_title": "タイトル不明",
      "fallback_unknown_actor": "女優不明",
      "fallback_unknown_maker": "メーカー不明",
      "fallback_unknown_date": "日付不明",
      "fallback_unknown_year": "年不明",
      "fallback_unknown_month": "月不明",
      "fallback_unknown_day": "日不明",
      "fallback_empty": "空の場合は省略",
      "default_filename": "ファイル名：<code>[{num}][{maker}] {title}{suffix}</code>",
      "default_folder": "フォルダ：<code>{actor}</code>",
      "fallback_folder_rule": "フォルダレベルはフォールバック値（例：「女優不明」）を使用してパスが空にならないようにする",
      "fallback_filename_rule": "ファイル名はフォールバックを使用しない。変数が空の場合は省略される"
    },
    "actress": {
      "title": "女優機能",
      "h6_search": "検索ページ",
      "search_hero": "お気に入りに登録済みの女優名を検索すると、検索ボックスの上にプロフィールカード（写真・年齢・身長・スリーサイズ）が表示される",
      "search_favorite": "検索結果カードの ♡ をタップしてお気に入り登録。登録済みの女優はネットワーク不要でローカル検索",
      "search_grid": "女優の検索結果が 10 作品以上の場合は自動的にカバーウォール表示に切替。Lightbox ナビゲーション対応",
      "h6_showcase": "ショーケースページ",
      "showcase_toggle": "ツールバーで映画モード ↔ 女優モードを切替（映画 | 人物 アイコン）",
      "showcase_grid": "お気に入り女優グリッド。名前・年齢・カップ・身長・追加日でソート可能",
      "showcase_lightbox": "ライトボックスで写真変更やお気に入り解除が可能",
      "h6_manage": "お気に入り管理",
      "manage_add": "検索ページまたはショーケースページからお気に入りに追加。プロフィール写真は自動でローカルに保存",
      "manage_alias": "別名管理：Scanner ページで女優の別名を追加・編集。検索時にすべての既知の別名が自動展開される",
      "manage_enrich": "ライトボックス右上の🔄で女優写真を変更（クラウドまたはローカル動画カバーから候補取得）",
      "manage_photo_path": "お気に入り女優の写真は output/Gfriends/ ディレクトリに保存されます。プロフィール写真を変更する際は、女優のすべての alias 名が自動展開されてローカル候補検索に使用されます"
    },
    "scanner": {
      "title": "動画リスト生成（Scanner）",
      "h6_features": "機能",
      "h6_output": "出力ファイル",
      "h6_subtitle": "字幕自動検出",
      "h6_jellyfin": "Jellyfin 画像モード",
      "feat_scan": "ローカル動画フォルダをスキャンして美しい HTML 展示ページを生成",
      "feat_nfo": "NFO ファイルを自動で読み込みメタデータを表示",
      "feat_nfo_fill": "「NFO 補完」に対応：欠損した NFO ファイルを自動検索",
      "feat_terminal": "内蔵 Mini Terminal でリアルタイム処理進捗を表示",
      "output_html": "<strong>index.html</strong>：任意のブラウザで開ける静的ページ",
      "output_copy": "<strong>自動コピー</strong>：カバー画像と NFO を出力ディレクトリにコピー",
      "output_darkmode": "<strong>ダークモード</strong>：Web App のテーマ設定に自動追従",
      "subtitle_detect": "動画整理時に同じディレクトリ内の同名字幕ファイルを自動検出（<code>.srt</code>、<code>.ass</code>、<code>.ssa</code>）",
      "subtitle_move": "動画の移動成功後、字幕も一緒に移動。言語サフィックスを保持（例：<code>.cht.srt</code>）",
      "subtitle_nfo": "字幕を検出すると NFO に「中国語字幕」タグが自動追加される",
      "jellyfin_enable": "<strong>設定ページ</strong>で有効化後、スキャン時に自動で <code>-poster.jpg</code> + <code>-fanart.jpg</code> を生成",
      "jellyfin_showcase": "スキャン完了後、<code>/showcase</code> ページで生成結果を閲覧可能"
    },
    "showcase": {
      "title": "動画ブラウザ（Showcase）",
      "h6_modes": "表示モード",
      "h6_sort": "ソートと検索",
      "h6_other": "その他の機能",
      "intro": "Scanner 完了後、<code>/showcase</code> ページで動画ライブラリを閲覧できます。",
      "mode_grid": "<strong>グリッドモード</strong>：カバーウォール表示、クリックで Lightbox を開く",
      "mode_list": "<strong>リストモード</strong>：コンパクトなリスト、素早い閲覧に最適",
      "mode_table": "<strong>テーブルモード</strong>：完全なメタデータをテーブルで表示",
      "sort_sort": "<strong>ソート</strong>：日付 / 番号 / タイトル / 女優 / メーカー / サイズ / 更新日 / ランダム",
      "sort_search": "<strong>検索</strong>：番号、女優、タイトルなどのキーワードで絞り込み",
      "other_lightbox": "Lightbox 全画面カバー表示（<kbd class=\"kbd kbd-sm\">←</kbd> <kbd class=\"kbd kbd-sm\">→</kbd> でナビゲート）",
      "other_lightbox_detail": "Lightbox には監督・再生時間・シリーズ・レーベルなどの詳細情報を表示",
      "other_table_cols": "テーブルモードに「監督」と「再生時間」列を追加",
      "other_gallery": "Lightbox からサンプル画像ギャラリーを開く（「サンプル」ボタンをクリック）",
      "other_per_page": "1 ページの表示数は<strong>設定ページ</strong>で調整可能"
    },
    "shortcuts": {
      "title": "キーボードショートカット",
      "h6_search": "検索ページ",
      "h6_showcase": "ブラウズページ（Showcase）",
      "search_hint": "検索ボックスにフォーカスがある間はすべてのショートカットが無効になります。",
      "col_key": "キー",
      "col_context": "状況",
      "col_action": "動作",
      "ctx_lightbox_open": "Lightbox が開いているとき",
      "ctx_lightbox_closed": "Lightbox が閉じているとき",
      "action_close_lightbox": "Lightbox を閉じる",
      "action_prev_next_video": "前 / 次の動画",
      "search_arrow2_ctx": "詳細モード、Lightbox が閉じているとき",
      "search_arrow2_action": "前 / 次の結果に切り替え",
      "showcase_arrow_action": "前 / 次のページ",
      "showcase_a_action": "表示モードを循環切替（グリッド → リスト → テーブル）",
      "showcase_s_ctx": "グリッドモード、Lightbox が閉じているとき",
      "showcase_s_action": "カード情報の表示 / 非表示"
    },
    "scraper": {
      "title": "スクレイパーのソース",
      "h6_censored": "有修正ソース",
      "h6_uncensored": "無修正ソース",
      "h6_default_source": "デフォルト検索ソース",
      "h6_dmm_fuzzy": "DMM あいまい検索",
      "h6_proxy_direct": "Proxy ダイレクトモード",
      "h6_toggle": "モード切替",
      "h6_format": "番号フォーマット例",
      "censored_dmm": "<strong>DMM</strong>：日本 IP Proxy が必要（<strong>設定ページ</strong> → Proxy フィールド）",
      "censored_others": "<strong>JavBus</strong>、<strong>Jav321</strong>、<strong>JavDB</strong>：直接使用可能",
      "uncensored_d2pass": "<strong>D2Pass</strong>：1Pondo / Caribbeancom / 10musume の 3 サイトをカバー",
      "uncensored_heyzo": "<strong>HEYZO</strong>：独立ソース",
      "uncensored_fc2": "<strong>FC2</strong>：FC2-PPV 専用",
      "uncensored_avsox": "<strong>AVSOX</strong>：汎用無修正ソース",
      "default_source_set": "「<strong>スキャンソース</strong>」でドラッグして順番を調整。システムは有効なソースを上から順に使用します",
      "default_source_effect": "特定のソースのトグルをオフにすると、設定を削除せずそのソースを一時的に無効化できます",
      "fuzzy_always_on": "<strong>あいまい検索の例外</strong>：女優名 / キーワードであいまい検索を行う場合、「スキャンソース」で無効化されているソースも並び順通りに使用されます（無効化は番号の完全一致検索にのみ影響します）",
      "dmm_fuzzy_trigger": "検索ボックスに日本語の女優名やメーカー名を入力すると DMM あいまい検索も同時にトリガーされる",
      "dmm_fuzzy_prereq": "前提：DMM が有効になっていること（Proxy または <code>direct</code> モードが必要）",
      "proxy_direct_vpn": "日本の VPN に接続中、または日本にいる場合、別途 Proxy を設定する必要はありません",
      "proxy_direct_how": "設定ページの Proxy フィールドに <code>direct</code> と入力するだけで DMM を直接有効化できます",
      "toggle_uncensored": "<strong>設定ページ</strong>で「無修正モード」トグルを有効にすると、検索時に無修正ソースが優先される",
      "col_source": "ソース",
      "col_format": "フォーマット",
      "col_example": "例"
    },
    "metatube": {
      "title": "Metatube チュートリアル",
      "h6_what": "metatube とは",
      "what_desc": "metatube は自己ホスト型 HTTP サーバーです。接続すると 30 以上のアップストリーム provider を一度に解放できます（power user / Docker 環境向け）",
      "h6_enable": "有効化の手順",
      "enable_gate": "Settings ›「検索・スクレイプ」で Metatube の gate トグルをオン → 接続エリアが展開されます",
      "enable_url": "Server URL（例：http://あなたの-metatube:8080）と任意の Bearer token を入力 → [接続] をクリック",
      "h6_sources": "ソース管理",
      "sources_promote": "30 以上の provider が Parts Bin に入り、使いたいものを手動で主力集に promote します（上限 10 個）",
      "sources_offline": "到達できないソースは自動でグレーアウトされます。[再テスト] をクリックして接続を再確認できます",
      "h6_lan": "LAN 自己ホストの注意点",
      "lan_ssrf": "LAN 上の自己ホストサーバーは設定ページで opt-in を有効にする必要があります（SSRF セキュリティ警告）",
      "h6_limits": "ソースの制限",
      "limits_picker": "picker 内の metatube ソースは女優 / キーワード検索に対応していません。完全な番号を入力することをお勧めします",
      "h6_db": "パフォーマンスのヒント",
      "db_hint": "複数の metatube ソースを並列検索すると速度が低下することがあります。metatube サーバー側でデフォルトの SQLite を PostgreSQL に切り替えると改善できます（metatube サーバーの設定であり、OpenAver の設定ではありません）",
      "crossref_picker": "高度な検索 picker で metatube の単一ソースを選択する方法 → 「検索機能」カードを参照"
    },
    "troubleshooting": {
      "title": "トラブルシューティング",
      "h6_crash": "アプリが起動しない / クラッシュする（Windows）",
      "h6_display": "UI 表示の異常 / 空白画面",
      "h6_report": "問題の報告",
      "h6_dmm": "DMM 検索が機能しない",
      "h6_translate": "翻訳が応答しない",
      "crash_cause": "<strong>原因</strong>：Windows のセキュリティがインターネットからダウンロードしたファイルをブロックしました。",
      "crash_fix_label": "<strong>解決方法</strong>：",
      "crash_fix_1": "ダウンロードした ZIP を右クリック → プロパティ",
      "crash_fix_2": "「ブロックの解除」にチェックを入れ、OK をクリック",
      "crash_fix_3": "再展開してアプリを実行",
      "display_cause": "<strong>原因</strong>：WebView2 Runtime が不足しています（Windows 10 や仮想マシンでよく見られます）。",
      "display_fix": "<strong>解決方法</strong>：<a href=\"https://go.microsoft.com/fwlink/p/?LinkId=2124703\" target=\"_blank\">Microsoft Edge WebView2 Runtime</a> をダウンロードしてインストールしてください。",
      "report_log_path": "<strong>ログの場所</strong>：<code>%USERPROFILE%\\OpenAver\\logs\\debug.log</code>",
      "report_debug_label": "<strong>デバッグモードを実行</strong>：",
      "report_debug_1": "<code>OpenAver_Debug.bat</code> を実行",
      "report_debug_2": "問題を再現する",
      "report_debug_3": "ログファイルとエラーメッセージを <a href=\"https://github.com/slive777/OpenAver/issues\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub Issues</a> に報告",
      "dmm_proxy": "DMM には日本 IP が必要です。<strong>設定ページ</strong> → Proxy フィールドに日本のプロキシを入力してください",
      "dmm_direct": "VPN や日本のネットワークに接続済みの場合、Proxy フィールドに <code>direct</code> と入力するだけで有効化できます。Proxy アドレスは不要です。",
      "translate_ollama": "<strong>Ollama</strong>：Ollama アプリが起動していることを確認してください（Windows では手動起動が必要）",
      "translate_gemini": "<strong>Gemini</strong>：<strong>設定ページ</strong>で API Key が正しく設定されていることを確認",
      "translate_openai": "<strong>OpenAI Compatible</strong>：Base URL とモデル名が正しいか確認してください"
    },
    "js": {
      "version_load_failed": "読み込み失敗",
      "check_update_failed": "確認に失敗しました。後でもう一度お試しください",
      "check_update_network_error": "ネットワークエラー。後でもう一度お試しください"
    },
    "similar": {
      "title": "類似動画の探索（ルールベース）",
      "intro": "Lightbox の魔法杖ボタンをクリック → 12 個の探索星が主画像を中心に並ぶ；星は tag のルールベース類似度（IDF 加重 + シリーズ / メーカー / 年 / cast 複合スコア）で並び替え、モデルのダウンロード不要ですぐ使える。",
      "h6_what": "仕組み",
      "what_principle": "主シグナルは IDF 加重 Jaccard — レアな tag のヒットはスコアが高くなる；さらにシリーズ / メーカー / 年 / cast の複合スコアで評価。",
      "what_crop": "シリーズが完全一致の場合はボーナスが加算され、同シリーズの動画が優先表示される。",
      "what_diversity": "MMR diversity rerank（λ=0.7）により、最終 12 個の結果は類似度と多様性を両立する。",
      "h6_use": "使い方",
      "use_lightbox": "Showcase の動画モードで Lightbox を開く → 左上の魔法杖ボタン <i class=\"bi bi-magic\"></i> → 星空モードへ",
      "use_constellation": "12 個の星が中央の主画像を囲む；どれかをクリックすると「潜り込んで」新しい主画像になり、無限に探索できる",
      "use_mobile": "スマートフォン（&lt; 768px）ではアニメーションなしで主画像下の grid に上位 4 枚を表示",
      "h6_beta": "制限事項",
      "beta_uncensored": "<strong>無修正 / FC2 / 旧 compilation</strong> などの非標準レイアウトのサムネイルや、metadata のない動画は Tier 3/4（ランダム補完）に分類され、関連性が低くなる",
      "beta_compilation": "tag が多いほど（シリーズ / メーカー / cast）精度が上がる；tag が少ない動画は先に NFO を補完することを推奨",
      "h6_manage": "使用ヒント",
      "manage_enable": "設定不要、すぐ使える",
      "manage_scanner": "動画追加後、Scanner で「ウェブページを生成」するとインデックスが自動更新される。手動操作不要"
    }
  },
  "tutorial": {
    "close": "閉じる",
    "skip": "スキップ",
    "next": "次へ →",
    "done": "完了 🎉",
    "step1_title": "📂 ライブラリフォルダを追加",
    "step1_content": "AV動画を保存しているフォルダのパスを追加してください<br>OpenAver がすべての動画をスキャンして閲覧ページを作成します",
    "step2_title": "▶ ページを生成",
    "step2_content": "このボタンを押してスキャン + プライベートコレクションページを作成<br>数秒で完了します",
    "step3_title": "🌐 NFO 補完の入口",
    "step3_content": "スキャン後、Scanner ページに戻ってください<br>NFO 補完ボタンが自動的に表示されます。カバーやデータが不足していればワンクリックでネットから補完",
    "step4_title": "🎬 コレクションを閲覧",
    "step4_content": "完了後は Showcase へ<br>ライトボックスに魔法杖ボタンがあり、類似作品をあいまい探索できます",
    "step5_title": "🔍 上級者向け — 1本ずつスクレイプ",
    "step5_content": "各タイトルのデータを精密に管理したい方は？<br>Search で1本ずつ手動処理できます",
    "step6_title": "⚙️ 上級者向け — カスタムルール",
    "step6_content": "命名形式・AI翻訳・表示設定はすべて Settings にあります<br>慣れてから試してみてください",
    "step7_title": "📖 使い方ガイド",
    "step7_content": "いつでも戻って見直してください<br>Help ページには機能詳解と AI agent コマンドもあります"
  },
  "notif": {
    "title": "通知",
    "clear_all": "すべてクリア",
    "empty": "通知はありません",
    "open": "通知を開く",
    "close": "通知を閉じる",
    "dialog_label": "通知センター",
    "scanner_started": "スキャン開始",
    "scanner_done": "スキャン完了",
    "scanner_done_with_errors": "スキャン完了（一部失敗）",
    "scanner_failed": "スキャン中断",
    "batch_enrich_started": "一括補完開始",
    "batch_enrich_done": "一括補完完了",
    "batch_enrich_done_with_errors": "一括補完（一部失敗）",
    "batch_enrich_failed": "一括補完中断",
    "jl_cf_timeout": "JavLibrary CF認証タイムアウト"
  },
  "similar_mode": {
    "button_aria_label": "類似動画を探索",
    "close": "閉じる",
    "fetch_failed": "読み込み失敗"
  }
}
