goosemusic 1.2.0

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: "Suchen",
    downloads: "Downloads",
    settings: "Einstellungen",
    library: "Bibliothek",
    nothing_saved_yet: "Noch nichts gespeichert",
    new_playlist_name: "Name der neuen Wiedergabeliste",

    queue: "Warteschlange",
    recently_played: "Kürzlich gespielt",
    now_playing_from: "Wird gerade gespielt von",
    now_playing: "Wird gerade gespielt",
    up_next: "Als Nächstes",
    no_track_playing: "Es wird keine Titel wiedergegeben",
    no_more_tracks_in_queue: "Keine weiteren Titel in der Warteschlange",
    no_recently_played_tracks: "Keine kürzlich gespielten Titel",

    not_playing: "Nichts wird abgespielt",
    no_tracks_found: "Keine Titel gefunden",

    searching: "Suchen…",
    loading: "Laden…",
    load_more: "Mehr laden",
    no_results_found: "Keine Ergebnisse",
    no_recent_searches: "Keine kürzlichen Suchen",
    generating_radio: "Radio wird generiert…",

    not_an_artist_page: "Keine Künstlerseite",
    provided_by: "Bereitgestellt von",
    retry: "Erneut versuchen",
    nothing_here: "Hier ist nichts",
    most_popular_songs: "Beliebteste Titel",
    albums: "Alben",
    playlists: "Wiedergabelisten",
    fans_also_like: "Fans mögen auch",

    looking_up_lyrics: "Liedtexte werden gesucht…",
    play_a_track_for_lyrics: "Spiele einen Titel, um den Text zu sehen.",
    lyrics_selectable: "Auswählbar",
    lyrics_synced: "Synchronisiert",
    lyrics_plain: "Einfach",

    playlist_not_found: "Wiedergabeliste nicht gefunden",
    add_local: "Lokal hinzufügen",
    downloaded_tracks: "Heruntergeladene Titel",
    no_downloaded_tracks: "Keine heruntergeladenen Titel",

    ctx_play: "Abspielen",
    ctx_play_local: "Lokal abspielen",
    ctx_edit: "Bearbeiten",
    ctx_go_to_artist: "Zum Künstler",
    ctx_add_to_playlist: "Zur Wiedergabeliste hinzufügen",
    ctx_download: "Herunterladen",
    ctx_song_radio: "Titel-Radio",
    ctx_artist_radio: "Künstler-Radio",
    ctx_remove_from_queue: "Aus Warteschlange entfernen",
    ctx_remove_from_playlist: "Aus Wiedergabeliste entfernen",
    sub_play_via: "Abspielen über",
    sub_download_from: "Herunterladen von",
    sub_via: "Über",
    sub_on: "Auf",
    via_search_suffix: "(Suche)",

    current: "(aktuell)",
    select: "auswählen",
    find: "Suchen",
    finding: "Suchen…",
    found_on: |p| format!("Gefunden auf {p}"),
    not_linked: "Nicht verknüpft",
    providers: "Anbieter",
    no_provider_data: "Dieser Titel hat keine Anbieterdaten.",
    save: "Speichern",
    cancel: "Abbrechen",
    edit_track: "Titel bearbeiten",
    lbl_title: "Titel",
    lbl_artist: "Künstler",
    ph_track_title: "Titelname",
    ph_track_artist: "Künstlername",
    delete: "Löschen",
    delete_playlist_q: "Wiedergabeliste löschen?",
    tracks_wont_be_deleted: "Titel werden nicht gelöscht.",
    lbl_id: "Id",
    lbl_url: "Url",
    lbl_artist_id: "Künstler-ID",
    lbl_duration_secs: "Dauer (in Sekunden)",
    lbl_thumbnail: "Vorschaubild",
    lbl_album: "Album",

    sec_playback: "Wiedergabe",
    sec_storage: "Speicher",
    sec_history: "Verlauf",
    sec_appearance: "Erscheinungsbild",
    sec_dependencies: "Abhängigkeiten",
    theme_lbl: "Thema",
    language_lbl: "Sprache",
    default_provider_lbl: "Standard-Anbieter für Streaming und Download",
    normalize_volume_lbl: "Lautstärke zwischen Titeln anpassen",
    download_dir_lbl: "Download-Verzeichnis",
    cache_size_lbl: "Max. Streaming-Cache-Größe (MB)",
    hist_rows_lbl: "Angezeigte Zeilen des Suchverlaufs",
    hist_entries_lbl: "Gespeicherte Einträge des Suchverlaufs",
    recent_kept_lbl: "Gespeicherte kürzlich gespielte Titel",
    reset_defaults: "Auf Standard zurücksetzen",

    find_in_list: "In Liste suchen…",
    scope_songs: "Titel",
    scope_videos: "Videos",
    scope_artists: "Künstler",
    scope_albums: "Alben",
    scope_playlists: "Wiedergabelisten",
    radio_word_song: "Titel",
    radio_word_artist: "Künstler",

    lyrics_copied: "Liedtext in Zwischenablage kopiert",
    saved_to_library: "In Bibliothek gespeichert",
    removed_from_library: "Aus Bibliothek entfernt",
    no_lyrics_found: "Für diesen Titel wurden keine Texte gefunden.",
    select_playlist_drop: "Wähle eine Wiedergabeliste zum Ablegen der Titel",
    reordered_playlist: "Wiedergabeliste neu geordnet",

    n_saved: |n| format!("{n} gespeichert"),
    n_plays: |n| format!("{} Wiedergaben", crate::util::format_count(n)),
    search_placeholder: |p| match p {
        ProviderId::YouTube => "YouTube Music durchsuchen…".into(),
        ProviderId::Local => "Suchen…".into(),
        other => format!("{} durchsuchen…", other.label()),
    },
    added: |n| format!("Hinzugefügt: {}", de_tracks(n)),
    added_to: |n, to| format!("Hinzugefügt: {} zu {to}", de_tracks(n)),
    removed_n: |n| format!("Entfernt: {}", de_tracks(n)),
    removed_from: |n, from| format!("Entfernt: {} aus {from}", de_tracks(n)),
    pasted_into: |n, into| format!("Eingefügt: {} in {into}", de_tracks(n)),
    saved_title: |t| format!("\"{t}\" in Bibliothek gespeichert"),
    playlist_created: |n| format!("Wiedergabeliste \"{n}\" erstellt"),
    added_local: |n| format!("Hinzugefügt: {} (wähle eine Wiedergabeliste zum Ordnen)", de_tracks(n)),
    downloading_n: |n| format!("Herunterladen von {}", de_tracks(n)),
    resolving_on: |title, p| format!("\"{title}\" wird auf {p} aufgelöst…"),
    provider_no_radio: |p| format!("{p} unterstützt kein Radio"),
    generating_radio_for: |w, name| format!("Radio wird generiert für {w}: {name}"),
    could_not_find_on: |name, p| format!("\"{name}\" konnte nicht auf {p} gefunden werden"),
    opening: |l| format!("Öffnen: {l}"),
    opening_artist: |name| format!("Künstler wird geöffnet: {name}"),
    download_complete: |path| format!("Download abgeschlossen! Gespeichert in {path}"),
    failed_resolve_on: |title, p, e| format!("Auflösen von \"{title}\" auf {p} fehlgeschlagen: {e}"),
    couldnt_load: |e| format!("Laden fehlgeschlagen: {e}"),
    couldnt_load_lyrics: |e| format!("Laden des Texts fehlgeschlagen: {e}"),
    search_failed: |e| format!("Suche fehlgeschlagen: {e}"),
    radio_label: |w, name| format!("Radio ({w}): {name}"),
    ctx_add_to_playlist_n: |n| format!("{} zur Wiedergabeliste hinzufügen", de_tracks(n)),
    ctx_download_n: |n| format!("{} herunterladen", de_tracks(n)),
    ctx_remove_from_queue_n: |n| format!("{} aus der Warteschlange entfernen", de_tracks(n)),
    ctx_remove_from_playlist_n: |n| format!("{} aus der Wiedergabeliste entfernen", de_tracks(n)),

    import_playlist: "Wiedergabeliste importieren",
    import_method_native: "Nativ",
    import_method_filelist: "Dateiliste",
    import_method_csv: "CSV",
    import_native_hint: "Importiert Wiedergabelisten aus einer playlists.json-Datei.",
    import_csv_name_col: "Namensspalte",
    import_csv_artist_col: "Künstlerspalte",
    import_csv_album_col: "Albenspalte",
    import_csv_preset: "Voreinstellung",
    import_csv_preset_default: "Standard",
    import_csv_preset_exportify: "Exportify",
    import_csv_exportify_note: "Unterstützt Spotify-Wiedergabelisten, die von https://exportify.net/ exportiert wurden.",
    import_pattern_lbl: "Dateinamen-Muster",
    import_playlist_name: "Name der Wiedergabeliste",
    import_add_pattern: "Muster hinzufügen",
    import_select_file: "Datei auswählen",
    import_select_folder: "Ordner auswählen",
    import_pattern_conflict: |a, b| {
        format!(
            "Die Muster \"{a}\" und \"{b}\" können dieselbe Datei mit widersprüchlichen Feldern treffen. Entferne oder korrigiere eines."
        )
    },
    import_playlists_imported: |n| format!("{} importiert", de_tracks(n)),
    import_imported_into: |n, into| format!("{} in {} importiert", de_tracks(n), into),
    import_no_tracks: "Keine Titel zum Importieren gefunden.",
    import_no_match: "Keine Dateien stimmen mit den Mustern überein.",
    import_bad_file: "Die ausgewählte Datei konnte nicht gelesen werden.",

    deps_title: "Fehlende Abhängigkeiten",
    deps_intro: "Einige von der App genutzte Werkzeuge fehlen. Wähle aus, welche installiert werden sollen, oder verwirf, um fortzufahren (Suche und Streaming funktionieren möglicherweise nicht, bis sie vorhanden sind).",
    deps_install: "Installieren",
    deps_install_selected: "Ausgewählte installieren",
    deps_discard: "Verwerfen",
    deps_installing: "Installieren…",
    deps_installed: "Installiert",
    deps_failed: "Fehlgeschlagen",
    deps_installed_toast: "Ausgewählte Abhängigkeiten installiert.",
    deps_yt_dlp_desc: "Streamt und lädt Audio herunter (erforderlich)",
    deps_ytmusicapi_desc: "YouTube-Music-Suche (optional, Fallback auf yt-dlp)",
    deps_python3_desc: "Benötigt von ytmusicapi (YouTube-Music-Suche)",
    deps_ytmusicapi_requires_python: "Benötigt Python 3 (zuerst installieren)",
    deps_play_requires_yt_dlp: "Wiedergabe benötigt yt-dlp – im Startdialog installieren, um dies abzuspielen.",
    deps_source_not_playable: "Diese Quelle kann nicht abgespielt werden.",
    deps_found_section_title: "Auf deinem System gefunden",
    deps_found_section_intro: "Diese sind bereits verfügbar. Markiere welche, um eine von der App verwaltete Kopie zu installieren (die App-Kopie hat Vorrang vor der Systemkopie).",
    deps_found_on_system: "Auf deinem System gefunden",
    deps_managed_by_app: "Installiert (von App verwaltet)",
    deps_not_installed: "Nicht installiert",
    deps_delete: "Löschen",
    deps_deleting: "Löschen…",
    deps_deleted: "Gelöscht",
    deps_delete_failed: "Löschen fehlgeschlagen",

    sec_updates: "Updates",
    check_for_updates: "Auf Updates prüfen",
    checking_for_updates: "Suche nach Updates…",
    up_to_date: "Auf dem neuesten Stand",
    current_version: |v| format!("Version {v}"),
    update_available: |v| format!("Version {v} verfügbar. Gehen Sie zu den Einstellungen, um zu aktualisieren."),
    update_now: "Jetzt aktualisieren",
    updating: "Aktualisierung…",
    update_applied: |v| format!("Auf {v} aktualisiert. Starte neu…"),
    package_managed: "Kann nicht automatisch aktualisieren (kein Schreibrecht im Anwendungsverzeichnis). Wenn über einen Paketmanager installiert, nutzen Sie diesen für Updates.",
    update_failed: |e| format!("Aktualisierung fehlgeschlagen: {e}"),
};

fn de_tracks(n: usize) -> String {
    if n == 1 {
        "1 Titel".into()
    } else {
        format!("{n} Titel")
    }
}