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: "Szukaj",
    downloads: "Pobrane",
    settings: "Ustawienia",
    library: "Biblioteka",
    nothing_saved_yet: "Nic jeszcze nie pobrano",
    new_playlist_name: "Nazwa nowej playlisty",

    queue: "Kolejka",
    recently_played: "Ostatnie",
    now_playing_from: "Teraz odtwarzane z",
    now_playing: "Teraz odtwarzane",
    up_next: "Następne",
    no_track_playing: "Nic nie jest odtwarzane",
    no_more_tracks_in_queue: "Brak więcej utworów w kolejce",
    no_recently_played_tracks: "Brak ostatnio odtwarzanych utworów",

    not_playing: "Nie odtwarza się",
    no_tracks_found: "Nie znaleziono utworów",

    searching: "Wyszukiwanie...",
    loading: "Wczytywanie...",
    load_more: "Wczytaj więcej",
    no_results_found: "Brak wyników",
    no_recent_searches: "Brak ostatnich wyszukiwań",
    generating_radio: "Generowanie radia...",

    not_an_artist_page: "To nie jest strona wykonawcy",
    provided_by: "Dostarcza",
    retry: "Spróbuj ponownie",
    nothing_here: "Tu nic nie ma",
    most_popular_songs: "Najpopularniejsze utwory",
    albums: "Albumy",
    playlists: "Playlisty",
    fans_also_like: "Fani lubią też",

    looking_up_lyrics: "Szukanie tekstu…",
    play_a_track_for_lyrics: "Odtwórz utwór, aby zobaczyć jego tekst.",
    lyrics_selectable: "Zaznaczany",
    lyrics_synced: "Synchronizowany",
    lyrics_plain: "Zwykły",
    lyrics_translations: "Tłumaczenia",
    lyrics_original: "Oryginał",
    add_custom: "Dodaj tekst",
    lyrics_name: "Nazwa",
    translate_with_ai: "Przetłumacz z AI",
    translate_title: "Przetłumacz tekst z AI",
    translate_language_lbl: "Język docelowy",
    translate_prompt_lbl: "Prompt",
    translate_submit: "Przetłumacz",
    translate_reset: "Zresetuj prompt",
    translating: "Tłumaczenie…",
    translation_ready: "Tłumaczenie gotowe — sprawdź i zapisz",
    translation_language_empty: "Wprowadź język docelowy",
    no_lyrics_to_translate: "Brak tekstu do przetłumaczenia dla tego utworu.",
    translation_not_configured: "Ustaw adres URL serwera i model w Ustawieniach.",
    translation_failed: |e| format!("Tłumaczenie nie powiodło się: {e}"),
    sec_translation: "Tłumaczenie AI",
    translation_base_url_lbl: "Adres URL serwera (kompatybilny z OpenAI)",
    translation_api_key_lbl: "Klucz API (pusty dla serwerów lokalnych)",
    translation_model_lbl: "Model",
    translation_refresh_models: "Pobierz listę modeli",
    translation_no_models: "Nie znaleziono modeli na tym serwerze.",
    translation_models_failed: |e| format!("Nie udało się załadować listy modeli: {e}"),
    edit_lyrics: "Edytuj tekst",
    lyrics_editor_hint: "Jedna linia na wers. Dodaj [mm:ss.xx] na początku dla synchronizacji lub zostaw zwykły tekst. Dodaj linię `# note` pod dowolnym wersem, aby pokazać notatkę pod tekstem.",

    playlist_not_found: "Nie znaleziono playlisty",
    add_local: "Dodaj lokalne",
    downloaded_tracks: "Pobrane utwory",
    no_downloaded_tracks: "Brak pobranych utworów",

    ctx_play: "Odtwórz",
    ctx_play_local: "Odtwórz lokalnie",
    ctx_edit: "Edytuj",
    ctx_go_to_artist: "Przejdź do wykonawcy",
    ctx_add_to_queue: "Dodaj do kolejki",
    ctx_add_to_playlist: "Dodaj do playlisty",
    ctx_download: "Pobierz",
    ctx_song_radio: "Radio utworu",
    ctx_artist_radio: "Radio wykonawcy",
    ctx_remove_from_queue: "Usuń z kolejki",
    ctx_remove_from_playlist: "Usuń z playlisty",
    ctx_remove_from_recent: "Usuń z ostatnio odtwarzanych",
    ctx_clear_cache: "Wyczyść pamięć podręczną",
    sub_play_via: "Odtwórz przez",
    sub_download_from: "Pobierz z",
    sub_via: "Przez",
    sub_on: "Na",
    sub_clear_cache_from: "Wyczyść z",
    via_search_suffix: "(szukaj)",

    current: "(bieżący)",
    select: "wybierz",
    find: "Znajdź",
    finding: "Wyszukiwanie…",
    found_on: |p| format!("Znaleziono na {p}"),
    not_linked: "Nie połączono",
    providers: "Dostawcy",
    no_provider_data: "Ten utwór nie ma danych dostawców.",
    save: "Zapisz",
    cancel: "Anuluj",
    edit_track: "Edytuj utwór",
    lbl_title: "Tytuł",
    lbl_artist: "Wykonawca",
    ph_track_title: "Tytuł utworu",
    ph_track_artist: "Wykonawca utworu",
    delete: "Usuń",
    delete_playlist_q: "Usunąć playlistę?",
    tracks_wont_be_deleted: "Utwory nie zostaną usunięte.",
    lbl_id: "ID",
    lbl_url: "URL",
    lbl_artist_id: "ID wykonawcy",
    lbl_duration_secs: "Czas trwania (sekundy)",
    lbl_thumbnail: "Miniatura",
    lbl_album: "Album",

    sec_playback: "Odtwarzanie",
    sec_storage: "Pamięć",
    sec_history: "Historia",
    sec_appearance: "Wygląd",
    sec_dependencies: "Zależności",
    theme_lbl: "Motyw",
    language_lbl: "Język",
    default_provider_lbl: "Domyślny dostawca streamingu i pobierania",
    cookie_browser_lbl: "Ciasteczka przeglądarki (filmy z ograniczeniem wieku)",
    cookies_off: "Wył.",
    normalize_volume_lbl: "Normalizuj głośność między utworami",
    download_dir_lbl: "Katalog pobierania",
    cache_size_lbl: "Maks. rozmiar cache streamingu (MB)",
    hist_rows_lbl: "Widoczne wiersze historii wyszukiwania",
    hist_entries_lbl: "Przechowywane wpisy historii wyszukiwania",
    recent_kept_lbl: "Przechowywane ostatnio odtwarzane utwory",
    reset_defaults: "Przywróć domyślne",

    find_in_list: "Znajdź na liście…",
    scope_songs: "Utwory",
    scope_videos: "Filmy",
    scope_artists: "Wykonawcy",
    scope_albums: "Albumy",
    scope_playlists: "Playlisty",
    radio_word_song: "utworu",
    radio_word_artist: "wykonawcy",

    lyrics_copied: "Tekst skopiowany do schowka",
    saved_to_library: "Zapisano w bibliotece",
    removed_from_library: "Usunięto z biblioteki",
    no_lyrics_found: "Nie znaleziono tekstu dla tego utworu.",
    lyrics_saved: "Zapisano własny tekst",
    lyrics_deleted: "Usunięto własny tekst",
    lyrics_empty: "Tekst nie może być pusty",
    lyrics_name_empty: "Nadaj tekstowi nazwę",
    select_playlist_drop: "Wybierz playlistę, aby upuścić utwory",
    reordered_playlist: "Zmieniono kolejność playlisty",
    max_panes_reached: "Osiągnięto maksymalną liczbę paneli",

    n_saved: |n| format!("zapisano: {n}"),
    n_plays: |n| format!("{} odtworzeń", crate::util::format_count(n)),
    search_placeholder: |p| match p {
        ProviderId::YouTube => "Szukaj w YouTube Music...".into(),
        ProviderId::Local => "Szukaj...".into(),
        other => format!("Szukaj w {}...", other.label()),
    },
    added: |n| format!("Dodano {}", pl_tracks(n)),
    added_to: |n, to| format!("Dodano {} do: {to}", pl_tracks(n)),
    removed_n: |n| format!("Usunięto {}", pl_tracks(n)),
    removed_from: |n, from| format!("Usunięto {} z: {from}", pl_tracks(n)),
    pasted_into: |n, into| format!("Wklejono {} do: {into}", pl_tracks(n)),
    saved_title: |t| format!("Zapisano \"{t}\" w bibliotece"),
    playlist_created: |n| format!("Playlista \"{n}\" utworzona"),
    added_local: |n| {
        format!(
            "Dodano {} (wybierz playlistę, aby uporządkować)",
            pl_tracks(n)
        )
    },
    downloading_n: |n| format!("Pobieranie {}...", pl_gen_tracks(n)),
    resolving_on: |title, p| format!("Rozwiązywanie \"{title}\" na {p}..."),
    resolving_player_client: "Wyszukiwanie zgodnego klienta odtwarzacza...",
    resolved_player_client: |c| format!("Wybrano klienta odtwarzacza: {c}"),
    player_client_unavailable: "Nie znaleziono zgodnego klienta, używam domyślnego...",
    provider_no_radio: |p| format!("{p} nie obsługuje radia"),
    generating_radio_for: |w, name| format!("Generowanie radia ({w}): {name}..."),
    could_not_find_on: |name, p| format!("Nie znaleziono \"{name}\" na {p}"),
    opening: |l| format!("Otwieranie: {l}..."),
    opening_artist: |name| format!("Otwieranie wykonawcy: {name}..."),
    download_complete: |path| format!("Pobieranie ukończone! Zapisano w {path}"),
    failed_resolve_on: |title, p, e| format!("Nie udało się rozwiązać \"{title}\" na {p}: {e}"),
    couldnt_load: |e| format!("Nie udało się wczytać: {e}"),
    couldnt_load_lyrics: |e| format!("Nie udało się wczytać tekstu: {e}"),
    search_failed: |e| format!("Wyszukiwanie nie powiodło się: {e}"),
    cache_cleared_for: |p| format!("Wyczyszczono pamięć podręczną ({p})"),
    radio_label: |w, name| format!("Radio ({w}): {name}"),
    ctx_add_to_playlist_n: |n| format!("Dodaj {} do playlisty", pl_tracks(n)),
    ctx_add_to_queue_n: |n| format!("Dodaj {} do kolejki", pl_tracks(n)),
    ctx_download_n: |n| format!("Pobierz {}", pl_tracks(n)),
    ctx_remove_from_queue_n: |n| format!("Usuń {} z kolejki", pl_tracks(n)),
    ctx_remove_from_playlist_n: |n| format!("Usuń {} z playlisty", pl_tracks(n)),
    ctx_remove_from_recent_n: |n| format!("Usuń {} z ostatnio odtwarzanych", pl_tracks(n)),

    import_playlist: "Importuj playlistę",
    import_method_native: "Natywna",
    import_method_filelist: "Lista plików",
    import_method_csv: "CSV",
    import_native_hint: "Importuje playlisty z pliku playlists.json.",
    import_csv_name_col: "Kolumna tytułu",
    import_csv_artist_col: "Kolumna wykonawcy",
    import_csv_album_col: "Kolumna albumu",
    import_csv_preset: "Wzór",
    import_csv_preset_default: "Domyślny",
    import_csv_preset_exportify: "Exportify",
    import_csv_exportify_note:
        "Obsługuje playlisty Spotify wyeksportowane z https://exportify.net/.",
    import_pattern_lbl: "Wzór nazwy pliku",
    import_playlist_name: "Nazwa playlisty",
    import_add_pattern: "Dodaj wzór",
    import_select_file: "Wybierz plik",
    import_select_folder: "Wybierz folder",
    import_pattern_conflict: |a, b| {
        format!(
            "Wzory \"{a}\" i \"{b}\" mogą pasować do tego samego pliku z konfliktowymi polami. Usuń lub popraw jeden."
        )
    },
    import_playlists_imported: |n| format!("Zaimportowano {}", pl_tracks(n)),
    import_imported_into: |n, into| format!("Zaimportowano {} do: {}", pl_tracks(n), into),
    import_no_tracks: "Nie znaleziono utworów do importu.",
    import_no_match: "Żaden plik nie pasuje do wzorów.",
    import_bad_file: "Nie można odczytać wybranego pliku.",

    deps_title: "Brakujące zależności",
    deps_intro: "Brakuje niektórych narzędzi używanych przez aplikację. Wybierz, które zainstalować, lub odrzuć, aby kontynuować (wyszukiwanie i odtwarzanie mogą nie działać, dopóki nie będą obecne).",
    deps_install: "Zainstaluj",
    deps_install_selected: "Zainstaluj wybrane",
    deps_discard: "Odrzuć",
    deps_installing: "Instalowanie…",
    deps_installed: "Zainstalowano",
    deps_failed: "Nieudane",
    deps_installed_toast: "Wybrane zależności zostały zainstalowane.",
    deps_yt_dlp_desc: "Strumieniuje i pobiera dźwięk (wymagane dla YouTube i SoundCloud)",
    deps_ytmusicapi_desc: "Wyszukiwanie w YouTube Music (opcjonalne, powrót do yt-dlp)",
    deps_python3_desc: "Wymagane przez ytmusicapi (wyszukiwanie w YouTube Music)",
    deps_ytmusicapi_requires_python: "Wymaga Pythona 3 (najpierw go zainstaluj)",
    deps_play_requires_yt_dlp: "Odtwarzanie wymaga yt-dlp — zainstaluj go z okna startowego, aby odtworzyć ten utwór.",
    deps_source_not_playable: "To źródło nie obsługuje odtwarzania.",
    deps_found_section_title: "Znalezione w systemie",
    deps_found_section_intro: "Są już dostępne. Zaznacz dowolne, aby zainstalować zarządzaną kopię przez aplikację (kopia aplikacji ma priorytet nad systemową).",
    deps_found_on_system: "Znalezione w systemie",
    deps_managed_by_app: "Zainstalowane (zarządzane przez aplikację)",
    deps_not_installed: "Nie zainstalowane",
    deps_delete: "Usuń",
    deps_deleting: "Usuwanie…",
    deps_deleted: "Usunięte",
    deps_delete_failed: "Usuwanie nieudane",

    sec_updates: "Aktualizacje",
    check_for_updates: "Sprawdź aktualizacje",
    checking_for_updates: "Sprawdzanie aktualizacji…",
    up_to_date: "W najnowszej wersji",
    current_version: |v| format!("Wersja {v}"),
    update_available: |v| format!("Dostępna wersja {v}. Przejdź do Ustawień, aby zaktualizować."),
    update_now: "Aktualizuj teraz",
    updating: "Aktualizacja…",
    update_applied: |v| format!("Zaktualizowano do {v}. Uruchamianie…"),
    package_managed: "Nie można automatycznie aktualizować (brak praw zapisu do katalogu aplikacji). Jeśli zainstalowano przez menedżera pakietów, użyj go do aktualizacji.",
    update_failed: |e| format!("Aktualizacja nie powiodła się: {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: "Skróty klawiszowe",
    sc_sec_list: "Lista utworów",
    sc_move: "Poruszanie po liście (zawijanie)",
    sc_focus_panel: "Fokus na kolejkę lub listę",
    sc_first_last: "Pierwszy / ostatni wiersz",
    sc_page: "Strona / pół strony",
    sc_play: "Odtwórz zaznaczony utwór",
    sc_sec_select: "Zaznaczanie i edycja",
    sc_extend: "Rozszerz zaznaczenie",
    sc_toggle_sel: "Przełącz zaznaczenie wiersza",
    sc_select_all: "Zaznacz wszystko na liście",
    sc_copy_paste: "Kopiuj / wklej zaznaczone utwory",
    sc_delete: "Usuń zaznaczone utwory",
    sc_esc: "Zamknij okno, potem wyczyść zaznaczenie, potem wróć do wyszukiwania",
    sc_sec_search: "Wyszukiwanie",
    sc_focus_search: "Przejdź do wyszukiwania",
    sc_stage_provider: "Ustaw dostawcę wyszukiwania (oczekujące)",
    sc_stage_scope: "Ustaw zakres wyszukiwania (oczekujący)",
    sc_run_search: "Uruchom przygotowane wyszukiwanie",
    sc_find_list: "Przybliżone wyszukiwanie na liście (przechodzenie między trafieniami)",
    sc_sec_playlists: "Playlisty i historia",
    sc_prev_next_pl: "Poprzednia / następna playlista",
    sc_jump: "Skok do playlisty (Enter otwiera, Shift+Enter odtwarza)",
    sc_back_fwd: "Wstecz / dalej w panelu",
    sc_sec_playback: "Odtwarzanie",
    sc_play_pause: "Odtwórz / pauza",
    sc_next_prev: "Następny / poprzedni utwór",
    sc_mute: "Wycisz",
    sc_volume: "Ciszej / głośniej",
    sc_seek: "Cofnij / przewiń 5 s (Shift: 10 s)",
    sc_toggles: "Kolejka / powtarzanie / tekst / karta kolejki",
    sc_sec_panes: "Panele",
    sc_split: "Podziel w poziomie / w pionie",
    sc_close_pane: "Zamknij panel",
    sc_adj_pane: "Fokus na sąsiedni panel",
    sc_cycle_pane: "Przechodzenie / skok między panelami",
    sc_sec_menu: "Menu kontekstowe",
    sc_open_menu: "Otwórz dla zaznaczonego utworu",
    sc_nav_menu: "Nawigacja po menu",
};

fn pl_tracks(n: usize) -> String {
    match n {
        1 => "1 utwór".into(),
        2..=4 => format!("{n} utwory"),
        _ => format!("{n} utworów"),
    }
}

fn pl_gen_tracks(n: usize) -> String {
    match n {
        1 => "1 utworu".into(),
        _ => format!("{n} utworów"),
    }
}