export const deTranslation = { sidebar: { library: 'Bibliothek', mainstage: 'Mainstage', newReleases: 'Neueste', allAlbums: 'Alle Alben', randomAlbums: 'Zufallsalben', randomPicker: 'Mix erstellen', artists: 'Künstler', composers: 'Komponist*innen', randomMix: 'Zufallsmix', favorites: 'Favoriten', nowPlaying: 'Now Playing', system: 'System', statistics: 'Statistiken', settings: 'Einstellungen', help: 'Hilfe', expand: 'Sidebar einblenden', collapse: 'Sidebar ausblenden', downloadingTracks: '{{n}} Tracks werden gecacht…', syncingTracks: 'Synchronisiere {{done}}/{{total}}…', cancelDownload: 'Download abbrechen', offlineLibrary: 'Offline-Bibliothek', genres: 'Genres', tracks: 'Titel', playlists: 'Playlists', mostPlayed: 'Meistgehört', radio: 'Internetradio', folderBrowser: 'Ordner-Browser', deviceSync: 'Gerätesync', libraryScope: 'Bibliotheksumfang', allLibraries: 'Alle Bibliotheken', expandPlaylists: 'Playlists ausklappen', collapsePlaylists: 'Playlists einklappen', more: 'Mehr', feelingLucky: 'Glücks-Mix', }, home: { hero: 'Featured', starred: 'Persönliche Favoriten', recent: 'Zuletzt hinzugefügt', mostPlayed: 'Meistgehört', recentlyPlayed: 'Kürzlich gespielt', discover: 'Entdecken', discoverSongs: 'Titel entdecken', loadMore: 'Mehr laden', discoverMore: 'Mehr entdecken', discoverArtists: 'Künstler entdecken', discoverArtistsMore: 'Alle Künstler', becauseYouLike: 'Weil du gehört hast…', becauseYouLikeFor: 'Weil du {{artist}} gehört hast', similarTo: 'Ähnlich wie {{artist}}', becauseYouLikeTracks_one: '{{count}} Titel', becauseYouLikeTracks_other: '{{count}} Titel' }, hero: { eyebrow: 'Album des Augenblicks', playAlbum: 'Album abspielen', enqueue: 'Einreihen', enqueueTooltip: 'Ganzes Album zur Warteschlange hinzufügen', }, search: { placeholder: 'Suchen nach Künstler, Album oder Song…', noResults: 'Keine Ergebnisse für „{{query}}"', artists: 'Künstler', albums: 'Alben', songs: 'Songs', clearLabel: 'Suche leeren', addedToQueueToast: '„{{title}}" zur Warteschlange hinzugefügt', title: 'Suche', resultsFor: 'Ergebnisse für „{{query}}"', album: 'Album', advanced: 'Erweiterte Suche', advancedSearchTerm: 'Suchbegriff', advancedSearchPlaceholder: 'Titel, Album, Künstler…', advancedGenre: 'Genre', advancedAllGenres: 'Alle Genres', advancedYear: 'Jahr', advancedYearFrom: 'von', advancedYearTo: 'bis', advancedAll: 'Alle', advancedSearch: 'Suchen', advancedEmpty: 'Suchbegriff eingeben oder Filter wählen, um zu beginnen.', advancedNoResults: 'Keine Ergebnisse gefunden.', advancedGenreNote: 'Songs werden zufällig aus dem Genre gewählt.', recentSearches: 'Zuletzt gesucht', browse: 'Stöbern', emptyHint: 'Was möchtest du hören?', genres: 'Genres', }, nowPlaying: { tooltip: 'Wer hört was?', title: 'Wer hört was?', loading: 'Lädt…', nobody: 'Gerade hört niemand Musik.', minutesAgo: 'vor {{n}}m', nothingPlaying: 'Noch nichts am Laufen. Leg einen Track auf!', aboutArtist: 'Über den Künstler', fromAlbum: 'Aus diesem Album', viewAlbum: 'Album öffnen', goToArtist: 'Zum Künstler', readMore: 'Mehr lesen', showLess: 'Weniger anzeigen', genreInfo: 'Genre', trackInfo: 'Track-Info', topSongs: 'Meistgespielt von diesem Künstler', topSongsCredit: 'Top-Tracks von {{name}}', trackPosition: 'Track {{pos}}', playsCount_one: '{{count}} Wiedergabe', playsCount_other: '{{count}} Wiedergaben', releasedYearsAgo_one: 'vor {{count}} Jahr', releasedYearsAgo_other: 'vor {{count}} Jahren', discography: 'Diskografie', lastfmStats: 'Last.fm-Statistik', thisTrack: 'Dieser Titel', thisArtist: 'Dieser Künstler', listeners: 'Hörer', scrobbles: 'Scrobbles', yourScrobbles: 'von dir', listenersN: '{{n}} Hörer', scrobblesN: '{{n}} Scrobbles', playsByYouN: '{{n}}× von dir gespielt', openTrackOnLastfm: 'Track auf Last.fm', openArtistOnLastfm: 'Künstler auf Last.fm', rgTrackTooltip: 'ReplayGain (Track)', rgAlbumTooltip: 'ReplayGain (Album)', rgAutoTooltip: 'ReplayGain (Auto)', showMoreTracks: '{{count}} weitere anzeigen', showLessTracks: 'Weniger anzeigen', hideCard: 'Karte ausblenden', layoutMenu: 'Layout', visibleCards: 'Sichtbare Karten', hiddenCards: 'Ausgeblendete Karten', noHiddenCards: 'Keine ausgeblendeten Karten', resetLayout: 'Layout zurücksetzen', emptyColumn: 'Karten hier ablegen', }, contextMenu: { playNow: 'Direkt abspielen', playNext: 'Als Nächstes abspielen', addToQueue: 'Zur Warteschlange hinzufügen', enqueueAlbum: 'Ganzes Album einreihen', enqueueAlbums_one: '{{count}} Album einreihen', enqueueAlbums_other: '{{count}} Alben einreihen', startRadio: 'Radio starten', instantMix: 'Instant Mix', instantMixFailed: 'Instant Mix konnte nicht erstellt werden — Server- oder Pluginfehler.', cliMixNeedsTrack: 'Es läuft nichts — starte zuerst die Wiedergabe und führe den Mix-Befehl erneut aus.', lfmLove: 'Auf Last.fm liken', lfmUnlove: 'Last.fm-Like entfernen', favorite: 'Favorisieren', favoriteArtist: 'Künstler favorisieren', favoriteAlbum: 'Album favorisieren', unfavorite: 'Aus Favoriten entfernen', unfavoriteArtist: 'Künstler aus Favoriten entfernen', unfavoriteAlbum: 'Album aus Favoriten entfernen', removeFromQueue: 'Diesen Song entfernen', removeFromPlaylist: 'Aus Playlist entfernen', openAlbum: 'Album öffnen', goToArtist: 'Zum Künstler', download: 'Herunterladen (ZIP)', addToPlaylist: 'Zur Playlist hinzufügen', selectedPlaylists: '{{count}} Playlists ausgewählt', selectedAlbums: '{{count}} Alben ausgewählt', selectedArtists: '{{count}} Künstler ausgewählt', songInfo: 'Song-Infos', shareLink: 'Freigabe-Link kopieren', shareCopied: 'Freigabe-Link wurde in die Zwischenablage kopiert.', shareCopyFailed: 'Kopieren in die Zwischenablage fehlgeschlagen.', }, sharePaste: { notLoggedIn: 'Melde dich an und füge den Server hinzu, bevor du einen Freigabe-Link einfügst.', noMatchingServer: 'Kein gespeicherter Server passt zu diesem Link. Füge einen Server mit dieser Adresse hinzu: {{url}}', trackUnavailable: 'Dieser Titel wurde auf dem Server nicht gefunden.', albumUnavailable: 'Dieses Album wurde auf dem Server nicht gefunden.', artistUnavailable: 'Dieser Künstler wurde auf dem Server nicht gefunden.', composerUnavailable: 'Diese*r Komponist*in wurde auf dem Server nicht gefunden.', openedTrack: 'Geteilter Titel wird abgespielt.', openedAlbum: 'Geteiltes Album wird geöffnet.', openedArtist: 'Geteilter Künstler wird geöffnet.', openedComposer: 'Geteilte*r Komponist*in wird geöffnet.', openedQueue_one: '{{count}} Titel aus Freigabe-Link wird abgespielt.', openedQueue_other: '{{count}} Titel aus Freigabe-Link werden abgespielt.', openedQueuePartial: '{{played}} von {{total}} Titeln aus dem Link werden abgespielt ({{skipped}} auf diesem Server nicht gefunden).', queueAllUnavailable: 'Keiner der Titel aus diesem Link wurde auf dem Server gefunden.', genericError: 'Freigabe-Link konnte nicht geöffnet werden.', }, albumDetail: { back: 'Zurück', orbitDoubleClickHint: 'Doppelklick fügt diesen Titel zur Orbit-Queue hinzu', playAll: 'Alle abspielen', shareAlbum: 'Album teilen', enqueue: 'Einreihen', enqueueTooltip: 'Ganzes Album zur Warteschlange hinzufügen', artistBio: 'Künstler-Bio', download: 'Download (ZIP)', downloading: 'Lade…', cacheOffline: 'Offline verfügbar machen', offlineCached: 'Offline verfügbar', offlineDownloading: 'Wird gecacht… ({{n}}/{{total}})', removeOffline: 'Offline-Cache löschen', offlineStorageFull: 'Offline-Speicher voll (Limit: {{mb}} MB). Lösche ein Album aus der Offline-Bibliothek oder erhöhe das Limit in den Einstellungen.', offlineStorageGoToSettings: 'Einstellungen', offlineStorageGoToLibrary: 'Offline-Bibliothek', favoriteAdd: 'Zu Favoriten hinzufügen', favoriteRemove: 'Aus Favoriten entfernen', favorite: 'Als Favorit', noBio: 'Keine Biografie verfügbar.', moreByArtist: 'Mehr von {{artist}}', tracksCount: '{{n}} Tracks', goToArtist: 'Zu {{artist}} wechseln', moreLabelAlbums: 'Weitere Alben von {{label}} anzeigen', trackTitle: 'Titel', trackAlbum: 'Album', trackArtist: 'Interpret', trackGenre: 'Genre', trackFormat: 'Format', trackFavorite: 'Favorit', trackRating: 'Bewertung', trackDuration: 'Dauer', trackTotal: 'Gesamt', columns: 'Spalten', resetColumns: 'Zurücksetzen', notFound: 'Album nicht gefunden.', bioModal: 'Künstler-Biografie', bioClose: 'Schließen', ratingLabel: 'Bewertung', enlargeCover: 'Vergrößern', filterSongs: 'Titel filtern…', sortNatural: 'Reihenfolge', sortByTitle: 'A–Z (Titel)', sortByArtist: 'A–Z (Künstler)', sortByAlbum: 'A–Z (Album)', }, entityRating: { albumShort: 'Albumbewertung', artistShort: 'Künstlerbewertung', albumAriaLabel: 'Albumbewertung', artistAriaLabel: 'Künstlerbewertung', selectedArtistsRatingAriaLabel: 'Sternebewertung für {{count}} ausgewählte Künstler', selectedAlbumsRatingAriaLabel: 'Sternebewertung für {{count}} ausgewählte Alben', saveFailed: 'Bewertung konnte nicht gespeichert werden.', }, artistDetail: { back: 'Zurück', albums: 'Alben', album: 'Album', playAll: 'Alle abspielen', shareArtist: 'Künstler teilen', shuffle: 'Zufallswiedergabe', radio: 'Radio', loading: 'Lädt…', noRadio: 'Keine ähnlichen Titel für diesen Künstler gefunden.', notFound: 'Künstler nicht gefunden.', albumsBy: 'Alben von {{name}}', topTracks: 'Beliebteste Titel', noAlbums: 'Keine Alben gefunden.', trackTitle: 'Titel', trackAlbum: 'Album', trackDuration: 'Dauer', favoriteAdd: 'Zu Favoriten hinzufügen', favoriteRemove: 'Aus Favoriten entfernen', favorite: 'Als Favorit', albumCount_one: '{{count}} Album', albumCount_other: '{{count}} Alben', openedInBrowser: 'Im Browser geöffnet', featuredOn: 'Auch enthalten auf', similarArtists: 'Ähnliche Künstler', cacheOffline: 'Diskografie offline speichern', offlineCached: 'Diskografie gecacht', offlineDownloading: 'Wird gecacht… ({{done}}/{{total}} Alben)', uploadImage: 'Künstlerbild hochladen', uploadImageError: 'Bild konnte nicht hochgeladen werden', releaseTypes: { album: 'Album', ep: 'EP', single: 'Single', compilation: 'Kompilation', live: 'Live', soundtrack: 'Soundtrack', remix: 'Remix', other: 'Sonstige', }, }, favorites: { title: 'Favoriten', empty: 'Du hast noch keine Favoriten gespeichert.', artists: 'Künstler', albums: 'Alben', songs: 'Songs', enqueueAll: 'Alle in die Warteschlange', playAll: 'Alle abspielen', removeSong: 'Aus Favoriten entfernen', stations: 'Radiosender', showingFiltered: 'Zeige {{filtered}} von {{total}} ({{artist}})', showingCount: 'Zeige {{filtered}} von {{total}}', clearArtistFilter: 'Künstlerfilter zurücksetzen', noFilterResults: 'Keine Ergebnisse mit den ausgewählten Filtern.', allArtists: 'Alle Künstler', topArtists: 'Top-Künstler nach Favoriten', topArtistsSongCount_one: '{{count}} Song', topArtistsSongCount_other: '{{count}} Songs', }, randomLanding: { title: 'Mix erstellen', mixByTracks: 'Mix nach Titeln', mixByTracksDesc: 'Zufällige Auswahl aus deiner gesamten Mediathek', mixByAlbums: 'Mix nach Alben', mixByAlbumsDesc: 'Zufällige Alben für neue Entdeckungen', mixByLucky: 'Glücks-Mix', mixByLuckyDesc: 'Smarter Instant Mix aus Top-Künstlern, Alben und Bewertungen', }, randomAlbums: { title: 'Zufallsalben', refresh: 'Neu laden', }, genres: { title: 'Genres', genreCount: 'Genres', albumCount_one: '{{count}} Album', albumCount_other: '{{count}} Alben', loading: 'Genres werden geladen…', empty: 'Keine Genres gefunden.', albumsLoading: 'Alben werden geladen…', albumsEmpty: 'Keine Alben in diesem Genre gefunden.', loadMore: 'Mehr laden', back: 'Zurück', }, randomMix: { title: 'Zufallsmix', remix: 'Neu mixen', remixTooltip: 'Neue Songs laden', remixGenre: '{{genre}} neu mixen', remixTooltipGenre: 'Neue {{genre}}-Songs laden', playAll: 'Alle abspielen', trackTitle: 'Titel', trackArtist: 'Künstler', trackAlbum: 'Album', trackFavorite: 'Favorit', trackDuration: 'Dauer', favoriteAdd: 'Zu Favoriten hinzufügen', favoriteRemove: 'Aus Favoriten entfernen', play: 'Abspielen', trackGenre: 'Genre', mixSettingsHeader: 'Mix-Einstellungen', exclusionsHeader: 'Ausschlüsse', filterPanelInexactSizeNote: 'Die Mix-Größe ist ein Ziel — bei großen Anfragen kann der Server weniger eindeutige Tracks liefern, wenn sein Zufallspool erschöpft ist.', mixSize: 'Playlistgröße', excludeAudiobooks: 'Hörbücher & Hörspiele ausschließen', excludeAudiobooksDesc: 'Prüft Keywords gegen Genre, Titel, Album und Künstler — z. B. Hörbuch, Audiobook, Spoken Word, …', genreBlocked: 'Keyword gesperrt', genreAddedToBlacklist: 'Zur Filterliste hinzugefügt', genreAlreadyBlocked: 'Bereits gesperrt', artistBlocked: 'Künstler gesperrt', artistAddedToBlacklist: 'Künstler zur Filterliste hinzugefügt', artistClickHint: 'Klicken um diesen Künstler zu sperren', blacklistToggle: 'Keyword-Filter', genreMixTitle: 'Genre-Mix', genreMixDesc: 'Top 20 Genres nach Songanzahl — klicken für einen Zufallsmix', genreMixAll: 'Alle Songs', genreMixLoadMore: '10 weitere laden', genreMixNoGenres: 'Keine Genres auf dem Server gefunden.', shuffleGenres: 'Andere Genres anzeigen', filterPanelTitle: 'Filter', filterPanelDesc: 'Genre-Tag oder Künstlername in der Liste anklicken, um ihn aus zukünftigen Mixes auszuschließen.', genreClickHint: 'Genre-Tag anklicken,\num es als Filter-Keyword hinzuzufügen.\nPrüft Genre, Titel, Album & Künstler.', }, luckyMix: { done: 'Glücks-Mix bereit: {{count}} Titel', failed: 'Glücks-Mix konnte nicht erstellt werden. Bitte erneut versuchen.', unavailable: 'Glücks-Mix ist für diesen Server nicht verfügbar.', cancelTooltip: 'Glücks-Mix-Erstellung abbrechen', }, albums: { title: 'Alle Alben', sortByName: 'A–Z (Album)', sortByArtist: 'A–Z (Künstler)', sortNewest: 'Neueste zuerst', sortRandom: 'Zufällig', yearFrom: 'Von', yearTo: 'Bis', yearFilterClear: 'Jahresfilter zurücksetzen', yearFilterLabel: 'Jahr', compilationLabel: 'Sampler', compilationOnly: 'Nur Sampler', compilationHide: 'Ohne Sampler', compilationTooltipAll: 'Alle Alben · klicken: nur Sampler', compilationTooltipOnly: 'Nur Sampler · klicken: Sampler ausblenden', compilationTooltipHide: 'Sampler ausgeblendet · klicken: alle zeigen', select: 'Mehrfachauswahl', startSelect: 'Mehrfachauswahl aktivieren', cancelSelect: 'Abbrechen', selectionCount: '{{count}} ausgewählt', downloadZips: 'ZIPs herunterladen', addOffline: 'Offline hinzufügen', enqueueSelected_one: 'Einreihen ({{count}})', enqueueSelected_other: 'Einreihen ({{count}})', enqueueQueued_one: '{{count}} Album zur Warteschlange hinzugefügt', enqueueQueued_other: '{{count}} Alben zur Warteschlange hinzugefügt', downloadingZip: 'Lade {{current}}/{{total}} herunter: {{name}}', downloadZipDone: '{{count}} ZIP(s) heruntergeladen', downloadZipFailed: 'Download fehlgeschlagen: {{name}}', offlineQueuing: '{{count}} Album(s) für Offline einreihen…', offlineFailed: '{{name}} konnte nicht offline hinzugefügt werden', }, tracks: { title: 'Titel', subtitle: 'Stöbern. Suchen. Entdecken.', heroEyebrow: 'Titel des Moments', heroReroll: 'Anderen wählen', playSong: 'Abspielen', enqueueSong: 'Zur Warteschlange', railRandom: 'Zufallsauswahl', railHighlyRated: 'Hoch bewertet', browseTitle: 'Alle Titel durchstöbern', browseUnsupported: 'Dieser Server listet nicht die ganze Bibliothek auf einmal. Nutze die Suche oben, um bestimmte Titel zu finden.', searchPlaceholder: 'Titel, Künstler oder Album suchen…', count_one: '{{count}} Titel', count_other: '{{count}} Titel', }, artists: { title: 'Künstler', search: 'Suchen…', all: 'Alle', gridView: 'Gitteransicht', listView: 'Listenansicht', imagesOn: 'Künstlerbilder aktiv — kann Netzwerk- und Systemlast erhöhen', imagesOff: 'Künstlerbilder deaktiviert — zeigt nur Initialen', loadMore: 'Mehr laden', notFound: 'Keine Künstler gefunden.', albumCount_one: '{{count}} Album', albumCount_other: '{{count}} Alben', selectionCount: '{{count}} ausgewählt', select: 'Mehrfachauswahl', startSelect: 'Mehrfachauswahl aktivieren', cancelSelect: 'Abbrechen', addToPlaylist: 'Zur Playlist hinzufügen', }, composers: { title: 'Komponist*innen', search: 'Suchen…', notFound: 'Keine Komponist*innen gefunden.', unsupported: 'Komponist-Ansicht benötigt Navidrome 0.55 oder neuer.', loadFailed: 'Komponist*innen konnten nicht geladen werden.', retry: 'Erneut versuchen', involvedIn_one: 'Beteiligt an {{count}} Album', involvedIn_other: 'Beteiligt an {{count}} Alben', }, composerDetail: { back: 'Zurück', notFound: 'Komponist*in nicht gefunden.', about: 'Über diese*n Komponist*in', works: 'Werke', noWorks: 'Keine Werke gefunden.', workCount_one: '{{count}} Werk', workCount_other: '{{count}} Werke', shareComposer: 'Komponist*in teilen', unknownComposer: 'Komponist*in', }, login: { subtitle: 'Dein Navidrome Desktop Player', serverName: 'Server-Name (optional)', serverNamePlaceholder: 'Mein Navidrome', serverUrl: 'Server-URL', serverUrlPlaceholder: '192.168.1.100:4533 oder https://music.example.com', username: 'Benutzername', usernamePlaceholder: 'admin', password: 'Passwort', showPassword: 'Passwort anzeigen', hidePassword: 'Passwort verstecken', connect: 'Verbinden', connecting: 'Verbinde…', connected: 'Verbunden!', error: 'Verbindung fehlgeschlagen – bitte Daten prüfen.', urlRequired: 'Bitte Server-URL eingeben.', savedServers: 'Gespeicherte Server', addNew: 'Oder neuen Server hinzufügen', orMagicString: 'Oder Magic-String', magicStringPlaceholder: 'Freigabe-String einfügen (psysonic1-…)', magicStringInvalid: 'Ungültiger oder nicht lesbarer Magic-String.', }, connection: { connected: 'Verbunden', connectedTo: 'Verbunden mit {{server}}', disconnected: 'Getrennt', disconnectedFrom: '{{server}} nicht erreichbar — klicken für Einstellungen', checking: 'Verbinde…', extern: 'Extern', offlineTitle: 'Keine Serververbindung', offlineSubtitle: '{{server}} ist nicht erreichbar. Prüfe Netzwerk oder Server.', offlineModeBanner: 'Offline-Modus — Wiedergabe aus lokalem Cache', offlineNoCacheBanner: 'Keine Serververbindung — {{server}} nicht erreichbar', offlineLibraryTitle: 'Offline-Bibliothek', offlineLibraryEmpty: 'Noch keine Alben gecacht. Online gehen, Album öffnen und "Offline verfügbar machen" klicken.', offlineAlbumCount: '{{n}} Album', offlineAlbumCount_plural: '{{n}} Alben', offlineFilterAll: 'Alle', offlineFilterAlbums: 'Alben', offlineFilterPlaylists: 'Playlists', offlineFilterArtists: 'Diskografien', retry: 'Erneut versuchen', serverSettings: 'Server-Einstellungen', switchServerTitle: 'Server wechseln', switchServerHint: 'Klicken, um einen anderen gespeicherten Server zu wählen.', manageServers: 'Server verwalten…', switchFailed: 'Wechsel fehlgeschlagen — Server nicht erreichbar.', lastfmConnected: 'Last.fm verbunden als @{{user}}', lastfmSessionInvalid: 'Session ungültig — klicken zum Neu-Verbinden', }, common: { albums: 'Alben', album: 'Album', loading: 'Lade…', loadingMore: 'Lade…', loadingPlaylists: 'Lade Playlists…', noAlbums: 'Keine Alben gefunden.', downloading: 'Lade…', downloadZip: 'Download (ZIP)', back: 'Zurück', cancel: 'Abbrechen', close: 'Schließen', save: 'Speichern', delete: 'Löschen', use: 'Verwenden', add: 'Hinzufügen', new: 'Neu', active: 'Aktiv', download: 'Herunterladen', chooseDownloadFolder: 'Download-Ordner wählen', noFolderSelected: 'Kein Ordner ausgewählt', rememberDownloadFolder: 'Ordner merken', filterGenre: 'Genre-Filter', filterSearchGenres: 'Genres suchen…', filterNoGenres: 'Keine Genres gefunden', filterClear: 'Zurücksetzen', favorites: 'Favoriten', favoritesTooltipOff: 'Nur Favoriten anzeigen', favoritesTooltipOn: 'Alle anzeigen', play: 'Abspielen', bulkSelected: '{{count}} ausgewählt', clearSelection: 'Auswahl aufheben', bulkAddToPlaylist: 'Zur Playlist hinzufügen', bulkRemoveFromPlaylist: 'Aus Playlist entfernen', bulkClear: 'Auswahl aufheben', updaterAvailable: 'Update verfügbar', updaterVersion: 'v{{version}} verfügbar', updaterWebsite: 'Website', updaterModalTitle: 'Neue Version verfügbar', updaterChangelog: 'Was ist neu', updaterDownloadBtn: 'Jetzt herunterladen', updaterSkipBtn: 'Version überspringen', updaterRemindBtn: 'Später erinnern', updaterDone: 'Download abgeschlossen', updaterShowFolder: 'Im Ordner anzeigen', updaterInstallHint: 'Psysonic schließen und das Installationsprogramm manuell ausführen.', updaterAurHint: 'Update über AUR installieren:', updaterErrorMsg: 'Download fehlgeschlagen', updaterInstallNow: 'Jetzt installieren', updaterMacReadyTitle: 'Bereit zur Installation', updaterMacReady: 'Das Update wird heruntergeladen, verifiziert und direkt übernommen — keine DMG nötig. Die App startet anschließend automatisch neu.', updaterTrustNotarized: 'Von Apple beglaubigt', updaterTrustSignature: 'Signatur verifiziert', updaterMacDoneTitle: 'Update installiert', updaterRestartingIn: 'Neustart in {{n}}s …', updaterRestarting: 'Neustart läuft …', updaterRestartNow: 'Jetzt neu starten', updaterRetryBtn: 'Erneut versuchen', durationHoursMinutes: '{{hours}} Std. {{minutes}} Min.', durationMinutesOnly: '{{minutes}} Min.', updaterOpenGitHub: 'Auf GitHub öffnen', filters: 'Filter', more: 'mehr', yearRange: 'Jahresbereich', clearAll: 'Alles zurücksetzen', }, settings: { title: 'Einstellungen', language: 'Sprache', languageEn: 'Englisch', languageDe: 'Deutsch', languageFr: 'Französisch', languageNl: 'Niederländisch', languageZh: 'Chinesisch', languageNb: 'Norwegisch', languageRu: 'Russisch', font: 'Schriftart', theme: 'Design', appearance: 'Darstellung', servers: 'Server', serverName: 'Server-Name', serverUrl: 'Server-URL', serverUrlPlaceholder: '192.168.1.100:4533 oder https://music.example.com', serverUsername: 'Benutzername', serverPassword: 'Passwort', addServer: 'Server hinzufügen', addServerTitle: 'Neuen Server hinzufügen', useServer: 'Verwenden', deleteServer: 'Löschen', noServers: 'Keine Server gespeichert.', serverActive: 'Aktiv', confirmDeleteServer: 'Server „{{name}}" löschen?', 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 AudioMuse-AI-Navidrome-Plugin 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.', 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.', 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)', 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', lyricsModeStandard: 'Standard', lyricsModeStandardDesc: 'Drei Quellen mit frei wählbarer Reihenfolge: Server-Tags, LRCLIB, Netease.', lyricsModeLyricsplus: 'YouLyPlus (Karaoke)', lyricsModeLyricsplusDesc: 'Wort-für-Wort-Sync aus Apple Music, Spotify, Musixmatch & QQ (Community-Backend). Fällt still zurück auf die Standard-Quellen, wenn nichts gefunden wird.', 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.', 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 Opt-in 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: 'Startseite', 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', sidebarDrag: 'Ziehen zum Umsortieren', sidebarFixed: 'Immer sichtbar', 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', fsPlayerSection: 'Vollbild-Player', fsShowArtistPortrait: 'Künstlerfoto anzeigen', fsShowArtistPortraitDesc: 'Künstlerfoto (oder Albumcover) auf der rechten Seite des Vollbild-Players anzeigen.', fsPortraitDim: 'Abdunkelung des Fotos', fsLyricsStyle: 'Liedtext-Stil', fsLyricsStyleRail: 'Schiene', fsLyricsStyleRailDesc: 'Klassische 5-Zeilen-Schiene.', fsLyricsStyleApple: 'Scrollen', fsLyricsStyleAppleDesc: 'Vollbild-Scrollliste.', 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', }, changelog: { modalTitle: 'Was ist neu', dontShowAgain: 'Nicht mehr anzeigen', close: 'Verstanden', }, whatsNew: { title: 'Was ist neu', empty: 'Für diese Version liegt noch kein Changelog-Eintrag vor.', bannerTitle: 'Changelog', bannerCollapsed: 'Neu in v{{version}}', dismiss: 'Ausblenden', close: 'Schließen', }, help: { title: 'Hilfe', searchPlaceholder: 'Hilfe durchsuchen…', noResults: 'Keine passenden Themen. Versuche einen anderen Suchbegriff.', // ── Section 1: Erste Schritte ────────────────────────────────────────── s1: 'Erste Schritte', q1: 'Welche Server sind kompatibel?', a1: 'Psysonic ist primär für Navidrome gebaut und voll Subsonic-kompatibel — Gonic, Airsonic, LMS und andere Subsonic-API-Server funktionieren ebenfalls. Einige fortgeschrittene Features (Bewertungen, Smart Playlists, Magic-String-Sharing, User-Verwaltung) erfordern Navidrome.', q2: 'Wie füge ich einen Server hinzu?', a2: 'Einstellungen → Server → Server hinzufügen. URL eingeben (z. B. http://192.168.1.100:4533), Benutzername und Passwort. Psysonic testet die Verbindung vor dem Speichern — bei Fehler wird nichts gespeichert. Du kannst beliebig viele Server hinzufügen und im Header zwischen ihnen wechseln; immer ist nur einer aktiv.', q3: 'Schnelle UI-Tour?', a3: 'Sidebar (links) für Navigation, Mainstage / Seiten in der Mitte, Playerleiste unten, Warteschlangen-Panel rechts (über das Icon oben rechts neben dem Now-Playing-Indikator). Die Suche oben durchsucht die gesamte Bibliothek; "Now Playing" zeigt, was andere Nutzer auf dem gleichen Navidrome-Server gerade hören.', // ── Section 2: Wiedergabe & Warteschlange ────────────────────────────── s2: 'Wiedergabe & Warteschlange', q4: 'Wie nutze ich die Warteschlange?', a4: 'Warteschlangen-Panel oben rechts öffnen. Zeilen per Drag & Drop umsortieren, nach außen ziehen zum Entfernen, oder über die Toolbar mischen, als Playlist speichern oder zu einem Track springen. Zeilen lassen sich auch aus dem Panel heraus an andere Stellen ziehen.', q5: 'Gapless vs. Crossfade — was ist der Unterschied?', a5: 'Gapless puffert den nächsten Track vor, sodass keine Stille zwischen Songs entsteht (ideal für Live-Alben und DJ-Mixe). Crossfade blendet den aktuellen Track aus, während der nächste eingeblendet wird (1–10 s, gut für gemischte Mixe). Die zwei sind gegenseitig exklusiv — eines aktivieren deaktiviert das andere. Konfiguration in Einstellungen → Audio.', q6: 'Was ist die Infinite Queue?', a6: 'Wenn die Warteschlange leerläuft und Wiederholen aus ist, hängt Psysonic ähnliche / zufällige Tracks aus deiner Bibliothek hinten dran, sodass die Wiedergabe nie stoppt. Auto-hinzugefügte Tracks erscheinen unter dem Trenner „— Automatisch hinzugefügt —". Umschalten über das Unendlichkeits-Icon im Warteschlangen-Header; in Einstellungen → Warteschlange auf ein Genre einschränken.', q7: 'Mehrfachauswahl und Shift-Klick-Bereich?', a7: 'Im Mehrfach-Modus auf Alben / New Releases / Random Albums / Playlists: Klick toggelt einen Eintrag, dann Shift halten und einen anderen Eintrag klicken — alles dazwischen in der sichtbaren Reihenfolge wird ausgewählt. Shift-Klicks erweitern vom zuletzt geklickten Anker. Die Toolbar oben bietet Bulk-Aktionen (Queue, Download, Löschen usw.).', q8: 'Tastenkürzel und globale Hotkeys?', a8: 'Standard-In-App-Tasten: Leertaste = Play / Pause, Esc = Vollbild / Modal schließen, F1 = Shortcut-Spickzettel. Einstellungen → Eingabe lässt jede In-App-Aktion neu zuweisen (auch als Akkorde wie Strg+Shift+P) und systemweite globale Shortcuts setzen, die auch im Hintergrund oder minimiert funktionieren. Medientasten (Play/Pause, Weiter, Zurück) funktionieren auf allen Plattformen.', // ── Section 3: Audio-Werkzeuge ───────────────────────────────────────── s3: 'Audio-Werkzeuge', q9: 'Replay-Gain-Modi?', a9: 'Einstellungen → Audio → Replay Gain. Track-Modus normalisiert jeden Song auf einen Zielpegel. Album-Modus erhält die Lautstärke-Kurve innerhalb eines Albums. Auto-Modus wählt Track oder Album je nachdem, ob die Warteschlange aus einem einzelnen Album stammt. Tracks ohne Replay-Gain-Tags fallen auf einen konfigurierbaren Preamp zurück.', q10: 'Was ist Smart Loudness Normalization (LUFS)?', a10: 'Eine moderne Alternative zu Replay Gain in Einstellungen → Audio. Psysonic analysiert jeden Track nach LUFS / EBU R128 und speichert das Ergebnis, sodass die Lautstärke über die gesamte Bibliothek konsistent ist — auch bei Tracks ohne Replay-Gain-Tags. Die Cold-Cache-Analyse läuft im Hintergrund und nutzt 35–40 % CPU für ~1 Minute, danach 0. Ziel-Lautstärke (Standard −10 LUFS) einmal festlegen.', q11: 'EQ und AutoEQ?', a11: 'Ein 10-Band-Parametrik-EQ in Einstellungen → Audio → Equalizer mit manuellen Bändern und Presets. AutoEQ daneben holt ein gemessenes Korrekturprofil für dein Kopfhörermodell aus der AutoEQ-Datenbank und überträgt es automatisch auf die Bänder — Kopfhörer wählen, der EQ rastet auf der korrekten Kurve ein.', q12: 'Wie wechsle ich das Audio-Ausgabegerät?', a12: 'Einstellungen → Audio → Ausgabegerät. Psysonic listet alle verfügbaren Ausgaben und wechselt sofort beim Auswählen. Der Aktualisierungs-Button scannt nach Geräten, die nach dem Start angeschlossen wurden. Linux-ALSA-Namen wie „sysdefault" werden für die Lesbarkeit automatisch bereinigt.', q13: 'Was ist der Hot Cache?', a13: 'Der Hot Cache lädt den aktuellen Track plus die nächsten in den RAM und auf die Festplatte vor, sodass die Wiedergabe ohne Pufferverzögerung startet — besonders nützlich bei langsamen / entfernten Servern. Eviction greift, wenn das Größenlimit erreicht ist. Größe und Debounce-Verzögerung (damit schnelle Skips nicht überfetchen) in Einstellungen → Audio.', // ── Section 4: Bibliothek & Discovery ────────────────────────────────── s4: 'Bibliothek & Discovery', q14: 'Wie funktionieren Bewertungen und Skip-to-1★?', a14: 'Psysonic unterstützt 1–5-Sterne-Bewertungen über OpenSubsonic (Navidrome ≥ 0.53). Songs in Tracklisten, im Rechtsklick-Menü oder in der Playerleiste unter dem Künstlernamen bewerten; Alben auf der Albumseite; Künstler auf der Künstlerseite. Skip-to-1★ (Einstellungen → Bibliothek → Bewertungen) vergibt automatisch 1 Stern nach einer konfigurierbaren Anzahl aufeinanderfolgender Skips. Im selben Panel lässt sich eine Mindestbewertung als Filter für Random Mix und andere Mixes setzen.', q15: 'Wie browse ich — Ordner, Genres, Tracks?', a15: 'Der Ordner-Browser (Sidebar) navigiert durch das Musikverzeichnis des Servers im Miller-Column-Layout — Klick auf Ordner zum Öffnen, Klick auf Track oder Play-Icon eines Ordners zum Abspielen / Hinzufügen. Genres nutzt eine nach Track-Anzahl skalierte Tag-Cloud; Klick auf ein Genre öffnet es. Tracks ist ein flacher Library-Hub mit spaltensortierbarer virtueller Liste und Live-Suche.', q16: 'Suche und erweiterte Suche?', a16: 'Die Header-Suche läuft live während der Eingabe und durchsucht Künstler, Alben und Tracks. Die erweiterte Suche (Sidebar) bietet eine reichere Sicht: Filter nach Jahr, Genre, Bewertung, Format, Kanälen, Sample-Rate, BPM, Stimmung, kombinierbar. Rechtsklick auf jeden Treffer öffnet das gleiche Kontextmenü wie überall sonst in der App.', q17: 'Was sind die Mixes (Random / Genre / Super Genre / Lucky)?', a17: 'Random Mix erstellt eine Playlist aus zufälligen Tracks deiner Bibliothek; der Schlüsselwort-Filter schließt Hörbücher, Comedy etc. nach Genre / Titel / Album-Substrings aus. Super-Genre-Mix gruppiert deine Bibliothek in breite Stile (Rock, Metal, Electronic, Jazz, Klassik …) und erstellt einen fokussierten Mix. Lucky Mix nutzt Hörhistorie, Bewertungen und AudioMuse-AI-ähnliche Tracks, um per Klick eine sofortige Playlist zu bauen.', q18: 'Statistik-Seite?', a18: 'Statistik (Sidebar) zeigt Top-Künstler, Top-Alben, Top-Tracks, Genre-Verteilung, Hörzeit über die Zeit und pro Bibliothek, wenn mehrere Music Folder konfiguriert sind. Mehrere Ansichten lassen sich als teilbares Card-Bild exportieren.', q19: 'Wie lade ich ein Album als ZIP herunter?', a19: 'Albumseite → „Download (ZIP)". Der Server packt das Album zuerst — bei großen oder verlustfreien Alben (FLAC / WAV) erscheint der Fortschrittsbalken erst, wenn das Zippen fertig ist und der Transfer beginnt. Das ist normal.', // ── Section 5: Lyrics ────────────────────────────────────────────────── s5: 'Lyrics', q20: 'Woher kommen die Lyrics?', a20: 'Drei Quellen, konfigurierbar in Einstellungen → Lyrics: Navidrome-Server (eingebettete / OpenSubsonic-Lyrics), LRCLIB (community-gepflegte synchronisierte Texte) und NetEase Cloud Music (umfangreicher asiatischer + internationaler Katalog). Jede Quelle aktivieren / deaktivieren und per Drag & Drop priorisieren.', q21: 'Wie zeige ich Lyrics während der Wiedergabe?', a21: 'Klick auf das Mikrofon-Icon in der Playerleiste öffnet den Lyrics-Tab im Warteschlangen-Panel. Synchronisierte Lyrics scrollen automatisch und unterstützen Klick-zum-Springen; reine Texte scrollen als statischer Block. Den Vollbild-Player über das Cover in der Playerleiste öffnen für eine immersive Lyrics-Ansicht mit Mesh-Blob-Hintergrund.', // ── Section 6: Sharing & Social ──────────────────────────────────────── s6: 'Sharing & Social', q22: 'Was sind Magic Strings?', a22: 'Magic Strings sind kurze Copy-Paste-Tokens, die Dinge zwischen Psysonic-Nutzern ohne Drittanbieter-Server teilen. Server-Einladungs-Strings ermöglichen einem Freund das Onboarding auf deinem Navidrome mit einem Paste; Album- / Künstler- / Queue-Magic-Strings öffnen dasselbe Album / denselben Künstler / dieselbe Queue beim Empfänger. Aus dem Teilen-Menü generieren, in die Suche einfügen zum Konsumieren.', q23: 'Was ist Orbit?', a23: 'Orbit ist synchrones Zusammenhören: ein Host spielt einen Track, alle Gäste hören ihn synchron, und Gäste können Songs vorschlagen, die der Host in die Queue annehmen kann. Session über den Orbit-Button im Header starten, Einladungslink teilen, andere können von jeder Psysonic-Installation beitreten. Der Host kontrolliert die Wiedergabe (Skip, Seek, Queue) — Gäste sehen den Stand in Echtzeit und können Vorschläge machen. Sessions sind ephemer und enden, wenn der Host sie schließt.', q24: 'Was ist das Now-Playing-Dropdown?', a24: 'Das Broadcast-Symbol oben rechts im Header zeigt, was andere Nutzer auf deinem Navidrome-Server gerade hören, aktualisiert alle 10 Sekunden. Der eigene Eintrag verschwindet sofort beim Pausieren. Per-Server — Nutzer auf einem anderen aktiven Server werden nicht angezeigt.', // ── Section 7: Personalisierung ──────────────────────────────────────── s7: 'Personalisierung', q25: 'Themes und der Theme-Scheduler?', a25: 'Einstellungen → Darstellung → Theme bietet 60+ Themes in 8 Gruppen (Psysonic, Mediaplayer, Betriebssysteme, Spiele, Filme, Serien, Social Media, Open Source Classics — Catppuccin / Nord / Gruvbox / Nightfox / Dracula). Auto-Switch-Theme erlaubt das Setzen von Tag- und Nacht-Theme mit Startzeiten, sodass Psysonic automatisch wechselt.', q26: 'Kann ich Sidebar, Home und Künstlerseite anpassen?', a26: 'Ja — Einstellungen → Personalisierung. Der Sidebar-Customizer erlaubt das Umsortieren der Nav-Items per Drag und das Ausblenden ungenutzter. Der Home-Customizer schaltet jede Mainstage-Reihe (Hero, Recent, Discover, Recently Played, Starred …) ein/aus. Der Artist-Page-Customizer ordnet die Sektionen (Top Songs, Alben, Singles, Compilations, ähnliche Künstler usw.) um und blendet ungenutzte aus.', q27: 'Was ist der Mini-Player?', a27: 'Ein kleines schwebendes Fenster mit Cover, Transport-Controls und kompakter Queue. Über das Mini-Player-Icon in der Playerleiste oder das zugehörige Tastenkürzel öffnen. Das Fenster merkt sich Position und Größe zwischen Sessions. Auf Windows wird die Mini-Webview beim Start vorerstellt, sodass das Öffnen sofort geschieht; Linux / macOS aktivieren das optional über Einstellungen → Darstellung → Mini-Player vorladen.', q28: 'Was ist die Floating Player Bar?', a28: 'Eine optionale Playerleisten-Variante (Einstellungen → Darstellung), die sich mit themed Hintergrund, Akzent-Border, abgerundetem Cover und zentriertem Lautstärke-Bereich vom unteren Rand löst. Nützlich auf hohen Monitoren oder kompakten Themes.', q29: 'Track-Vorschau beim Hovern?', a29: 'Über eine Track-Zeile hovern, den kleinen Vorschau-Button auf dem Cover klicken oder die Vorschau über das Rechtsklick-Menü auslösen — Psysonic streamt die ersten ~15 s durch dieselbe Rust-Audio-Engine, sodass Loudness-Normalisierung greift. Praktisch beim Durchblättern eines neuen Albums.', q30: 'Sleep-Timer?', a30: 'Klick auf das Mond-Icon in der Playerleiste öffnet den Sleep-Timer. Eine Dauer wählen (oder „Ende des aktuellen Tracks") und Psysonic blendet aus und pausiert am Ende. Der Button zeigt einen Kreis-Ring und einen Countdown im Button, während der Timer läuft.', q31: 'UI-Skalierung, Schrift, Seekbar-Stil?', a31: 'Einstellungen → Darstellung — Anzeigeskalierung (80–125 %, ohne System-Schriftgröße zu beeinflussen), Schrift (10 UI-Schriften, u. a. IBM Plex Mono, Fira Code, Geist, Golos Text …), Seekbar-Stil (Wellenform analysiert / Pseudowave deterministisch / Linie & Punkt / Balken / Dicker Balken / Segmentiert / Neon-Glow / Pulswelle / Partikelspur / Flüssigfüllung / Retro-Tape).', // ── Section 8: Power User ────────────────────────────────────────────── s8: 'Power User', q32: 'CLI-Player-Steuerung?', a32: 'Das Psysonic-Binary kann als Fernsteuerung dienen. Beispiele: psysonic --player play / pause / next / prev, --player volume 75, --player seek 15, --player shuffle, --player repeat off|all|one, --player rating 1-5. Server, Audiogeräte, Bibliotheken wechseln; Instant Mix triggern; Künstler / Alben / Tracks suchen. Vollständige Liste mit psysonic --player --help. Shell-Completions für bash und zsh über psysonic completions.', q33: 'Smart Playlists (Navidrome)?', a33: 'Smart Playlists sind serverseitige dynamische Playlists, die durch Regeln definiert werden (Genre = Rock UND Jahr > 2020 etc.). Die Playlists-Seite in Psysonic erlaubt das Erstellen, Bearbeiten und Löschen mit visuellem Regel-Editor — Psysonic spricht dafür mit der Navidrome Native API. Sie verhalten sich wie normale Playlists im Rest der App und aktualisieren sich automatisch, wenn sich die Bibliothek ändert.', q34: 'Einstellungen sichern und wiederherstellen?', a34: 'Einstellungen → Storage → Backup & Restore exportiert Server-Profile, Themes, Tastenkürzel und andere Einstellungen in eine einzige JSON-Datei. Auf einem anderen Gerät oder nach einer Neuinstallation importieren, um alles auf einmal wiederherzustellen. Server-Passwörter sind enthalten — Datei sicher aufbewahren.', q35: 'Wo sehe ich alle Open-Source-Lizenzen?', a35: 'Einstellungen → System → Open Source Licenses. Die volle Abhängigkeitsliste (Cargo-Crates und npm-Pakete) wird mit gebündelten Lizenztexten ausgeliefert. Klick auf einen Eintrag öffnet den vollen Text; der kuratierte Highlight-Block oben hebt die User-bekannten Bibliotheken hervor (Tauri, React, rodio, symphonia usw.).', // ── Section 9: Offline & Sync ────────────────────────────────────────── s9: 'Offline & Sync', q36: 'Offline-Modus — Alben und Playlists cachen?', a36: 'Album oder Playlist öffnen und das Download-Icon im Header klicken — Psysonic cacht jeden Track lokal, sodass er ohne Netzwerkzugriff abspielt. Die Offline-Bibliothek (Sidebar) listet alles Gecachte, zeigt laufende Downloads und erlaubt das Entfernen über das Papierkorb-Icon (das nach Abschluss erscheint).', q37: 'Offline-Speicherlimit?', a37: 'Einstellungen → Bibliothek → Offline lässt eine maximale Cache-Größe setzen. Wird das Limit erreicht, zeigt die Albumseite einen Warnhinweis. Speicher freigeben durch Entfernen von Alben oder Playlists in der Offline-Bibliothek.', q38: 'Device Sync — Musik auf USB / SD?', a38: 'Device Sync (Sidebar) kopiert Alben, Playlists oder ganze Künstler auf ein externes Laufwerk für Offline-Hören auf anderen Geräten. Zielordner wählen, Quellen aus den Browser-Tabs auswählen, „Auf Gerät übertragen" klicken. Psysonic schreibt ein Manifest (psysonic-sync.json), sodass es weiß, welche Dateien bereits dort sind, auch beim Wieder-Öffnen unter einem anderen OS mit anderer Vorlage. Vorlagen unterstützen {artist} / {album} / {title} / {track_number} / {disc_number} / {year}-Tokens mit / als Ordner-Trennzeichen.', // ── Section 10: Integrationen & Fehlerbehebung ───────────────────────── s10: 'Integrationen & Fehlerbehebung', q39: 'Last.fm-Scrobbling?', a39: 'Einstellungen → Integrationen → Last.fm. Konto einmal verbinden, Psysonic scrobbelt direkt zu Last.fm — keine Navidrome-Konfiguration nötig. Ein Scrobble wird gesendet, wenn 50 % eines Tracks gehört wurden. Now-Playing-Pings gehen zu Beginn raus.', q40: 'Discord Rich Presence?', a40: 'Einstellungen → Integrationen → Discord zeigt deinen aktuellen Track auf deinem Discord-Profil. Wahl zwischen App-Icon, Cover-Art deines Servers (über getAlbumInfo2 — benötigt einen öffentlich erreichbaren Server) oder Apple-Music-Covern. Anzeige-Strings (Details, Status, Tooltip) per Token-Templates anpassen.', q41: 'Bandsintown-Tour-Daten?', a41: 'Opt-in unter Einstellungen → Integrationen → Now-Playing-Info. Der Now-Playing-Tab auf der Now-Playing-Seite zeigt dann kommende Tour-Daten für den laufenden Künstler über die Bandsintown-Widget-API. Standardmäßig aus — keine Anfragen, bevor aktiviert.', q42: 'Internet Radio — Live-Streams abspielen?', a42: 'Internet Radio (Sidebar) spielt jeden auf deinem Navidrome-Server gespeicherten Live-Stream (Sender über die Navidrome-Admin-UI hinzufügen). Wiedergabe läuft über die HTML5-Audio-Engine des Browsers — die meisten EQ- / Replay-Gain- / Loudness-Einstellungen gelten nicht für Radio, aber ICY-Metadaten (aktueller Songname) werden angezeigt. Unterstützt MP3, AAC, OGG Vorbis und die meisten HLS-Streams; Codec-Support hängt von der Plattform ab.', q43: 'Der Verbindungstest schlägt fehl — was tun?', a43: 'URL inklusive Port doppelt prüfen (z. B. http://192.168.1.100:4533). Im lokalen Netzwerk klappt http:// oft, wo https:// nicht funktioniert (kein Zertifikat). Sicherstellen, dass keine Firewall den Port blockiert und dass Benutzername und Passwort stimmen. Bei Servern hinter einem Reverse-Proxy zuerst die direkte URL probieren, um die Ursache einzugrenzen.', q44: 'Cover und Künstlerbilder laden langsam.', a44: 'Bilder werden beim ersten Aufruf vom Server geholt und dann 30 Tage lokal gecacht. Bei langsamen Server-Festplatten kann der erste Seitenaufruf einen Moment dauern; danach sind sie sofort da. Der Hot Cache hilft auch bei Tracks, der Bild-Cache ist davon unabhängig.', q45: 'Linux-Probleme — schwarzer Bildschirm oder kein Ton?', a45: 'Schwarzer Bildschirm ist meist ein GPU- / EGL-Treiberproblem in WebKitGTK — mit GDK_BACKEND=x11 WEBKIT_DISABLE_COMPOSITING_MODE=1 WEBKIT_DISABLE_DMABUF_RENDERER=1 starten (die AUR- / .deb- / .rpm-Installer setzen das automatisch). Für Audio sicherstellen, dass PipeWire oder PulseAudio läuft. Tonaussetzer nach Sleep / Wake werden mittlerweile vom Post-Sleep-Recovery-Hook automatisch behandelt.', }, queue: { title: 'Warteschlange', savePlaylist: 'Playlist speichern', updatePlaylist: 'Playlist aktualisieren', filterPlaylists: 'Playlists filtern…', playlistName: 'Name der Playlist', cancel: 'Abbrechen', save: 'Speichern', loadPlaylist: 'Playlist laden', loading: 'Lade…', noPlaylists: 'Keine Playlists gefunden.', load: 'Warteschlange ersetzen & abspielen', appendToQueue: 'An Warteschlange anhängen', delete: 'Löschen', deleteConfirm: 'Playlist "{{name}}" löschen?', clear: 'Leeren', shuffle: 'Warteschlange mischen', gapless: 'Nahtlos', crossfade: 'Crossfade', infiniteQueue: 'Endlose Warteschlange', autoAdded: '— Automatisch hinzugefügt —', radioAdded: '— Radio —', hide: 'Verbergen', hideNowPlaying: 'Wiedergabeinformationen ausblenden', showNowPlaying: 'Wiedergabeinformationen anzeigen', close: 'Schließen', nextTracks: 'Nächste Titel', shareQueue: 'Warteschlangen-Link kopieren', shareQueueEmpty: 'Die Warteschlange ist leer — nichts zu teilen.', emptyQueue: 'Die Warteschlange ist leer.', trackSingular: 'Titel', trackPlural: 'Titel', showRemaining: 'Restzeit anzeigen', showTotal: 'Gesamtzeit anzeigen', showEta: 'Endzeit anzeigen', replayGain: 'ReplayGain', rgTrack: 'T {{db}} dB', rgAlbum: 'A {{db}} dB', rgPeak: 'Peak {{pk}}', sourceOffline: 'Wiedergabe aus der Offline-Bibliothek', sourceHot: 'Wiedergabe aus dem Cache', sourceStream: 'Wiedergabe aus dem Netzwerkstream', }, miniPlayer: { showQueue: 'Warteschlange einblenden', hideQueue: 'Warteschlange ausblenden', pinOnTop: 'Im Vordergrund halten', pinOff: 'Vordergrund deaktivieren', openMainWindow: 'Hauptfenster öffnen', close: 'Schließen', emptyQueue: 'Die Warteschlange ist leer', }, statistics: { title: 'Statistiken', recentlyPlayed: 'Zuletzt gehört', mostPlayed: 'Meistgespielte Alben', highestRated: 'Höchstbewertete Alben', genreDistribution: 'Genre-Verteilung (Top 20)', loadMore: 'Mehr laden', statArtists: 'Künstler', statArtistsTooltip: 'Nur Album-Künstler — Künstler, die ausschließlich als Track-Künstler vorkommen (Featured, Gast usw.) und kein eigenes Album haben, werden nicht gezählt.', statAlbums: 'Alben', statSongs: 'Songs', statGenres: 'Genres', statPlaytime: 'Gesamtspielzeit', genreInsights: 'Genre-Einblicke', formatDistribution: 'Format-Verteilung', formatSample: 'Stichprobe von {{n}} Titeln', computing: 'Wird berechnet…', genreSongs: '{{count}} Songs', genreAlbums: '{{count}} Alben', recentlyAdded: 'Neu hinzugefügt', decadeDistribution: 'Alben nach Jahrzehnt', decadeAlbums_one: '{{count}} Album', decadeAlbums_other: '{{count}} Alben', decadeUnknown: 'Unbekannt', lfmTitle: 'Last.fm Statistiken', lfmTopArtists: 'Top-Künstler', lfmTopAlbums: 'Top-Alben', lfmTopTracks: 'Top-Titel', lfmPlays: '{{count}} Plays', lfmPeriodOverall: 'Gesamt', lfmPeriod7day: '7 Tage', lfmPeriod1month: '1 Monat', lfmPeriod3month: '3 Monate', lfmPeriod6month: '6 Monate', lfmPeriod12month: '12 Monate', lfmNotConnected: 'Verbinde Last.fm in den Einstellungen, um deine Statistiken zu sehen.', lfmRecentTracks: 'Zuletzt gescrobbelt', lfmNowPlaying: 'Läuft gerade', lfmJustNow: 'gerade eben', lfmMinutesAgo: 'vor {{n}} Min.', lfmHoursAgo: 'vor {{n}} Std.', lfmDaysAgo: 'vor {{n}} Tagen', topRatedSongs: 'Bestbewertete Songs', topRatedArtists: 'Bestbewertete Künstler', noRatedSongs: 'Noch keine bewerteten Songs. Songs in Album- oder Playlist-Ansicht bewerten.', noRatedArtists: 'Noch keine bewerteten Künstler.', exportShare: 'Teilen', exportTitle: 'Top-Alben teilen', exportSubtitle: 'Ein teilbares Bild deiner meistgespielten Alben erstellen.', exportFormat: 'Format', exportFormatStory: 'Story', exportFormatSquare: 'Quadrat', exportFormatTwitter: 'Twitter-Card', exportGrid: 'Raster', exportGridLabel: '{{n}}×{{n}}', exportPreview: 'Vorschau', exportGenerate: 'Erstellen', exportSave: 'Bild speichern…', exportCancel: 'Abbrechen', exportFooterLabel: 'Top-Alben', exportNotEnough: 'Für ein {{n}}×{{n}}-Raster braucht es mindestens {{count}} Alben in der Library.', exportSaving: 'Speichere…', exportSaved: 'Gespeichert.', exportSaveFailed: 'Bild konnte nicht gespeichert werden.', }, player: { regionLabel: 'Musikplayer', openFullscreen: 'Vollbild-Player öffnen', fullscreen: 'Vollbild-Player', closeFullscreen: 'Vollbild schließen', closeTooltip: 'Schließen (Esc)', noTitle: 'Kein Titel', stop: 'Stop', prev: 'Vorheriger Titel', play: 'Play', pause: 'Pause', previewActive: 'Vorschau läuft', previewLabel: 'Vorschau', delayModalTitle: 'Timer', delayPauseSection: 'Pause nach', delayStartSection: 'Start nach', delayPreviewPause: 'Pause um', delayPreviewStart: 'Start um', delaySchedulePause: 'Pause planen', delayScheduleStart: 'Start planen', delayCancelPause: 'Pause-Timer abbrechen', delayCancelStart: 'Start-Timer abbrechen', delayInactivePause: 'Nur während der Wiedergabe verfügbar.', delayInactiveStart: 'Nur in Pause mit geladenem Titel oder Radio.', delayCustomMinutes: 'Eigene Dauer (Minuten)', delayCustomPlaceholder: 'z. B. 2,5', closeDelayModal: 'Schließen', delayIn: 'in', delayFmtSec: '{{n}} s', delayFmtMin: '{{n}} Min', delayFmtHr: '{{n}} Std', delayCancel: 'Abbrechen', delayApply: 'Übernehmen', next: 'Nächster Titel', repeat: 'Wiederholen', repeatOff: 'Aus', repeatAll: 'Alle', repeatOne: 'Einen', progress: 'Songfortschritt', volume: 'Lautstärke', toggleQueue: 'Warteschlange umschalten', collapseQueueResize: 'Warteschlange einklappen, Breite ändern', moreOptions: 'Weitere Optionen', equalizer: 'Equalizer', miniPlayer: 'Mini-Player', lyrics: 'Lyrics', fsLyricsToggle: 'Lyrics im Vollbild', lyricsLoading: 'Lyrics werden geladen…', lyricsNotFound: 'Keine Lyrics für diesen Titel gefunden', lyricsSourceServer: 'Quelle: Server', lyricsSourceLrclib: 'Quelle: LRCLIB', lyricsSourceNetease: 'Quelle: Netease', lyricsSourceLyricsplus: 'Quelle: YouLyPlus', showDuration: 'Dauer anzeigen', showRemainingTime: 'Verbleibende Zeit anzeigen', }, nowPlayingInfo: { tab: 'Info', empty: 'Spiele etwas, um Infos zu sehen', artist: 'Künstler*in', songInfo: 'Songinfos', onTour: 'Auf Tour', noTourEvents: 'Keine bevorstehenden Konzerte', tourLoading: 'Wird geladen…', poweredByBandsintown: 'Tourdaten via Bandsintown', bioReadMore: 'Mehr anzeigen', bioReadLess: 'Weniger anzeigen', showMoreTours_one: '{{count}} weiteres anzeigen', showMoreTours_other: '{{count}} weitere anzeigen', showLessTours: 'Weniger anzeigen', enableBandsintownPrompt: 'Anstehende Konzerte anzeigen?', enableBandsintownPromptDesc: 'Optional. Lädt Tourdaten der aktuellen Künstler*in über die öffentliche Bandsintown-API.', enableBandsintownPrivacy: 'Beim Aktivieren wird der Name der aktuell gespielten Künstler*in an die Bandsintown-API übertragen, um Tourdaten abzurufen. Es werden keine Konto- oder persönlichen Daten gesendet.', enableBandsintownAction: 'Aktivieren', role: { artist: 'Hauptkünstler*in', albumArtist: 'Album-Künstler*in', composer: 'Komponist*in', }, }, songInfo: { title: 'Song-Infos', songTitle: 'Titel', artist: 'Künstler', album: 'Album', albumArtist: 'Album-Künstler', year: 'Jahr', genre: 'Genre', duration: 'Länge', track: 'Track', format: 'Format', bitrate: 'Bitrate', sampleRate: 'Abtastrate', bitDepth: 'Bittiefe', channels: 'Kanäle', fileSize: 'Dateigröße', path: 'Speicherort', replayGainTrack: 'RG Track Gain', replayGainAlbum: 'RG Album Gain', replayGainPeak: 'RG Track Peak', mono: 'Mono', stereo: 'Stereo', }, playlists: { title: 'Playlists', newPlaylist: 'Neue Playlist', unnamed: 'Unbenannte Playlist', createName: 'Playlist-Name…', create: 'Erstellen', cancel: 'Abbrechen', empty: 'Noch keine Playlists.', emptyPlaylist: 'Diese Playlist ist leer.', addFirstSong: 'Ersten Song hinzufügen', notFound: 'Playlist nicht gefunden.', songs: '{{n}} Songs', playAll: 'Alle abspielen', shuffle: 'Zufallswiedergabe', addToQueue: 'Zur Warteschlange', back: 'Zurück zu Playlists', deletePlaylist: 'Löschen', confirmDelete: 'Nochmals klicken zum Bestätigen', removeSong: 'Aus Playlist entfernen', addSongs: 'Songs hinzufügen', searchPlaceholder: 'Bibliothek durchsuchen…', noResults: 'Keine Ergebnisse.', suggestions: 'Vorgeschlagene Songs', noSuggestions: 'Keine Vorschläge verfügbar.', titleBadge: 'Playlist', refreshSuggestions: 'Neue Vorschläge', addSong: 'Zur Playlist hinzufügen', preview: 'Vorschau (30 s)', previewStop: 'Vorschau stoppen', playNextSuggestion: 'Als Nächstes spielen', suggestionsHint: 'Doppelklick auf eine Zeile fügt sie zur Playlist hinzu', addSelected: 'Ausgewählte hinzufügen', cacheOffline: 'Playlist offline speichern', offlineCached: 'Playlist gecacht', removeOffline: 'Aus Offline-Cache entfernen', offlineDownloading: 'Wird gecacht… ({{done}}/{{total}} Alben)', publicLabel: 'Öffentlich', privateLabel: 'Privat', editMeta: 'Playlist bearbeiten', editNamePlaceholder: 'Playlist-Name…', editCommentPlaceholder: 'Beschreibung hinzufügen…', editPublic: 'Öffentliche Playlist', editSave: 'Speichern', editCancel: 'Abbrechen', changeCover: 'Coverbild ändern', changeCoverLabel: 'Foto ändern', removeCover: 'Foto entfernen', coverUpdated: 'Cover aktualisiert', metaSaved: 'Playlist aktualisiert', downloadZip: 'Herunterladen (ZIP)', // Toast notifications for multi-select addSuccess: '{{count}} Songs zu {{playlist}} hinzugefügt', addPartial: '{{added}} hinzugefügt, {{skipped}} übersprungen (Duplikate)', addAllSkipped: 'Alle übersprungen ({{count}} Duplikate)', addedAsDuplicates: '{{count}} Songs zu {{playlist}} hinzugefügt (als Duplikate)', duplicateConfirmTitle: 'Bereits in Playlist', duplicateConfirmMessage: 'Alle {{count}} Songs sind bereits in "{{playlist}}". Trotzdem als Duplikate hinzufügen?', duplicateConfirmAction: 'Trotzdem hinzufügen', addError: 'Fehler beim Hinzufügen von Songs', createAndAddSuccess: 'Playlist "{{playlist}}" mit {{count}} Songs erstellt', createError: 'Fehler beim Erstellen der Playlist', deleteSuccess: '{{count}} Playlists gelöscht', deleteFailed: 'Fehler beim Löschen von {{name}}', deleteSelected: 'Ausgewählte löschen', deleteSelectedPartial: 'Nur {{n}} von {{total}} ausgewählten Playlists können gelöscht werden (die anderen gehören jemand anderem).', mergeSuccess: '{{count}} Songs in {{playlist}} zusammengeführt', mergeNoNewSongs: 'Keine neuen Songs zum Hinzufügen', mergeError: 'Fehler beim Zusammenführen von Playlists', mergeInto: 'Zusammenführen in', selectionCount: '{{count}} ausgewählt', select: 'Auswählen', startSelect: 'Auswahl aktivieren', cancelSelect: 'Abbrechen', loadingAlbums: '{{count}} Alben werden aufgelöst…', loadingArtists: '{{count}} Künstler werden aufgelöst…', myPlaylists: 'Meine Playlists', noOtherPlaylists: 'Keine anderen Playlists verfügbar', addToPlaylistSuccess: '{{count}} Songs zu {{playlist}} hinzugefügt', addToPlaylistNoNew: 'Keine neuen Songs für {{playlist}}', addToPlaylistError: 'Fehler beim Hinzufügen zur Playlist', removeSuccess: 'Song aus Playlist entfernt', removeError: 'Fehler beim Entfernen aus der Playlist', importCSV: 'CSV importieren', importCSVTooltip: 'Aus Spotify-CSV importieren', csvImportReport: 'CSV-Importbericht', csvImportTotal: 'Gesamt', csvImportAdded: 'Hinzugefügt', csvImportDuplicates: 'Duplikate', csvImportNotFound: 'Nicht gefunden', csvImportNetworkErrors: 'Netzwerkfehler', csvImportDuplicatesTitle: 'Doppelte Titel (bereits in Playlist):', csvImportNotFoundTitle: 'Nicht gefundene Titel:', csvImportNetworkErrorsTitle: 'Netzwerkfehler (Import kann wiederholt werden):', csvImportDownloadReport: 'Bericht herunterladen', csvImportClose: 'Schließen', csvImportNoValidTracks: 'Keine gültigen Titel in CSV-Datei gefunden', csvImportFailed: 'CSV-Import fehlgeschlagen', csvImportToast: '{{added}} hinzugefügt, {{notFound}} nicht gefunden, {{duplicates}} Duplikate', csvImportDownloadSuccess: 'Bericht erfolgreich heruntergeladen', csvImportDownloadError: 'Bericht konnte nicht heruntergeladen werden', }, smartPlaylists: { sectionBasic: '1. Basis', sectionGenres: '2. Genres', sectionYearsAndFilters: '3. Jahre und Filter', genreMode: 'Genre-Modus', genreModeInclude: 'Genres einschließen', genreModeExclude: 'Genres ausschließen', genreSearchPlaceholder: 'Genres filtern...', availableGenres: 'Verfügbar', selectedGenres: 'Ausgewählt', yearMode: 'Jahresmodus', yearModeInclude: 'Bereich einschließen', yearModeExclude: 'Bereich ausschließen', name: 'Name (ohne Präfix)', limit: 'Limit', limitHint: 'Wie viele Songs in die Playlist aufgenommen werden (1-{{max}}, üblicherweise 50).', artistContains: 'Künstler enthält…', albumContains: 'Album enthält…', titleContains: 'Titel enthält…', minRating: 'Mindestbewertung', minRatingAria: 'Mindestbewertung für Smart Playlist', minRatingHint: '0 deaktiviert die Mindestgrenze; 1-5 behält Songs mit Bewertung über dem gewählten Wert.', fromYear: 'Von Jahr', toYear: 'Bis Jahr', excludeUnrated: 'Unbewertete Songs ausschließen', compilationOnly: 'Nur Sammlungen', create: 'Neue Smart Playlist', save: 'Smart Playlist speichern', created: '{{name}} erstellt', updated: '{{name}} aktualisiert', createFailed: 'Smart Playlist konnte nicht erstellt werden.', updateFailed: 'Smart Playlist konnte nicht aktualisiert werden.', navidromeOnly: 'Smart Playlists können nur auf Navidrome-Servern erstellt werden.', loadFailed: 'Smart Playlists konnten nicht von Navidrome geladen werden.', sortRandom: 'Sortierung: zufällig', sortTitleAsc: 'Sortierung: Titel A-Z', sortTitleDesc: 'Sortierung: Titel Z-A', sortYearDesc: 'Sortierung: Jahr absteigend', sortYearAsc: 'Sortierung: Jahr aufsteigend', sortPlayCountDesc: 'Sortierung: Wiedergaben absteigend', }, mostPlayed: { title: 'Meistgehört', topArtists: 'Top-Künstler', topAlbums: 'Top-Alben', plays: '{{n}}× gespielt', sortMost: 'Meiste Plays zuerst', sortLeast: 'Wenigste Plays zuerst', loadMore: 'Mehr Alben laden', noData: 'Noch keine Wiedergabedaten. Fang an zu hören!', noArtists: 'Alle Künstler herausgefiltert.', filterCompilations: 'Sampler-Künstler ausblenden (Various Artists, Soundtracks usw.)', filterCompilationsShort: 'Sampler ausblenden', }, radio: { title: 'Internetradio', empty: 'Keine Radiosender konfiguriert.', addStation: 'Sender hinzufügen', editStation: 'Bearbeiten', deleteStation: 'Sender löschen', confirmDelete: 'Zum Bestätigen erneut klicken', stationName: 'Sendername…', streamUrl: 'Stream-URL…', homepageUrl: 'Homepage-URL (optional)', save: 'Speichern', cancel: 'Abbrechen', live: 'LIVE', liveStream: 'Internetradio', openHomepage: 'Homepage öffnen', changeCoverLabel: 'Cover ändern', removeCover: 'Cover entfernen', browseDirectory: 'Verzeichnis durchsuchen', directoryPlaceholder: 'Sender suchen…', noResults: 'Keine Sender gefunden.', stationAdded: 'Sender hinzugefügt', filterAll: 'Alle', filterFavorites: 'Favoriten', sortManual: 'Manuell', sortAZ: 'A → Z', sortZA: 'Z → A', sortNewest: 'Neueste', favorite: 'Zu Favoriten hinzufügen', unfavorite: 'Aus Favoriten entfernen', noFavorites: 'Keine Lieblingssender.', listenerCount_one: '{{count}} Hörer', listenerCount_other: '{{count}} Hörer', recentlyPlayed: 'Zuletzt gespielt', upNext: 'Als Nächstes', }, folderBrowser: { empty: 'Leerer Ordner', error: 'Laden fehlgeschlagen', }, deviceSync: { title: 'Gerätesync', targetFolder: 'Zielordner', noFolderChosen: 'Kein Ordner gewählt', selectDrive: 'Laufwerk auswählen…', refreshDrives: 'Laufwerke aktualisieren', noDrivesDetected: 'Keine Wechseldatenträger erkannt', browseManual: 'Manuell durchsuchen…', free: 'frei', notMountedVolume: 'Ziel befindet sich nicht auf einem eingehängten Laufwerk. Das Gerät wurde möglicherweise getrennt.', chooseFolder: 'Auswählen…', targetDevice: 'Zielgerät', schemaLabel: 'Benennungsschema', schemaHint: 'Festes Schema für zuverlässige Synchronisation über verschiedene Betriebssysteme hinweg. Playlists werden als .m3u8-Dateien geschrieben und referenzieren die Album-Tracks — keine Duplikate auf dem Gerät.', migrateButton: 'Bestehende Dateien re-organisieren…', migrateTooltip: 'Vorhandene Dateien auf dem Gerät nach dem neuen Schema umbenennen (basierend auf der alten Namensvorlage).', migrateTitle: 'Bestehende Dateien re-organisieren', migrateLoading: 'Analysiere vorhandene Dateien…', migrateNothingToDo: 'Alle vorhandenen Dateien entsprechen bereits dem neuen Schema — nichts zu tun.', migrateNoTemplate: 'Keine alte Namensvorlage auf dem Gerät gefunden. Migration ist nur möglich, wenn der Stick mit einer Psysonic-Version synchronisiert wurde, die konfigurierbare Vorlagen unterstützte.', migrateFilesToRename: 'Dateien werden umbenannt', migrateUnchanged: '{{n}} Dateien liegen bereits am korrekten Pfad', migrateCollisions: '{{n}} Dateien können nicht automatisch umbenannt werden (mehrere Tracks zeigen auf dasselbe Ziel). Sie bleiben unverändert — beim nächsten Sync werden sie neu heruntergeladen.', migratePreviewNote: 'Alte Vorlage: {{tpl}}', migrateExecuting: 'Dateien werden umbenannt…', migrateSuccess: '{{n}} Dateien erfolgreich umbenannt', migrateFailed: '{{n}} Umbenennungen fehlgeschlagen', migrateShowErrors: 'Fehler anzeigen', migrateStart: 'Umbenennen starten', onDevice: 'Auf dem Gerät', addSources: 'Hinzufügen…', colName: 'Name', colType: 'Typ', syncResult: '{{done}} übertragen, {{skipped}} bereits aktuell ({{total}} gesamt)', deleteFromDevice: 'Vom Gerät löschen ({{count}})', confirmDelete: '{{count}} Eintrag/Einträge vom Gerät löschen: {{names}}?', deleteComplete: '{{count}} Eintrag/Einträge vom Gerät entfernt.', manifestImported: '{{count}} Quelle(n) aus Geräte-Manifest importiert.', selectedSources: 'Ausgewählte Quellen', noSourcesSelected: 'Keine Quellen ausgewählt. Klicke auf Einträge im Browser um sie hinzuzufügen.', clearAll: 'Alle entfernen', tabPlaylists: 'Wiedergabelisten', tabAlbums: 'Alben', tabArtists: 'Künstler', searchPlaceholder: 'Suche…', syncButton: 'Auf Gerät übertragen', actionTransfer: 'Auf Gerät übertragen', actionDelete: 'Vom Gerät löschen', actionApplyAll: 'Änderungen synchronisieren', cancel: 'Abbrechen', noTargetDir: 'Bitte zuerst einen Zielordner auswählen.', noSources: 'Bitte mindestens eine Quelle auswählen.', noTracks: 'Keine Tracks in den ausgewählten Quellen gefunden.', fetchError: 'Fehler beim Laden der Tracks vom Server.', syncComplete: 'Übertragung abgeschlossen.', dismiss: 'Schließen', cancelSync: 'Abbrechen', syncCancelled: 'Sync abgebrochen ({{done}} / {{total}} übertragen).', colStatus: 'Status', statusSynced: 'Synchronisiert', statusPending: 'Ausstehend', statusDeletion: 'Löschung', markForDeletion: 'Zur Löschung markieren', removeSource: 'Entfernen', undoDeletion: 'Löschung rückgängig', syncInBackground: 'Sync gestartet — du kannst die Seite verlassen.', syncInProgress: '{{done}} / {{total}} Tracks…', syncSummary: 'Sync-Zusammenfassung', calculating: 'Payload wird berechnet…', filesToAdd: 'Hinzuzufügende Dateien:', filesToDelete: 'Zu löschende Dateien:', netChange: 'Nettoänderung:', availableSpace: 'Verfügbarer Speicher:', spaceWarning: 'Warnung: Das Zielgerät hat nicht genug gemeldeten Speicherplatz.', proceed: 'Sync durchführen', notEnoughSpace: 'Nicht genug physischer Speicherplatz erkannt!', liveSearch: 'Live', randomAlbumsLabel: 'Zufallsalben', }, orbit: { triggerLabel: 'Orbit', triggerTooltip: 'Gemeinsame Hör-Session starten oder beitreten', launchCreate: 'Session erstellen', launchJoin: 'Session beitreten', launchHelp: 'Wie funktioniert das?', launchHelpSoon: 'Kommt bald', joinModalTitle: 'Einer Orbit-Session beitreten', joinModalSub: 'Füge den Einladungslink ein, den dir der Host geschickt hat.', joinModalLinkLabel: 'Einladungslink', joinModalLinkPlaceholder: 'psysonic2-…', joinModalLinkHelper: 'Akzeptiert jeden gültigen Orbit-Link. Der Link muss zu dem Server gehören, auf dem du gerade angemeldet bist.', joinModalPasteTooltip: 'Aus Zwischenablage einfügen', joinModalSubmit: 'Beitreten', joinModalBusy: 'Beitreten…', joinErrEmpty: 'Bitte Einladungslink einfügen.', joinErrInvalid: 'Das sieht nicht nach einem Orbit-Einladungslink aus.', closeAria: 'Schließen', heroTitlePrefix: 'Gemeinsam hören mit', heroTitleBrand: 'Orbit', heroSub: 'Starte eine Session — andere Nutzer auf {{server}} hören im Takt mit dir und können Songs vorschlagen.', fallbackServer: 'diesem Server', tipLan: 'Du bist aktuell mit einer Heimnetz-Adresse verbunden. Gäste außerhalb deines Heimnetzes können so nicht beitreten — wechsle vor dem Start in den Servereinstellungen zu einer öffentlichen Adresse.', tipRemote: 'Damit Gäste außerhalb deines Heimnetzes beitreten können, muss deine Serveradresse öffentlich erreichbar sein. Ist dein Server nur intern verfügbar, wechsle vor dem Start zu einer öffentlichen Adresse.', labelName: 'Sessionname', namePlaceholder: 'Velvet Orbit', reshuffleTooltip: 'Neuer Vorschlag', reshuffleAria: 'Neuen Namen vorschlagen', helperName: 'So taucht die Session für deine Gäste auf — Vorschlag übernehmen oder eigenen eintippen.', labelMax: 'Maximale Gäste', helperMax: 'Du zählst nicht mit — das ist nur die Obergrenze für beitretende Gäste.', labelLink: 'Einladungslink', tooltipCopied: 'Kopiert', tooltipCopy: 'Kopieren', ariaCopyLink: 'Link kopieren', helperLink: 'Schicke diesen Link deinen Gästen. Sie fügen ihn mit Strg+V irgendwo in Psysonic ein.', labelClearQueue: 'Eigene Warteschlange vorher leeren', helperClearQueue: 'Mit leerer Warteschlange in die Session starten. Aus: bereits aufgereihte Titel bleiben und werden mit den Gästen geteilt.', btnCancel: 'Abbrechen', btnStarting: 'Starte…', btnStart: 'Orbit starten', btnCopyAndStart: 'Link kopieren & starten', errNameRequired: 'Bitte gib deiner Session einen Namen.', errStartFailed: 'Konnte nicht starten.', hostLabel: 'Gastgeber: {{name}}', participantsTooltip: 'Teilnehmer', settingsTooltip: 'Session-Einstellungen', shareTooltip: 'Einladungslink teilen', shuffleLabel: 'Warteschlange wird neu gemischt in', catchUpLabel: 'aufholen', catchUpTooltip: 'Zur aktuellen Host-Position springen', hostAway: 'Host offline', hostOnline: 'Host online', endTooltip: 'Session beenden', leaveTooltip: 'Session verlassen', helpTooltip: 'Wie Orbit funktioniert', helpTitle: 'Wie Orbit funktioniert', helpIntro: 'Orbit macht aus Psysonic einen gemeinsamen Hörraum. Der Host bestimmt die Musik; Gäste hören synchron mit und können Songs vorschlagen.', helpHostOnly: '(Host)', helpSec1Title: 'Was ist Orbit?', helpSec1Body: 'Ein „Listen together"-Modus — der Host steuert die Wiedergabe, die Gäste hören mit. Alles läuft über Playlists auf deinem eigenen Navidrome-Server; keine externe Infrastruktur.', helpSec2Title: 'Host und Gäste', helpSec2Body: 'Der Host steuert die Wiedergabe (Play / Pause / Skip / Seek) und entscheidet, wann die Session endet. Gäste folgen der Wiedergabe des Hosts, können Songs vorschlagen und jederzeit verlassen oder wieder beitreten. Nur der Host kann Teilnehmer kicken oder dauerhaft bannen.', helpSec2WarnHead: 'Wichtig: getrennte Accounts.', helpSec2WarnBody: 'Jeder Teilnehmer braucht einen eigenen Navidrome-Account. Benutzen Host und Gast denselben User, kollidieren ihre Einreichungen und der Host sieht keine Vorschläge vom Gast.', helpSec3Title: 'Session starten und einladen', helpSec3Body: 'Klick auf den „Orbit"-Button → Session erstellen → im Start-Modal siehst du einen fertigen Einladungslink und kannst optional die aktuelle Warteschlange leeren. Link teilen wie du magst. Während die Session läuft, kopiert der Share-Button in der Session-Leiste oben jederzeit den Link erneut.', helpSec4Title: 'Beitreten', helpSec4Body: 'Einladungslink irgendwo in Psysonic mit Ctrl+V / Cmd+V einfügen — der Beitritt-Dialog erscheint automatisch. Alternativ: „Orbit" → Session beitreten → Link ins Feld pasten. Wenn der Link auf einen Server zeigt, für den du einen Account hast, wechselt Psysonic automatisch. Bei mehreren Accounts auf demselben Server fragt ein kleiner Picker, welcher genutzt werden soll.', helpSec5Title: 'Songs vorschlagen', helpSec5Body: 'In jeder Song-Liste: Doppelklick auf eine Zeile, oder Rechtsklick → „Zur Orbit-Session hinzufügen". Ein einfacher Klick zeigt nur einen Hinweis, statt das ganze Album in die geteilte Queue zu werfen — das ist bewusst so. Explizite Bulk-Aktionen wie „Play All" oder „Play Album" fragen zuerst nach und hängen dann an (ersetzen nie).', helpSec6Title: 'Die geteilte Warteschlange', helpSec6Body: 'Die Queue zeigt die kommenden Titel des Hosts — für alle sichtbar. Neu hinzugefügte Bulk-Inhalte werden immer angehängt, damit Gast-Vorschläge nicht verloren gehen. Auto-Shuffle mischt die Queue periodisch neu (konfigurierbar: 1 / 5 / 10 / 15 / 30 Min.). Wenn deine Wiedergabe vom Host abweicht, bringt dich der „Aufholen"-Button in der Session-Leiste zurück zur Live-Position des Hosts.', helpSec7Title: 'Freigaben', helpSec7Body: 'Standardmäßig müssen Vorschläge von Gästen manuell freigegeben werden — sie erscheinen in einer „Freigabe"-Leiste oben im Queue-Panel mit Annehmen/Ablehnen-Buttons. In den Session-Einstellungen lässt sich Auto-Übernehmen aktivieren, dann landen alle Vorschläge direkt in der Queue.', helpSec8Title: 'Teilnehmer und Einstellungen', helpSec8Body: 'Das Einstellungs-Icon in der Session-Leiste öffnet Shuffle-Takt, Auto-Übernehmen und die „Jetzt mischen"-Abkürzung. Klick auf die Teilnehmerzahl zeigt wer gerade dabei ist — Kick (kann über den Link wieder beitreten) oder Bann (für die Session gesperrt). Gäste sehen die Teilnehmerliste ebenfalls, aber nur lesend.', helpSec9Title: 'Session beenden', helpSec9Body: 'Host-X → Bestätigungsdialog → Session endet für alle und die Server-Playlists werden automatisch aufgeräumt. Gast-X → der Gast verlässt, die Session läuft weiter. Wenn der Host 5 Minuten lang nichts mehr sendet, verlässt der Gast die Session automatisch mit einer Meldung; kürzere Reconnects innerhalb dieser Zeit bleiben unsichtbar.', participantsInviteLabel: 'Einladungslink', participantsCountLabel: '{{count}} in Session', participantsHost: 'Gastgeber', participantsEmpty: 'Noch keine Gäste', participantsKickTooltip: 'Aus Session entfernen', participantsKickAria: '{{user}} entfernen', participantsRemoveTooltip: 'Aus Session entfernen', participantsRemoveAria: '{{user}} aus dieser Session entfernen', participantsBanTooltip: 'Permanent bannen', participantsBanAria: '{{user}} permanent bannen', participantsMuteTooltip: 'Vorschläge sperren', participantsUnmuteTooltip: 'Vorschläge erlauben', participantsMuteAria: 'Vorschläge von {{user}} sperren', participantsUnmuteAria: 'Vorschläge von {{user}} wieder erlauben', confirmRemoveTitle: 'Aus Session entfernen?', confirmRemoveBody: '{{user}} wird aus der Session geworfen, kann aber jederzeit über deinen Einladungslink wieder beitreten.', confirmRemoveConfirm: 'Entfernen', confirmBanTitle: 'Permanent bannen?', confirmBanBody: '{{user}} wird entfernt und kann dieser Session nicht wieder beitreten. Für die Lebensdauer der Session nicht rückgängig zu machen.', confirmBanConfirm: 'Bannen', confirmCancel: 'Abbrechen', confirmJoinTitle: 'Orbit-Session beitreten?', confirmJoinBody: '{{host}} lädt dich zu „{{name}}" ein. Möchtest du der Session beitreten?', confirmJoinConfirm: 'Beitreten', confirmLeaveTitle: 'Session verlassen?', confirmLeaveBody: '„{{name}}" wirklich verlassen? Du kannst jederzeit über {{host}}s Einladungslink wieder beitreten.', confirmLeaveConfirm: 'Verlassen', confirmEndTitle: 'Session für alle beenden?', confirmEndBody: '„{{name}}" wird für alle Teilnehmer geschlossen. Die Session-Playlists werden automatisch aufgeräumt.', confirmEndConfirm: 'Session beenden', invalidLinkTitle: 'Einladungslink ist nicht mehr gültig', invalidLinkBody: 'Diese Orbit-Session existiert nicht mehr oder wurde bereits beendet. Bitte den Gastgeber um einen neuen Einladungslink.', settingsTitle: 'Session-Einstellungen', settingAutoApprove: 'Vorschläge automatisch übernehmen', settingAutoApproveHint: 'Neue Gäste-Vorschläge landen sofort in deiner Warteschlange. Aus: sie bleiben in der Session-Liste, du musst sie später manuell übernehmen.', settingAutoShuffle: 'Automatisch mischen', settingAutoShuffleHint: 'Periodischer Fisher-Yates-Shuffle der kommenden Warteschlange. Aus: Reihenfolge wird nur verändert, wenn du selbst sortierst.', settingShuffleInterval: 'Alle', settingShuffleIntervalHint: 'Wie oft die kommende Warteschlange während der Session neu gemischt wird.', suggestBlockedMuted: 'Der Host hat dich für diese Session gesperrt — keine Vorschläge möglich.', settingShuffleIntervalValue_one: '{{count}} Min.', settingShuffleIntervalValue_other: '{{count}} Min.', settingShuffleNow: 'Jetzt mischen', toastSuggested: '{{user}} hat „{{title}}" vorgeschlagen', toastSuggestedMany: '{{count}} neue Vorschläge in der Warteschlange', toastShuffled: 'Warteschlange gemischt', toastJoined: 'Session beigetreten', toastLoginFirst: 'Erst anmelden, um einer Session beizutreten', toastSwitchServer: 'Wechsle erst zu {{url}} und füge den Link dann erneut ein', toastNoAccountForServer: 'Du hast keinen Zugang zu {{url}}. Bitte den Host um einen Einladungslink.', toastSwitchFailed: 'Wechsel zu {{url}} fehlgeschlagen', accountPickerTitle: 'Welcher Account?', accountPickerSub: 'Du hast mehrere Accounts für {{url}}. Wähle aus, mit welchem du der Session beitreten willst.', toastJoinFail: 'Session konnte nicht beigetreten werden', joinErrNotFound: 'Session nicht gefunden', joinErrEnded: 'Session wurde beendet', joinErrFull: 'Session ist voll', joinErrKicked: 'Du kannst dieser Session nicht mehr beitreten', joinErrNoUser: 'Kein aktiver Server', joinErrServerError: 'Beitritt fehlgeschlagen', ctxAddToSession: 'Zur Orbit-Session hinzufügen', ctxSuggestedToast: 'An Session vorgeschlagen', ctxSuggestFailed: 'Vorschlag fehlgeschlagen — nicht beigetreten', ctxAddToSessionHost: 'Zur Orbit-Session hinzufügen', ctxAddedHostToast: 'Zur Session hinzugefügt', ctxAddHostFailed: 'Hinzufügen fehlgeschlagen', bulkConfirmTitle: 'Wirklich alles in die Orbit-Queue?', bulkConfirmBody: 'Das würde {{count}} Titel auf einmal in die geteilte Queue werfen. Für deine Gäste ist das eine Menge. Trotzdem hinzufügen?', bulkConfirmYes: 'Alle hinzufügen', bulkConfirmNo: 'Abbrechen', guestLive: 'Live', guestPlaying: 'Läuft gerade', guestPaused: 'Pausiert', guestLoading: 'Lade…', guestSuggestions: 'Vorschläge', guestUpNext: 'Als Nächstes', guestUpNextEmpty: 'Nichts in der Warteschlange. Öffne bei einem Song das Kontextmenü und wähle „Zur Orbit-Session hinzufügen", um etwas vorzuschlagen.', guestPendingTitle: 'Wartet auf Host', guestPendingHint: 'Vorgeschlagen — taucht in der Warteschlange auf, sobald der Host sie übernimmt.', approvalTitle: 'Zur Freigabe', approvalFrom: 'Vorgeschlagen von {{user}}', approvalAccept: 'Übernehmen', approvalDecline: 'Ablehnen', guestUpNextMore: '+ {{count}} weitere in der Host-Warteschlange', guestSubmitter: 'von {{user}}', queueAddedByHost: 'Vom Host hinzugefügt', queueAddedByYou: 'Von dir hinzugefügt', queueAddedByUser: 'Hinzugefügt von {{user}}', guestEmpty: 'Noch keine Vorschläge. Öffne bei einem Song das Kontextmenü und wähle „Zur Orbit-Session hinzufügen".', guestFooter: 'Die Wiedergabe wird vom Gastgeber gesteuert — du kannst die Liste nicht ändern.', exitKickedTitle: 'Du wurdest aus der Session gebannt', exitRemovedTitle: 'Du wurdest aus der Session entfernt', exitEndedTitle: 'Der Gastgeber hat die Session beendet', exitHostTimeoutTitle: 'Host nicht mehr erreichbar', exitHostTimeoutBody: '{{host}} hat sich länger nicht mehr gemeldet — „{{name}}" wurde auf deiner Seite beendet. Über den Einladungslink kannst du jederzeit wieder beitreten.', exitKickedBody: '{{host}} hat dich aus „{{name}}" gebannt. Beitritt nicht mehr möglich.', exitRemovedBody: '{{host}} hat dich aus „{{name}}" entfernt. Du kannst jederzeit über den Einladungslink wieder beitreten.', exitEndedBody: '„{{name}}" ist zu Ende. Hoffentlich war\'s schön.', exitOk: 'OK', }, tray: { playPause: 'Wiedergabe / Pause', nextTrack: 'Nächster Titel', previousTrack: 'Vorheriger Titel', showHide: 'Anzeigen / Verbergen', exitPsysonic: 'Psysonic beenden', nothingPlaying: 'Nichts wird abgespielt', }, licenses: { title: 'Open-Source-Lizenzen', intro: 'Psysonic basiert auf Open-Source-Software. Die untenstehende Liste zeigt jede Abhängigkeit, die mit der App ausgeliefert wird, inklusive Version, Lizenz und vollständigem Lizenztext.', highlights: 'Wichtige Abhängigkeiten', searchPlaceholder: 'Suche nach Name, Version oder Lizenz…', noResults: 'Keine Treffer.', loading: 'Lizenzen werden geladen…', loadError: 'Lizenzdaten konnten nicht geladen werden.', noLicenseText: 'Für diese Abhängigkeit ist kein Lizenztext gebündelt.', viewSource: 'Quelle anzeigen', totalLine: '{{total}} Abhängigkeiten — {{cargo}} Cargo, {{npm}} npm', generatedAt: 'Zuletzt generiert {{date}}', }, };