mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-21 22:15:40 +00:00
1c23305887
* feat(queue): add Timeline display mode A third queue display mode alongside Queue and Playlist. Timeline shows the full queue anchored on the current track — played history above (dimmed), upcoming below — with 'History' and 'Up next' dividers and the current row auto-centered. It already follows shuffle order since the queue is stored in play order. The header mode button now cycles queue → timeline → playlist; Settings gains a third option. * i18n(queue): Timeline mode strings (9 locales) * docs(changelog): note Timeline queue mode (#1004)
610 lines
41 KiB
TypeScript
610 lines
41 KiB
TypeScript
export const settings = {
|
||
title: 'Einstellungen',
|
||
language: 'Sprache',
|
||
languageEn: 'English',
|
||
languageDe: 'Deutsch',
|
||
languageEs: 'Español',
|
||
languageFr: 'Français',
|
||
languageNl: 'Nederlands',
|
||
languageNb: 'Norsk',
|
||
languageRu: 'Русский',
|
||
languageZh: '中文',
|
||
languageRo: 'Română',
|
||
font: 'Schriftart',
|
||
fontHintOpenDyslexic: 'Legasthenie-freundlich · keine Chinesisch-Unterstützung',
|
||
theme: 'Design',
|
||
appearance: 'Darstellung',
|
||
servers: 'Server',
|
||
serverName: 'Server-Name',
|
||
serverUrl: 'Server-URL',
|
||
serverUrlPlaceholder: '192.168.1.100:4533 oder https://music.example.com',
|
||
serverAlternateUrl: 'Zweite Adresse (optional)',
|
||
serverAlternateUrlPlaceholderPublic: 'https://music.example.com',
|
||
serverAlternateUrlPlaceholderLocal: '192.168.1.100:4533',
|
||
serverAlternateUrlHintAddPublic: 'Du kannst eine öffentliche Adresse hinzufügen, um außerhalb deines Heimnetzwerks zuzugreifen.',
|
||
serverAlternateUrlHintAddLocal: 'Du kannst eine lokale Adresse hinzufügen, um zu Hause schneller zu verbinden.',
|
||
serverBothLanError: 'Beide Adressen sind lokal — eine entfernen oder eine öffentliche hinzufügen.',
|
||
dualAddressVerifying: 'Prüfe, ob beide Adressen denselben Server meinen…',
|
||
dualAddressMismatch: 'Die beiden Adressen zeigen auf unterschiedliche Server. Schreibweise prüfen und erneut versuchen.',
|
||
dualAddressInsufficient: 'Konnte nicht bestätigen, dass beide Adressen derselbe Server sind. Entferne eine Adresse, um fortzufahren.',
|
||
dualAddressUnreachable: 'Konnte {{host}} nicht erreichen. Adresse und Netzwerk prüfen, dann erneut versuchen.',
|
||
urlRemigrationTitle: 'Bibliotheksdaten verschieben?',
|
||
urlRemigrationMessage: 'Beim Ändern der Adresse werden alle Bibliotheks-, Analyse- und Cover-Cache-Daten von {{oldKey}} nach {{newKey}} verschoben. Das kann nicht rückgängig gemacht werden.',
|
||
urlRemigrationConfirm: 'Daten verschieben',
|
||
urlRemigrationProgress: 'Bibliotheksdaten werden verschoben…',
|
||
urlRemigrationFailureInspect: 'Konnte nicht prüfen, was verschoben würde. Erneut versuchen oder das Debug-Log öffnen.',
|
||
urlRemigrationFailureRun: 'Verschieben der Bibliotheksdaten ist fehlgeschlagen. Deine gespeicherten Daten sind unverändert — erneut versuchen.',
|
||
urlRemigrationFailureCoverRename: 'Bibliotheksdaten wurden verschoben, aber Cover-Dateien konnten nicht umbenannt werden. Cover werden beim nächsten Zugriff neu aufgebaut.',
|
||
shareUsesLocalUrl: 'Lokale Adresse in Freigabe-Links verwenden',
|
||
shareUsesLocalUrlDesc: 'Wirkt sich auf Orbit-Einladungen und Bibliotheks-Freigaben aus. Standard: öffentliche Adresse.',
|
||
serverUsername: 'Benutzername',
|
||
serverPassword: 'Passwort',
|
||
addServer: 'Server hinzufügen',
|
||
addServerTitle: 'Neuen Server hinzufügen',
|
||
editServer: 'Bearbeiten',
|
||
editServerTitle: 'Server bearbeiten',
|
||
useServer: 'Verwenden',
|
||
deleteServer: 'Löschen',
|
||
noServers: 'Keine Server gespeichert.',
|
||
serverActive: 'Aktiv',
|
||
confirmDeleteServer: 'Server „{{name}}" löschen?',
|
||
confirmDeleteServerLibrary: 'Auch den lokalen Bibliotheksindex dieses Servers löschen? Auf Abbrechen klicken, um die zwischengespeicherte Kopie für die Offline-Nutzung zu behalten.',
|
||
serverConnecting: 'Verbinde…',
|
||
serverConnected: 'Verbunden!',
|
||
serverFailed: 'Verbindung fehlgeschlagen.',
|
||
testBtn: 'Verbindung testen',
|
||
testingBtn: 'Teste…',
|
||
serverCompatible: 'Für Navidrome entwickelt. Andere Subsonic-kompatible Server (Gonic, Airsonic, …) funktionieren ggf. eingeschränkt, weil Psysonic viele Navidrome-spezifische API-Endpunkte nutzt.',
|
||
userMgmtTitle: 'Benutzerverwaltung',
|
||
userMgmtDesc: 'Benutzer auf diesem Server verwalten. Erfordert Admin-Rechte.',
|
||
userMgmtNoAdmin: 'Du brauchst Admin-Rechte, um Benutzer auf diesem Server zu verwalten.',
|
||
userMgmtLoadError: 'Benutzer konnten nicht geladen werden.',
|
||
userMgmtLoadFriendly: 'Server hat nicht geantwortet — meistens ein Einzelfall.',
|
||
userMgmtRetry: 'Erneut versuchen',
|
||
userMgmtEmpty: 'Keine Benutzer gefunden.',
|
||
userMgmtYouBadge: 'Du',
|
||
userMgmtAdminBadge: 'Admin',
|
||
userMgmtAddUser: 'Benutzer hinzufügen',
|
||
userMgmtAddUserTitle: 'Neuen Benutzer anlegen',
|
||
userMgmtEditUserTitle: 'Benutzer bearbeiten',
|
||
userMgmtUsername: 'Benutzername',
|
||
userMgmtName: 'Anzeigename',
|
||
userMgmtEmail: 'E-Mail',
|
||
userMgmtPassword: 'Passwort',
|
||
userMgmtPasswordEditHint: 'Neues Passwort eingeben, um es zu ändern.',
|
||
userMgmtRoleAdmin: 'Admin',
|
||
userMgmtLibraries: 'Bibliotheken',
|
||
userMgmtLibrariesAdminHint: 'Admin-Benutzer haben automatisch Zugriff auf alle Bibliotheken.',
|
||
userMgmtLibrariesEmpty: 'Keine Bibliotheken auf diesem Server vorhanden.',
|
||
userMgmtLibrariesValidation: 'Mindestens eine Bibliothek auswählen.',
|
||
userMgmtLibrariesUpdateError: 'Benutzer gespeichert, aber Bibliothekszuweisung fehlgeschlagen',
|
||
userMgmtNoLibraries: 'Keine Bibliotheken zugewiesen',
|
||
userMgmtNeverSeen: 'Nie',
|
||
userMgmtSave: 'Speichern',
|
||
userMgmtCancel: 'Abbrechen',
|
||
userMgmtDelete: 'Löschen',
|
||
userMgmtEdit: 'Bearbeiten',
|
||
userMgmtConfirmDelete: 'Benutzer „{{username}}" löschen? Das kann nicht rückgängig gemacht werden.',
|
||
userMgmtCreateError: 'Benutzer konnte nicht angelegt werden.',
|
||
userMgmtUpdateError: 'Benutzer konnte nicht aktualisiert werden.',
|
||
userMgmtDeleteError: 'Benutzer konnte nicht gelöscht werden.',
|
||
userMgmtCreated: 'Benutzer angelegt.',
|
||
userMgmtUpdated: 'Benutzer aktualisiert.',
|
||
userMgmtDeleted: 'Benutzer gelöscht.',
|
||
userMgmtValidationMissing: 'Benutzername, Anzeigename und Passwort sind erforderlich.',
|
||
userMgmtValidationMissingIdentity: 'Benutzername und Anzeigename sind erforderlich.',
|
||
userMgmtMagicStringGenerate: 'Magic-String erzeugen',
|
||
userMgmtSaveAndMagicString: 'Speichern und Magic-String kopieren',
|
||
userMgmtMagicStringPasswordNavHint:
|
||
'Navidrome speichert dieses Passwort für den Benutzer. Weicht es vom aktuellen ab, wird das Anmeldepasswort auf dem Server aktualisiert.',
|
||
userMgmtMagicStringPlaintextWarning:
|
||
'Teilen Sie den Magic-String vorsichtig: Er enthält das Passwort im Klartext (Kodierung ist keine Verschlüsselung). Wer die vollständige Zeichenkette hat, kann sich als dieser Benutzer anmelden.',
|
||
userMgmtMagicStringCopied: 'Magic-String in die Zwischenablage kopiert.',
|
||
userMgmtMagicStringCopyFailed: 'Kopieren in die Zwischenablage fehlgeschlagen.',
|
||
userMgmtMagicStringLoginFailed: 'Passwortprüfung fehlgeschlagen — Anmeldedaten konnten nicht verifiziert werden.',
|
||
userMgmtMagicStringModalTitle: 'Magic-String erzeugen',
|
||
userMgmtMagicStringModalDesc: 'Subsonic-Passwort für „{{username}}" eingeben — es wird in den kopierten Magic-String übernommen.',
|
||
userMgmtMagicStringModalConfirm: 'String kopieren',
|
||
audiomuseTitle: 'AudioMuse-AI (Navidrome)',
|
||
audiomuseDesc:
|
||
'Aktivieren, wenn dieser Server das <pluginLink>AudioMuse-AI-Navidrome-Plugin</pluginLink> nutzt. Schaltet Instant Mix pro Titel frei und nutzt ähnliche Künstler vom Server statt Last.fm auf Künstlerseiten.',
|
||
audiomuseIssueHint:
|
||
'Instant Mix ist kürzlich fehlgeschlagen — Navidrome-Plugin und AudioMuse-API prüfen. Ohne Server-Treffer werden ähnliche Künstler über Last.fm geladen.',
|
||
connected: 'Verbunden',
|
||
failed: 'Fehlgeschlagen',
|
||
eqTitle: 'Equalizer',
|
||
eqEnabled: 'Equalizer aktivieren',
|
||
eqPreset: 'Preset',
|
||
eqPresetCustom: 'Benutzerdefiniert',
|
||
eqPresetBuiltin: 'Eingebaute Presets',
|
||
eqPresetCustomGroup: 'Meine Presets',
|
||
eqSavePreset: 'Als Preset speichern',
|
||
eqPresetName: 'Preset-Name…',
|
||
eqDeletePreset: 'Preset löschen',
|
||
eqResetBands: 'Auf Flat zurücksetzen',
|
||
eqPreGain: 'Vorverstärkung',
|
||
eqResetPreGain: 'Vorverstärkung zurücksetzen',
|
||
eqAutoEqTitle: 'AutoEQ Kopfhörer-Suche',
|
||
eqAutoEqPlaceholder: 'Kopfhörer / IEM Modell suchen…',
|
||
eqAutoEqSearching: 'Suche…',
|
||
eqAutoEqNoResults: 'Keine Ergebnisse gefunden',
|
||
eqAutoEqError: 'Suche fehlgeschlagen',
|
||
eqAutoEqRateLimit: 'GitHub Rate-Limit erreicht — in einer Minute erneut versuchen',
|
||
eqAutoEqFetchError: 'EQ-Profil konnte nicht geladen werden',
|
||
lfmTitle: 'Last.fm',
|
||
lfmConnect: 'Mit Last.fm verbinden',
|
||
lfmConnecting: 'Warte auf Bestätigung…',
|
||
lfmConfirm: 'Ich habe die App autorisiert',
|
||
lfmConnected: 'Verbunden als',
|
||
lfmDisconnect: 'Trennen',
|
||
lfmConnectDesc: 'Verbinde deinen Last.fm Account, um Scrobbling und Now-Playing-Updates direkt aus Psysonic heraus zu aktivieren — keine Navidrome-Konfiguration erforderlich.',
|
||
lfmOpenBrowser: 'Es öffnet sich ein Browserfenster. Autorisiere Psysonic auf Last.fm und klicke dann unten auf den Button.',
|
||
lfmScrobbles: '{{n}} Scrobbles',
|
||
lfmMemberSince: 'Dabei seit {{year}}',
|
||
scrobbleEnabled: 'Scrobbling aktiviert',
|
||
scrobbleDesc: 'Songs nach 50% Laufzeit an Last.fm senden',
|
||
behavior: 'App-Verhalten',
|
||
cacheTitle: 'Max. Speichergröße',
|
||
cacheDesc: 'Cover und Künstlerbilder. Wenn voll, werden die ältesten Einträge automatisch entfernt. Offline-Alben werden nicht automatisch gelöscht, aber beim manuellen Cache leeren entfernt.',
|
||
cacheUsedImages: 'Bilder:',
|
||
cacheUsedOffline: 'Offline-Tracks:',
|
||
cacheUsedHot: 'Belegter Speicher:',
|
||
hotCacheTrackCount: 'Titel im Cache:',
|
||
cacheMaxLabel: 'Max. Größe',
|
||
cacheClearBtn: 'Cache leeren',
|
||
cacheClearWarning: 'Alle Offline-Alben werden damit aus der Bibliothek entfernt.',
|
||
cacheClearConfirm: 'Alles löschen',
|
||
cacheClearCancel: 'Abbrechen',
|
||
offlineDirTitle: 'Offline-Bibliothek (In-App)',
|
||
offlineDirDesc: 'Speicherort für Titel, die du innerhalb von Psysonic offline verfügbar machst.',
|
||
offlineDirDefault: 'Standard (App-Daten)',
|
||
offlineDirChange: 'Verzeichnis ändern',
|
||
offlineDirClear: 'Auf Standard zurücksetzen',
|
||
offlineDirHint: 'Neue Downloads werden an diesem Ort gespeichert. Bestehende Downloads verbleiben am ursprünglichen Pfad.',
|
||
hotCacheTitle: 'Hot-Playback-Cache',
|
||
hotCacheDisclaimer: 'Lädt kommende Warteschlangen-Titel vor und behält zuletzt gespielte. Bei aktivierter Option: Speicherplatz und Netzwerk.',
|
||
hotCacheDirDefault: 'Standard (App-Daten)',
|
||
hotCacheDirChange: 'Ordner ändern',
|
||
hotCacheDirClear: 'Auf Standard zurücksetzen',
|
||
hotCacheDirHint: 'Beim Ordnerwechsel wird der App-Index zurückgesetzt; alte Dateien bleiben am alten Ort, bis Sie sie löschen.',
|
||
hotCacheEnabled: 'Hot-Playback-Cache aktivieren',
|
||
hotCacheMaxMb: 'Maximale Cache-Größe',
|
||
hotCacheDebounce: 'Debounce bei Warteschlangen-Änderungen',
|
||
hotCacheDebounceImmediate: 'Sofort',
|
||
hotCacheDebounceSeconds: '{{n}} s',
|
||
hotCacheClearBtn: 'Hot-Cache leeren',
|
||
audioOutputDevice: 'Audio-Ausgabegerät',
|
||
audioOutputDeviceDesc: 'Wähle das Audiogerät, über das Psysonic spielt. Änderungen werden sofort übernommen und starten den aktuellen Track neu.',
|
||
audioOutputDeviceDefault: 'Systemstandard',
|
||
audioOutputDeviceRefresh: 'Geräteliste aktualisieren',
|
||
audioOutputDeviceOsDefaultNow: 'aktuelle Systemausgabe',
|
||
audioOutputDeviceListError: 'Audiogeräteliste konnte nicht geladen werden.',
|
||
audioOutputDeviceNotInCurrentList: 'nicht in der aktuellen Liste',
|
||
audioOutputDeviceMacNotice: 'Auf macOS folgt die Wiedergabe aus technischen Gründen zurzeit immer dem System-Ausgabegerät. Du kannst das Ziel über Systemeinstellungen → Ton oder das Lautsprecher-Symbol in der Menüleiste wechseln. Hintergrund: CoreAudio löst beim Öffnen eines nicht-Default-Streams eine Mikrofonberechtigungsabfrage aus — wir vermeiden sie, indem wir stets den System-Default verwenden.',
|
||
hiResTitle: 'Native Hi-Res-Wiedergabe',
|
||
hiResEnabled: 'Native Hi-Res-Wiedergabe aktivieren',
|
||
hiResDesc: "Standardmäßig wird auf 44,1 kHz begrenzt (maximale Stabilität). Nur aktivieren, wenn Hardware und Netzwerk zuverlässig hohe Abtastraten (88,2 kHz+) unterstützen.",
|
||
showArtistImages: 'Künstlerbilder anzeigen',
|
||
showArtistImagesDesc: 'Lädt und zeigt Künstlerbilder in der Künstlerübersicht. Standardmäßig deaktiviert, um Server-I/O und Netzwerklast bei großen Bibliotheken zu reduzieren.',
|
||
showOrbitTrigger: '„Orbit" im Header zeigen',
|
||
showOrbitTriggerDesc: 'Der Kopfzeilen-Button zum Starten oder Beitreten einer gemeinsamen Hör-Session. Ausblenden, wenn du Orbit nicht nutzt — hier lässt er sich jederzeit wieder einschalten.',
|
||
showTrayIcon: 'Tray-Icon anzeigen',
|
||
showTrayIconDesc: 'Psysonic-Icon im System-Tray / in der Menüleiste anzeigen.',
|
||
minimizeToTray: 'Im Tray minimieren',
|
||
minimizeToTrayDesc: 'Beim Schließen des Fensters läuft Psysonic weiter im System-Tray statt zu beenden.',
|
||
clockFormat: 'Uhrzeitformat',
|
||
clockFormatDesc: 'Format für die Queue-ETA und die Vorschau des Sleep-Timers.',
|
||
clockFormatAuto: 'Automatisch (Systemsprache)',
|
||
clockFormatTwentyFour: '24-Stunden',
|
||
clockFormatTwelve: '12-Stunden (AM/PM)',
|
||
preloadMiniPlayer: 'Mini-Player vorladen',
|
||
preloadMiniPlayerDesc: 'Baut das Mini-Player-Fenster beim App-Start im Hintergrund auf, damit es beim ersten Öffnen sofort Inhalt zeigt. Kostet etwas mehr RAM.',
|
||
discordRichPresence: 'Discord Rich Presence',
|
||
discordRichPresenceDesc: 'Zeigt den aktuell gespielten Titel im Discord-Profil an. Discord muss dafür geöffnet sein.',
|
||
useCustomTitlebar: 'Eigene Titelleiste',
|
||
useCustomTitlebarDesc: 'Ersetzt die System-Titelleiste durch eine eingebaute, die zum App-Theme passt. Deaktivieren, um die native GNOME/GTK-Titelleiste zu verwenden.',
|
||
linuxWebkitSmoothScroll: 'Sanftes Mausrad (Linux)',
|
||
linuxWebkitSmoothScrollDesc: 'An: mit Nachlauf. Aus: zeilenweise wie in GTK-Apps.',
|
||
linuxWebkitInputForceRepaint: 'Eingabefelder beim Fokus neu zeichnen (Linux)',
|
||
linuxWebkitInputForceRepaintDesc: 'Behelf für WebKitGTK 2.50.x, wo Textfelder beim Klick einfrieren. Such-Icons flackern beim Fokus kurz.',
|
||
linuxWaylandTextRender: 'Wayland-Textdarstellung (Linux)',
|
||
linuxWaylandTextRenderDesc:
|
||
'Kantenglättung in der Oberfläche wirkt sofort. Die WebKit-Beschleunigungsrichtlinie (scharf/GPU) wird gespeichert und beim nächsten App-Start angewendet — ein Live-Umschalten kann WebKitGTK einfrieren.',
|
||
linuxWaylandTextRenderBalanced: 'Ausgewogen',
|
||
linuxWaylandTextRenderSharp: 'Scharf (CPU-freundlich)',
|
||
linuxWaylandTextRenderGpu: 'GPU zuerst',
|
||
linuxWaylandTextRenderMinimal: 'Minimal (Standard-CSS-Glättung)',
|
||
discordCoverSource: 'Cover-Quelle',
|
||
discordCoverSourceDesc: 'Woher das Album-Cover für dein Discord-Profil geladen wird.',
|
||
discordCoverNone: 'Keine (nur App-Symbol)',
|
||
discordCoverServer: 'Server (über Album-Info)',
|
||
discordCoverApple: 'Apple Music',
|
||
discordOptions: 'Erweiterte Discord-Optionen',
|
||
discordTemplates: 'Benutzerdefinierte Textvorlagen',
|
||
discordTemplatesDesc: 'Passen Sie an, welche Informationen in Ihrem Discord-Profil angezeigt werden. Variablen: {title}, {artist}, {album}',
|
||
discordTemplateDetails: 'Primäre Zeile (details)',
|
||
discordTemplateState: 'Sekundäre Zeile (state)',
|
||
discordTemplateLargeText: 'Album-Tooltip (largeText)',
|
||
discordTemplateName: 'Userliste-Zeile (name)',
|
||
nowPlayingEnabled: 'Im Livefenster anzeigen',
|
||
nowPlayingEnabledDesc: 'Überträgt den aktuell gespielten Titel an die Livehörer-Ansicht des Servers. Deaktivieren, um keine Wiedergabedaten zu senden.',
|
||
enableBandsintown: 'Bandsintown-Tourdaten',
|
||
enableBandsintownDesc: 'Zeigt anstehende Konzerte des aktuellen Künstlers im Info-Tab. Daten werden über die öffentliche Bandsintown-API abgerufen.',
|
||
lyricsServerFirst: 'Server-Lyrics bevorzugen',
|
||
lyricsServerFirstDesc: 'Server-seitige Lyrics (eingebettete Tags, Sidecar-Dateien) vor LRCLIB abfragen. Deaktivieren, um LRCLIB zuerst zu verwenden.',
|
||
enableNeteaselyrics: 'Netease Cloud Music Lyrics',
|
||
enableNeteaselyricsDesc: 'Netease Cloud Music als letzte Lyrics-Quelle verwenden, wenn Server und LRCLIB nichts liefern. Besonders gut für asiatische und internationale Musik.',
|
||
lyricsSourcesTitle: 'Lyrics-Quellen',
|
||
lyricsSourcesDesc: 'Wähle, welche Quellen für Lyrics abgefragt werden und in welcher Reihenfolge. Ziehen zum Sortieren. Deaktivierte Quellen werden übersprungen.',
|
||
lyricsSourceServer: 'Server',
|
||
lyricsSourceLrclib: 'LRCLIB',
|
||
lyricsSourceNetease: 'Netease Cloud Music',
|
||
lyricsYouLyPlus: 'YouLyPlus (Karaoke)',
|
||
lyricsYouLyPlusDesc: 'Wort-für-Wort-Sync über ein Community-Backend (Apple Music, Spotify, Musixmatch, QQ). Wird zuerst versucht; die aktivierten Quellen unten dienen als Fallback.',
|
||
lyricsSourcesFallbackHint: 'Dienen als Fallback, wenn YouLyPlus nichts findet. Zum Sortieren ziehen.',
|
||
lyricsSourcesPrimaryHint: 'Werden der Reihe nach genutzt. Zum Sortieren ziehen. Alle aus = Lyrics deaktiviert.',
|
||
lyricsStaticOnly: 'Nur statische Lyrics anzeigen',
|
||
lyricsStaticOnlyDesc: 'Synchronisierte Lyrics werden ohne Auto-Scroll und ohne Wort-Hervorhebung als statischer Text dargestellt.',
|
||
downloadsTitle: 'ZIP-Export & Archivierung',
|
||
downloadsFolderDesc: 'Zielverzeichnis für Alben, die du als ZIP-Datei auf deinen Computer herunterlädst.',
|
||
downloadsDefault: 'Standard-Downloads-Ordner',
|
||
pickFolder: 'Auswählen',
|
||
pickFolderTitle: 'Download-Ordner auswählen',
|
||
clearFolder: 'Download-Ordner löschen',
|
||
logout: 'Abmelden',
|
||
aboutTitle: 'Über Psysonic',
|
||
aboutDesc: 'Ein moderner Desktop-Musikplayer für Navidrome. Nutzt die Subsonic-API plus Navidrome-spezifische Erweiterungen. Basiert auf Tauri v2 mit einer nativen Rust-Audio-Engine — schlank und schnell, aber vollgepackt mit Features: Wellenform-Seekbar, synchronisierte Lyrics, Last.fm-Integration, 10-Band-EQ, Crossfade, nahtlose Wiedergabe, Replay Gain, Genre-Browser und eine große Theme-Bibliothek.',
|
||
aboutLicense: 'Lizenz',
|
||
aboutLicenseText: 'GNU GPL v3 — kostenlos nutzbar, veränderbar und unter gleicher Lizenz weiterzugeben.',
|
||
aboutRepo: 'Quellcode auf GitHub',
|
||
aboutVersion: 'Version',
|
||
aboutBuiltWith: 'Gebaut mit Tauri · React · TypeScript · Rust/rodio',
|
||
aboutMaintainersLabel: 'Projektleitung',
|
||
aboutReleaseNotesLabel: 'Release Notes',
|
||
aboutReleaseNotesLink: 'Neuigkeiten dieser Version öffnen',
|
||
aboutContributorsLabel: 'Mitwirkende',
|
||
showChangelogOnUpdate: "'Was ist neu' bei Update anzeigen",
|
||
showChangelogOnUpdateDesc: 'Blendet nach einem Update einen dezenten Changelog-Banner über Now Playing ein. Klick öffnet die Release Notes, X blendet ihn aus.',
|
||
libraryGridMaxColumnsTitle: 'Kartenraster in der Bibliothek',
|
||
libraryGridMaxColumnsPerfHint: 'Mehr Spalten bedeuten mehr Kacheln pro Zeile und oft mehr Layout- und Zeichenaufwand — bei sehr großen Bibliotheken oder langsamerer Hardware spürbarer.',
|
||
libraryGridMaxColumnsRangeLabel: 'Maximale Spalten ({{min}}–{{max}})',
|
||
libraryGridMaxColumnsDesc: 'Gilt für Album-, Künstler-, Wiedergabelisten-, Radio-, Offline- und andere Kartenansichten. Weniger Spalten = größere Kacheln und meist weniger CPU-Last.',
|
||
libraryIndexTitle: 'Lokaler Bibliotheksindex (Vorschau)',
|
||
libraryIndexDesc: 'Behält eine lokale Kopie der Track-Datenbank jedes Servers vor, damit Stöbern und Suche schnell bleiben und offline funktionieren. Die Erstsynchronisation läuft für alle konfigurierten Server; offline Server werden automatisch erneut versucht.',
|
||
libraryIndexDeltaHint: 'Die Hintergrund-Delta-Synchronisation prüft gebundene Server alle 30 Sekunden und startet bei Bedarf — typischerweise alle 5–45 Minuten, abhängig von Bibliotheksgröße und Last.',
|
||
libraryIndexEnable: 'Lokalen Bibliotheksindex aktivieren',
|
||
libraryIndexEnableAllDesc: 'Alle konfigurierten Server im Hintergrund indizieren und synchronisieren.',
|
||
libraryIndexNoServer: 'Zuerst einen Server hinzufügen.',
|
||
libraryIndexServerListTitle: 'Indizierte Server',
|
||
libraryIndexAllExcluded: 'Alle Server sind von der Synchronisation ausgeschlossen. Index wieder aktivieren oder Server hinzufügen.',
|
||
libraryIndexServerOffline: 'Server offline — Synchronisation verschoben',
|
||
libraryIndexServerDeferred: 'Verschoben',
|
||
libraryIndexServerSyncing: 'Synchronisiert…',
|
||
libraryIndexFullResync: 'Vollständige Neusynchronisation',
|
||
libraryIndexDeltaSync: 'Delta-Synchronisation',
|
||
libraryIndexExcludeServer: 'Von Synchronisation ausschließen',
|
||
libraryIndexExcludingServer: 'Wird ausgeschlossen…',
|
||
libraryIndexExcludedTitle: 'Von Synchronisation ausgeschlossen',
|
||
libraryIndexIncludeServer: 'Wieder einschließen',
|
||
libraryIndexIncludingServer: 'Wird eingeschlossen…',
|
||
libraryIndexStatus: 'Status',
|
||
libraryIndexStatusIdle: 'Bereit',
|
||
libraryIndexStatusProbing: 'Server wird geprüft…',
|
||
libraryIndexStatusInitial: 'Erst-Synchronisation…',
|
||
libraryIndexStatusReady: 'Fertig ({{count}} Titel)',
|
||
libraryIndexStatusError: 'Fehler — siehe Logs',
|
||
libraryIndexProgressIngest: '{{count}} Titel indiziert…',
|
||
libraryIndexProgressVerify: '{{checked}} geprüft ({{deleted}} entfernt)',
|
||
libraryIndexSyncNow: 'Jetzt synchronisieren',
|
||
libraryIndexVerify: 'Bibliotheksintegrität prüfen',
|
||
libraryIndexCancel: 'Abbrechen',
|
||
libraryIndexAutoReconcile: 'Automatischer Abgleich bei Titelrückgang',
|
||
libraryIndexAutoReconcileDesc: 'Automatisch nach entfernten Titeln suchen, wenn der Server weniger als erwartet meldet.',
|
||
libraryIndexSyncError: 'Bibliotheks-Synchronisation fehlgeschlagen: {{error}}',
|
||
libraryIndexBindError: 'Index konnte nicht aktiviert werden: {{error}}',
|
||
randomMixTitle: 'Zufallsmix-Blacklist',
|
||
luckyMixMenuTitle: 'Glücks-Mix im Menü anzeigen',
|
||
luckyMixMenuDesc: 'Aktiviert Glücks-Mix im "Mix erstellen"-Hub und als separaten Menüeintrag bei getrennter Navigation. Sichtbar nur bei aktiviertem AudioMuse auf dem aktiven Server.',
|
||
randomMixBlacklistTitle: 'Eigene Filter-Keywords',
|
||
randomMixBlacklistDesc: 'Songs werden ausgeschlossen, wenn ein Keyword auf Genre, Titel, Album oder Künstler zutrifft (aktiv wenn die Checkbox oben an ist).',
|
||
randomMixBlacklistPlaceholder: 'Keyword hinzufügen…',
|
||
randomMixBlacklistAdd: 'Hinzufügen',
|
||
randomMixBlacklistEmpty: 'Noch keine eigenen Keywords hinzugefügt.',
|
||
randomMixHardcodedTitle: 'Eingebaute Keywords (aktiv wenn Checkbox an)',
|
||
tabAudio: 'Audio',
|
||
tabStorage: 'Offline & Cache',
|
||
tabAppearance: 'Darstellung',
|
||
tabLibrary: 'Bibliothek',
|
||
tabServers: 'Server',
|
||
tabLyrics: 'Songtexte',
|
||
tabPersonalisation: 'Personalisierung',
|
||
tabIntegrations: 'Integrationen',
|
||
inputKeybindingsTitle: 'Tastenkombinationen',
|
||
aboutContributorsCount_one: '{{count}} Beitrag',
|
||
aboutContributorsCount_other: '{{count}} Beiträge',
|
||
searchPlaceholder: 'Einstellungen durchsuchen…',
|
||
searchNoResults: 'Keine Treffer für deine Suche.',
|
||
integrationsPrivacyTitle: 'Hinweis zum Datenschutz',
|
||
integrationsPrivacyBody: 'Alle Integrationen auf diesem Tab sind <strong>Opt-in</strong> und senden, sobald aktiviert, Daten an externe Dienste oder an deinen Navidrome-Server. Last.fm erhält deinen Wiedergabeverlauf, Discord zeigt den aktuell laufenden Track in deinem Profil an, Bandsintown wird pro Künstler für Tour-Daten abgefragt, und der „Jetzt läuft"-Hinweis veröffentlicht deinen aktuellen Titel für andere Benutzer deines Navidrome-Servers. Wer das nicht möchte, lässt den jeweiligen Abschnitt einfach deaktiviert.',
|
||
homeCustomizerTitle: 'Mainstage',
|
||
queueModeTitle: 'Warteschlangen-Ansicht',
|
||
queueModeQueueSub: 'Zeigt nur kommende Titel. Der laufende Titel bleibt im Kopf und verschwindet aus der Liste, sobald er gespielt wurde.',
|
||
queueModePlaylistSub: 'Behält die ganze Warteschlange in der Liste, der laufende Titel oben hervorgehoben; gespielte Titel bleiben stehen.',
|
||
queueModeTimelineSub: 'Aktuellen Titel zentrieren — gespielter Verlauf darüber, kommende Titel (in Shuffle-Reihenfolge) darunter.',
|
||
queueToolbarTitle: 'Warteschlangen-Toolbar',
|
||
queueToolbarReset: 'Zurücksetzen',
|
||
queueToolbarSeparator: 'Trennlinie',
|
||
sidebarTitle: 'Seitenleiste',
|
||
sidebarReset: 'Zurücksetzen',
|
||
artistLayoutTitle: 'Künstlerseiten-Abschnitte',
|
||
artistLayoutDesc: 'Per Drag & Drop neu anordnen, einzelne Abschnitte der Künstlerseite ein- oder ausblenden. Abschnitte ohne Daten werden automatisch übersprungen.',
|
||
artistLayoutReset: 'Zurücksetzen',
|
||
artistLayoutBio: 'Künstler-Biografie',
|
||
artistLayoutTopTracks: 'Top-Tracks',
|
||
artistLayoutSimilar: 'Ähnliche Künstler*innen',
|
||
artistLayoutAlbums: 'Alben',
|
||
artistLayoutFeatured: 'Auch enthalten auf',
|
||
playlistLayoutTitle: 'Playlist-Seitenlayout',
|
||
playlistLayoutDesc: 'Einzelne Elemente auf der Playlist-Seite ein- oder ausblenden.',
|
||
playlistLayoutReset: 'Zurücksetzen',
|
||
playerBarTitle: 'Player-Leiste',
|
||
playerBarReset: 'Zurücksetzen',
|
||
playerBarStarRating: 'Sterne-Bewertung',
|
||
playerBarFavorite: 'Favorit (Herz)',
|
||
playerBarLastfmLove: 'Last.fm Love',
|
||
playerBarPlaybackRate: 'Wiedergabegeschwindigkeit',
|
||
playerBarEqualizer: 'Equalizer',
|
||
playerBarMiniPlayer: 'Mini-Player',
|
||
playbackRateTitle: 'Wiedergabegeschwindigkeit',
|
||
playbackRateEnabled: 'Wiedergabegeschwindigkeit aktivieren',
|
||
playbackRateEnabledDesc: 'Globale Geschwindigkeit für alle Titel. Gilt nicht für Radio und Vorschau.',
|
||
playbackRateStrategy: 'Strategie',
|
||
playbackRateStrategySpeed: 'Geschwindigkeit',
|
||
playbackRateStrategyVarispeed: 'Tonhöhe folgt dem Tempo',
|
||
playbackRateStrategyPreserve: 'Tonhöhe',
|
||
playbackRateSpeed: 'Geschwindigkeit',
|
||
playbackRatePitch: 'Tonhöhe',
|
||
playbackRateDerivedPitch: 'Tonhöhenverschiebung durch Geschwindigkeit: {{value}}',
|
||
playbackRateAutoPitch: 'Die Tonhöhe wird automatisch korrigiert.',
|
||
playbackRateHint: '„Geschwindigkeit“ behält die Tonhöhe bei. „Tonhöhe folgt dem Tempo“ verschiebt die Tonhöhe mit der Geschwindigkeit. „Tonhöhe“ fügt eine manuelle Verschiebung hinzu. Höhere CPU-Last als bei „Tonhöhe folgt dem Tempo“. Nicht für Radio, Vorschau oder Orbit.',
|
||
playbackRateNeutral: 'Bei 1,0× und ohne Tonverschiebung ist die Wiedergabe normal.',
|
||
playbackRateOrbitPaused: 'Während Orbit-Sessions nicht aktiv — Wiedergabe bleibt bei 1,0× für die Synchronisation.',
|
||
playbackRateOrbitPausedShort: 'Orbit: 1,0× für Sync.',
|
||
advancedMode: 'Erweitert',
|
||
advancedModeTooltip: 'Erweiterte Optionen in allen Settings-Tabs anzeigen. Community-Beiträge, die nicht zwingend der Design-Philosophie der Maintainer von Psysonic entsprechen.',
|
||
advancedBadge: 'Erweitert',
|
||
sidebarDrag: 'Ziehen zum Umsortieren',
|
||
sidebarFixed: 'Immer sichtbar',
|
||
nowPlayingTopTitle: 'Now Playing oben',
|
||
nowPlayingTopDesc: '"Now Playing" oben in der Seitenleiste anheften statt unten.',
|
||
randomNavSplitTitle: 'Mix-Navigation aufteilen',
|
||
randomNavSplitDesc: '"Zufallsmix", "Zufallsalben" und "Glücks-Mix" als separate Sidebar-Einträge statt als "Mix erstellen"-Hub anzeigen.',
|
||
tabInput: 'Eingabe',
|
||
tabUsers: 'Benutzer',
|
||
shortcutsReset: 'Auf Standard zurücksetzen',
|
||
shortcutListening: 'Taste drücken…',
|
||
shortcutUnbound: '—',
|
||
shortcutClear: 'Löschen',
|
||
globalShortcutsTitle: 'Globale Shortcuts',
|
||
globalShortcutsNote: 'Funktionieren systemweit, auch wenn Psysonic im Hintergrund läuft. Mindestens Ctrl, Alt oder Super als Modifier erforderlich.',
|
||
shortcutPlayPause: 'Wiedergabe / Pause',
|
||
shortcutNext: 'Nächster Titel',
|
||
shortcutPrev: 'Vorheriger Titel',
|
||
shortcutVolumeUp: 'Lautstärke erhöhen',
|
||
shortcutVolumeDown: 'Lautstärke verringern',
|
||
shortcutSeekForward: '10s vorspulen',
|
||
shortcutSeekBackward: '10s zurückspulen',
|
||
shortcutToggleQueue: 'Warteschlange ein-/ausblenden',
|
||
shortcutOpenFolderBrowser: '{{folderBrowser}} öffnen',
|
||
shortcutFullscreenPlayer: 'Vollbild-Player',
|
||
shortcutNativeFullscreen: 'Nativer Vollbildmodus',
|
||
shortcutOpenMiniPlayer: 'Mini-Player öffnen',
|
||
shortcutStartSearch: 'Suche starten',
|
||
shortcutStartAdvancedSearch: 'Erweiterte Suche starten',
|
||
shortcutToggleSidebar: 'Seitenleiste umschalten',
|
||
shortcutMuteSound: 'Stumm schalten',
|
||
shortcutToggleEqualizer: 'Equalizer öffnen / umschalten',
|
||
shortcutToggleRepeat: 'Wiederholen umschalten',
|
||
shortcutOpenNowPlaying: '„Now Playing" öffnen',
|
||
shortcutShowLyrics: 'Songtexte anzeigen',
|
||
shortcutFavoriteCurrentTrack: 'Aktuellen Titel zu Favoriten hinzufügen',
|
||
shortcutOpenHelp: 'Hilfe',
|
||
tabSystem: 'System',
|
||
loggingTitle: 'Protokollierung',
|
||
loggingModeDesc: 'Steuert die Ausführlichkeit der Backend-Protokolle im Terminal.',
|
||
loggingModeOff: 'Aus',
|
||
loggingModeNormal: 'Normal',
|
||
loggingModeDebug: 'Debug',
|
||
loggingExport: 'Protokolle exportieren',
|
||
loggingExportSuccess: 'Protokolle exportiert ({{count}} Zeilen).',
|
||
loggingExportError: 'Protokolle konnten nicht exportiert werden.',
|
||
ratingsSectionTitle: 'Bewertungen',
|
||
ratingsSkipStarTitle: 'Skip → 1 Stern',
|
||
ratingsSkipStarDesc:
|
||
'Wird ein Titel mehrmals hintereinander übersprungen, bekommt er automatisch 1★. Nur für noch nicht bewertete Titel.',
|
||
ratingsSkipStarThresholdLabel: 'Skips',
|
||
ratingsMixFilterTitle: 'Nach Bewertung filtern',
|
||
ratingsMixFilterDesc:
|
||
'Gering bewertete Titel in {{mix}} und {{albums}} ausblenden. Nochmals auf den gewählten Stern klicken, um den Filter zu deaktivieren.',
|
||
ratingsMixMinSong: 'Titel',
|
||
ratingsMixMinAlbum: 'Alben',
|
||
ratingsMixMinArtist: 'Interpreten',
|
||
ratingsMixMinThresholdAria: 'Mindest-Sterne: {{label}}',
|
||
backupTitle: 'Backup & Wiederherstellung',
|
||
backupExport: 'Einstellungen exportieren',
|
||
backupExportDesc: 'Speichert alle Einstellungen, Serverprofile, Last.fm-Konfiguration, Theme, EQ und Tastenkürzel in eine .psybkp-Datei. Passwörter werden im Klartext gespeichert — Datei sicher aufbewahren.',
|
||
backupImport: 'Einstellungen importieren',
|
||
backupImportDesc: 'Stellt Einstellungen aus einer .psybkp-Datei wieder her. Die App wird nach dem Import neu geladen.',
|
||
backupImportConfirm: 'Alle aktuellen Einstellungen werden überschrieben. Fortfahren?',
|
||
backupSuccess: 'Backup gespeichert',
|
||
backupImportSuccess: 'Einstellungen wiederhergestellt — wird neu geladen…',
|
||
backupImportError: 'Ungültige oder beschädigte Backup-Datei.',
|
||
playbackTitle: 'Wiedergabe',
|
||
replayGain: 'Replay Gain',
|
||
replayGainDesc: 'Lautstärke mit ReplayGain-Metadaten normalisieren',
|
||
replayGainMode: 'Modus',
|
||
replayGainAuto: 'Auto',
|
||
replayGainAutoDesc: 'Wählt Album-Gain, wenn benachbarte Tracks in der Warteschlange vom selben Album sind, sonst Track-Gain.',
|
||
replayGainTrack: 'Track',
|
||
replayGainAlbum: 'Album',
|
||
replayGainPreGain: 'Pre-Gain (getaggte Dateien)',
|
||
replayGainPreGainDesc: 'Pauschaler Boost, der auf jede ReplayGain-Berechnung aufaddiert wird. Hilft, wenn deine Bibliothek insgesamt zu leise wirkt.',
|
||
replayGainFallback: 'Fallback (ohne Tags / Radio)',
|
||
replayGainFallbackDesc: 'Wird auf Titel (und Radio-Streams) ohne ReplayGain-Tags angewendet, damit Untagged-Inhalt nicht lauter aus dem Mix springt.',
|
||
normalization: 'Normalisierung',
|
||
normalizationDesc: 'Empfundene Lautstärke über Titel, Alben und Radio angleichen.',
|
||
normalizationOff: 'Aus',
|
||
normalizationReplayGain: 'ReplayGain',
|
||
normalizationLufs: 'LUFS',
|
||
loudnessTargetLufs: 'Ziel-LUFS',
|
||
loudnessTargetLufsDesc: 'Referenz-Lautstärke, an die alle Titel angepasst werden. Niedrigere Werte = lautere Ausgabe. Streaming-Dienste liegen meist bei etwa -14 LUFS.',
|
||
loudnessPreAnalysisAttenuation: 'Dämpfung vor Messung',
|
||
loudnessPreAnalysisAttenuationDesc:
|
||
'Zusätzliche Dämpfung, bis die Loudness des Titels gespeichert ist. Beim Streamen folgen nur grobe Schätzungen, keine volle Messung. 0 dB = aus; negativer = leiser. Rechts steht der wirksame dB-Wert für die gewählte Ziel-LUFS.',
|
||
loudnessPreAnalysisAttenuationRef: 'Wirksam {{eff}} dB bei Ziel {{tgt}} LUFS.',
|
||
loudnessPreAnalysisAttenuationReset: 'Standard',
|
||
loudnessFirstPlayNote:
|
||
'Beim ersten Abspielen eines neuen Titels kann die Lautstärke kurz schwanken, während gemessen wird. Beim nächsten Mal greift die gespeicherte Messung und alles bleibt stabil. Kommende Queue-Titel werden meist schon während des vorherigen Songs analysiert — in der Praxis tritt das daher selten auf.',
|
||
crossfade: 'Crossfade',
|
||
crossfadeDesc: 'Überblendung zwischen Tracks',
|
||
crossfadeSecs: '{{n}} s',
|
||
notWithGapless: 'Nicht verfügbar wenn Nahtlose Wiedergabe aktiv ist',
|
||
notWithCrossfade: 'Nicht verfügbar wenn Crossfade aktiv ist',
|
||
gapless: 'Nahtlose Wiedergabe',
|
||
gaplessDesc: 'Nächsten Track vorpuffern um Lücken zwischen Songs zu vermeiden',
|
||
preservePlayNextOrder: '„Als Nächstes"-Reihenfolge bewahren',
|
||
preservePlayNextOrderDesc: 'Neu hinzugefügte „Als Nächstes"-Titel reihen sich hinten an statt sich vorn einzuschieben.',
|
||
trackPreviewsTitle: 'Track-Vorschau',
|
||
trackPreviewsToggle: 'Track-Vorschau aktivieren',
|
||
trackPreviewsDesc: 'Inline Play- und Vorschau-Buttons in den Tracklisten anzeigen für eine kurze Hörprobe mitten im Song.',
|
||
trackPreviewStart: 'Startposition',
|
||
trackPreviewStartDesc: 'Wie weit der Track schon gespielt sein soll wenn die Vorschau startet (% der Länge).',
|
||
trackPreviewDuration: 'Dauer',
|
||
trackPreviewDurationDesc: 'Wie lange jede Vorschau spielt bevor sie automatisch stoppt.',
|
||
trackPreviewDurationSecs: '{{n}} s',
|
||
trackPreviewLocationsTitle: 'Wo Vorschauen erscheinen',
|
||
trackPreviewLocationsDesc: 'Wähle aus, in welchen Listen die Vorschau-Buttons angezeigt werden.',
|
||
trackPreviewLocation_suggestions: 'In Playlist-Vorschlägen',
|
||
trackPreviewLocation_albums: 'In Album-Tracklisten',
|
||
trackPreviewLocation_playlists: 'In Playlists',
|
||
trackPreviewLocation_favorites: 'In Favoriten',
|
||
trackPreviewLocation_artist: 'In Künstler-Top-Tracks',
|
||
trackPreviewLocation_randomMix: 'In Random Mix',
|
||
preloadMode: 'Nächsten Track vorpuffern',
|
||
preloadModeDesc: 'Wann mit dem Puffern des nächsten Tracks begonnen werden soll',
|
||
nextTrackBufferingTitle: 'Pufferung',
|
||
preloadHotCacheMutualExclusive: 'Preload und Hot Cache erfüllen denselben Zweck – nur eine Methode kann gleichzeitig aktiv sein. Das Aktivieren einer deaktiviert die andere automatisch.',
|
||
preloadOff: 'Aus',
|
||
preloadBalanced: 'Ausgewogen (30 s vor Ende)',
|
||
preloadEarly: 'Früh (nach 5 s Wiedergabe)',
|
||
preloadCustom: 'Benutzerdefiniert',
|
||
preloadCustomSeconds: 'Sekunden vor Ende: {{n}}',
|
||
infiniteQueue: 'Endlose Warteschlange',
|
||
infiniteQueueDesc: 'Automatisch Zufallstitel anhängen wenn die Warteschlange leer wird',
|
||
experimental: 'Experimentell',
|
||
sidebarLyricsStyle: 'Text-Scroll-Stil',
|
||
sidebarLyricsStyleClassic: 'Klassisch',
|
||
sidebarLyricsStyleClassicDesc: 'Aktive Zeile wird zentriert.',
|
||
sidebarLyricsStyleApple: 'Apple Music-like',
|
||
sidebarLyricsStyleAppleDesc: 'Aktive Zeile oben mit sanfter Animation.',
|
||
seekbarStyle: 'Seekbar-Stil',
|
||
seekbarStyleDesc: 'Aussehen der Wiedergabe-Seekbar auswählen',
|
||
seekbarTruewave: 'Echte Wellenform',
|
||
seekbarPseudowave: 'Pseudo-Wellenform',
|
||
seekbarLinedot: 'Linie & Punkt',
|
||
seekbarBar: 'Balken',
|
||
seekbarThick: 'Dicker Balken',
|
||
seekbarSegmented: 'Segmentiert',
|
||
seekbarNeon: 'Neonröhre',
|
||
seekbarPulsewave: 'Pulswelle',
|
||
seekbarParticletrail: 'Partikel-Spur',
|
||
seekbarLiquidfill: 'Flüssigkeit',
|
||
seekbarRetrotape: 'Retro-Band',
|
||
themeSchedulerTitle: 'Theme-Zeitplan',
|
||
themeSchedulerEnable: 'Theme-Zeitplan aktivieren',
|
||
themeSchedulerEnableSub: 'Wechselt automatisch zwischen zwei Themes basierend auf der Uhrzeit',
|
||
themeSchedulerDayTheme: 'Tages-Theme',
|
||
themeSchedulerDayStart: 'Tag beginnt um',
|
||
themeSchedulerNightTheme: 'Nacht-Theme',
|
||
themeSchedulerNightStart: 'Nacht beginnt um',
|
||
themeSchedulerActiveHint: 'Theme-Zeitplan ist aktiv - Themes werden automatisch gewechselt.',
|
||
visualOptionsTitle: 'Visuelle Optionen',
|
||
coverArtBackground: 'Cover-Hintergrund',
|
||
coverArtBackgroundSub: 'Zeigt verschwommenes Cover als Hintergrund in Album/Playlist-Kopfzeilen',
|
||
playlistCoverPhoto: 'Playlist-Coverfoto',
|
||
playlistCoverPhotoSub: 'Zeigt Coverfoto-Raster in der Playlist-Detailansicht',
|
||
showBitrate: 'Bitrate anzeigen',
|
||
showBitrateSub: 'Audio-Bitrate in Track-Listen anzeigen',
|
||
floatingPlayerBar: 'Schwebende Player-Leiste',
|
||
floatingPlayerBarSub: 'Player-Leiste über dem Inhalt schweben lassen',
|
||
uiScaleTitle: 'Interface-Skalierung',
|
||
uiScaleLabel: 'Zoom',
|
||
waveformCacheClearBtn: 'Waveform-Cache leeren',
|
||
waveformCacheCleared: 'Waveform-Cache geleert ({{count}} Zeilen).',
|
||
waveformCacheClearFailed: 'Waveform-Cache konnte nicht geleert werden.',
|
||
analyticsStrategyTitle: 'Analysestrategien',
|
||
analyticsStrategyDesc: 'Wähle den Analysemodus für die Bibliothek.',
|
||
analyticsStrategyLabel: 'Strategie',
|
||
analyticsStrategyLazy: 'Lazy',
|
||
analyticsStrategyLazyDesc: 'Analysiert nur, wenn Tracks abgespielt werden oder in den Hot-/Offline-Cache kommen — minimale CPU- und Netzlast.',
|
||
analyticsStrategyAdvanced: 'Aggressiv',
|
||
analyticsStrategyAdvancedDesc: 'Aggressiver Hintergrundscan. Nach Abschluss erhältst du BPM für alle Tracks sowie sofort verfügbare Loudness- und Waveform-Daten.',
|
||
analyticsStrategyPriorityTitle: 'Analyse-Priorität (immer aktiv)',
|
||
analyticsStrategyPriorityHigh: '1 — Aktuell laufender Track: zuerst herunterladen und analysieren (Playback-Bytes, Loudness-Backfill oder HTTP falls nötig).',
|
||
analyticsStrategyPriorityMiddle: '2 — Als Nächstes: die nächsten ~5 Queue-Tracks, Preload-next und Hot-Cache-Nachbarn — Analyse bevorzugt aus Cache/Downloads; HTTP-Backfill nur bei Miss.',
|
||
analyticsStrategyPriorityLow: '3 — Bibliotheks-Batch (nur Aggressiv): automatische Hintergrund-Queue am Ende; wird per Watermark (~3× Worker) nachgefüllt, ohne auf eine leere Queue zu warten.',
|
||
analyticsStrategyServerLabel: 'Server',
|
||
analyticsStrategyProgressLabel: 'Analysefortschritt:',
|
||
analyticsStrategyProgressValue: '{{percent}}% ({{done}}/{{total}})',
|
||
analyticsStrategyActionsLabel: 'Aktionen',
|
||
analyticsStrategyParallelismLabel: 'Parallele Worker',
|
||
analyticsStrategyParallelismValue: '{{n}} Threads',
|
||
analyticsStrategyParallelismDesc: 'Wie viele Tracks gleichzeitig heruntergeladen und analysiert werden (HTTP + CPU). Höhere Werte beschleunigen das Aufholen der Bibliothek, nutzen aber mehr Netz und CPU.',
|
||
analyticsStrategyAdvancedWarning: 'Aggressiv nutzt mehr CPU und Netzwerkbandbreite, während der Bibliotheks-Batch im Hintergrund läuft.',
|
||
analyticsStrategyServerRemoved: 'Entfernter Server',
|
||
analyticsStrategyClearAction: 'Analyse löschen',
|
||
analyticsStrategyClearTitle: 'Analyse löschen?',
|
||
analyticsStrategyClearDesc: 'Das Löschen der Analyse für {{server}} entfernt zwischengespeicherte Waveforms und Loudness-Daten. Beim späteren erneuten Hinzufügen kann eine lange Neuindizierung nötig sein.',
|
||
analyticsStrategyClearCancel: 'Abbrechen',
|
||
analyticsStrategyClearConfirm: 'Analyse löschen',
|
||
analyticsStrategyClearSuccess: 'Analyse für den entfernten Server wurde gelöscht.',
|
||
analyticsStrategyClearError: 'Analyse für den entfernten Server konnte nicht gelöscht werden.',
|
||
analyticsStrategyProgressEmptyAfterFailed: '100% (0/0, durch fehlgeschlagene Tracks blockiert)',
|
||
analyticsFailedTracksOpenTitle: 'Fehlgeschlagene Tracks: {{count}}',
|
||
analyticsFailedTracksTitle: 'Fehlgeschlagene Analyse-Tracks — {{server}}',
|
||
analyticsFailedTracksDesc: 'Diese Tracks sind bei Decode/Enrichment wiederholt fehlgeschlagen und vom automatischen Hintergrund-Analyseprozess ausgeschlossen.',
|
||
analyticsFailedTracksLoading: 'Liste fehlgeschlagener Tracks wird geladen…',
|
||
analyticsFailedTracksEmpty: 'Für diesen Server gibt es keine fehlgeschlagenen Tracks.',
|
||
analyticsFailedTracksClose: 'Schließen',
|
||
analyticsFailedTracksExport: 'Liste exportieren',
|
||
analyticsFailedTracksExportSuccess: 'Liste fehlgeschlagener Tracks exportiert ({{count}}).',
|
||
analyticsFailedTracksExportError: 'Liste fehlgeschlagener Tracks konnte nicht exportiert werden.',
|
||
analyticsFailedTracksRescan: 'Fehlgeschlagene Tracks neu scannen',
|
||
analyticsFailedTracksRescanSuccess: 'Neu-Scan für {{count}} fehlgeschlagene Tracks eingeplant.',
|
||
analyticsFailedTracksRescanError: 'Neu-Scan fehlgeschlagener Tracks konnte nicht gestartet werden.',
|
||
analyticsFailedTracksLoadError: 'Fehlgeschlagene Tracks konnten nicht geladen werden.',
|
||
backupImportAny: 'Backup importieren',
|
||
backupImportAnyConfirm: 'Ausgewählte Backup-Datei importieren und Inhalt anwenden (Einstellungen, Bibliotheksdatenbanken oder vollständig). Fortfahren?',
|
||
backupModeFull: 'Vollständig',
|
||
backupModeLibrary: 'Bibliotheksdatenbanken',
|
||
backupModeConfig: 'Konfiguration',
|
||
backupFullDesc: 'Archiviert Einstellungen und Bibliotheksdatenbanken in einer Backup-Datei.',
|
||
backupFullExport: 'Vollständiges Backup exportieren',
|
||
backupFullImport: 'Vollständiges Backup importieren',
|
||
backupFullImportConfirm: 'Dadurch werden Einstellungen überschrieben, aktuelle Bibliotheksdatenbanken ersetzt und nach .bak verschoben. Fortfahren?',
|
||
backupFullExportSuccess: 'Vollständiges Backup exportiert.',
|
||
backupFullImportSuccess: 'Vollständiges Backup importiert — lade neu…',
|
||
backupFullImportError: 'Vollständiges Backup konnte nicht importiert werden.',
|
||
backupLibraryExport: 'Datenbanken exportieren',
|
||
backupLibraryExportDesc: 'Erstellt ein komprimiertes Archiv mit sauberen SQLite-Snapshots der Bibliotheksdatenbanken.',
|
||
backupLibraryImport: 'Datenbanken importieren',
|
||
backupLibraryImportDesc: 'Stellt Bibliotheksdatenbanken aus einer Archivdatei wieder her. Aktuelle Datenbanken werden vor dem Wechsel nach .bak verschoben.',
|
||
backupLibraryImportConfirm: 'Dadurch werden aktuelle Bibliotheksdatenbanken ersetzt und nach .bak verschoben. Fortfahren?',
|
||
backupLibraryExportSuccess: 'Datenbank-Backup exportiert.',
|
||
backupLibraryImportSuccess: 'Datenbank-Backup importiert.',
|
||
backupLibraryImportError: 'Datenbank-Backup konnte nicht importiert werden.',
|
||
backupOverlayExportTitle: 'Backup wird erstellt…',
|
||
backupOverlayImportTitle: 'Backup wird wiederhergestellt…',
|
||
backupOverlayHint: 'Das Fenster kann geöffnet bleiben, während wir Dateien verarbeiten. Eingaben sind vorübergehend gesperrt.',
|
||
};
|