feat(i18n): add translations to roles

This commit is contained in:
Gwendal Beaumont committed 2026-04-02 14:51:52 +02:00
1 parent bfee0ba83e
commit 4dce62a78a
6 files changed
+261 -18

No files matched your search

+8 -7
View File
@@ -1,5 +1,6 @@
<script lang="ts">
import { invoke } from '@tauri-apps/api/core';
import { t } from 'svelte-i18n';
import { X, LoaderCircle } from 'lucide-svelte';
import type { TrackInfo, Performer } from '$lib/types';
@@ -46,14 +47,14 @@
parts.push(`${track.maximum_sampling_rate}kHz`);
}
if (parts.length === 0) {
return track.hires_streamable ? 'Hi-Res' : 'Lossless';
return track.hires_streamable ? $t('quality.hiRes') : $t('quality.lossless');
}
return parts.join(' / ');
}
// Convert CamelCase role to display format
function formatRole(role: string): string {
return role.replace(/([A-Z])/g, ' $1').trim().toUpperCase();
return role[0].toLowerCase() + role.slice(1).replaceAll(' ','');
}
// Group performers by role and return ordered entries
@@ -199,7 +200,7 @@
{/if}
{/if}
</div>
<button class="close-btn" onclick={onClose} aria-label="Close">
<button class="close-btn" onclick={onClose} aria-label={ $t('actions.close') }>
<X size={18} />
</button>
</div>
@@ -209,11 +210,11 @@
<!-- Metadata Grid (3 columns) -->
<div class="metadata-grid">
<div class="metadata-item">
<span class="metadata-label">DURATION</span>
<span class="metadata-label">{$t('tracklist.duration')}</span>
<span class="metadata-value">{formatDuration(trackInfo.track.duration)}</span>
</div>
<div class="metadata-item">
<span class="metadata-label">QUALITY</span>
<span class="metadata-label">{$t('tracklist.quality')}</span>
<span class="metadata-value">{formatQuality(trackInfo.track)}</span>
</div>
{#if trackInfo.track.isrc}
@@ -224,7 +225,7 @@
{/if}
{#if trackInfo.track.album?.label}
<div class="metadata-item">
<span class="metadata-label">LABEL</span>
<span class="metadata-label">{$t('search.label')}</span>
{#if onLabelClick}
<button
class="label-link"
@@ -248,7 +249,7 @@
<div class="credits-grid">
{#each groupedCredits as { role, names }}
<div class="credit-item">
<span class="credit-label">{formatRole(role)}</span>
<span class="credit-label">{$t(`performerRoles.${formatRole(role)}`)}</span>
<span class="credit-value">
{#each names as name, i}
{#if onMusicianClick || onPerformerSearch}
+61 -2
View File
@@ -479,7 +479,8 @@
"visibility": "Sichtweite",
"removeCustomArtwork": "Entfernen Sie benutzerdefinierte Grafiken",
"setCustomArtwork": "Legen Sie benutzerdefinierte Grafiken fest",
"showInSidebar": "In der Seitenleiste anzeigen"
"showInSidebar": "In der Seitenleiste anzeigen",
"suggestedSongs": "Vorgeschlagene Lieder"
},
"favorites": {
"title": "Favoriten",
@@ -1640,7 +1641,8 @@
"enabled": "ermöglicht",
"newState": "Blacklist {status}"
},
"laodingDevices": "Geräte werden geladen..."
"laodingDevices": "Geräte werden geladen...",
"findingSimilarArtists": "Suche nach ähnlichen Künstlern..."
},
"offline": {
"title": "Offline-Modus",
@@ -2405,5 +2407,62 @@
"duration": "Laufzeit",
"quality": "Qualität",
"title": "Titel"
},
"musician": {
"knownFor": "Bekannt für",
"viewArtistPage": "Künstlerseite anzeigen"
},
"performerRoles": {
"a&R": "Künstler und Repertoire",
"acousticGuitar": "Akustikgitarre",
"additionalEngineer": "Zusätzlicher Ingenieur",
"additionalKeyboard": "Zusätzliche Tastatur",
"additionalVocalist": "Zusätzlicher Sänger",
"arranger": "Arrangeur",
"assistantEngineer": "Stellvertretender Ingenieur",
"assistantMixer": "Assistenzmischer",
"associatedPerformer": "Assoziierter Darsteller",
"backgroundVocalist": "Backgroundsänger",
"bass": "Bass",
"bassGuitar": "Bassgitarre",
"choir": "Chor",
"coProducer": "Co-Produzent",
"composer": "Komponist",
"composerLyricist": "Komponist und Texter",
"digitalEditingEngineer": "Ingenieur für digitale Bearbeitung",
"drum": "Trommel",
"drumKit": "Schlagzeug",
"drums": "Schlagzeug",
"electricGuitar": "Elektrische Gitarre",
"engineer": "Ingenieur",
"featuredArtist": "Ausgewählter Künstler",
"guitar": "Gitarre",
"keyboard": "Tastatur",
"keyboards": "Tastaturen",
"lyricist": "Texter",
"mainArtist": "Hauptkünstler",
"masteringEngineer": "Mastering-Ingenieur",
"mixer": "Mischer",
"mixingEngineer": "Mischingenieur",
"musicPublisher": "Musikverlag",
"organ": "Orgel",
"percussion": "Schlagzeug",
"performance": "Leistung",
"piano": "Klavier",
"producer": "Produzent",
"recordingEngineer": "Aufnahmeingenieur",
"programmer": "Programmierer",
"recordingSecondEngineer": "Aufnahme des zweiten Ingenieurs",
"remixer": "Remixer",
"secondEngineer": "Zweiter Ingenieur",
"stringArranger": "String-Arrangeur",
"strings": "Saiten",
"studioPersonnel": "Studiopersonal",
"ukulele": "Ukulele",
"vocal": "Gesang",
"vocalEditingEngineer": "Gesangsbearbeitungsingenieur",
"vocalist": "Sänger",
"vocals": "Gesang",
"writer": "Schriftsteller"
}
}
+9 -3
View File
@@ -479,7 +479,8 @@
"dragPlaylists": "Drag playlists to reorder them",
"dropOntoFolder": "or drop onto a folder to move.",
"newFolder": "New folder",
"folderNamePlaceholder": "Enter folder name"
"folderNamePlaceholder": "Enter folder name",
"suggestedSongs": "Suggested songs"
},
"favorites": {
"title": "Favorites",
@@ -1663,7 +1664,8 @@
"loadingCredits": "Loading credits...",
"loadingDevices": "Loading devices...",
"addedToPlaylist": "Added to playlist",
"copied": "Copied!"
"copied": "Copied!",
"findingSimilarArtists": "Finding similar artists..."
},
"offline": {
"title": "Offline Mode",
@@ -2387,7 +2389,7 @@
"checkForUpdates": "Check for updates"
},
"performerRoles": {
"a&R": "A&R",
"a&R": "Artists and Repertoire",
"acousticGuitar": "Acoustic Guitar",
"additionalEngineer": "Additional Engineer",
"additionalKeyboard": "Additional Keyboard",
@@ -2458,5 +2460,9 @@
},
"common": {
"name": "Name"
},
"musician": {
"knownFor": "Known for",
"viewArtistPage": "View Artist Page"
}
}
+61 -2
View File
@@ -479,7 +479,8 @@
"dragPlaylists": "Arrastra las listas para cambiarlas de orden",
"dropOntoFolder": "o arrástralo a una carpeta para moverlo.",
"newFolder": "Nueva carpeta",
"folderNamePlaceholder": "Introduzca el nombre de la carpeta"
"folderNamePlaceholder": "Introduzca el nombre de la carpeta",
"suggestedSongs": "Canciones sugeridas"
},
"favorites": {
"title": "Favoritos",
@@ -1663,7 +1664,8 @@
"addedToPlaylist": "Agregado a la lista",
"copied": "¡Copiado!",
"loadingCredits": "Cargando créditos...",
"laodingDevices": "Cargando dispositivos..."
"laodingDevices": "Cargando dispositivos...",
"findingSimilarArtists": "Encontrar artistas similares..."
},
"offline": {
"title": "Modo Offline",
@@ -2405,5 +2407,62 @@
},
"integrations": {
"connecting": "Conectando..."
},
"musician": {
"knownFor": "conocido por",
"viewArtistPage": "Ver página del artista"
},
"performerRoles": {
"a&R": "Artistas y repertorio",
"acousticGuitar": "guitarra acustica",
"additionalEngineer": "Ingeniero adicional",
"additionalKeyboard": "Teclado adicional",
"additionalVocalist": "Vocalista adicional",
"arranger": "Arreglista",
"assistantEngineer": "Ingeniero asistente",
"assistantMixer": "Asistente de mezclador",
"associatedPerformer": "Intérprete asociado",
"backgroundVocalist": "Vocalista de fondo",
"bass": "Bajo",
"bassGuitar": "Bajo",
"choir": "Coro",
"coProducer": "Coproductor",
"composer": "Compositor",
"composerLyricist": "Compositor letrista",
"digitalEditingEngineer": "Ingeniero de edición digital",
"drum": "Tambor",
"drumKit": "Batería",
"drums": "Batería",
"electricGuitar": "Guitarra eléctrica",
"engineer": "Ingeniero",
"featuredArtist": "Artista destacado",
"guitar": "Guitarra",
"keyboard": "Teclado",
"keyboards": "Teclados",
"lyricist": "Letrista",
"mainArtist": "Artista principal",
"masteringEngineer": "Ingeniero de masterización",
"mixer": "Mezclador",
"mixingEngineer": "Ingeniero de Mezcla",
"musicPublisher": "Editor de música",
"organ": "Órgano",
"percussion": "Percusión",
"performance": "Actuación",
"piano": "Piano",
"producer": "Productor",
"recordingEngineer": "Ingeniero de grabación",
"programmer": "Programador",
"recordingSecondEngineer": "Segundo ingeniero de grabación",
"remixer": "Remezclador",
"secondEngineer": "Segundo ingeniero",
"stringArranger": "Arreglista de cuerdas",
"strings": "Instrumentos de cuerda",
"studioPersonnel": "Personal del estudio",
"ukulele": "ukelele",
"vocal": "Vocal",
"vocalEditingEngineer": "Ingeniero de edición vocal",
"vocalist": "Vocalista",
"vocals": "Voz",
"writer": "Escritor"
}
}
+61 -2
View File
@@ -479,7 +479,8 @@
"moveToRoot": "Déplacer à la racine",
"newFolder": "Nouveau dossier",
"noFoldersMatch": "Aucun dossier ne correspond",
"noFoldersYet": "Aucun dossier pour l'instant"
"noFoldersYet": "Aucun dossier pour l'instant",
"suggestedSongs": "Chansons suggérées"
},
"favorites": {
"title": "Favoris",
@@ -1640,7 +1641,8 @@
"addedToPlaylist": "Ajouté à la playlist",
"loadingCredits": "Chargement des crédits...",
"loadingDevices": "Chargement des appareils...",
"playlistUpdated": "Playlist mise à jour"
"playlistUpdated": "Playlist mise à jour",
"findingSimilarArtists": "Trouver des artistes similaires..."
},
"offline": {
"title": "Mode hors ligne",
@@ -2405,5 +2407,62 @@
"whatsNew": "Quoi de neuf",
"whatsNewIn": "Quoi de neuf dans v${version}"
}
},
"musician": {
"knownFor": "Connu pour",
"viewArtistPage": "Voir la page de l'artiste"
},
"performerRoles": {
"a&R": "Artistes et répertoire",
"acousticGuitar": "Guitare acoustique",
"additionalEngineer": "Ingénieur supplémentaire",
"additionalKeyboard": "Clavier supplémentaire",
"additionalVocalist": "Chanteur supplémentaire",
"arranger": "Arrangeur",
"assistantEngineer": "Ingénieur adjoint",
"assistantMixer": "Assistant mixeur",
"associatedPerformer": "Interprète associé",
"backgroundVocalist": "Choriste",
"bass": "Basse",
"bassGuitar": "Basse",
"choir": "Chœur",
"coProducer": "Coproducteur",
"composer": "Compositeur",
"composerLyricist": "Compositeur Parolier",
"digitalEditingEngineer": "Ingénieur édition numérique",
"drum": "Tambour",
"drumKit": "Batterie",
"drums": "Batterie",
"electricGuitar": "Guitare électrique",
"engineer": "Ingénieur",
"featuredArtist": "Artiste en vedette",
"guitar": "Guitare",
"keyboard": "Clavier",
"keyboards": "Claviers",
"lyricist": "Parolier",
"mainArtist": "Artiste principal",
"masteringEngineer": "Ingénieur mastering",
"mixer": "Mixer",
"mixingEngineer": "Ingénieur Mixage",
"musicPublisher": "Éditeur de musique",
"organ": "Orgue",
"percussion": "Percussion",
"performance": "Performance",
"piano": "Piano",
"producer": "Producteur",
"recordingEngineer": "Ingénieur du son",
"programmer": "Programmeur",
"recordingSecondEngineer": "Deuxième ingénieur d'enregistrement",
"remixer": "Remixeur",
"secondEngineer": "Deuxième ingénieur",
"stringArranger": "Arrangeur de cordes",
"strings": "Cordes",
"studioPersonnel": "Personnel du studio",
"ukulele": "Ukulélé",
"vocal": "Vocal",
"vocalEditingEngineer": "Ingénieur d'édition vocale",
"vocalist": "Chanteur",
"vocals": "Voix",
"writer": "Écrivain"
}
}
+61 -2
View File
@@ -479,7 +479,8 @@
"dragPlaylists": "Arraste playlists para reordená-las",
"dropOntoFolder": "ou solte sobre uma pasta para mover.",
"newFolder": "Nova pasta",
"folderNamePlaceholder": "Digite o nome da pasta"
"folderNamePlaceholder": "Digite o nome da pasta",
"suggestedSongs": "Músicas sugeridas"
},
"favorites": {
"title": "Favoritos",
@@ -1663,7 +1664,8 @@
"enabled": "habilitado",
"newState": "Lista negra {status}"
},
"laodingDevices": "Carregando dispositivos..."
"laodingDevices": "Carregando dispositivos...",
"findingSimilarArtists": "Encontrando artistas semelhantes..."
},
"offline": {
"title": "Modo Offline",
@@ -2405,5 +2407,62 @@
"duration": "Duração",
"quality": "Qualidade",
"title": "Título"
},
"musician": {
"knownFor": "Conhecido por",
"viewArtistPage": "Ver página do artista"
},
"performerRoles": {
"a&R": "Artistas e Repertório",
"acousticGuitar": "Guitarra acústica",
"additionalEngineer": "Engenheiro Adicional",
"additionalKeyboard": "Teclado Adicional",
"additionalVocalist": "Vocalista Adicional",
"arranger": "Arranjador",
"assistantEngineer": "Engenheiro Assistente",
"assistantMixer": "Mixador Assistente",
"associatedPerformer": "Artista Associado",
"backgroundVocalist": "Vocalista de fundo",
"bass": "Baixo",
"bassGuitar": "Baixo",
"choir": "Coro",
"coProducer": "Coprodutor",
"composer": "Compositor",
"composerLyricist": "Compositor Letrista",
"digitalEditingEngineer": "Engenheiro de Edição Digital",
"drum": "Tambor",
"drumKit": "Bateria",
"drums": "Bateria",
"electricGuitar": "Guitarra elétrica",
"engineer": "Engenheiro",
"featuredArtist": "Artista em destaque",
"guitar": "Guitarra",
"keyboard": "Teclado",
"keyboards": "Teclados",
"lyricist": "Letrista",
"mainArtist": "Artista Principal",
"masteringEngineer": "Engenheiro de Masterização",
"mixer": "Misturador",
"mixingEngineer": "Engenheiro de mixagem",
"musicPublisher": "Editora musical",
"organ": "Órgão",
"percussion": "Percussão",
"performance": "Desempenho",
"piano": "Piano",
"producer": "Produtor",
"recordingEngineer": "Engenheiro de Gravação",
"programmer": "Programador",
"recordingSecondEngineer": "Segundo Engenheiro de Gravação",
"remixer": "Remixador",
"secondEngineer": "Segundo Engenheiro",
"stringArranger": "Arranjador de cordas",
"strings": "Cordas",
"studioPersonnel": "Pessoal do estúdio",
"ukulele": "Ukulele",
"vocal": "Vocal",
"vocalEditingEngineer": "Engenheiro de edição vocal",
"vocalist": "Vocalista",
"vocals": "Vocais",
"writer": "Escritor"
}
}