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",
lyrics_translations: "Übersetzungen",
lyrics_original: "Original",
add_custom: "Text hinzufügen",
lyrics_name: "Name",
translate_with_ai: "Mit KI übersetzen",
translate_title: "Songtext mit KI übersetzen",
translate_language_lbl: "Zielsprache",
translate_prompt_lbl: "Prompt",
translate_submit: "Übersetzen",
translate_reset: "Prompt zurücksetzen",
translating: "Wird übersetzt…",
translation_ready: "Übersetzung fertig — prüfen und speichern",
translation_language_empty: "Gib eine Zielsprache ein",
no_lyrics_to_translate: "Für diesen Titel gibt es keinen Text zum Übersetzen.",
translation_not_configured: "Lege Server-URL und Modell in den Einstellungen fest.",
translation_failed: |e| format!("Übersetzung fehlgeschlagen: {e}"),
sec_translation: "KI-Übersetzung",
translation_base_url_lbl: "Server-URL (OpenAI-kompatibel)",
translation_api_key_lbl: "API-Schlüssel (leer für lokale Server)",
translation_model_lbl: "Modell",
translation_refresh_models: "Modellliste abrufen",
translation_no_models: "Keine Modelle auf diesem Server gefunden.",
translation_models_failed: |e| format!("Modellliste konnte nicht geladen werden: {e}"),
edit_lyrics: "Text bearbeiten",
lyrics_editor_hint: "Eine Zeile pro Textzeile. Für synchronisierten Text Zeilen mit [mm:ss.xx] beginnen, oder einfach lassen. Füge unter einer beliebigen Zeile eine `# note`-Zeile für eine Notiz hinzu, die unter dem Text angezeigt wird.",
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_queue: "Zur Warteschlange hinzufügen",
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",
ctx_remove_from_recent: "Aus Kürzlich gespielt entfernen",
ctx_clear_cache: "Cache leeren",
sub_play_via: "Abspielen über",
sub_download_from: "Herunterladen von",
sub_via: "Über",
sub_on: "Auf",
sub_clear_cache_from: "Löschen von",
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",
cookie_browser_lbl: "Browser-Cookies für Videos mit Altersbeschränkung",
cookies_off: "Aus",
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.",
lyrics_saved: "Eigener Text gespeichert",
lyrics_deleted: "Eigener Text gelöscht",
lyrics_empty: "Text darf nicht leer sein",
lyrics_name_empty: "Gib dem Text einen Namen",
select_playlist_drop: "Wähle eine Wiedergabeliste zum Ablegen der Titel",
reordered_playlist: "Wiedergabeliste neu geordnet",
max_panes_reached: "Maximale Anzahl an Bereichen erreicht",
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…"),
resolving_player_client: "Kompatibler Player-Client wird ermittelt…",
resolved_player_client: |c| format!("Player-Client ermittelt: {c}"),
player_client_unavailable: "Kein kompatibler Player-Client gefunden, Standard wird verwendet…",
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}"),
cache_cleared_for: |p| format!("Cache für {p} geleert"),
radio_label: |w, name| format!("Radio ({w}): {name}"),
ctx_add_to_playlist_n: |n| format!("{} zur Wiedergabeliste hinzufügen", de_tracks(n)),
ctx_add_to_queue_n: |n| format!("{} zur Warteschlange 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)),
ctx_remove_from_recent_n: |n| format!("{} aus Kürzlich gespielt 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 für YouTube und SoundCloud)",
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}"),
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: "Tastaturkürzel",
sc_sec_list: "Titelliste",
sc_move: "Durch die Liste bewegen (umlaufend)",
sc_focus_panel: "Warteschlange oder Titelliste fokussieren",
sc_first_last: "Erste / letzte Zeile",
sc_page: "Seite / halbe Seite",
sc_play: "Markierten Titel abspielen",
sc_sec_select: "Auswahl und Bearbeiten",
sc_extend: "Auswahl erweitern",
sc_toggle_sel: "Auswahl der Zeile umschalten",
sc_select_all: "Alle in der Liste auswählen",
sc_copy_paste: "Markierte Titel kopieren / einfügen",
sc_delete: "Markierte Titel löschen",
sc_esc: "Dialog schließen, dann Auswahl löschen, dann zurück zur Suche",
sc_sec_search: "Suche",
sc_focus_search: "Suche fokussieren",
sc_stage_provider: "Suchanbieter vormerken (ausstehend)",
sc_stage_scope: "Suchbereich vormerken (ausstehend)",
sc_run_search: "Vorgemerkte Suche starten",
sc_find_list: "Unscharfe Suche in der Liste (Treffer wechseln)",
sc_sec_playlists: "Wiedergabelisten und Verlauf",
sc_prev_next_pl: "Vorherige / nächste Wiedergabeliste",
sc_jump: "Wiedergabelisten-Wechsler (Enter öffnet, Shift+Enter spielt ab)",
sc_back_fwd: "Zurück / vor im Bereich",
sc_sec_playback: "Wiedergabe",
sc_play_pause: "Abspielen / Pause",
sc_next_prev: "Nächster / vorheriger Titel",
sc_mute: "Stummschalten",
sc_volume: "Leiser / lauter",
sc_seek: "5 s zurück / vor (Shift: 10 s)",
sc_toggles: "Warteschlange / Wiederholen / Liedtext / Warteschlangen-Reiter",
sc_sec_panes: "Bereiche",
sc_split: "Nebeneinander / untereinander teilen",
sc_close_pane: "Bereich schließen",
sc_adj_pane: "Benachbarten Bereich fokussieren",
sc_cycle_pane: "Zwischen Bereichen wechseln / springen",
sc_sec_menu: "Kontextmenü",
sc_open_menu: "Für markierten Titel öffnen",
sc_nav_menu: "Im Menü navigieren",
};
fn de_tracks(n: usize) -> String {
if n == 1 {
"1 Titel".into()
} else {
format!("{n} Titel")
}
}