Files
rkt-web-player/public/translate.js
T
2026-08-28 16:59:45 +02:00

284 lines
21 KiB
JavaScript
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.
(() => {
"use strict";
const translations = {
en: {
output: "OUTPUT", searchPlayers: "Search for network players", logout: "LOG OUT",
rendererLocal: "LOCAL", defaultPlaylist: "Default",
playbackControls: "Playback controls", previousTrack: "Previous track",
playOrPause: "Play or pause", play: "Play", pause: "Pause", stop: "Stop",
nextTrack: "Next track", playbackPosition: "Playback position",
repeatMode: "Repeat mode", setVolume: "Set volume", volume: "Volume",
musicLibrary: "MUSIC LIBRARY", upFolder: "Up one folder", currentFolder: "Current folder",
noLibraryConfigured: "No library configured.", folderContents: "Folder contents",
nowPlaying: "NOW PLAYING", nothingSelected: "Nothing selected yet",
addTrackHint: "Add a track from the library", playlists: "Playlists",
newPlaylist: "New playlist", playlist: "PLAYLIST", clearList: "CLEAR LIST",
emptyPlaylist: "This playlist is empty.", emptyPlaylistHint: "Use next to a track or folder.",
title: "TITLE", album: "ALBUM", duration: "DURATION", actions: "Actions",
connecting: "Connecting…", signIn: "Sign in", username: "Username",
password: "Password", noLibrary: "No library", playNow: "Play {name} now",
addNamed: "Add {name}", loadingNamed: "Loading {name}…", addingNamed: "Adding {name}…",
playlistName: "Playlist name", removePlaylist: "Remove playlist",
removeNamed: "Remove {name}", oneTrack: "track", manyTracks: "tracks",
repeatOff: "Repeat off", repeatAll: "Repeat all", repeatOne: "Repeat one track",
channels: "channels", oneChannel: "channel", searchingPlayers: "Searching for network players…",
authUnknown: "Authentication status unknown: {message}", noConnection: "No connection: {message}",
loggedOut: "You have been logged out.", volumePercent: "Set volume, {value} percent",
},
nl: {
output: "UITVOER", searchPlayers: "Netwerkspelers zoeken", logout: "UITLOGGEN",
rendererLocal: "LOKAAL", defaultPlaylist: "Standaard",
playbackControls: "Afspeelbediening", previousTrack: "Vorige track",
playOrPause: "Afspelen of pauzeren", play: "Afspelen", pause: "Pauzeren", stop: "Stoppen",
nextTrack: "Volgende track", playbackPosition: "Afspeelpositie",
repeatMode: "Herhaalmodus", setVolume: "Volume instellen", volume: "Volume",
musicLibrary: "MUZIEKBIBLIOTHEEK", upFolder: "Eén map omhoog", currentFolder: "Huidige map",
noLibraryConfigured: "Geen bibliotheek geconfigureerd.", folderContents: "Mapinhoud",
nowPlaying: "NU AAN HET SPELEN", nothingSelected: "Nog niets gekozen",
addTrackHint: "Voeg een track toe vanuit de bibliotheek", playlists: "Afspeellijsten",
newPlaylist: "Nieuwe afspeellijst", playlist: "AFSPEELLIJST", clearList: "LIJST WISSEN",
emptyPlaylist: "Deze afspeellijst is leeg.", emptyPlaylistHint: "Gebruik bij een track of map.",
title: "TITEL", album: "ALBUM", duration: "DUUR", actions: "Acties",
connecting: "Verbinden…", signIn: "Aanmelden", username: "Gebruikersnaam",
password: "Wachtwoord", noLibrary: "Geen bibliotheek", playNow: "{name} nu afspelen",
addNamed: "{name} toevoegen", loadingNamed: "{name} laden…", addingNamed: "{name} toevoegen…",
playlistName: "Naam van de afspeellijst", removePlaylist: "Afspeellijst verwijderen",
removeNamed: "{name} verwijderen", oneTrack: "track", manyTracks: "tracks",
repeatOff: "Herhalen uit", repeatAll: "Alles herhalen", repeatOne: "Eén track herhalen",
channels: "kanalen", oneChannel: "kanaal", searchingPlayers: "Netwerkspelers zoeken…",
authUnknown: "Authenticatiestatus onbekend: {message}", noConnection: "Geen verbinding: {message}",
loggedOut: "Je bent uitgelogd.", volumePercent: "Volume instellen, {value} procent",
},
de: {
output: "AUSGABE", searchPlayers: "Netzwerkplayer suchen", logout: "ABMELDEN",
rendererLocal: "LOKAL", defaultPlaylist: "Standard",
playbackControls: "Wiedergabesteuerung", previousTrack: "Vorheriger Titel",
playOrPause: "Wiedergeben oder pausieren", play: "Wiedergeben", pause: "Pausieren", stop: "Stoppen",
nextTrack: "Nächster Titel", playbackPosition: "Wiedergabeposition",
repeatMode: "Wiederholungsmodus", setVolume: "Lautstärke einstellen", volume: "Lautstärke",
musicLibrary: "MUSIKBIBLIOTHEK", upFolder: "Einen Ordner nach oben", currentFolder: "Aktueller Ordner",
noLibraryConfigured: "Keine Bibliothek konfiguriert.", folderContents: "Ordnerinhalt",
nowPlaying: "AKTUELLE WIEDERGABE", nothingSelected: "Noch nichts ausgewählt",
addTrackHint: "Titel aus der Bibliothek hinzufügen", playlists: "Wiedergabelisten",
newPlaylist: "Neue Wiedergabeliste", playlist: "WIEDERGABELISTE", clearList: "LISTE LEEREN",
emptyPlaylist: "Diese Wiedergabeliste ist leer.", emptyPlaylistHint: "Verwenden Sie neben einem Titel oder Ordner.",
title: "TITEL", album: "ALBUM", duration: "DAUER", actions: "Aktionen",
connecting: "Verbinden…", signIn: "Anmelden", username: "Benutzername",
password: "Passwort", noLibrary: "Keine Bibliothek", playNow: "{name} jetzt wiedergeben",
addNamed: "{name} hinzufügen", loadingNamed: "{name} wird geladen…", addingNamed: "{name} wird hinzugefügt…",
playlistName: "Name der Wiedergabeliste", removePlaylist: "Wiedergabeliste entfernen",
removeNamed: "{name} entfernen", oneTrack: "Titel", manyTracks: "Titel",
repeatOff: "Wiederholung aus", repeatAll: "Alles wiederholen", repeatOne: "Einen Titel wiederholen",
channels: "Kanäle", oneChannel: "Kanal", searchingPlayers: "Netzwerkplayer werden gesucht…",
authUnknown: "Authentifizierungsstatus unbekannt: {message}", noConnection: "Keine Verbindung: {message}",
loggedOut: "Sie wurden abgemeldet.", volumePercent: "Lautstärke einstellen, {value} Prozent",
},
fr: {
output: "SORTIE", searchPlayers: "Rechercher les lecteurs réseau", logout: "DÉCONNEXION",
rendererLocal: "LOCAL", defaultPlaylist: "Par défaut",
playbackControls: "Commandes de lecture", previousTrack: "Piste précédente",
playOrPause: "Lire ou mettre en pause", play: "Lire", pause: "Pause", stop: "Arrêter",
nextTrack: "Piste suivante", playbackPosition: "Position de lecture",
repeatMode: "Mode répétition", setVolume: "Régler le volume", volume: "Volume",
musicLibrary: "BIBLIOTHÈQUE MUSICALE", upFolder: "Dossier parent", currentFolder: "Dossier actuel",
noLibraryConfigured: "Aucune bibliothèque configurée.", folderContents: "Contenu du dossier",
nowPlaying: "LECTURE EN COURS", nothingSelected: "Aucune sélection",
addTrackHint: "Ajoutez une piste depuis la bibliothèque", playlists: "Listes de lecture",
newPlaylist: "Nouvelle liste de lecture", playlist: "LISTE DE LECTURE", clearList: "VIDER LA LISTE",
emptyPlaylist: "Cette liste de lecture est vide.", emptyPlaylistHint: "Utilisez à côté dune piste ou dun dossier.",
title: "TITRE", album: "ALBUM", duration: "DURÉE", actions: "Actions",
connecting: "Connexion…", signIn: "Se connecter", username: "Nom dutilisateur",
password: "Mot de passe", noLibrary: "Aucune bibliothèque", playNow: "Lire {name} maintenant",
addNamed: "Ajouter {name}", loadingNamed: "Chargement de {name}…", addingNamed: "Ajout de {name}…",
playlistName: "Nom de la liste de lecture", removePlaylist: "Supprimer la liste de lecture",
removeNamed: "Supprimer {name}", oneTrack: "piste", manyTracks: "pistes",
repeatOff: "Répétition désactivée", repeatAll: "Tout répéter", repeatOne: "Répéter une piste",
channels: "canaux", oneChannel: "canal", searchingPlayers: "Recherche des lecteurs réseau…",
authUnknown: "État dauthentification inconnu : {message}", noConnection: "Aucune connexion : {message}",
loggedOut: "Vous avez été déconnecté.", volumePercent: "Régler le volume, {value} pour cent",
},
es: {
output: "SALIDA", searchPlayers: "Buscar reproductores de red", logout: "CERRAR SESIÓN",
rendererLocal: "LOCAL", defaultPlaylist: "Predeterminada",
playbackControls: "Controles de reproducción", previousTrack: "Pista anterior",
playOrPause: "Reproducir o pausar", play: "Reproducir", pause: "Pausar", stop: "Detener",
nextTrack: "Pista siguiente", playbackPosition: "Posición de reproducción",
repeatMode: "Modo de repetición", setVolume: "Ajustar volumen", volume: "Volumen",
musicLibrary: "BIBLIOTECA MUSICAL", upFolder: "Subir una carpeta", currentFolder: "Carpeta actual",
noLibraryConfigured: "No hay ninguna biblioteca configurada.", folderContents: "Contenido de la carpeta",
nowPlaying: "REPRODUCIENDO", nothingSelected: "Nada seleccionado",
addTrackHint: "Añade una pista desde la biblioteca", playlists: "Listas de reproducción",
newPlaylist: "Nueva lista de reproducción", playlist: "LISTA DE REPRODUCCIÓN", clearList: "VACIAR LISTA",
emptyPlaylist: "Esta lista de reproducción está vacía.", emptyPlaylistHint: "Usa junto a una pista o carpeta.",
title: "TÍTULO", album: "ÁLBUM", duration: "DURACIÓN", actions: "Acciones",
connecting: "Conectando…", signIn: "Iniciar sesión", username: "Nombre de usuario",
password: "Contraseña", noLibrary: "Sin biblioteca", playNow: "Reproducir {name} ahora",
addNamed: "Añadir {name}", loadingNamed: "Cargando {name}…", addingNamed: "Añadiendo {name}…",
playlistName: "Nombre de la lista de reproducción", removePlaylist: "Eliminar lista de reproducción",
removeNamed: "Eliminar {name}", oneTrack: "pista", manyTracks: "pistas",
repeatOff: "Repetición desactivada", repeatAll: "Repetir todo", repeatOne: "Repetir una pista",
channels: "canales", oneChannel: "canal", searchingPlayers: "Buscando reproductores de red…",
authUnknown: "Estado de autenticación desconocido: {message}", noConnection: "Sin conexión: {message}",
loggedOut: "Has cerrado la sesión.", volumePercent: "Ajustar volumen, {value} por ciento",
},
it: {
output: "USCITA", searchPlayers: "Cerca lettori di rete", logout: "ESCI",
rendererLocal: "LOCALE", defaultPlaylist: "Predefinita",
playbackControls: "Controlli di riproduzione", previousTrack: "Traccia precedente",
playOrPause: "Riproduci o metti in pausa", play: "Riproduci", pause: "Pausa", stop: "Arresta",
nextTrack: "Traccia successiva", playbackPosition: "Posizione di riproduzione",
repeatMode: "Modalità ripetizione", setVolume: "Regola il volume", volume: "Volume",
musicLibrary: "LIBRERIA MUSICALE", upFolder: "Cartella superiore", currentFolder: "Cartella corrente",
noLibraryConfigured: "Nessuna libreria configurata.", folderContents: "Contenuto della cartella",
nowPlaying: "IN RIPRODUZIONE", nothingSelected: "Nessuna selezione",
addTrackHint: "Aggiungi una traccia dalla libreria", playlists: "Playlist",
newPlaylist: "Nuova playlist", playlist: "PLAYLIST", clearList: "SVUOTA ELENCO",
emptyPlaylist: "Questa playlist è vuota.", emptyPlaylistHint: "Usa accanto a una traccia o cartella.",
title: "TITOLO", album: "ALBUM", duration: "DURATA", actions: "Azioni",
connecting: "Connessione…", signIn: "Accedi", username: "Nome utente",
password: "Password", noLibrary: "Nessuna libreria", playNow: "Riproduci {name} ora",
addNamed: "Aggiungi {name}", loadingNamed: "Caricamento di {name}…", addingNamed: "Aggiunta di {name}…",
playlistName: "Nome della playlist", removePlaylist: "Rimuovi playlist",
removeNamed: "Rimuovi {name}", oneTrack: "traccia", manyTracks: "tracce",
repeatOff: "Ripetizione disattivata", repeatAll: "Ripeti tutto", repeatOne: "Ripeti una traccia",
channels: "canali", oneChannel: "canale", searchingPlayers: "Ricerca dei lettori di rete…",
authUnknown: "Stato di autenticazione sconosciuto: {message}", noConnection: "Nessuna connessione: {message}",
loggedOut: "Hai effettuato la disconnessione.", volumePercent: "Regola il volume, {value} percento",
},
sv: {
output: "UTGÅNG", searchPlayers: "Sök efter nätverksspelare", logout: "LOGGA UT",
rendererLocal: "LOKAL", defaultPlaylist: "Standard",
playbackControls: "Uppspelningskontroller", previousTrack: "Föregående spår",
playOrPause: "Spela eller pausa", play: "Spela", pause: "Pausa", stop: "Stoppa",
nextTrack: "Nästa spår", playbackPosition: "Uppspelningsposition",
repeatMode: "Upprepningsläge", setVolume: "Ställ in volym", volume: "Volym",
musicLibrary: "MUSIKBIBLIOTEK", upFolder: "En mapp upp", currentFolder: "Aktuell mapp",
noLibraryConfigured: "Inget bibliotek har konfigurerats.", folderContents: "Mappinnehåll",
nowPlaying: "SPELAR NU", nothingSelected: "Inget har valts",
addTrackHint: "Lägg till ett spår från biblioteket", playlists: "Spellistor",
newPlaylist: "Ny spellista", playlist: "SPELLISTA", clearList: "TÖM LISTAN",
emptyPlaylist: "Den här spellistan är tom.", emptyPlaylistHint: "Använd bredvid ett spår eller en mapp.",
title: "TITEL", album: "ALBUM", duration: "LÄNGD", actions: "Åtgärder",
connecting: "Ansluter…", signIn: "Logga in", username: "Användarnamn",
password: "Lösenord", noLibrary: "Inget bibliotek", playNow: "Spela {name} nu",
addNamed: "Lägg till {name}", loadingNamed: "Läser in {name}…", addingNamed: "Lägger till {name}…",
playlistName: "Spellistans namn", removePlaylist: "Ta bort spellista",
removeNamed: "Ta bort {name}", oneTrack: "spår", manyTracks: "spår",
repeatOff: "Upprepning av", repeatAll: "Upprepa alla", repeatOne: "Upprepa ett spår",
channels: "kanaler", oneChannel: "kanal", searchingPlayers: "Söker efter nätverksspelare…",
authUnknown: "Okänd autentiseringsstatus: {message}", noConnection: "Ingen anslutning: {message}",
loggedOut: "Du har loggats ut.", volumePercent: "Ställ in volymen på {value} procent",
},
no: {
output: "UTGANG", searchPlayers: "Søk etter nettverksspillere", logout: "LOGG UT",
rendererLocal: "LOKAL", defaultPlaylist: "Standard",
playbackControls: "Avspillingskontroller", previousTrack: "Forrige spor",
playOrPause: "Spill av eller sett på pause", play: "Spill av", pause: "Pause", stop: "Stopp",
nextTrack: "Neste spor", playbackPosition: "Avspillingsposisjon",
repeatMode: "Gjentakelsesmodus", setVolume: "Still inn volum", volume: "Volum",
musicLibrary: "MUSIKKBIBLIOTEK", upFolder: "Én mappe opp", currentFolder: "Gjeldende mappe",
noLibraryConfigured: "Ingen bibliotek er konfigurert.", folderContents: "Mappeinnhold",
nowPlaying: "SPILLER NÅ", nothingSelected: "Ingenting er valgt",
addTrackHint: "Legg til et spor fra biblioteket", playlists: "Spillelister",
newPlaylist: "Ny spilleliste", playlist: "SPILLELISTE", clearList: "TØM LISTEN",
emptyPlaylist: "Denne spillelisten er tom.", emptyPlaylistHint: "Bruk ved siden av et spor eller en mappe.",
title: "TITTEL", album: "ALBUM", duration: "VARIGHET", actions: "Handlinger",
connecting: "Kobler til…", signIn: "Logg inn", username: "Brukernavn",
password: "Passord", noLibrary: "Ingen bibliotek", playNow: "Spill av {name} nå",
addNamed: "Legg til {name}", loadingNamed: "Laster inn {name}…", addingNamed: "Legger til {name}…",
playlistName: "Navn på spilleliste", removePlaylist: "Fjern spilleliste",
removeNamed: "Fjern {name}", oneTrack: "spor", manyTracks: "spor",
repeatOff: "Gjentakelse av", repeatAll: "Gjenta alle", repeatOne: "Gjenta ett spor",
channels: "kanaler", oneChannel: "kanal", searchingPlayers: "Søker etter nettverksspillere…",
authUnknown: "Ukjent autentiseringsstatus: {message}", noConnection: "Ingen tilkobling: {message}",
loggedOut: "Du er logget ut.", volumePercent: "Still inn volumet på {value} prosent",
},
fi: {
output: "ULOSTULO", searchPlayers: "Etsi verkkosoittimia", logout: "KIRJAUDU ULOS",
rendererLocal: "PAIKALLINEN", defaultPlaylist: "Oletus",
playbackControls: "Toiston ohjaimet", previousTrack: "Edellinen kappale",
playOrPause: "Toista tai keskeytä", play: "Toista", pause: "Keskeytä", stop: "Pysäytä",
nextTrack: "Seuraava kappale", playbackPosition: "Toistokohta",
repeatMode: "Toistotila", setVolume: "Säädä äänenvoimakkuutta", volume: "Äänenvoimakkuus",
musicLibrary: "MUSIIKKIKIRJASTO", upFolder: "Yksi kansio ylöspäin", currentFolder: "Nykyinen kansio",
noLibraryConfigured: "Kirjastoa ei ole määritetty.", folderContents: "Kansion sisältö",
nowPlaying: "NYT TOISTETAAN", nothingSelected: "Mitään ei ole valittu",
addTrackHint: "Lisää kappale kirjastosta", playlists: "Soittolistat",
newPlaylist: "Uusi soittolista", playlist: "SOITTOLISTA", clearList: "TYHJENNÄ LISTA",
emptyPlaylist: "Tämä soittolista on tyhjä.", emptyPlaylistHint: "Käytä kappaleen tai kansion vieressä.",
title: "NIMI", album: "ALBUMI", duration: "KESTO", actions: "Toiminnot",
connecting: "Yhdistetään…", signIn: "Kirjaudu sisään", username: "Käyttäjänimi",
password: "Salasana", noLibrary: "Ei kirjastoa", playNow: "Toista {name} nyt",
addNamed: "Lisää {name}", loadingNamed: "Ladataan {name}…", addingNamed: "Lisätään {name}…",
playlistName: "Soittolistan nimi", removePlaylist: "Poista soittolista",
removeNamed: "Poista {name}", oneTrack: "kappale", manyTracks: "kappaletta",
repeatOff: "Toisto pois", repeatAll: "Toista kaikki", repeatOne: "Toista yksi kappale",
channels: "kanavaa", oneChannel: "kanava", searchingPlayers: "Etsitään verkkosoittimia…",
authUnknown: "Todennuksen tila ei ole tiedossa: {message}", noConnection: "Ei yhteyttä: {message}",
loggedOut: "Olet kirjautunut ulos.", volumePercent: "Säädä äänenvoimakkuudeksi {value} prosenttia",
},
is: {
output: "ÚTTAK", searchPlayers: "Leita að netspilurum", logout: "SKRÁ ÚT",
rendererLocal: "STAÐBUNDIÐ", defaultPlaylist: "Sjálfgefið",
playbackControls: "Stýringar spilunar", previousTrack: "Fyrra lag",
playOrPause: "Spila eða gera hlé", play: "Spila", pause: "Gera hlé", stop: "Stöðva",
nextTrack: "Næsta lag", playbackPosition: "Staða spilunar",
repeatMode: "Endurtekningarhamur", setVolume: "Stilla hljóðstyrk", volume: "Hljóðstyrkur",
musicLibrary: "TÓNLISTARSAFN", upFolder: "Eina möppu upp", currentFolder: "Núverandi mappa",
noLibraryConfigured: "Ekkert safn er skilgreint.", folderContents: "Innihald möppu",
nowPlaying: "Í SPILUN", nothingSelected: "Ekkert valið",
addTrackHint: "Bættu lagi við úr safninu", playlists: "Spilunarlistar",
newPlaylist: "Nýr spilunarlisti", playlist: "SPILUNARLISTI", clearList: "HREINSA LISTA",
emptyPlaylist: "Þessi spilunarlisti er tómur.", emptyPlaylistHint: "Notaðu við hlið lags eða möppu.",
title: "TITILL", album: "PLATA", duration: "LENGD", actions: "Aðgerðir",
connecting: "Tengist…", signIn: "Skrá inn", username: "Notandanafn",
password: "Lykilorð", noLibrary: "Ekkert safn", playNow: "Spila {name} núna",
addNamed: "Bæta {name} við", loadingNamed: "Hleður {name}…", addingNamed: "Bætir {name} við…",
playlistName: "Heiti spilunarlista", removePlaylist: "Fjarlægja spilunarlista",
removeNamed: "Fjarlægja {name}", oneTrack: "lag", manyTracks: "lög",
repeatOff: "Endurtekning óvirk", repeatAll: "Endurtaka allt", repeatOne: "Endurtaka eitt lag",
channels: "rásir", oneChannel: "rás", searchingPlayers: "Leita að netspilurum…",
authUnknown: "Staða auðkenningar óþekkt: {message}", noConnection: "Engin tenging: {message}",
loggedOut: "Þú hefur skráð þig út.", volumePercent: "Stilla hljóðstyrk á {value} prósent",
},
};
const supported = Object.keys(translations);
const requested = [...(navigator.languages || [navigator.language])]
.filter(Boolean)
.map((value) => value.toLowerCase().split("-")[0])
.map((value) => ({ nb: "no", nn: "no" })[value] || value);
let language = requested.find((value) => supported.includes(value)) || "en";
function t(key, values = {}) {
const template = translations[language][key] ?? translations.en[key] ?? key;
return template.replace(/\{(\w+)\}/g, (_match, name) => values[name] ?? `{${name}}`);
}
function apply(root = document) {
document.documentElement.lang = language;
root.querySelectorAll("[data-i18n]").forEach((element) => {
element.textContent = t(element.dataset.i18n);
});
root.querySelectorAll("[data-i18n-title]").forEach((element) => {
const value = t(element.dataset.i18nTitle);
element.title = value;
element.setAttribute("aria-label", value);
});
root.querySelectorAll("[data-i18n-aria]").forEach((element) => {
element.setAttribute("aria-label", t(element.dataset.i18nAria));
});
}
function setLanguage(value) {
if (!supported.includes(value)) return;
language = value;
apply();
window.dispatchEvent(new CustomEvent("rkt-language-change"));
}
window.RktTranslate = { apply, language: () => language, setLanguage, supported, t };
window.addEventListener("DOMContentLoaded", () => apply());
})();