diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 924a337..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "search.exclude": { - "**/*.map": true, - "public/css": true, - "public/js": true - }, - "path-intellisense.mappings": { - "@": "${workspaceRoot}/src", - "@components": "${workspaceRoot}/src/js/components" - } -} diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index 655b87c..0000000 --- a/.vscode/tasks.json +++ /dev/null @@ -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 - } - } - ] -} diff --git a/src/lang/de.mjs b/src/lang/de.mjs index d42004d..2ed5975 100644 --- a/src/lang/de.mjs +++ b/src/lang/de.mjs @@ -27,14 +27,20 @@ const de = { single: 'Single | Singles', title: 'Titel | Titel', track: 'Track | Tracks', - trackN: '0 Tracks | {n} Track | {n} Tracks', - releaseN: '0 Releases | {n} Release | {n} Releases', playlist: 'Playlist | Playlists', compile: 'Sammlung | Sammlungen', ep: 'EP | EPs', + bundle: 'Bündel | Bündel', + more: 'Weitere Alben', + featured: 'Bekannt in', spotifyPlaylist: 'Spotify Playlist | Spotify Playlists', 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', no: 'Nein', @@ -64,10 +70,8 @@ const de = { 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!' }, - usesLibrary: - 'Dieses Programm nutzt die deemix Bibliothek, die du dazu nutzen kannst deine eigene deemix UI zu erstellen.', - thanks: - 'Ein Dankeschön geht an rtonno, uhwot and lollilol für die Hilfe bei diesem Projekt und an BasCurtiz für die Erstellung des Logos.', + usesLibrary: 'Dieses Programm nutzt die deemix Bibliothek, die du dazu nutzen kannst, deine eigene deemix UI zu erstellen.', + thanks: 'Ein Dankeschön geht an rtonno, uhwot and lollilol für die Hilfe bei diesem Projekt und an BasCurtiz für die Erstellung des Logos.', upToDate: { text: 'Bleib auf dem Laufenden, indem du dem {newsChannel} auf Telegram folgst.', newsChannel: 'News Channel' @@ -77,6 +81,7 @@ const de = { officialWebuiRepo: 'Offizielle WebUI Repository', officialSubreddit: 'Offizieller Subreddit', newsChannel: 'Neuigkeiten Kanal', + devlogChannel: 'Devlog Kanal', 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.', subreddit: 'Subreddit' @@ -116,6 +121,7 @@ const de = { }, errors: { title: 'Fehler für {name}', + postTitle: 'Nach dem Herunterladen von Fehlern.', ids: { invalidURL: 'URL nicht erkannt', unsupportedURL: 'URL noch nicht unterstützt', @@ -188,12 +194,16 @@ const de = { noResultsTrack: 'Keine Tracks gefunden', noResultsAlbum: 'Keine Alben 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)', downloads: 'Downloads', toasts: { + restoringQueue: 'Download-Warteschlange wiederherstellen...', + queueRestored: 'Download-Warteschlange wiederhergestellt!', addedToQueue: '{item} zur Warteschlange hinzugefügt', + addedMoreToQueue: '{n} Einträge zur Warteschlange hinzugefügt', alreadyInQueue: '{item} ist bereits in der Warteschlange!', finishDownload: '{item} vollständig heruntergeladen.', allDownloaded: 'Alle Downloads abgeschlossen!', @@ -211,8 +221,13 @@ const de = { finishConvertingSpotifyPlaylist: 'Spotify Playlist convertiert', 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.', - startGeneratingItems: 'Verarbeite {n} Artikeln....', - finishGeneratingItems: '{n} Items generiert.' + deezerNotReachable: "Die App kann Deezer nicht erreichen. Prüfe deine Internet-Verbindung, deine Firewall oder dein Antivirus.", + 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: { title: 'Einstellungen', @@ -221,17 +236,52 @@ const de = { title: 'Login', loggedIn: 'Du bist eingeloggt als {username}', arl: { + title: 'Use ARL instead', 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' }, logout: 'Ausloggen', - login: 'Über deezer.com einloggen' - }, - loginWithCredentials: { - title: 'Mit Zugangsdaten einloggen', - login: 'Einloggen', - email: 'E-Mail', - password: 'Passwort' + login: 'Über deezer.com einloggen', + email: 'E-mail', + password: 'Password' }, appearance: { title: 'Design', @@ -289,6 +339,8 @@ const de = { }, 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', + fallbackISRC: 'Fallback mit ISRC-Suche', + feelingLucky: 'Spielen mit CDNs und Caches', logErrors: 'Protokolldatei für Fehler im Download-Ordner erstellen', logSearched: 'Protokolldatei für gesuchte Titel erstellen', createM3U8File: 'Erstelle Playlist-Datei (M3U8)', @@ -320,6 +372,7 @@ const de = { head: 'Welche Tags sollen gespeichert werden?', title: 'Titel', artist: 'Künstler', + artists: 'Zusätzlicher ARTISTS Tag', album: 'Album', cover: 'Cover', trackNumber: 'Titelnummer', @@ -342,10 +395,12 @@ const de = { copyright: 'Copyright', composer: 'Komponist', 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: { title: 'Sonstige', + autoCheckForUpdates: 'Check for updates on startup', savePlaylistAsCompilation: 'Speichere Playlist als Zusammenstellung', useNullSeparator: 'Verwende Nulltrennzeichen', saveID3v1: 'Speichere ID3v1 ebenfalls', @@ -354,7 +409,8 @@ const de = { nothing: 'Speichere nur den Hauptkünstler', default: 'Verwende Standard Spezifikationen', 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', albumVariousArtists: 'Verschiedene Künstler" im Album Künstler Tag behalten', @@ -393,7 +449,42 @@ const de = { clientID: 'Spotify Client ID', clientSecret: 'Spotify Client Secret', 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', resetMessage: 'Bist du sicher, dass du zu den Standarteinstellungen zurückkehren willst?', @@ -416,6 +507,7 @@ const de = { favorites: 'Favoriten', linkAnalyzer: 'Link Analyse', settings: 'Einstellungen', + logs: 'Protokolle', about: 'Info' }, tracklist: { @@ -427,4 +519,4 @@ const de = { } } -export default de +export default de \ No newline at end of file diff --git a/src/lang/en.mjs b/src/lang/en.mjs index 4027921..9e8555c 100644 --- a/src/lang/en.mjs +++ b/src/lang/en.mjs @@ -27,7 +27,6 @@ const en = { single: 'single | singles', title: 'title | titles', track: 'track | tracks', - releaseN: '0 releases | {n} release | {n} releases', playlist: 'playlist | playlists', compile: 'compilation | compilations', ep: 'ep | eps', @@ -40,6 +39,7 @@ const en = { trackN: '0 tracks | {n} track | {n} tracks', albumN: '0 albums | {n} album | {n} albums', artistN: '0 artists | {n} artist | {n} artists', + releaseN: '0 releases | {n} release | {n} releases', playlistN: '0 playlists | {n} playlist | {n} playlists' }, yes: 'yes',