goosemusic 1.3.2

A music player with YouTube search, local playback, and OS media controls
use super::Strings;
use crate::providers::ProviderId;

pub const STRINGS: Strings = Strings {
    search: "検索",
    downloads: "ダウンロード",
    settings: "設定",
    library: "ライブラリ",
    nothing_saved_yet: "まだ保存されていません",
    new_playlist_name: "新しいプレイリスト名",

    queue: "キュー",
    recently_played: "最近再生した曲",
    now_playing_from: "再生中(元:",
    now_playing: "再生中",
    up_next: "次に再生",
    no_track_playing: "再生中の曲はありません",
    no_more_tracks_in_queue: "キューにこれ以上曲はありません",
    no_recently_played_tracks: "最近再生した曲はありません",

    not_playing: "再生していません",
    no_tracks_found: "曲が見つかりません",

    searching: "検索中…",
    loading: "読み込み中…",
    load_more: "もっと読み込む",
    no_results_found: "結果が見つかりません",
    no_recent_searches: "最近の検索はありません",
    generating_radio: "ラジオを生成中…",

    not_an_artist_page: "アーティストページではありません",
    provided_by: "提供元",
    retry: "再試行",
    nothing_here: "ここには何もありません",
    most_popular_songs: "人気の曲",
    albums: "アルバム",
    playlists: "プレイリスト",
    fans_also_like: "ファンも好む",

    looking_up_lyrics: "歌詞を検索中…",
    play_a_track_for_lyrics: "曲を再生すると歌詞が表示されます。",
    lyrics_selectable: "選択可能",
    lyrics_synced: "同期済み",
    lyrics_plain: "プレーン",
    lyrics_translations: "翻訳",
    lyrics_original: "オリジナル",
    add_custom: "歌詞を追加",
    lyrics_name: "名前",
    translate_with_ai: "AIで翻訳",
    translate_title: "AIで歌詞を翻訳",
    translate_language_lbl: "翻訳先の言語",
    translate_prompt_lbl: "プロンプト",
    translate_submit: "翻訳する",
    translate_reset: "プロンプトをリセット",
    translating: "翻訳中…",
    translation_ready: "翻訳が完了しました — 確認して保存してください",
    translation_language_empty: "翻訳先の言語を入力してください",
    no_lyrics_to_translate: "この曲には翻訳できる歌詞がありません。",
    translation_not_configured: "設定でサーバーのURLとモデルを指定してください。",
    translation_failed: |e| format!("翻訳に失敗しました: {e}"),
    sec_translation: "AI翻訳",
    translation_base_url_lbl: "サーバーURL(OpenAI互換)",
    translation_api_key_lbl: "APIキー(ローカルサーバーでは空欄)",
    translation_model_lbl: "モデル",
    translation_refresh_models: "モデル一覧を取得",
    translation_no_models: "このサーバーにモデルが見つかりません。",
    translation_models_failed: |e| format!("モデル一覧の取得に失敗しました: {e}"),
    edit_lyrics: "歌詞を編集",
    lyrics_editor_hint: "1行に1フレーズ。[mm:ss.xx]を先頭に付けると同期歌詞になります。任意の行の下に`# note`行を追加すると、歌詞の下にメモが表示されます。",

    playlist_not_found: "プレイリストが見つかりません",
    add_local: "ローカルを追加",
    downloaded_tracks: "ダウンロードした曲",
    no_downloaded_tracks: "ダウンロードした曲はありません",

    ctx_play: "再生",
    ctx_play_local: "ローカルを再生",
    ctx_edit: "編集",
    ctx_go_to_artist: "アーティストへ移動",
    ctx_add_to_queue: "キューに追加",
    ctx_add_to_playlist: "プレイリストに追加",
    ctx_download: "ダウンロード",
    ctx_song_radio: "曲のラジオ",
    ctx_artist_radio: "アーティストのラジオ",
    ctx_remove_from_queue: "キューから削除",
    ctx_remove_from_playlist: "プレイリストから削除",
    ctx_remove_from_recent: "最近再生から削除",
    ctx_clear_cache: "キャッシュをクリア",
    sub_play_via: "再生元",
    sub_download_from: "ダウンロード元",
    sub_via: "経由",
    sub_on: "",
    sub_clear_cache_from: "クリア元",
    via_search_suffix: "(検索)",

    current: "(現在)",
    select: "選択",
    find: "検索",
    finding: "検索中…",
    found_on: |p| format!("{p} で見つかりました"),
    not_linked: "未リンク",
    providers: "提供元",
    no_provider_data: "この曲には提供元データがありません。",
    save: "保存",
    cancel: "キャンセル",
    edit_track: "曲を編集",
    lbl_title: "タイトル",
    lbl_artist: "アーティスト",
    ph_track_title: "曲のタイトル",
    ph_track_artist: "曲のアーティスト",
    delete: "削除",
    delete_playlist_q: "プレイリストを削除しますか?",
    tracks_wont_be_deleted: "曲は削除されません。",
    lbl_id: "ID",
    lbl_url: "URL",
    lbl_artist_id: "アーティスト ID",
    lbl_duration_secs: "長さ(秒)",
    lbl_thumbnail: "サムネイル",
    lbl_album: "アルバム",

    sec_playback: "再生",
    sec_storage: "ストレージ",
    sec_history: "履歴",
    sec_appearance: "外観",
    sec_dependencies: "依存関係",
    theme_lbl: "テーマ",
    language_lbl: "言語",
    default_provider_lbl: "既定のストリーミング・ダウンロード提供元",
    cookie_browser_lbl: "ブラウザのCookie(年齢制限動画用)",
    cookies_off: "オフ",
    normalize_volume_lbl: "曲間で音量を正規化",
    download_dir_lbl: "ダウンロード先",
    cache_size_lbl: "ストリーミングキャッシュの最大サイズ(MB)",
    hist_rows_lbl: "検索履歴の表示行数",
    hist_entries_lbl: "保存する検索履歴件数",
    recent_kept_lbl: "保存する最近再生した曲数",
    reset_defaults: "既定に戻す",

    find_in_list: "リスト内を検索…",
    scope_songs: "",
    scope_videos: "動画",
    scope_artists: "アーティスト",
    scope_albums: "アルバム",
    scope_playlists: "プレイリスト",
    radio_word_song: "",
    radio_word_artist: "アーティスト",

    lyrics_copied: "歌詞をクリップボードにコピーしました",
    saved_to_library: "ライブラリに保存しました",
    removed_from_library: "ライブラリから削除しました",
    no_lyrics_found: "この曲の歌詞が見つかりません。",
    lyrics_saved: "カスタム歌詞を保存しました",
    lyrics_deleted: "カスタム歌詞を削除しました",
    lyrics_empty: "歌詞を空にできません",
    lyrics_name_empty: "歌詞に名前を付けてください",
    select_playlist_drop: "曲を置く先のプレイリストを選択",
    reordered_playlist: "プレイリストを並べ替えました",
    max_panes_reached: "ペインの最大数に達しました",

    n_saved: |n| format!("{n} 件保存"),
    n_plays: |n| format!("{} 回再生", crate::util::format_count(n)),
    search_placeholder: |p| match p {
        ProviderId::YouTube => "YouTube Music を検索…".into(),
        ProviderId::Local => "検索…".into(),
        other => format!("{} を検索…", other.label()),
    },
    added: |n| format!("{} を追加", ja_tracks(n)),
    added_to: |n, to| format!("{}{to} に追加", ja_tracks(n)),
    removed_n: |n| format!("{} を削除", ja_tracks(n)),
    removed_from: |n, from| format!("{}{from} から削除", ja_tracks(n)),
    pasted_into: |n, into| format!("{}{into} に貼り付け", ja_tracks(n)),
    saved_title: |t| format!("{t}」をライブラリに保存しました"),
    playlist_created: |n| format!("プレイリスト「{n}」を作成しました"),
    added_local: |n| format!("{} を追加(整理するプレイリストを選択)", ja_tracks(n)),
    downloading_n: |n| format!("{} をダウンロード中…", ja_tracks(n)),
    resolving_on: |title, p| format!("{title}」を {p} で解決中…"),
    resolving_player_client: "互換性のあるプレイヤークライアントを解決中…",
    resolved_player_client: |c| format!("プレイヤークライアントを解決しました: {c}"),
    player_client_unavailable: "互換性のあるプレイヤークライアントが見つかりません、デフォルトを使用します…",
    provider_no_radio: |p| format!("{p} はラジオに対応していません"),
    generating_radio_for: |w, name| format!("{w} のラジオを生成中: {name}"),
    could_not_find_on: |name, p| format!("{name}」が {p} で見つかりません"),
    opening: |l| format!("開いています: {l}"),
    opening_artist: |name| format!("アーティストを開いています: {name}"),
    download_complete: |path| format!("ダウンロード完了!{path} に保存しました"),
    failed_resolve_on: |title, p, e| format!("{title}」の {p} での解決に失敗: {e}"),
    couldnt_load: |e| format!("読み込めませんでした: {e}"),
    couldnt_load_lyrics: |e| format!("歌詞を読み込めませんでした: {e}"),
    search_failed: |e| format!("検索に失敗: {e}"),
    cache_cleared_for: |p| format!("{p}のキャッシュをクリアしました"),
    radio_label: |w, name| format!("ラジオ({w}): {name}"),
    ctx_add_to_playlist_n: |n| format!("{} をプレイリストに追加", ja_tracks(n)),
    ctx_add_to_queue_n: |n| format!("{} をキューに追加", ja_tracks(n)),
    ctx_download_n: |n| format!("{} をダウンロード", ja_tracks(n)),
    ctx_remove_from_queue_n: |n| format!("{} をキューから削除", ja_tracks(n)),
    ctx_remove_from_playlist_n: |n| format!("{} をプレイリストから削除", ja_tracks(n)),
    ctx_remove_from_recent_n: |n| format!("{} を最近再生から削除", ja_tracks(n)),

    import_playlist: "プレイリストをインポート",
    import_method_native: "ネイティブ",
    import_method_filelist: "ファイル一覧",
    import_method_csv: "CSV",
    import_native_hint: "playlists.json からプレイリストをインポートします。",
    import_csv_name_col: "名前の列",
    import_csv_artist_col: "アーティストの列",
    import_csv_album_col: "アルバムの列",
    import_csv_preset: "プリセット",
    import_csv_preset_default: "既定",
    import_csv_preset_exportify: "Exportify",
    import_csv_exportify_note: "https://exportify.net/ からエクスポートした Spotify プレイリストに対応。",
    import_pattern_lbl: "ファイル名パターン",
    import_playlist_name: "プレイリスト名",
    import_add_pattern: "パターンを追加",
    import_select_file: "ファイルを選択",
    import_select_folder: "フォルダを選択",
    import_pattern_conflict: |a, b| {
        format!(
            "パターン「{a}」と「{b}」は同じファイルに一致し、フィールドが競合する可能性があります。どちらかを削除または修正してください。"
        )
    },
    import_playlists_imported: |n| format!("{} をインポート", ja_tracks(n)),
    import_imported_into: |n, into| format!("{}{into} にインポート", ja_tracks(n)),
    import_no_tracks: "インポートする曲が見つかりません。",
    import_no_match: "いずれのパターンにも一致するファイルがありません。",
    import_bad_file: "選択したファイルを読み込めませんでした。",

    deps_title: "不足している依存関係",
    deps_intro: "アプリが使用する一部のツールが見つかりません。インストールするものを選ぶか、破棄して続行してください(それらが揃うまで検索やストリーミングが機能しない場合があります)。",
    deps_install: "インストール",
    deps_install_selected: "選択項目をインストール",
    deps_discard: "破棄",
    deps_installing: "インストール中…",
    deps_installed: "インストール済み",
    deps_failed: "失敗",
    deps_installed_toast: "選択した依存関係をインストールしました。",
    deps_yt_dlp_desc: "音声をストリーミング・ダウンロード(YouTubeとSoundCloudに必須)",
    deps_ytmusicapi_desc: "YouTube Music 検索(任意、yt-dlp にフォールバック)",
    deps_python3_desc: "ytmusicapi に必要(YouTube Music 検索用)",
    deps_ytmusicapi_requires_python: "Python 3 が必要(先にインストール)",
    deps_play_requires_yt_dlp: "再生には yt-dlp が必要です。起動ダイアログからインストールして再生してください。",
    deps_source_not_playable: "このソースは再生できません。",
    deps_found_section_title: "システムで見つかりました",
    deps_found_section_intro: "これらはすでに利用可能です。アプリで管理するコピーをインストールするにはチェックを入れてください(アプリのコピーがシステムのものより優先されます)。",
    deps_found_on_system: "システムで見つかりました",
    deps_managed_by_app: "インストール済み(アプリ管理)",
    deps_not_installed: "未インストール",
    deps_delete: "削除",
    deps_deleting: "削除中…",
    deps_deleted: "削除済み",
    deps_delete_failed: "削除に失敗",

    sec_updates: "アップデート",
    check_for_updates: "アップデートを確認",
    checking_for_updates: "アップデートを確認中…",
    up_to_date: "最新です",
    current_version: |v| format!("バージョン {v}"),
    update_available: |v| format!("バージョン {v} が利用可能です。設定から更新できます。"),
    update_now: "今すぐ更新",
    updating: "更新中…",
    update_applied: |v| format!("バージョン {v} に更新しました。再起動中…"),
    package_managed: "自動更新できません(アプリケーションディレクトリへの書き込み権限がありません)。パッケージマネージャーでインストールされた場合は、それを使用して更新してください。",
    update_failed: |e| format!("アップデートに失敗しました: {e}"),
    percent: |pct| format!("{pct}%"),
    list_match_pos: |pos, total| format!("{pos}/{total}"),
    sub_menu_label: |base, provider, suffix| format!("{base} {provider} {suffix}"),
    deps_failed_detail: |e| format!("Failed: {e}"),
    deps_delete_failed_detail: |e| format!("Delete failed: {e}"),

    sc_title: "キーボードショートカット",
    sc_sec_list: "トラックリスト",
    sc_move: "リスト内を移動(循環)",
    sc_focus_panel: "キューまたはリストにフォーカス",
    sc_first_last: "先頭 / 末尾の行",
    sc_page: "ページ / 半ページ",
    sc_play: "フォーカス中の曲を再生",
    sc_sec_select: "選択と編集",
    sc_extend: "選択範囲を広げる",
    sc_toggle_sel: "行の選択を切り替え",
    sc_select_all: "リスト内をすべて選択",
    sc_copy_paste: "選択中の曲をコピー / 貼り付け",
    sc_delete: "選択中の曲を削除",
    sc_esc: "ポップアップを閉じて選択を解除し検索に戻る",
    sc_sec_search: "検索",
    sc_focus_search: "検索にフォーカス",
    sc_stage_provider: "検索プロバイダーを指定(保留)",
    sc_stage_scope: "検索スコープを指定(保留)",
    sc_run_search: "保留中の検索を実行",
    sc_find_list: "リスト内あいまい検索(一致間を移動)",
    sc_sec_playlists: "プレイリストと履歴",
    sc_prev_next_pl: "前 / 次のプレイリスト",
    sc_jump: "プレイリストジャンプ(Enterで開く、Shift+Enterで再生)",
    sc_back_fwd: "ペインで戻る / 進む",
    sc_sec_playback: "再生",
    sc_play_pause: "再生 / 一時停止",
    sc_next_prev: "次 / 前の曲",
    sc_mute: "ミュート",
    sc_volume: "音量ダウン / アップ",
    sc_seek: "5秒戻る / 進む(Shift: 10秒)",
    sc_toggles: "キュー / リピート / 歌詞 / キュータブ",
    sc_sec_panes: "ペイン",
    sc_split: "左右 / 上下に分割",
    sc_close_pane: "ペインを閉じる",
    sc_adj_pane: "隣のペインにフォーカス",
    sc_cycle_pane: "ペインを巡回 / 移動",
    sc_sec_menu: "コンテキストメニュー",
    sc_open_menu: "フォーカス中の曲に対して開く",
    sc_nav_menu: "メニュー内を移動",
};

fn ja_tracks(n: usize) -> String {
    format!("{n}")
}