Added a dedicated table for release artists + handle display names in UI/Subsonic API, ref #731

This commit is contained in:
emeric
2025-12-24 09:00:59 +01:00
parent 68cc7116a7
commit f70692b680
78 changed files with 1916 additions and 935 deletions
+14 -12
View File
@@ -4,7 +4,7 @@
<message id="Lms.Explore.Artists.template">
<div class="d-flex justify-content-between align-items-center mb-3">
${link-type class="me-1"}
${artist-type class="me-1"}
<div class="d-flex">
${search class="form-control form-control-sm me-1" type="search"}
${sort-mode}
@@ -29,22 +29,24 @@
${loading-indicator}
</message>
<message id="Lms.Explore.Artists.template.track-artist-link-type-selector">
<message id="Lms.Explore.Artists.template.artist-type-selector">
<div class="dropdown">
<button class="btn btn-sm btn-outline-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
${selected-item}
</button>
<ul class="dropdown-menu">
<li>${link-type-all class="dropdown-item"}</li>
<li>${link-type-artist class="dropdown-item"}</li>
<li>${link-type-releaseartist class="dropdown-item"}</li>
<li>${link-type-composer class="dropdown-item"}</li>
<li>${link-type-conductor class="dropdown-item"}</li>
<li>${link-type-lyricist class="dropdown-item"}</li>
<li>${link-type-mixer class="dropdown-item"}</li>
<li>${link-type-performer class="dropdown-item"}</li>
<li>${link-type-producer class="dropdown-item"}</li>
<li>${link-type-remixer class="dropdown-item"}</li>
<li>${artist-type-all class="dropdown-item"}</li>
<li class="dropdown-divider"></li>
<li>${artist-type-release-artist class="dropdown-item"}</li>
<li class="dropdown-divider"></li>
<li>${artist-type-track-artist class="dropdown-item"}</li>
<li>${artist-type-composer class="dropdown-item"}</li>
<li>${artist-type-conductor class="dropdown-item"}</li>
<li>${artist-type-lyricist class="dropdown-item"}</li>
<li>${artist-type-mixer class="dropdown-item"}</li>
<li>${artist-type-performer class="dropdown-item"}</li>
<li>${artist-type-producer class="dropdown-item"}</li>
<li>${artist-type-remixer class="dropdown-item"}</li>
</ul>
</div>
</message>
+2 -1
View File
@@ -58,13 +58,14 @@
${selected-item}
</button>
<ul class="dropdown-menu">
<li>${all class="dropdown-item"}</li>
<li class="dropdown-divider"></li>
<li>${random class="dropdown-item"}</li>
<li>${starred class="dropdown-item"}</li>
<li>${recently-played class="dropdown-item"}</li>
<li>${most-played class="dropdown-item"}</li>
<li>${recently-added class="dropdown-item"}</li>
<li>${recently-modified class="dropdown-item"}</li>
<li>${all class="dropdown-item"}</li>
</ul>
</div>
</message>
+3 -1
View File
@@ -27,11 +27,13 @@
</div>
<div class="flex-fill text-center text-truncate">
${title class="d-block text-truncate"}
${artist class="d-inline text-decoration-none text-truncate link-success"}
<span>
${artist class="d-inline text-decoration-none text-truncate"}
<span class="d-none d-md-inline">
${separator}
${release class="text-decoration-none text-truncate link-success"}
</span>
</span>
</div>
<div class="p-2 d-none d-sm-block text-muted text-nowrap">
<span id="lms-transcoding-active" title="${tr:Lms.Player.transcoding-active}" class="p-2" style="display:none"><i class="fa fa-fw fa-info-circle" aria-hidden="true"></i></span>
+13 -13
View File
@@ -240,43 +240,43 @@
<message id="Lms.Explore.Artist.similar-artists">Similar artists</message>
<!--Explore:Artists-->
<message id="Lms.Explore.Artists.linktype-all">All artists</message>
<message id="Lms.Explore.Artists.linktype-artist">
<plural case="0">Track artist</plural>
<plural case="1">Track artists</plural>
</message>
<message id="Lms.Explore.Artists.linktype-composer">
<message id="Lms.Explore.Artists.all">All artists</message>
<message id="Lms.Explore.Artists.composer">
<plural case="0">Composer</plural>
<plural case="1">Composers</plural>
</message>
<message id="Lms.Explore.Artists.linktype-conductor">
<message id="Lms.Explore.Artists.conductor">
<plural case="0">Conductor</plural>
<plural case="1">Conductors</plural>
</message>
<message id="Lms.Explore.Artists.linktype-lyricist">
<message id="Lms.Explore.Artists.lyricist">
<plural case="0">Lyricist</plural>
<plural case="1">Lyricists</plural>
</message>
<message id="Lms.Explore.Artists.linktype-mixer">
<message id="Lms.Explore.Artists.mixer">
<plural case="0">Mixer</plural>
<plural case="1">Mixers</plural>
</message>
<message id="Lms.Explore.Artists.linktype-performer">
<message id="Lms.Explore.Artists.performer">
<plural case="0">Performer</plural>
<plural case="1">Performers</plural>
</message>
<message id="Lms.Explore.Artists.linktype-producer">
<message id="Lms.Explore.Artists.producer">
<plural case="0">Producer</plural>
<plural case="1">Producers</plural>
</message>
<message id="Lms.Explore.Artists.linktype-releaseartist">
<message id="Lms.Explore.Artists.release-artist">
<plural case="0">Album artist</plural>
<plural case="1">Album artists</plural>
</message>
<message id="Lms.Explore.Artists.linktype-remixer">
<message id="Lms.Explore.Artists.remixer">
<plural case="0">Remixer</plural>
<plural case="1">Remixers</plural>
</message>
<message id="Lms.Explore.Artists.track-artist">
<plural case="0">Track artist</plural>
<plural case="1">Track artists</plural>
</message>
<!--Explore:Release-->
<message id="Lms.Explore.Release.copyright">Copyright</message>
+13 -13
View File
@@ -240,43 +240,43 @@
<message id="Lms.Explore.Artist.similar-artists">Artistas similares</message>
<!--Explore:Artists-->
<message id="Lms.Explore.Artists.linktype-all">Todos los artistas</message>
<message id="Lms.Explore.Artists.linktype-artist">
<plural case="0">Artista de la pista</plural>
<plural case="1">Artistas de la pista</plural>
</message>
<message id="Lms.Explore.Artists.linktype-composer">
<message id="Lms.Explore.Artists.all">Todos los artistas</message>
<message id="Lms.Explore.Artists.composer">
<plural case="0">Compositor</plural>
<plural case="1">Compositores</plural>
</message>
<message id="Lms.Explore.Artists.linktype-conductor">
<message id="Lms.Explore.Artists.conductor">
<plural case="0">Director de orquesta</plural>
<plural case="1">Directores de orquesta</plural>
</message>
<message id="Lms.Explore.Artists.linktype-lyricist">
<message id="Lms.Explore.Artists.lyricist">
<plural case="0">Letrista</plural>
<plural case="1">Letristas</plural>
</message>
<message id="Lms.Explore.Artists.linktype-mixer">
<message id="Lms.Explore.Artists.mixer">
<plural case="0">Mezclador</plural>
<plural case="1">Mezcladores</plural>
</message>
<message id="Lms.Explore.Artists.linktype-performer">
<message id="Lms.Explore.Artists.performer">
<plural case="0">Intérprete</plural>
<plural case="1">Intérpretes</plural>
</message>
<message id="Lms.Explore.Artists.linktype-producer">
<message id="Lms.Explore.Artists.producer">
<plural case="0">Productor</plural>
<plural case="1">Productores</plural>
</message>
<message id="Lms.Explore.Artists.linktype-releaseartist">
<message id="Lms.Explore.Artists.release-artist">
<plural case="0">Artista del álbum</plural>
<plural case="1">Artistas del álbum</plural>
</message>
<message id="Lms.Explore.Artists.linktype-remixer">
<message id="Lms.Explore.Artists.remixer">
<plural case="0">Remezclador</plural>
<plural case="1">Remezcladores</plural>
</message>
<message id="Lms.Explore.Artists.track-artist">
<plural case="0">Artista de la pista</plural>
<plural case="1">Artistas de la pista</plural>
</message>
<!--Explore:Release-->
<message id="Lms.Explore.Release.copyright">Copyright</message>
+13 -13
View File
@@ -240,43 +240,43 @@
<message id="Lms.Explore.Artist.similar-artists">Artistes similaires</message>
<!--Explore:Artists-->
<message id="Lms.Explore.Artists.linktype-all">Tous les artistes</message>
<message id="Lms.Explore.Artists.linktype-artist">
<plural case="0">Artiste de piste</plural>
<plural case="1">Artistes de piste</plural>
</message>
<message id="Lms.Explore.Artists.linktype-composer">
<message id="Lms.Explore.Artists.all">Tous les artistes</message>
<message id="Lms.Explore.Artists.composer">
<plural case="0">Compositeur</plural>
<plural case="1">Compositeurs</plural>
</message>
<message id="Lms.Explore.Artists.linktype-conductor">
<message id="Lms.Explore.Artists.conductor">
<plural case="0">Chef d'orchestre</plural>
<plural case="1">Chefs d'orchestre</plural>
</message>
<message id="Lms.Explore.Artists.linktype-lyricist">
<message id="Lms.Explore.Artists.lyricist">
<plural case="0">Parolier</plural>
<plural case="1">Paroliers</plural>
</message>
<message id="Lms.Explore.Artists.linktype-mixer">
<message id="Lms.Explore.Artists.mixer">
<plural case="0">Mixeur</plural>
<plural case="1">Mixeurs</plural>
</message>
<message id="Lms.Explore.Artists.linktype-performer">
<message id="Lms.Explore.Artists.performer">
<plural case="0">Interprète</plural>
<plural case="1">Interprètes</plural>
</message>
<message id="Lms.Explore.Artists.linktype-producer">
<message id="Lms.Explore.Artists.producer">
<plural case="0">Producteur</plural>
<plural case="1">Producteurs</plural>
</message>
<message id="Lms.Explore.Artists.linktype-releaseartist">
<message id="Lms.Explore.Artists.release-artist">
<plural case="0">Artiste d'album</plural>
<plural case="1">Artistes d'album</plural>
</message>
<message id="Lms.Explore.Artists.linktype-remixer">
<message id="Lms.Explore.Artists.remixer">
<plural case="0">Remixeur</plural>
<plural case="1">Remixeurs</plural>
</message>
<message id="Lms.Explore.Artists.track-artist">
<plural case="0">Artiste de piste</plural>
<plural case="1">Artistes de piste</plural>
</message>
<!--Explore:Release-->
<message id="Lms.Explore.Release.copyright">Copyright</message>
+13 -13
View File
@@ -240,43 +240,43 @@
<message id="Lms.Explore.Artist.similar-artists">Artisti simili</message>
<!--Explore:Artists-->
<message id="Lms.Explore.Artists.linktype-all">Tutti gli artisti</message>
<message id="Lms.Explore.Artists.linktype-artist">
<plural case="0">Artista della traccia</plural>
<plural case="1">Artisti della traccia</plural>
</message>
<message id="Lms.Explore.Artists.linktype-composer">
<message id="Lms.Explore.Artists.all">Tutti gli artisti</message>
<message id="Lms.Explore.Artists.composer">
<plural case="0">Compositore</plural>
<plural case="1">Compositori</plural>
</message>
<message id="Lms.Explore.Artists.linktype-conductor">
<message id="Lms.Explore.Artists.conductor">
<plural case="0">Direttore d'orchestra</plural>
<plural case="1">Direttori d'orchestra</plural>
</message>
<message id="Lms.Explore.Artists.linktype-lyricist">
<message id="Lms.Explore.Artists.lyricist">
<plural case="0">Paroliere</plural>
<plural case="1">Parolieri</plural>
</message>
<message id="Lms.Explore.Artists.linktype-mixer">
<message id="Lms.Explore.Artists.mixer">
<plural case="0">Tecnico del mixaggio</plural>
<plural case="1">Tecnici del mixaggio</plural>
</message>
<message id="Lms.Explore.Artists.linktype-performer">
<message id="Lms.Explore.Artists.performer">
<plural case="0">Interprete</plural>
<plural case="1">Interpreti</plural>
</message>
<message id="Lms.Explore.Artists.linktype-producer">
<message id="Lms.Explore.Artists.producer">
<plural case="0">Produttore</plural>
<plural case="1">Produttori</plural>
</message>
<message id="Lms.Explore.Artists.linktype-releaseartist">
<message id="Lms.Explore.Artists.release-artist">
<plural case="0">Artista dell'album</plural>
<plural case="1">Artisti dell'album</plural>
</message>
<message id="Lms.Explore.Artists.linktype-remixer">
<message id="Lms.Explore.Artists.remixer">
<plural case="0">Remixer</plural>
<plural case="1">Remixers</plural>
</message>
<message id="Lms.Explore.Artists.track-artist">
<plural case="0">Artista della traccia</plural>
<plural case="1">Artisti della traccia</plural>
</message>
<!--Explore:Release-->
<message id="Lms.Explore.Release.copyright">Copyright</message>
+14 -14
View File
@@ -257,52 +257,52 @@
<message id="Lms.Explore.Artist.similar-artists">Podobni artyści</message>
<!--Explore:Artists-->
<message id="Lms.Explore.Artists.linktype-all">Wszyscy artyści</message>
<message id="Lms.Explore.Artists.linktype-artist">
<plural case="0">Artysta ze ścieżki</plural>
<plural case="1">Artyści ze ścieżki</plural>
<plural case="2">Artyści ze ścieżki</plural>
</message>
<message id="Lms.Explore.Artists.linktype-composer">
<message id="Lms.Explore.Artists.all">Wszyscy artyści</message>
<message id="Lms.Explore.Artists.composer">
<plural case="0">Kompozytor</plural>
<plural case="1">Kompozytorzy</plural>
<plural case="2">Kompozytorzy</plural>
</message>
<message id="Lms.Explore.Artists.linktype-conductor">
<message id="Lms.Explore.Artists.conductor">
<plural case="0">Dyrygent</plural>
<plural case="1">Dyrygenci</plural>
<plural case="2">Dyrygenci</plural>
</message>
<message id="Lms.Explore.Artists.linktype-lyricist">
<message id="Lms.Explore.Artists.lyricist">
<plural case="0">Tekściarz</plural>
<plural case="1">Tekściarze</plural>
<plural case="2">Tekściarze</plural>
</message>
<message id="Lms.Explore.Artists.linktype-mixer">
<message id="Lms.Explore.Artists.mixer">
<plural case="0">Realizator</plural>
<plural case="1">Realizatorzy</plural>
<plural case="2">Realizatorzy</plural>
</message>
<message id="Lms.Explore.Artists.linktype-performer">
<message id="Lms.Explore.Artists.performer">
<plural case="0">Wykonawca</plural>
<plural case="1">Wykonawcy</plural>
<plural case="2">Wykonawcy</plural>
</message>
<message id="Lms.Explore.Artists.linktype-producer">
<message id="Lms.Explore.Artists.producer">
<plural case="0">Producent</plural>
<plural case="1">Producenci</plural>
<plural case="2">Producenci</plural>
</message>
<message id="Lms.Explore.Artists.linktype-releaseartist">
<message id="Lms.Explore.Artists.release-artist">
<plural case="0">Artysta z albumu</plural>
<plural case="1">Artyści z albumu</plural>
<plural case="2">Artyści z albumu</plural>
</message>
<message id="Lms.Explore.Artists.linktype-remixer">
<message id="Lms.Explore.Artists.remixer">
<plural case="0">Remixer</plural>
<plural case="1">Remikserzy</plural>
<plural case="2">Remikserzy</plural>
</message>
<message id="Lms.Explore.Artists.track-artist">
<plural case="0">Artysta ze ścieżki</plural>
<plural case="1">Artyści ze ścieżki</plural>
<plural case="2">Artyści ze ścieżki</plural>
</message>
<!--Explore:Release-->
<message id="Lms.Explore.Release.copyright">Prawa autorskie</message>
+10 -11
View File
@@ -238,17 +238,16 @@
<message id="Lms.Explore.Artist.similar-artists">相似歌手</message>
<!--Explore:Artists-->
<message id="Lms.Explore.Artists.linktype-all">所有艺术家</message>
<message id="Lms.Explore.Artists.linktype-artist">曲目艺术家</message>
<message id="Lms.Explore.Artists.linktype-composer">作曲者</message>
<message id="Lms.Explore.Artists.linktype-conductor">指挥</message>
<message id="Lms.Explore.Artists.linktype-lyricist">作词者</message>
<message id="Lms.Explore.Artists.linktype-mixer">混音师</message>
<message id="Lms.Explore.Artists.linktype-performer">表演者</message>
<message id="Lms.Explore.Artists.linktype-producer">制作人</message>
<message id="Lms.Explore.Artists.linktype-releaseartist">专辑艺术家</message>
<message id="Lms.Explore.Artists.linktype-remixer">混音师</message>
<message id="Lms.Explore.Artists.all">所有艺术家</message>
<message id="Lms.Explore.Artists.composer">作曲者</message>
<message id="Lms.Explore.Artists.conductor">指挥</message>
<message id="Lms.Explore.Artists.lyricist">作词者</message>
<message id="Lms.Explore.Artists.mixer">混音师</message>
<message id="Lms.Explore.Artists.performer">表演者</message>
<message id="Lms.Explore.Artists.producer">制作人</message>
<message id="Lms.Explore.Artists.release-artist">专辑艺术家</message>
<message id="Lms.Explore.Artists.remixer">混音师</message>
<message id="Lms.Explore.Artists.track-artist">曲目艺术家</message>
<!--Explore:Release-->
<message id="Lms.Explore.Release.copyright">版权所有</message>