feat(playlists): improve smart playlist editing and localization

Open smart playlist editing from playlist cards, load rules via Navidrome single-playlist API with safer fallbacks, and keep edit visibility aligned with ownership rules.
Also add/clean smart playlist locale keys across all supported languages and preserve smarter autogenerated naming behavior.
This commit is contained in:
Maxim Isaev
2026-04-24 17:29:41 +03:00
parent da4e0189b9
commit 401fed8368
12 changed files with 519 additions and 56 deletions
+41
View File
@@ -1315,6 +1315,47 @@ export const deTranslation = {
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',