Files
Psychotoxical-psysonic/src/locales/de.ts
T
Frank Stellmacher 3b4d54431b feat(random-mix): playlist size selector + filter panel layout cleanup (#445)
* feat(random-mix): playlist size selector + filter panel layout cleanup

Adds a 5-button playlist-size picker (50/75/100/125/150) at the top of
the Random Mix filter panel, persisted via authStore. Clicking a size
immediately reruns the current mix (genre-scoped or All Songs) at the
new size — no second click on Remix needed.

Filter panel layout cleaned up:

- Two sub-sections "MIX SETTINGS" and "EXCLUSIONS" with a divider
  between them so the panel reads cleanly with the new size row.
- Larger panel-level headers (FILTERS / GENRE MIX) so the hierarchy
  panel-title > sub-section is visually unambiguous.
- Italic muted note under MIX SETTINGS calling out that large mix
  sizes may return fewer unique tracks if the server's random pool
  runs short — sets honest expectations instead of users wondering
  why a 150 request returned ~126.

fetchRandomMixSongsUntilFull now scales batch size, max-batch ceiling
and dup-streak budget with target size; when no Settings-level mix
filter is active, the first call asks for the full target so a 150
mix can finish in a single round-trip on most libraries. The loop
falls through to top up with deduped follow-up calls if the server
returns fewer than requested.

* docs(changelog): add #445 Random Mix playlist size selector entry

* chore(credits): add #445 to Psychotoxical contributions
2026-05-03 19:57:08 +02:00

1790 lines
101 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
export const deTranslation = {
sidebar: {
library: 'Bibliothek',
mainstage: 'Mainstage',
newReleases: 'Neueste',
allAlbums: 'Alle Alben',
randomAlbums: 'Zufallsalben',
randomPicker: 'Mix erstellen',
artists: 'Künstler',
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'
},
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.',
openedTrack: 'Geteilter Titel wird abgespielt.',
openedAlbum: 'Geteiltes Album wird geöffnet.',
openedArtist: 'Geteilter Künstler 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: 'AZ (Titel)',
sortByArtist: 'AZ (Künstler)',
sortByAlbum: 'AZ (Album)',
},
entityRating: {
albumShort: 'Albumbewertung',
artistShort: 'Künstlerbewertung',
albumAriaLabel: 'Albumbewertung',
artistAriaLabel: 'Künstlerbewertung',
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',
},
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: 'AZ (Album)',
sortByArtist: 'AZ (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',
},
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',
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 <pluginLink>AudioMuse-AI-Navidrome-Plugin</pluginLink> nutzt. Schaltet Instant Mix pro Titel frei und nutzt ähnliche Künstler vom Server statt Last.fm auf Künstlerseiten.',
audiomuseIssueHint:
'Instant Mix ist kürzlich fehlgeschlagen — Navidrome-Plugin und AudioMuse-API prüfen. Ohne Server-Treffer werden ähnliche Künstler über Last.fm geladen.',
connected: 'Verbunden',
failed: 'Fehlgeschlagen',
eqTitle: 'Equalizer',
eqEnabled: 'Equalizer aktivieren',
eqPreset: 'Preset',
eqPresetCustom: 'Benutzerdefiniert',
eqPresetBuiltin: 'Eingebaute Presets',
eqPresetCustomGroup: 'Meine Presets',
eqSavePreset: 'Als Preset speichern',
eqPresetName: 'Preset-Name…',
eqDeletePreset: 'Preset löschen',
eqResetBands: 'Auf Flat zurücksetzen',
eqPreGain: 'Vorverstärkung',
eqResetPreGain: 'Vorverstärkung zurücksetzen',
eqAutoEqTitle: 'AutoEQ Kopfhörer-Suche',
eqAutoEqPlaceholder: 'Kopfhörer / IEM Modell suchen…',
eqAutoEqSearching: 'Suche…',
eqAutoEqNoResults: 'Keine Ergebnisse gefunden',
eqAutoEqError: 'Suche fehlgeschlagen',
eqAutoEqRateLimit: 'GitHub Rate-Limit erreicht — in einer Minute erneut versuchen',
eqAutoEqFetchError: 'EQ-Profil konnte nicht geladen werden',
lfmTitle: 'Last.fm',
lfmConnect: 'Mit Last.fm verbinden',
lfmConnecting: 'Warte auf Bestätigung…',
lfmConfirm: 'Ich habe die App autorisiert',
lfmConnected: 'Verbunden als',
lfmDisconnect: 'Trennen',
lfmConnectDesc: 'Verbinde deinen Last.fm Account, um Scrobbling und Now-Playing-Updates direkt aus Psysonic heraus zu aktivieren — keine Navidrome-Konfiguration erforderlich.',
lfmOpenBrowser: 'Es öffnet sich ein Browserfenster. Autorisiere Psysonic auf Last.fm und klicke dann unten auf den Button.',
lfmScrobbles: '{{n}} Scrobbles',
lfmMemberSince: 'Dabei seit {{year}}',
scrobbleEnabled: 'Scrobbling aktiviert',
scrobbleDesc: 'Songs nach 50% Laufzeit an Last.fm senden',
behavior: 'App-Verhalten',
cacheTitle: 'Max. Speichergröße',
cacheDesc: 'Cover und Künstlerbilder. Wenn voll, werden die ältesten Einträge automatisch entfernt. Offline-Alben werden nicht automatisch gelöscht, aber beim manuellen Cache leeren entfernt.',
cacheUsedImages: 'Bilder:',
cacheUsedOffline: 'Offline-Tracks:',
cacheUsedHot: 'Belegter Speicher:',
hotCacheTrackCount: 'Titel im Cache:',
cacheMaxLabel: 'Max. Größe',
cacheClearBtn: 'Cache leeren',
cacheClearWarning: 'Alle Offline-Alben werden damit aus der Bibliothek entfernt.',
cacheClearConfirm: 'Alles löschen',
cacheClearCancel: 'Abbrechen',
offlineDirTitle: 'Offline-Bibliothek (In-App)',
offlineDirDesc: 'Speicherort für Titel, die du innerhalb von Psysonic offline verfügbar machst.',
offlineDirDefault: 'Standard (App-Daten)',
offlineDirChange: 'Verzeichnis ändern',
offlineDirClear: 'Auf Standard zurücksetzen',
offlineDirHint: 'Neue Downloads werden an diesem Ort gespeichert. Bestehende Downloads verbleiben am ursprünglichen Pfad.',
hotCacheTitle: 'Hot-Playback-Cache',
hotCacheDisclaimer: 'Lädt kommende Warteschlangen-Titel vor und behält zuletzt gespielte. Bei aktivierter Option: Speicherplatz und Netzwerk.',
hotCacheDirDefault: 'Standard (App-Daten)',
hotCacheDirChange: 'Ordner ändern',
hotCacheDirClear: 'Auf Standard zurücksetzen',
hotCacheDirHint: 'Beim Ordnerwechsel wird der App-Index zurückgesetzt; alte Dateien bleiben am alten Ort, bis Sie sie löschen.',
hotCacheEnabled: 'Hot-Playback-Cache aktivieren',
hotCacheMaxMb: 'Maximale Cache-Größe',
hotCacheDebounce: 'Debounce bei Warteschlangen-Änderungen',
hotCacheDebounceImmediate: 'Sofort',
hotCacheDebounceSeconds: '{{n}} s',
hotCacheClearBtn: 'Hot-Cache leeren',
audioOutputDevice: 'Audio-Ausgabegerät',
audioOutputDeviceDesc: 'Wähle das Audiogerät, über das Psysonic spielt. Änderungen werden sofort übernommen und starten den aktuellen Track neu.',
audioOutputDeviceDefault: 'Systemstandard',
audioOutputDeviceRefresh: 'Geräteliste aktualisieren',
audioOutputDeviceOsDefaultNow: 'aktuelle Systemausgabe',
audioOutputDeviceListError: 'Audiogeräteliste konnte nicht geladen werden.',
audioOutputDeviceNotInCurrentList: 'nicht in der aktuellen Liste',
audioOutputDeviceMacNotice: 'Auf macOS folgt die Wiedergabe aus technischen Gründen zurzeit immer dem System-Ausgabegerät. Du kannst das Ziel über Systemeinstellungen → Ton oder das Lautsprecher-Symbol in der Menüleiste wechseln. Hintergrund: CoreAudio löst beim Öffnen eines nicht-Default-Streams eine Mikrofonberechtigungsabfrage aus — wir vermeiden sie, indem wir stets den System-Default verwenden.',
hiResTitle: 'Native Hi-Res-Wiedergabe',
hiResEnabled: 'Native Hi-Res-Wiedergabe aktivieren',
hiResDesc: "Standardmäßig wird auf 44,1 kHz begrenzt (maximale Stabilität). Nur aktivieren, wenn Hardware und Netzwerk zuverlässig hohe Abtastraten (88,2 kHz+) unterstützen.",
showArtistImages: 'Künstlerbilder anzeigen',
showArtistImagesDesc: 'Lädt und zeigt Künstlerbilder in der Künstlerübersicht. Standardmäßig deaktiviert, um Server-I/O und Netzwerklast bei großen Bibliotheken zu reduzieren.',
showOrbitTrigger: '„Orbit" im Header zeigen',
showOrbitTriggerDesc: 'Der Kopfzeilen-Button zum Starten oder Beitreten einer gemeinsamen Hör-Session. Ausblenden, wenn du Orbit nicht nutzt — hier lässt er sich jederzeit wieder einschalten.',
showTrayIcon: 'Tray-Icon anzeigen',
showTrayIconDesc: 'Psysonic-Icon im System-Tray / in der Menüleiste anzeigen.',
minimizeToTray: 'Im Tray minimieren',
minimizeToTrayDesc: 'Beim Schließen des Fensters läuft Psysonic weiter im System-Tray statt zu beenden.',
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.',
discordAppleCovers: 'Cover über Apple Music für Discord laden',
discordAppleCoversDesc: 'Sendet Künstler- und Albumname an die Apple-Such-API, um Cover für dein Discord-Profil zu finden. Standardmäßig aus Datenschutzgründen deaktiviert.',
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 <strong>Opt-in</strong> und senden, sobald aktiviert, Daten an externe Dienste oder an deinen Navidrome-Server. Last.fm erhält deinen Wiedergabeverlauf, Discord zeigt den aktuell laufenden Track in deinem Profil an, Bandsintown wird pro Künstler für Tour-Daten abgefragt, und der „Jetzt läuft"-Hinweis veröffentlicht deinen aktuellen Titel für andere Benutzer deines Navidrome-Servers. Wer das nicht möchte, lässt den jeweiligen Abschnitt einfach deaktiviert.',
homeCustomizerTitle: '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',
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',
animationMode: 'Animationen',
animationModeDesc: 'Visuelle Glätte gegen geringere GPU-/CPU-Last auf langsamerer Hardware tauschen.',
animationModeFull: 'Voll',
animationModeReduced: 'Reduziert',
animationModeStatic: 'Statisch',
animationModeReducedHint: '30 fps Limit auf der Seekbar-Welle; Titel im Player läuft mit halber Geschwindigkeit.',
animationModeStaticHint: 'Keine Wellenanimation; Titel im Player wird abgeschnitten statt gescrollt.',
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',
s1: 'Erste Schritte',
q1: 'Welche Server sind kompatibel?',
a1: 'Psysonic funktioniert mit jedem Subsonic-kompatiblen Server: Navidrome, Gonic, Subsonic, Airsonic und anderen. Navidrome ist die empfohlene Wahl.',
q2: 'Wie verbinde ich mich mit meinem Server?',
a2: 'Öffne die Einstellungen und klicke auf "Server hinzufügen". Gib die Server-URL (z. B. 192.168.1.100:4533), Benutzername und Passwort ein. Psysonic testet die Verbindung vor dem Speichern — bei Fehler wird nichts gespeichert.',
q3: 'Kann ich mehrere Server verwenden?',
a3: 'Ja. Du kannst beliebig viele Server in den Einstellungen hinzufügen und jederzeit zwischen ihnen wechseln. Immer ist nur ein Server aktiv.',
s2: 'Wiedergabe',
q4: 'Wie spiele ich Musik ab?',
a4: 'Doppelklick auf einen Track startet die Wiedergabe. Auf Album- und Künstlerseiten gibt es "Alle abspielen". Tracks lassen sich auch per Drag & Drop in die Warteschlange ziehen.',
q5: 'Welche Tastenkürzel gibt es?',
a5: 'Leertaste = Play / Pause · Escape = Vollbild schließen. Medientasten (Play/Pause, Weiter, Zurück) funktionieren auf allen Plattformen. Unter Linux bitte die Buttons in der Playerleiste nutzen. In-App-Kürzel und systemweite globale Shortcuts können in Einstellungen → Tastenkürzel / Globale Shortcuts angepasst werden.',
q6: 'Was ist die Warteschlange?',
a6: 'Die Warteschlange zeigt alle kommenden Tracks. Öffnen mit dem Panel-Icon oben rechts im Header (neben dem Now-Playing-Indikator). Tracks per Drag & Drop umsortieren, mit dem Shuffle-Button mischen oder als Playlist speichern.',
q7: 'Wie öffne ich den Vollbild-Player?',
a7: 'Klick auf das Album-Cover unten in der Playerleiste oder auf das Expand-Icon daneben. Mit Escape wieder schließen.',
q8: 'Wie funktioniert die Wiederholfunktion?',
a8: 'Klick auf den Wiederhol-Button in der Playerleiste, um zwischen den Modi zu wechseln: Aus → Alles wiederholen → Einen wiederholen.',
s3: 'Bibliothek',
q9: 'Wie lade ich ein Album herunter?',
a9: 'Auf der Album-Detailseite auf "Download (ZIP)" klicken. Der Server packt das Album zunächst in eine ZIP-Datei — bei großen Alben oder verlustfreien Dateien (FLAC / WAV) kann es einen Moment dauern, bevor der Download tatsächlich startet. Das ist normal: Der Fortschrittsbalken erscheint erst, wenn der Server fertig ist und die Übertragung beginnt.',
q10: 'Wie markiere ich Tracks und Alben als Favoriten?',
a10: 'Das Stern-Icon auf einem Track oder im Album-Header anklicken. Markierte Einträge erscheinen im Bereich "Favoriten" in der Seitenleiste.',
q11: 'Was ist das Karussell auf der Startseite?',
a11: 'Das Banner oben auf der Startseite wählt zufällige Alben aus der Bibliothek und rotiert alle 10 Sekunden weiter. Mit den Punkten kann man manuell springen, Klick auf das Banner öffnet das Album.',
s4: 'Einstellungen',
q12: 'Wie ändere ich das Theme?',
a12: 'Einstellungen → Design. Eine große Auswahl an Themes in 8 Gruppen: Psysonic Themes, Mediaplayer, Betriebssysteme, Spiele, Filme, Serien, Social Media und Open-Source-Classics (Catppuccin, Nord, Gruvbox, Nightfox).',
q13: 'Wie ändere ich die Sprache?',
a13: 'Einstellungen → Sprache. Englisch, Deutsch, Französisch, Niederländisch und Chinesisch werden unterstützt.',
q15: 'Wie lege ich einen Download-Ordner fest?',
a15: 'Einstellungen → App-Verhalten → Download-Ordner. Beliebigen Ordner wählen — heruntergeladene Alben werden dort als ZIP gespeichert. Ohne eigenen Ordner landet alles im Standard-Downloads-Ordner.',
s5: 'Scrobbling',
q16: 'Wie funktioniert Scrobbling?',
a16: 'Psysonic scrobbled direkt zu Last.fm — keine Navidrome-Konfiguration nötig. Last.fm-Konto in Einstellungen → Last.fm verbinden und Scrobbling dort aktivieren.',
q17: 'Wann wird ein Scrobble gesendet?',
a17: 'Ein Scrobble wird übermittelt, wenn 50 % eines Tracks gehört wurden.',
q22: 'Was ist die Waveform in der Playerleiste?',
a22: 'Die Waveform-Leiste ersetzt den klassischen Fortschrittsbalken. Klick auf eine beliebige Stelle zum Springen, ziehen zum Scrubben. Der gespielte Teil leuchtet in einem Blau-Mauve-Farbverlauf, der gepufferte Bereich erscheint etwas heller, der ungespielter Teil ist abgeblendet.',
q24: 'Kann ich die Warteschlange mischen?',
a24: 'Ja. Die Warteschlange öffnen und auf das Shuffle-Icon im Header klicken. Der aktuell laufende Track bleibt an Position 1 — alle restlichen Tracks werden zufällig neu geordnet.',
q25: 'Öffnen Last.fm- und Wikipedia-Links auf Künstlerseiten im Browser?',
a25: 'Ja — sie öffnen sich im Standard-Systembrowser. Der Button zeigt kurz eine Bestätigungsmeldung beim Klick.',
s7: 'Zufallsmix',
q26: 'Was ist der Zufallsmix?',
a26: 'Der Zufallsmix erstellt eine Playlist aus zufälligen Tracks deiner gesamten Bibliothek. Über "Zufallsmix" in der Seitenleiste erreichbar, dann "Neuer Mix" klicken. Die Anzahl der Tracks ist vor der Generierung einstellbar.',
q27: 'Was ist der Keyword-Filter?',
a27: 'Der Keyword-Filter schließt Tracks aus, deren Genre, Titel oder Album bestimmte Wörter enthält. Hörbücher werden automatisch gefiltert. Eigene Keywords in Einstellungen → Zufallsmix hinzufügen oder per Klick auf ein Genre-Tag direkt in der Trackliste.',
q28: 'Was ist der Super-Genre-Mix?',
a28: 'Der Super-Genre-Mix fasst die Bibliothek in übergeordnete Kategorien zusammen (Rock, Metal, Electronic, Jazz, Klassik usw.) und erstellt daraus einen fokussierten Mix. Einen Kategorie-Chip unterhalb der Trackliste auswählen. Ergebnisse erscheinen schrittweise, während die einzelnen Sub-Genres geladen werden.',
s6: 'Problemlösung',
q18: 'Cover und Künstlerbilder laden langsam.',
a18: '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 geht alles sofort.',
q19: 'Der Verbindungstest schlägt fehl.',
a19: 'URL inklusive Port prüfen (z. B. http://192.168.1.100:4533). Sicherstellen, dass keine Firewall die Verbindung blockiert. Im lokalen Netzwerk http:// statt https:// versuchen. Benutzername und Passwort kontrollieren.',
q20: 'Kein Ton unter Linux.',
a20: 'Psysonic ist als .deb (Ubuntu/Debian), .rpm (Fedora/RHEL) und über AUR für Arch/CachyOS verfügbar (yay -S psysonic). Es gibt kein AppImage. Falls kein Ton kommt, sicherstellen, dass PipeWire oder PulseAudio läuft.',
q21: 'Die App zeigt einen schwarzen Bildschirm unter Linux.',
a21: 'Meist ein GPU/EGL-Treiberproblem in WebKitGTK. Mit GDK_BACKEND=x11 WEBKIT_DISABLE_COMPOSITING_MODE=1 WEBKIT_DISABLE_DMABUF_RENDERER=1 starten. Das AUR-Paket und die offiziellen .deb/.rpm-Pakete setzen diese Variablen automatisch.',
q29: 'Was sind Crossfade und nahtlose Wiedergabe?',
a29: 'Beides sind experimentelle Audiofunktionen in Einstellungen → Audio. Nahtlose Wiedergabe puffert den nächsten Track vor, um Stille zu eliminieren. Crossfade blendet den aktuellen Track aus, während der nächste eingeblendet wird — Dauer (110 s) einstellbar.',
q30: 'Zeigt Psysonic Songtexte an?',
a30: 'Ja. Klick auf das Mikrofon-Icon in der Playerleiste öffnet den Lyrics-Tab im Queue-Panel. Psysonic lädt Texte automatisch von LRCLIB. Sind synchronisierte Lyrics verfügbar, wird die aktuelle Zeile hervorgehoben und scrollt in Echtzeit mit. Bei reinen Texten wird der Volltext statisch angezeigt.',
q31: 'Kann ich Tastenkürzel anpassen?',
a31: 'Ja. Einstellungen → Tastenkürzel erlaubt das Neuzuordnen von In-App-Aktionen (Play/Pause, Weiter, Zurück, Lautstärke, Vollbild u. v. m.). Einstellungen → Globale Shortcuts ermöglicht systemweite Kürzel, die auch im Hintergrund ausgelöst werden.',
q32: 'Kann ich die Schriftart ändern?',
a32: 'Ja. Einstellungen → Schriftart bietet 10 Schriften zur Auswahl, darunter IBM Plex Mono, Fira Code, JetBrains Mono und Courier Prime. Die gewählte Schrift gilt für die gesamte Oberfläche.',
s8: 'Offline-Modus',
q34: 'Was ist der Offline-Modus?',
a34: 'Der Offline-Modus (Beta) ermöglicht das Zwischenspeichern von Alben auf dem Gerät, sodass die Wiedergabe ohne aktive Serververbindung möglich ist. Gecachte Tracks werden lokal gespeichert und direkt von der Festplatte abgespielt — ohne Netzwerkzugriff.',
q35: 'Wie speichere ich ein Album für die Offline-Nutzung?',
a35: 'Album öffnen und auf das Download-Symbol im Album-Header klicken. Psysonic lädt alle Tracks im Hintergrund herunter. Der Fortschritt wird am Button angezeigt. Nach dem Download wird das Symbol grün. Gecachte Alben können in der Offline-Bibliothek (Seitenleiste) verwaltet und gelöscht werden.',
q36: 'Wie viel Speicherplatz darf der Cache belegen?',
a36: 'In Einstellungen → Bibliothek kann eine maximale Cache-Größe festgelegt werden. Wird das Limit erreicht, erscheint ein Warnbanner auf der Albumseite. Einzelne Alben können in der Offline-Bibliothek gelöscht werden, um Speicherplatz freizugeben.',
q37: 'Wie bewerte ich Songs, Alben und Künstler?',
a37: 'Psysonic unterstützt 15-Sterne-Bewertungen über die OpenSubsonic-API (erfordert Navidrome ≥ 0.53). Songs können in der Trackliste eines Albums oder einer Playlist (Spalte „Bewertung"), über das Rechtsklick-Kontextmenü oder direkt in der Playerleiste unterhalb des Künstlernamens bewertet werden. Alben werden auf der Albumdetailseite bewertet, Künstler auf der Künstlerseite. Bewertungen werden sofort an den Server übertragen.',
q38: 'Kann ich eine Bewertung entfernen oder ändern?',
a38: 'Ja. Ein erneuter Klick auf den bereits aktiven Stern entfernt die Bewertung vollständig der zweite Klick auf denselben Stern löscht sie also. Um eine Bewertung zu ändern, einfach einen anderen Stern anklicken.',
q39: 'Was ist Skip-to-1★ und der Bewertungsfilter?',
a39: 'Skip-to-1★ vergibt automatisch eine 1-Stern-Bewertung, wenn ein Song mehrfach hintereinander manuell übersprungen wird. Aktivierung und Schwellenwert in Einstellungen → Bewertungen. Dort lässt sich auch eine Mindestbewertung für Zufalls-Mix und Zufallsalben festlegen so werden nur Songs, Alben oder Künstler ab einer bestimmten Sternzahl in generierten Mixes berücksichtigt.',
q40: 'Was ist der Ordner-Browser?',
a40: 'Der Ordner-Browser (Sidebar) ermöglicht die Navigation im Musikverzeichnis des Servers über ein Miller-Column-Layout. Ein Klick auf einen Ordner öffnet dessen Inhalt; über das Play-Symbol lassen sich Ordner direkt abspielen oder zur Warteschlange hinzufügen.',
q41: 'Was ist der Theme-Scheduler?',
a41: 'Einstellungen → Darstellung → Theme automatisch wechseln: Tagesthema und Nachtthema mit Startzeiten konfigurieren. Psysonic wechselt automatisch zur eingestellten Uhrzeit. Ist der Scheduler aktiv, erscheint im Theme-Picker ein Hinweis, warum manuelle Änderungen keine sofortige Wirkung haben.',
q42: 'Kann ich die Benutzeroberfläche vergrößern oder verkleinern?',
a42: 'Ja. Einstellungen → Darstellung → Anzeigeskalierung ermöglicht eine Skalierung der gesamten Oberfläche zwischen 80 % und 125 %, unabhängig von der Systemschriftgröße.',
q43: 'Kann ich den Stil der Seekbar ändern?',
a43: 'Ja. Einstellungen → Darstellung → Seekbar-Stil bietet 10 Stile: Wellenform, Linie & Punkt, Balken, Dicker Balken, Segmentiert, Neon-Glow, Pulswelle, Partikelspur, Flüssigfüllung und Retro-Tape.',
q44: 'Was ist AutoEQ?',
a44: 'Der 10-Band-EQ in Einstellungen → Audio enthält eine AutoEQ-Suche. Kopfhörermodell eingeben Psysonic lädt das Korrekturprofil aus der AutoEQ-Datenbank und überträgt es automatisch auf die EQ-Bänder.',
q45: 'Was ist Replay Gain?',
a45: 'Replay Gain normalisiert die Lautstärke, sodass laute und leise Alben auf einem gleichmäßigen Pegel wiedergegeben werden. Aktivierung in Einstellungen → Audio → Replay Gain; Modus Track (pro Song) oder Album (behält die relative Dynamik innerhalb eines Albums).',
q46: 'Was ist der Hot Cache?',
a46: 'Der Hot Cache (Alpha, Einstellungen → Bibliothek) lädt die nächsten Songs der Warteschlange vorab auf die Festplatte, damit die Wiedergabe ohne Pufferverzögerung startet besonders nützlich bei langsamen oder entfernten Servern. Psysonic hält den aktuellen Track und die nächsten 5 im Cache und verdrängt ältere Einträge, wenn das Größenlimit erreicht wird. Cache-Größe und Debounce-Verzögerung sind konfigurierbar.',
q47: 'Kann ich eine Playlist offline cachen?',
a47: 'Ja. In den Playlist-Details auf das Download-Symbol klicken alle Tracks werden im Hintergrund heruntergeladen. Ist die Playlist vollständig gecacht, wechselt das Symbol zu einem roten Papierkorb; ein erneuter Klick entfernt die Playlist aus dem Offline-Cache.',
q48: 'Was ist die Infinite Queue?',
a48: 'Wenn die Warteschlange leer läuft und Wiederholen deaktiviert ist, fügt Psysonic automatisch zufällige Tracks aus deiner Bibliothek hinzu, damit die Wiedergabe nie stoppt. Automatisch hinzugefügte Tracks erscheinen unterhalb des Trenners „— Automatisch hinzugefügt —". Umschalten über das Unendlichkeitssymbol im Warteschlangen-Header. In Einstellungen → Warteschlange kann der automatische Nachschub auf ein bestimmtes Genre beschränkt werden.',
q49: 'Kann ich Psysonic über die Kommandozeile bedienen?',
a49: 'Ja das Psysonic-Binary kann die laufende App fernsteuern. Beispiele: psysonic --player play / pause / next / prev, --player volume 75, --player seek 15, --player mute, --player shuffle, --player repeat off|all|one, --player star / unstar, --player rating 15. Außerdem: Server wechseln (--player server list / set), Ausgabegerät wählen (--player audio-device list / set), Bibliotheks-Ordner filtern (--player library list / set), Instant Mix starten (--player mix new / append) und Suche (--player search track|album|artist <Suchbegriff>). Vollständige Hilfe: psysonic --player --help. Shell-Completions für bash und zsh sind über psysonic completions verfügbar.',
q50: 'Wie verwalte ich Playlists?',
a50: 'Über „Playlists" in der Seitenleiste. Mit „Neue Playlist" eine Playlist erstellen. In der Playlist-Detailansicht können Tracks per Drag & Drop umsortiert, mit dem ×-Button entfernt und über die Songsuche neue hinzugefügt werden. Die „Vorschläge"-Sektion macht Empfehlungen basierend auf dem Inhalt der Playlist. Rechtsklick auf einen Track für weitere Optionen.',
q51: 'Kann ich meine Einstellungen sichern und wiederherstellen?',
a51: 'Ja. Einstellungen → Backup & Restore ermöglicht den Export aller Einstellungen, Serverprofile, Themes und Tastenkürzel in eine JSON-Datei. Auf einem anderen Gerät oder nach einer Neuinstallation importieren, um alles auf einmal wiederherzustellen. Passwörter sind in der Sicherung enthalten die Datei sicher aufbewahren.',
q52: 'Wie ändere ich das Audioausgabegerät?',
a52: 'Einstellungen → Audio → Ausgabegerät. Psysonic listet alle verfügbaren Ausgaben auf. Auswahl wechselt die Wiedergabe sofort. Den Aktualisierungsbutton daneben nutzen, wenn ein Gerät nach dem App-Start angeschlossen wurde. Unter Linux werden ALSA-Gerätenamen bereinigt angezeigt.',
q53: 'Was ist Device Sync?',
a53: 'Device Sync überträgt Alben, Playlists oder ganze Künstler auf einen USB-Stick oder eine SD-Karte. Über „Device Sync" in der Seitenleiste öffnen, einen Zielordner auf dem Laufwerk wählen, Quellen in den Browser-Tabs auswählen und auf „Auf Gerät übertragen" klicken. Psysonic lädt die Tracks vom Server und legt sie in der durch die Dateinamen-Vorlage definierten Ordnerstruktur ab.',
q54: 'Was ist die Dateinamen-Vorlage in Device Sync?',
a54: 'Die Dateinamen-Vorlage steuert, wie Tracks auf dem Gerät benannt und organisiert werden. Vorgaben (Standard, Multi-Disc, Alt. Ordner) auswählen oder selbst aus den klickbaren Token-Chips zusammenbauen: {artist}, {album}, {title}, {track_number}, {disc_number}, {year} und / als Ordner-Trennzeichen. Eine Live-Vorschau zeigt, wie ein Beispiel-Track benannt würde.',
q55: 'Funktioniert Device Sync plattformübergreifend?',
a55: 'Ja. Das auf dem Gerät gespeicherte Manifest (psysonic-sync.json) enthält die beim Sync verwendete Dateinamen-Vorlage. Wird Device Sync auf einem anderen Betriebssystem mit anderer Vorlage geöffnet, erkennt Psysonic die bereits vorhandenen Dateien korrekt Alben werden nicht fälschlich als ausstehend angezeigt.',
s9: 'Device Sync',
q56: 'Was ist Internet Radio?',
a56: 'Die Internetradio-Seite (Seitenleiste) ermöglicht die Wiedergabe beliebiger Livestreams direkt in Psysonic. Sender werden vom Navidrome-Server bezogen dort über das Admin-Panel hinzufügen oder eine .pls- / .m3u-Datei importieren. Die Wiedergabe erfolgt über HTML5-Audio, nicht den Rust-Audio-Engine einige EQ- und Replay-Gain-Einstellungen gelten daher nicht für Radio.',
q57: 'Welche Stream-Formate unterstützt Internet Radio?',
a57: 'Psysonic unterstützt alle Formate, die der Audio-Stack des Systems dekodieren kann: MP3, AAC, OGG Vorbis und die meisten HLS-Streams. Da HTML5-Audio verwendet wird, hängt die Codec-Unterstützung von der Plattform ab MP3 und AAC funktionieren überall.',
s10: 'Internet Radio',
q58: 'Woher bezieht Psysonic Songtexte?',
a58: 'Psysonic unterstützt drei Lyrics-Quellen, alle konfigurierbar in Einstellungen → Lyrics: Navidrome-Server (eingebettete/OpenSubsonic-Lyrics), LRCLIB (community-gepflegte synchronisierte Texte) und NetEase Cloud Music (umfangreicher internationaler Katalog). Jede Quelle kann aktiviert/deaktiviert und per Drag & Drop priorisiert werden. Synchronisierte Lyrics scrollen automatisch und unterstützen Klick-zum-Springen.',
q59: 'Gibt es eine Ansicht, was andere Nutzer gerade hören?',
a59: 'Ja. Das Broadcast-Symbol oben rechts im Header öffnet das „Now Playing"-Dropdown. Es zeigt, was andere Nutzer auf dem Navidrome-Server gerade hören aktualisiert alle 10 Sekunden. Der eigene Eintrag verschwindet beim Pausieren.',
},
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',
},
};