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
@@ -1308,6 +1308,47 @@ export const esTranslation = {
csvImportDownloadSuccess: 'Reporte descargado exitosamente',
csvImportDownloadError: 'Error al descargar el reporte',
},
smartPlaylists: {
sectionBasic: '1. Básico',
sectionGenres: '2. Géneros',
sectionYearsAndFilters: '3. Años y filtros',
genreMode: 'Modo de géneros',
genreModeInclude: 'Incluir géneros',
genreModeExclude: 'Excluir géneros',
genreSearchPlaceholder: 'Filtrar géneros...',
availableGenres: 'Disponibles',
selectedGenres: 'Seleccionados',
yearMode: 'Modo de años',
yearModeInclude: 'Incluir rango',
yearModeExclude: 'Excluir rango',
name: 'Nombre (sin prefijo)',
limit: 'Límite',
limitHint: 'Cuántas canciones incluir en la playlist (1-{{max}}, normalmente 50).',
artistContains: 'Artista contiene…',
albumContains: 'Álbum contiene…',
titleContains: 'Título contiene…',
minRating: 'Valoración mínima',
minRatingAria: 'Valoración mínima para la playlist inteligente',
minRatingHint: '0 desactiva el umbral mínimo; 1-5 mantiene canciones con valoración mayor que el valor seleccionado.',
fromYear: 'Desde año',
toYear: 'Hasta año',
excludeUnrated: 'Excluir canciones sin valoración',
compilationOnly: 'Solo compilaciones',
create: 'Nueva Smart Playlist',
save: 'Guardar Smart Playlist',
created: '{{name}} creada',
updated: '{{name}} actualizada',
createFailed: 'No se pudo crear la smart playlist.',
updateFailed: 'No se pudo actualizar la smart playlist.',
navidromeOnly: 'Las smart playlists solo se pueden crear en servidores Navidrome.',
loadFailed: 'No se pudieron cargar las smart playlists desde Navidrome.',
sortRandom: 'Ordenar: aleatorio',
sortTitleAsc: 'Ordenar: título A-Z',
sortTitleDesc: 'Ordenar: título Z-A',
sortYearDesc: 'Ordenar: año desc',
sortYearAsc: 'Ordenar: año asc',
sortPlayCountDesc: 'Ordenar: reproducciones desc',
},
mostPlayed: {
title: 'Más Reproducidos',
topArtists: 'Artistas Principales',