Merge branch 'main' into 'main'

Update

See merge request RemixDev/deemix-webui!36
This commit is contained in:
RemixDev 2022-03-03 17:35:29 +00:00
commit bf6bfc06f1
4 changed files with 114 additions and 61 deletions

11
.vscode/settings.json vendored
View File

@ -1,11 +0,0 @@
{
"search.exclude": {
"**/*.map": true,
"public/css": true,
"public/js": true
},
"path-intellisense.mappings": {
"@": "${workspaceRoot}/src",
"@components": "${workspaceRoot}/src/js/components"
}
}

28
.vscode/tasks.json vendored
View File

@ -1,28 +0,0 @@
{
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "build",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [],
"label": "npm: build",
"detail": "npm-run-all --sequential clean build:js"
},
{
// Workaround for dev script
"type": "npm",
"script": "dev:gui",
"problemMatcher": [],
"label": "npm: dev:gui",
"detail": "npm-run-all --parallel serve:gui watch:js",
"group": {
"kind": "test",
"isDefault": true
}
}
]
}

View File

@ -27,14 +27,20 @@ const de = {
single: 'Single | Singles', single: 'Single | Singles',
title: 'Titel | Titel', title: 'Titel | Titel',
track: 'Track | Tracks', track: 'Track | Tracks',
trackN: '0 Tracks | {n} Track | {n} Tracks',
releaseN: '0 Releases | {n} Release | {n} Releases',
playlist: 'Playlist | Playlists', playlist: 'Playlist | Playlists',
compile: 'Sammlung | Sammlungen', compile: 'Sammlung | Sammlungen',
ep: 'EP | EPs', ep: 'EP | EPs',
bundle: 'Bündel | Bündel',
more: 'Weitere Alben',
featured: 'Bekannt in',
spotifyPlaylist: 'Spotify Playlist | Spotify Playlists', spotifyPlaylist: 'Spotify Playlist | Spotify Playlists',
releaseDate: 'Veröffentlichungsdatum', releaseDate: 'Veröffentlichungsdatum',
error: 'Fehler' error: 'Fehler',
trackN: '0 Tracks | {n} Track | {n} Tracks',
albumN: '0 Alben | {n} Album | {n} Alben',
artistN: '0 Künstler | {n} Künstler | {n} Künstler',
releaseN: '0 Veröffentlichungen | {n} Veröffentlichung | {n} Veröffentlichungen',
playlistN: '0 Playlisten | {n} Playlist | {n} Playlisten'
}, },
yes: 'Ja', yes: 'Ja',
no: 'Nein', no: 'Nein',
@ -64,10 +70,8 @@ const de = {
contributing: 'Du möchtest bei dem Projekt helfen? Das kannst du auf verschiedene Arten machen!', contributing: 'Du möchtest bei dem Projekt helfen? Das kannst du auf verschiedene Arten machen!',
donations: 'Du möchtest deemix finanziell unterstützen? Dann lasse eine kleine Spende da!' donations: 'Du möchtest deemix finanziell unterstützen? Dann lasse eine kleine Spende da!'
}, },
usesLibrary: usesLibrary: 'Dieses Programm nutzt die <strong>deemix</strong> Bibliothek, die du dazu nutzen kannst, deine eigene deemix UI zu erstellen.',
'Dieses Programm nutzt die <strong>deemix</strong> Bibliothek, die du dazu nutzen kannst deine eigene deemix UI zu erstellen.', thanks: 'Ein Dankeschön geht an <strong>rtonno</strong>, <strong>uhwot</strong> and <strong>lollilol</strong> für die Hilfe bei diesem Projekt und an <strong>BasCurtiz</strong> für die Erstellung des Logos.',
thanks:
'Ein Dankeschön geht an <strong>rtonno</strong>, <strong>uhwot</strong> and <strong>lollilol</strong> für die Hilfe bei diesem Projekt und an <strong>BasCurtiz</strong> für die Erstellung des Logos.',
upToDate: { upToDate: {
text: 'Bleib auf dem Laufenden, indem du dem {newsChannel} auf Telegram folgst.', text: 'Bleib auf dem Laufenden, indem du dem {newsChannel} auf Telegram folgst.',
newsChannel: 'News Channel' newsChannel: 'News Channel'
@ -77,6 +81,7 @@ const de = {
officialWebuiRepo: 'Offizielle WebUI Repository', officialWebuiRepo: 'Offizielle WebUI Repository',
officialSubreddit: 'Offizieller Subreddit', officialSubreddit: 'Offizieller Subreddit',
newsChannel: 'Neuigkeiten Kanal', newsChannel: 'Neuigkeiten Kanal',
devlogChannel: 'Devlog Kanal',
questions: { questions: {
text: 'Suche bei Fragen oder Problemen mit der App als erstes nach einer Lösung im {subreddit}. Wenn du dort nichts findest, kannst du einen Beitrag mit deinen Problem auf dem Subreddit verfassen.', text: 'Suche bei Fragen oder Problemen mit der App als erstes nach einer Lösung im {subreddit}. Wenn du dort nichts findest, kannst du einen Beitrag mit deinen Problem auf dem Subreddit verfassen.',
subreddit: 'Subreddit' subreddit: 'Subreddit'
@ -116,6 +121,7 @@ const de = {
}, },
errors: { errors: {
title: 'Fehler für {name}', title: 'Fehler für {name}',
postTitle: 'Nach dem Herunterladen von Fehlern.',
ids: { ids: {
invalidURL: 'URL nicht erkannt', invalidURL: 'URL nicht erkannt',
unsupportedURL: 'URL noch nicht unterstützt', unsupportedURL: 'URL noch nicht unterstützt',
@ -188,12 +194,16 @@ const de = {
noResultsTrack: 'Keine Tracks gefunden', noResultsTrack: 'Keine Tracks gefunden',
noResultsAlbum: 'Keine Alben gefunden', noResultsAlbum: 'Keine Alben gefunden',
noResultsArtist: 'Keinen Künstler gefunden', noResultsArtist: 'Keinen Künstler gefunden',
noResultsPlaylist: 'Keine Playlist gefunden' noResultsPlaylist: 'Keine Playlist gefunden',
error: 'Ein Fehler ist aufgetreten. Bitte versuche es später erneut.'
}, },
searchbar: 'Suche nach allem, was dir gefällt (oder füge einfach einen Link ein)', searchbar: 'Suche nach allem, was dir gefällt (oder füge einfach einen Link ein)',
downloads: 'Downloads', downloads: 'Downloads',
toasts: { toasts: {
restoringQueue: 'Download-Warteschlange wiederherstellen...',
queueRestored: 'Download-Warteschlange wiederhergestellt!',
addedToQueue: '{item} zur Warteschlange hinzugefügt', addedToQueue: '{item} zur Warteschlange hinzugefügt',
addedMoreToQueue: '{n} Einträge zur Warteschlange hinzugefügt',
alreadyInQueue: '{item} ist bereits in der Warteschlange!', alreadyInQueue: '{item} ist bereits in der Warteschlange!',
finishDownload: '{item} vollständig heruntergeladen.', finishDownload: '{item} vollständig heruntergeladen.',
allDownloaded: 'Alle Downloads abgeschlossen!', allDownloaded: 'Alle Downloads abgeschlossen!',
@ -211,8 +221,13 @@ const de = {
finishConvertingSpotifyPlaylist: 'Spotify Playlist convertiert', finishConvertingSpotifyPlaylist: 'Spotify Playlist convertiert',
loginNeededToDownload: 'Du musst eingeloggt sein, um Tracks herunterladen zu können!', loginNeededToDownload: 'Du musst eingeloggt sein, um Tracks herunterladen zu können!',
deezerNotAvailable: 'Deezer ist in deinem Land nicht verfügbar. Du solltest eine VPN nutzen.', deezerNotAvailable: 'Deezer ist in deinem Land nicht verfügbar. Du solltest eine VPN nutzen.',
startGeneratingItems: 'Verarbeite {n} Artikeln....', deezerNotReachable: "Die App kann Deezer nicht erreichen. Prüfe deine Internet-Verbindung, deine Firewall oder dein Antivirus.",
finishGeneratingItems: '{n} Items generiert.' startGeneratingItems: 'Verarbeite {n} Einträge....',
finishGeneratingItems: '{n} Einträge generiert.',
noLovedPlaylist: 'Keine Geliebten-Tracks-Wiedergabeliste!',
checkingUpdates: 'Auf Aktualisierungen prüfen...',
noUpdateAvailable: 'Keine Aktualisierungen gefunden',
updateAvailable: 'Eine Aktualisierung ist verfügbar!'
}, },
settings: { settings: {
title: 'Einstellungen', title: 'Einstellungen',
@ -221,17 +236,52 @@ const de = {
title: 'Login', title: 'Login',
loggedIn: 'Du bist eingeloggt als {username}', loggedIn: 'Du bist eingeloggt als {username}',
arl: { arl: {
title: 'Use ARL instead',
question: 'Wie bekomme ich meine eigene ARL?', question: 'Wie bekomme ich meine eigene ARL?',
howTo: {
prologue: {
p1: 'Deezer verfolgt die Anmeldesitzung mithilfe eines Cookies namens ARL.',
p2: 'Deemix verwendet dieses Cookie, um die Metadaten abzurufen, die es benötigt, um die Tracks von Deezer herunterzuladen.',
p3: 'ARLs sind 3 Monate gültig, danach fordert Deezer Dich auf, sich erneut anzumelden. Die gleiche Methode wird in deemix verwendet.',
p4: 'Wenn Du einer der folgenden Anleitungen folgst, kannst Du eigene Konto-ARL erhalten.',
warning: "Verwende diese Methode nur, wenn E-Mail und Passwort nicht funktionieren."
},
chromeSteps: {
title: 'Chrome',
step1: 'Öffne Chrome',
easyWay: {
title: 'Chrome (Easy way)',
step3: 'Klicke auf das kleine "Schloss"-Symbol neben der URL',
step4: 'Klicke auf Cookies > deezer.com > cookies > arl',
step5: 'Wähle die Zeichenfolge neben Inhalt und Kopieren aus'
},
step4: "Gehe zum Application Tab (if you don't see it click the double arrow)",
videoGuide: {
text: "Hier ist eine {videoGuide}",
link: 'Video Guide'
}
},
firefoxSteps: {
title: 'Firefox',
step1: 'Öffne Firefox',
step4: "Gehe unter die Registerkarte Speicher (wenn Du sie nicht siehst, klicke auf den Doppelpfeil)"
},
commonSteps: {
step2: 'Gehe zu www.deezer.com und logge dich in deinen Account ein',
step3: 'Drücke nach der Anmeldung F12, um die Entwicklertools zu öffnen',
step5: 'Öffne den Cookie-Dropdown',
step6: 'Wähle www.deezer.com',
step7: 'Finde das `arl` Cookie (It should be 192 chars long)',
step8: 'Stelle sicher, dass Du nur den Wert kopierst und nicht das gesamte Cookie',
lastStep: "Das ist Deine ARL, jetzt kannst Du sie in der App verwenden"
}
},
update: 'ARL aktualisieren' update: 'ARL aktualisieren'
}, },
logout: 'Ausloggen', logout: 'Ausloggen',
login: 'Über deezer.com einloggen' login: 'Über deezer.com einloggen',
}, email: 'E-mail',
loginWithCredentials: { password: 'Password'
title: 'Mit Zugangsdaten einloggen',
login: 'Einloggen',
email: 'E-Mail',
password: 'Passwort'
}, },
appearance: { appearance: {
title: 'Design', title: 'Design',
@ -289,6 +339,8 @@ const de = {
}, },
fallbackBitrate: 'Falls gewünschte Bitrate nicht verfügbar, auf niedrigere Bitrate zurückgreifen', fallbackBitrate: 'Falls gewünschte Bitrate nicht verfügbar, auf niedrigere Bitrate zurückgreifen',
fallbackSearch: 'Zur Suche zurückkehren, wenn der Song nicht verfügbar ist', fallbackSearch: 'Zur Suche zurückkehren, wenn der Song nicht verfügbar ist',
fallbackISRC: 'Fallback mit ISRC-Suche',
feelingLucky: 'Spielen mit CDNs und Caches',
logErrors: 'Protokolldatei für Fehler im Download-Ordner erstellen', logErrors: 'Protokolldatei für Fehler im Download-Ordner erstellen',
logSearched: 'Protokolldatei für gesuchte Titel erstellen', logSearched: 'Protokolldatei für gesuchte Titel erstellen',
createM3U8File: 'Erstelle Playlist-Datei (M3U8)', createM3U8File: 'Erstelle Playlist-Datei (M3U8)',
@ -320,6 +372,7 @@ const de = {
head: 'Welche Tags sollen gespeichert werden?', head: 'Welche Tags sollen gespeichert werden?',
title: 'Titel', title: 'Titel',
artist: 'Künstler', artist: 'Künstler',
artists: 'Zusätzlicher ARTISTS Tag',
album: 'Album', album: 'Album',
cover: 'Cover', cover: 'Cover',
trackNumber: 'Titelnummer', trackNumber: 'Titelnummer',
@ -342,10 +395,12 @@ const de = {
copyright: 'Copyright', copyright: 'Copyright',
composer: 'Komponist', composer: 'Komponist',
involvedPeople: 'Mitwirkende Personen', involvedPeople: 'Mitwirkende Personen',
source: 'Quelle und Song ID' source: 'Quelle und Song ID',
artistsWarning: 'Das Deaktivieren des ARTISTS- Tags, während die Standardspezifikation nicht verwendet wird, wird die Multiartist- Unterstützung nicht erhalten'
}, },
other: { other: {
title: 'Sonstige', title: 'Sonstige',
autoCheckForUpdates: 'Check for updates on startup',
savePlaylistAsCompilation: 'Speichere Playlist als Zusammenstellung', savePlaylistAsCompilation: 'Speichere Playlist als Zusammenstellung',
useNullSeparator: 'Verwende Nulltrennzeichen', useNullSeparator: 'Verwende Nulltrennzeichen',
saveID3v1: 'Speichere ID3v1 ebenfalls', saveID3v1: 'Speichere ID3v1 ebenfalls',
@ -354,7 +409,8 @@ const de = {
nothing: 'Speichere nur den Hauptkünstler', nothing: 'Speichere nur den Hauptkünstler',
default: 'Verwende Standard Spezifikationen', default: 'Verwende Standard Spezifikationen',
andFeat: 'Verwende & und feat.', andFeat: 'Verwende & und feat.',
using: 'Verwende "{separator}"' using: 'Verwende "{separator}"',
warning: 'Wenn Du ein anderes Trennzeichen als die Standardspezifikation verwendest, wird ein zusätzliches ARTISTS-Tag hinzugefügt, um die Unterstützung mehrerer Künstler zu erhalten'
}, },
singleAlbumArtist: 'Nur den Hauptkünstler speichern', singleAlbumArtist: 'Nur den Hauptkünstler speichern',
albumVariousArtists: 'Verschiedene Künstler" im Album Künstler Tag behalten', albumVariousArtists: 'Verschiedene Künstler" im Album Künstler Tag behalten',
@ -393,7 +449,42 @@ const de = {
clientID: 'Spotify Client ID', clientID: 'Spotify Client ID',
clientSecret: 'Spotify Client Secret', clientSecret: 'Spotify Client Secret',
username: 'Spotify Benutzername', username: 'Spotify Benutzername',
question: 'Wie aktiviere ich die Spotify Features?' question: 'Wie aktiviere ich die Spotify Features?',
howTo: {
prologue: {
p1: '"Spotify Features" ist eine Reihe von Funktionen, mit denen Du Spotify-Tracks und Alben-Links in Deezer-Links konvertieren kannst.',
p2: 'Wenn Du einen Spotify-Playlist-Link bereitstellst, konvertiert die App automatisch alle Links der darin enthaltenen Titel in Deezer-Titel.',
p3: 'Wenn Du diese Funktionen aktivierst, kannst Du Deine öffentlichen Spotify-Wiedergabelisten auch auf der Registerkarte "Favoriten" sehen.'
},
info: 'Aus Sicherheitsgründen musst Du Deine eigene Client-ID und Dein Client-Secret angeben',
clientSecretQuestion: {
title: 'Wie erhalte ich meine Client-ID und mein Client-Secret?',
step1: {
text: 'Verbinde dich mit {spotifyDevelopersDashboard} und melde dich mit Deinem Spotify-Konto an.',
spotifyDevelopersDashboard: "Spotify Entwickler-Dashboard"
},
step2: {
text: 'Klicke auf "App erstellen"..',
imageAlt: 'Erstelle eine App-Schaltfläche auf Spotify für das Entwickler-Dashboard'
},
step3: {
text: 'Fülle die Felder „App-Name“ und „App-Beschreibung“ aus und aktiviere beide Kontrollkästchen. Klicke dann auf die Schaltfläche "Erstellen".',
imageAlt: 'Erstelle ein App-Formular'
},
step4: {
text: 'Jetzt kannst Du die Client-ID sehen. Wenn Du auf "„"Kundengeheimnis anzeigen"“" klickst, wird das Kundengeheimnis angezeigt.',
imageAlt: 'Screen mit Client-ID und Geheimnis'
},
step5: 'Jetzt kannst Du diese Ergebnisse kopieren und in die entsprechenden Felder in den Einstellungen einfügen.'
},
usernameQuestion: {
title: 'Wie erhalte ich meinen Spotify-Benutzernamen?',
step1: {
text: 'Du kannst Deinen Spotify-Benutzernamen auf der {overviewPage} auf der Spotify-Website abrufen.',
overviewPage: 'Übersichtsseite'
}
}
}
}, },
reset: 'Auf Standardwerte zurücksetzen', reset: 'Auf Standardwerte zurücksetzen',
resetMessage: 'Bist du sicher, dass du zu den Standarteinstellungen zurückkehren willst?', resetMessage: 'Bist du sicher, dass du zu den Standarteinstellungen zurückkehren willst?',
@ -416,6 +507,7 @@ const de = {
favorites: 'Favoriten', favorites: 'Favoriten',
linkAnalyzer: 'Link Analyse', linkAnalyzer: 'Link Analyse',
settings: 'Einstellungen', settings: 'Einstellungen',
logs: 'Protokolle',
about: 'Info' about: 'Info'
}, },
tracklist: { tracklist: {

View File

@ -27,7 +27,6 @@ const en = {
single: 'single | singles', single: 'single | singles',
title: 'title | titles', title: 'title | titles',
track: 'track | tracks', track: 'track | tracks',
releaseN: '0 releases | {n} release | {n} releases',
playlist: 'playlist | playlists', playlist: 'playlist | playlists',
compile: 'compilation | compilations', compile: 'compilation | compilations',
ep: 'ep | eps', ep: 'ep | eps',
@ -40,6 +39,7 @@ const en = {
trackN: '0 tracks | {n} track | {n} tracks', trackN: '0 tracks | {n} track | {n} tracks',
albumN: '0 albums | {n} album | {n} albums', albumN: '0 albums | {n} album | {n} albums',
artistN: '0 artists | {n} artist | {n} artists', artistN: '0 artists | {n} artist | {n} artists',
releaseN: '0 releases | {n} release | {n} releases',
playlistN: '0 playlists | {n} playlist | {n} playlists' playlistN: '0 playlists | {n} playlist | {n} playlists'
}, },
yes: 'yes', yes: 'yes',