diff --git a/assets/jsons/translations/de.json b/assets/jsons/translations/de.json index 5ff1324f..b193875e 100644 --- a/assets/jsons/translations/de.json +++ b/assets/jsons/translations/de.json @@ -214,46 +214,65 @@ "verification-finished": "Verifikation Erfolgreich" } }, - "warnings": { - "msg": { - "ManifestChecksum": "Die zuvor heruntergeladene Manifest stimmt nicht mit dem neuen überein 🤔", - "ConnectionTimeout": "Deine Internetverbindung scheint instabil zu sein 🥶", - "ConnectionLost": "Die Verbindung wurde unterbrochen, versuche es erneut...", - "ConnectionError": "Kann keine Verbindung zu Steam herstellen, versuche es erneut...", - "Unknown": "Etwas Seltsames ist passiert 🤔 Deine Verbindung ist wahrscheinlich instabil." + "steam-download": { + "warnings": { + "msg": { + "ManifestChecksum": "Die zuvor heruntergeladene Manifest stimmt nicht mit dem neuen überein 🤔", + "ConnectionTimeout": "Deine Internetverbindung scheint instabil zu sein 🥶", + "ConnectionLost": "Die Verbindung wurde unterbrochen, versuche es erneut...", + "ConnectionError": "Kann keine Verbindung zu Steam herstellen, versuche es erneut...", + "Unknown": "Etwas Seltsames ist passiert 🤔 Deine Verbindung ist wahrscheinlich instabil." + } + }, + "errors": { + "titles": { + "dotnet-required": ".NET 6 Benötigt" + }, + "msg": { + "401": "Steam scheint uns BeatSaber nicht herunterladen zu lassen 😢", + "404": "Steam-Server können nicht kontaktiert werden.", + "Password": "Passwort ist ungültig.", + "InvalidCredentials": "Ungültige Anmeldedaten, nicht genehmigte Verbindung oder zu viele Anmeldeversuche.", + "NoManifest": "Es wurde keine Manifest gefunden", + "DirectoryCreate": "Die erforderlichen Ordner können nicht installiert werden.", + "NotAvailableApp": "Versuchst du, Beat Saber herunterzuladen, wenn Du es nicht hast? 🤣", + "DepotNotFound": "BeatSaber kann nicht heruntergeladen werden 😥 versuche es später noch einmal 😕", + "NotCompleted": "Der Download konnte nicht beendet werden ¯\\_(ツ)_/¯", + "InvalidManifest": "BeatSaber kann nicht heruntergeladen werden 😥 versuche es später noch einmal 😕", + "NoValidKey": "BeatSaber kann nicht heruntergeladen werden 😥 versuche es später noch einmal 😕", + "NoManifestCode": "BeatSaber kann nicht heruntergeladen werden 😥 versuche es später noch einmal 😕", + "Unknown": "Ein Unbekannter Fehler ist aufgetreten ¯\\_(ツ)_/¯", + "NoServer": "Steam-Server können nicht kontaktiert werden.", + "NotAllowed": "Anscheinend darfst Du BeatSaber nicht herunterladen 🥱", + "ConnectionTimeout": "Kann keine Verbindung zu Steam herstellen 😕", + "SteamLib": "Wenn dieser Fehler auftritt, melde den Fehler auf Github mit Protokollen, bitte.", + "ConnectionError": "Kann nach 10 Versuchen keine Verbindung zu Steam herstellen 🤯", + "LicenceError": "Die Liste der Lizenzen kann nicht abgerufen werden.", + "RateLimitExceeded": "Du hast es zu oft versucht, warte eine Weile und versuche es später erneut.", + "TokenRejected": "Ihr Anmeldetoken wurde abgelehnt 😕 Bitte versuchen Sie es erneut.", + "AccessDenied": "Der Zugang zu Steam wurde verweigert.", + "dotnet-required": ".NET 6 Runtime muss installiert sein, um eine Version von BeatSaber herunterzuladen. Lade es herunter, indem Du auf die Schaltfläche unten klickst." + }, + "actions": { + "download-dotnet": ".NET 6 Herunterladen" + } } }, - "errors": { - "titles": { - "dotnet-required": ".NET 6 Benötigt" - }, - "msg": { - "401": "Steam scheint uns BeatSaber nicht herunterladen zu lassen 😢", - "404": "Steam-Server können nicht kontaktiert werden.", - "Password": "Passwort ist ungültig.", - "InvalidCredentials": "Ungültige Anmeldedaten, nicht genehmigte Verbindung oder zu viele Anmeldeversuche.", - "NoManifest": "Es wurde keine Manifest gefunden", - "DirectoryCreate": "Die erforderlichen Ordner können nicht installiert werden.", - "NotAvailableApp": "Versuchst du, Beat Saber herunterzuladen, wenn Du es nicht hast? 🤣", - "DepotNotFound": "BeatSaber kann nicht heruntergeladen werden 😥 versuche es später noch einmal 😕", - "NotCompleted": "Der Download konnte nicht beendet werden ¯\\_(ツ)_/¯", - "InvalidManifest": "BeatSaber kann nicht heruntergeladen werden 😥 versuche es später noch einmal 😕", - "NoValidKey": "BeatSaber kann nicht heruntergeladen werden 😥 versuche es später noch einmal 😕", - "NoManifestCode": "BeatSaber kann nicht heruntergeladen werden 😥 versuche es später noch einmal 😕", - "Unknown": "Ein Unbekannter Fehler ist aufgetreten ¯\\_(ツ)_/¯", - "NoServer": "Steam-Server können nicht kontaktiert werden.", - "NotAllowed": "Anscheinend darfst Du BeatSaber nicht herunterladen 🥱", - "ConnectionTimeout": "Kann keine Verbindung zu Steam herstellen 😕", - "SteamLib": "Wenn dieser Fehler auftritt, melde den Fehler auf Github mit Protokollen, bitte.", - "ConnectionError": "Kann nach 10 Versuchen keine Verbindung zu Steam herstellen 🤯", - "LicenceError": "Die Liste der Lizenzen kann nicht abgerufen werden.", - "RateLimitExceeded": "Du hast es zu oft versucht, warte eine Weile und versuche es später erneut.", - "TokenRejected": "Ihr Anmeldetoken wurde abgelehnt 😕 Bitte versuchen Sie es erneut.", - "AccessDenied": "Der Zugang zu Steam wurde verweigert.", - "dotnet-required": ".NET 6 Runtime muss installiert sein, um eine Version von BeatSaber herunterzuladen. Lade es herunter, indem Du auf die Schaltfläche unten klickst." - }, - "actions": { - "download-dotnet": ".NET 6 Herunterladen" + "oculus-download": { + "errors": { + "msg": { + "DOWNLOAD_MANIFEST_FAILED": "Unmöglich, das Manifest für diese Version herunterzuladen.", + "MANIFEST_FILE_NOT_FOUND": "Unmöglich, das Manifest für diese Version zu finden.", + "PARSE_MANIFEST_FILE_FAILED": "Beim Lesen des Manifests ist ein Fehler aufgetreten.", + "ALREADY_DOWNLOADING": "Eine Version wird bereits heruntergeladen.", + "UNABLE_TO_GET_MANIFEST": "Unmöglich, das für den Download erforderliche Manifest zu erhalten.", + "VERIFY_INTEGRITY_FAILED": "Beim Überprüfen der Dateien ist ein Fehler aufgetreten.", + "SOME_FILES_FAILED_TO_DOWNLOAD": "Einige Dateien konnten nicht heruntergeladen werden.", + "OCULUS_LOGIN_TIMED_OUT": "Das Anmelde-Token hat zu lange gedauert, um abgerufen zu werden.", + "OCULUS_LOGIN_WINDOW_CLOSED_BY_USER": "Das Meta Anmeldefenster wurde geschlossen.", + "NO_META_AUTH_TOKEN": "Unmöglich, das für den Download erforderliche Meta-Anmelde-Token zu erhalten.", + "UNKNOWN_ERROR": "Ein unbekannter Fehler ist aufgetreten." + } } } }, diff --git a/assets/jsons/translations/en.json b/assets/jsons/translations/en.json index 5a05a6ee..99e09aa8 100644 --- a/assets/jsons/translations/en.json +++ b/assets/jsons/translations/en.json @@ -214,46 +214,65 @@ "verification-finished": "Verification complete" } }, - "warnings": { - "msg": { - "ManifestChecksum": "The previously downloaded manifest does not match the new 🤔", - "ConnectionTimeout": "Your internet connection seems unstable 🥶", - "ConnectionLost": "The connection has been lost, try again...", - "ConnectionError": "Unable to connect to Steam, try again...", - "Unknown": "Something strange has happened 🤔 Your connection is probably unstable." + "steam-download": { + "warnings": { + "msg": { + "ManifestChecksum": "The previously downloaded manifest does not match the new 🤔", + "ConnectionTimeout": "Your internet connection seems unstable 🥶", + "ConnectionLost": "The connection has been lost, try again...", + "ConnectionError": "Unable to connect to Steam, try again...", + "Unknown": "Something strange has happened 🤔 Your connection is probably unstable." + } + }, + "errors": { + "titles": { + "dotnet-required": ".NET 6 Required" + }, + "msg": { + "401": "Steam doesn't seem to want to let us download Beat Saber 😢", + "404": "Unable to contact Steam servers.", + "Password": "Password is invalid.", + "InvalidCredentials": "Invalid login credentials, unapproved connection, or too many login attempts.", + "NoManifest": "No manifest was found", + "DirectoryCreate": "Unable to install the necessary folders.", + "NotAvailableApp": "Are you trying to download Beat Saber when you don't have it? 🤣", + "DepotNotFound": "Unable to download Beat Saber 😥 try again later 😕", + "NotCompleted": "The download could not complete ¯\\_(ツ)_/¯", + "InvalidManifest": "Unable to download Beat Saber 😥 try again later 😕", + "NoValidKey": "Unable to download Beat Saber 😥 try again later 😕", + "NoManifestCode": "Unable to download Beat Saber 😥 try again later 😕", + "Unknown": "An unknown error occurred ¯\\_(ツ)_/¯", + "NoServer": "Unable to contact Steam servers.", + "NotAllowed": "Apparently you are not allowed to download Beat Saber 🥱", + "ConnectionTimeout": "Cannot connect to Steam 😕", + "SteamLib": "If you have this error, report the bug on GitHub with the logs pls.", + "ConnectionError": "Unable to connect to Steam after 10 tries 🤯", + "LicenceError": "Unable to get the list of licenses.", + "RateLimitExceeded": "You've tried too many times, wait a while and try again later.", + "TokenRejected": "Your login token has been rejected 😕 Please try again.", + "AccessDenied": "Access to Steam has been denied.", + "dotnet-required": ".NET 6 Runtime must be installed in order to download a version of Beat Saber. Download it by clicking the button below." + }, + "actions": { + "download-dotnet": "Download .NET 6" + } } }, - "errors": { - "titles": { - "dotnet-required": ".NET 6 Required" - }, - "msg": { - "401": "Steam doesn't seem to want to let us download Beat Saber 😢", - "404": "Unable to contact Steam servers.", - "Password": "Password is invalid.", - "InvalidCredentials": "Invalid login credentials, unapproved connection, or too many login attempts.", - "NoManifest": "No manifest was found", - "DirectoryCreate": "Unable to install the necessary folders.", - "NotAvailableApp": "Are you trying to download Beat Saber when you don't have it? 🤣", - "DepotNotFound": "Unable to download Beat Saber 😥 try again later 😕", - "NotCompleted": "The download could not complete ¯\\_(ツ)_/¯", - "InvalidManifest": "Unable to download Beat Saber 😥 try again later 😕", - "NoValidKey": "Unable to download Beat Saber 😥 try again later 😕", - "NoManifestCode": "Unable to download Beat Saber 😥 try again later 😕", - "Unknown": "An unknown error occurred ¯\\_(ツ)_/¯", - "NoServer": "Unable to contact Steam servers.", - "NotAllowed": "Apparently you are not allowed to download Beat Saber 🥱", - "ConnectionTimeout": "Cannot connect to Steam 😕", - "SteamLib": "If you have this error, report the bug on GitHub with the logs pls.", - "ConnectionError": "Unable to connect to Steam after 10 tries 🤯", - "LicenceError": "Unable to get the list of licenses.", - "RateLimitExceeded": "You've tried too many times, wait a while and try again later.", - "TokenRejected": "Your login token has been rejected 😕 Please try again.", - "AccessDenied": "Access to Steam has been denied.", - "dotnet-required": ".NET 6 Runtime must be installed in order to download a version of Beat Saber. Download it by clicking the button below." - }, - "actions": { - "download-dotnet": "Download .NET 6" + "oculus-download": { + "errors": { + "msg": { + "DOWNLOAD_MANIFEST_FAILED": "Unable to download the manifest for this version.", + "MANIFEST_FILE_NOT_FOUND": "Unable to find the manifest for this version.", + "PARSE_MANIFEST_FILE_FAILED": "An error occurred while reading the manifest.", + "ALREADY_DOWNLOADING": "A version is already being downloaded.", + "UNABLE_TO_GET_MANIFEST": "Unable to obtain the manifest required for download.", + "VERIFY_INTEGRITY_FAILED": "An error occurred during file verification.", + "SOME_FILES_FAILED_TO_DOWNLOAD": "Some files failed to download.", + "OCULUS_LOGIN_TIMED_OUT": "The login token took too long to retrieve.", + "OCULUS_LOGIN_WINDOW_CLOSED_BY_USER": "The Meta login window was closed.", + "NO_META_AUTH_TOKEN": "Unable to retrieve the Meta login token required for download.", + "UNKNOWN_ERROR": "An unknown error occurred." + } } } }, diff --git a/assets/jsons/translations/es.json b/assets/jsons/translations/es.json index 7727899f..2019a453 100644 --- a/assets/jsons/translations/es.json +++ b/assets/jsons/translations/es.json @@ -213,46 +213,65 @@ "verification-finished": "Verificación completada" } }, - "warnings": { - "msg": { - "ManifestChecksum": "El manifiesto descargado anteriormente no coincide con el nuevo 🤔", - "ConnectionTimeout": "Tu conexión a Internet parece inestable 🥶", - "ConnectionLost": "Se ha perdido la conexión, inténtalo de nuevo...", - "ConnectionError": "No se puede conectar a Steam, reintentando...", - "Unknown": "Algo extraño ha ocurrido 🤔 Tu conexión es probablemente inestable." + "steam-download": { + "warnings": { + "msg": { + "ManifestChecksum": "El manifiesto descargado anteriormente no coincide con el nuevo 🤔", + "ConnectionTimeout": "Tu conexión a Internet parece inestable 🥶", + "ConnectionLost": "Se ha perdido la conexión, inténtalo de nuevo...", + "ConnectionError": "No se puede conectar a Steam, reintentando...", + "Unknown": "Algo extraño ha ocurrido 🤔 Tu conexión es probablemente inestable." + } + }, + "errors": { + "titles": { + "dotnet-required": ".NET 6 Requerido" + }, + "msg": { + "401": "Parece que Steam no quiere dejarnos descargar Beat Saber 😢", + "404": "No se puede contactar con los servidores de Steam", + "Password": "La contraseña es inválida.", + "InvalidCredentials": "Credenciales de inicio de sesión inválidas, conexión no aprobada o demasiados intentos de inicio de sesión.", + "NoManifest": "No se ha encontrado el manifiesto", + "DirectoryCreate": "No se pueden instalar las carpetas necesarias.", + "NotAvailableApp": "¿Intentas descargar Beat Saber cuando no lo tienes? 🤣", + "DepotNotFound": "No se puede descargar Beat Saber 😥 inténtalo más tarde 😕", + "NotCompleted": "La descarga no pudo completarse ¯\\_(ツ)_/¯", + "InvalidManifest": "No se puede descargar Beat Saber 😥 inténtalo más tarde 😕", + "NoValidKey": "No se puede descargar Beat Saber 😥 inténtalo más tarde 😕", + "NoManifestCode": "No se puede descargar Beat Saber 😥 inténtalo más tarde 😕", + "Unknown": "Se ha producido un error desconocido ¯\\_(ツ)_/¯", + "NoServer": "No se puede contactar con los servidores de Steam.", + "NotAllowed": "Aparentemente no tienes permiso para descargar Beat Saber 🥱", + "ConnectionTimeout": "No se puede conectar a Steam 😕", + "SteamLib": "Si tienes este error, reporta el bug en GitHub con los logs, por favor.", + "ConnectionError": "No se puede conectar a Steam después de 10 intentos 🤯", + "LicenceError": "No se puede obtener la lista de licencias.", + "RateLimitExceeded": "Lo has intentado demasiadas veces, espera un poco y vuelve a intentarlo más tarde.", + "TokenRejected": "Tu token de inicio de sesión ha sido rechazada 😕 Por favor, inténtalo de nuevo.", + "AccessDenied": "El acceso a Steam ha sido denegado.", + "dotnet-required": "Se debe instalar el tiempo de ejecución de .NET 6 para descargar una versión de Beat Saber. Descárgalo haciendo clic en el botón de abajo." + }, + "actions": { + "download-dotnet": "Descargar .NET 6" + } } }, - "errors": { - "titles": { - "dotnet-required": ".NET 6 Requerido" - }, - "msg": { - "401": "Parece que Steam no quiere dejarnos descargar Beat Saber 😢", - "404": "No se puede contactar con los servidores de Steam", - "Password": "La contraseña es inválida.", - "InvalidCredentials": "Credenciales de inicio de sesión inválidas, conexión no aprobada o demasiados intentos de inicio de sesión.", - "NoManifest": "No se ha encontrado el manifiesto", - "DirectoryCreate": "No se pueden instalar las carpetas necesarias.", - "NotAvailableApp": "¿Intentas descargar Beat Saber cuando no lo tienes? 🤣", - "DepotNotFound": "No se puede descargar Beat Saber 😥 inténtalo más tarde 😕", - "NotCompleted": "La descarga no pudo completarse ¯\\_(ツ)_/¯", - "InvalidManifest": "No se puede descargar Beat Saber 😥 inténtalo más tarde 😕", - "NoValidKey": "No se puede descargar Beat Saber 😥 inténtalo más tarde 😕", - "NoManifestCode": "No se puede descargar Beat Saber 😥 inténtalo más tarde 😕", - "Unknown": "Se ha producido un error desconocido ¯\\_(ツ)_/¯", - "NoServer": "No se puede contactar con los servidores de Steam.", - "NotAllowed": "Aparentemente no tienes permiso para descargar Beat Saber 🥱", - "ConnectionTimeout": "No se puede conectar a Steam 😕", - "SteamLib": "Si tienes este error, reporta el bug en GitHub con los logs, por favor.", - "ConnectionError": "No se puede conectar a Steam después de 10 intentos 🤯", - "LicenceError": "No se puede obtener la lista de licencias.", - "RateLimitExceeded": "Lo has intentado demasiadas veces, espera un poco y vuelve a intentarlo más tarde.", - "TokenRejected": "Tu token de inicio de sesión ha sido rechazada 😕 Por favor, inténtalo de nuevo.", - "AccessDenied": "El acceso a Steam ha sido denegado.", - "dotnet-required": "Se debe instalar el tiempo de ejecución de .NET 6 para descargar una versión de Beat Saber. Descárgalo haciendo clic en el botón de abajo." - }, - "actions": { - "download-dotnet": "Descargar .NET 6" + "oculus-download": { + "errors": { + "msg": { + "DOWNLOAD_MANIFEST_FAILED": "Imposible descargar el manifiesto de esta versión.", + "MANIFEST_FILE_NOT_FOUND": "Imposible encontrar el manifiesto de esta versión.", + "PARSE_MANIFEST_FILE_FAILED": "Se produjo un error al leer el manifiesto.", + "ALREADY_DOWNLOADING": "Ya se está descargando una versión.", + "UNABLE_TO_GET_MANIFEST": "Imposible obtener el manifiesto necesario para la descarga.", + "VERIFY_INTEGRITY_FAILED": "Se produjo un error durante la verificación de archivos.", + "SOME_FILES_FAILED_TO_DOWNLOAD": "Algunos archivos no pudieron ser descargados.", + "OCULUS_LOGIN_TIMED_OUT": "El token de inicio de sesión tardó demasiado en recuperarse.", + "OCULUS_LOGIN_WINDOW_CLOSED_BY_USER": "La ventana de inicio de sesión de Meta fue cerrada.", + "NO_META_AUTH_TOKEN": "Imposible recuperar el token de inicio de sesión de Meta necesario para la descarga.", + "UNKNOWN_ERROR": "Se produjo un error desconocido." + } } } }, diff --git a/assets/jsons/translations/fr.json b/assets/jsons/translations/fr.json index 47957c82..f116670b 100644 --- a/assets/jsons/translations/fr.json +++ b/assets/jsons/translations/fr.json @@ -209,47 +209,66 @@ "bs-download": { "success": { "titles": { - "download-success": "Téléchargement terminé", - "verification-finished": "Vérification terminée" + "download-success": "Téléchargement terminé 🎉", + "verification-finished": "Vérification terminée 🎉" } }, - "warnings": { - "msg": { - "ConnectionTimeout": "Ta connexion internet semble instable 🥶", - "Unknown": "Quelque chose d'étrange s'est produit 🤔 Votre connexion est surement instable." + "steam-download": { + "warnings": { + "msg": { + "ConnectionTimeout": "Ta connexion internet semble instable 🥶", + "Unknown": "Quelque chose d'étrange s'est produit 🤔 Votre connexion est surement instable." + } + }, + "errors": { + "titles": { + "dotnet-required": ".NET 6 Requis" + }, + "msg": { + "401": "Steam ne semble pas vouloir nous laisser télécharger Beat Saber 😢", + "404": "Impossible de contacter les serveurs de Steam.", + "Password": "Le mot de passe est invalide.", + "InvalidCredentials": "Identifiants de connexion invalides, connexion non approuvée, ou trop de tentatives de connexion.", + "NoManifest": "Aucun manifest n'a été trouvé.", + "DirectoryCreate": "Impossible d'installer les dossiers nécessaires.", + "NotAvailableApp": "Tu essayes de télécharger Beat Saber alors que tu ne l'as pas ? 🤣", + "DepotNotFound": "Impossible de télécharger Beat Saber 😥 réessaye plus tard 😕", + "NotCompleted": "Le téléchargement n'a pas pu se terminer ¯\\_(ツ)_/¯", + "InvalidManifest": "Impossible de télécharger Beat Saber 😥 réessaye plus tard 😕", + "NoValidKey": "Impossible de télécharger Beat Saber 😥 réessaye plus tard 😕", + "NoManifestCode": "Impossible de télécharger Beat Saber 😥 réessaye plus tard 😕", + "Unknown": "Une erreur inconnue s'est produite ¯\\_(ツ)_/¯", + "NoServer": "Impossible de contacter les serveurs de Steam.", + "NotAllowed": "Apparemment tu n'es pas autorisé à télécharger Beat Saber 🥱", + "ConnectionTimeout": "Impossible de se connecter à Steam 😕", + "SteamLib": "Si tu as cette erreur, signale le bug sur GitHub avec les logs stp.", + "ConnectionError": "Impossible de se connecter à Steam après 10 essais 🤯", + "LicenceError": "Impossible d'obtenir la liste des licences.", + "RateLimitExceeded": "Tu as essayé trop de fois attends un peu et recommence plus tard.", + "TokenRejected": "Votre token de connexion a été rejeté 😕 Veuillez réessayer.", + "AccessDenied": "L'accès à Steam a été refusé.", + "dotnet-required": ".NET 6 Runtime doit être installé pour pouvoir télécharger une version de Beat Saber. Télécharge-le en cliquant sur le bouton ci-dessous." + }, + "actions": { + "download-dotnet": "Télécharger .NET 6" + } } }, - "errors": { - "titles": { - "dotnet-required": ".NET 6 Requis" - }, - "msg": { - "401": "Steam ne semble pas vouloir nous laisser télécharger Beat Saber 😢", - "404": "Impossible de contacter les serveurs de Steam.", - "Password": "Le mot de passe est invalide.", - "InvalidCredentials": "Identifiants de connexion invalides, connexion non approuvée, ou trop de tentatives de connexion.", - "NoManifest": "Aucun manifest n'a été trouvé.", - "DirectoryCreate": "Impossible d'installer les dossiers nécessaires.", - "NotAvailableApp": "Tu essayes de télécharger Beat Saber alors que tu ne l'as pas ? 🤣", - "DepotNotFound": "Impossible de télécharger Beat Saber 😥 réessaye plus tard 😕", - "NotCompleted": "Le téléchargement n'a pas pu se terminer ¯\\_(ツ)_/¯", - "InvalidManifest": "Impossible de télécharger Beat Saber 😥 réessaye plus tard 😕", - "NoValidKey": "Impossible de télécharger Beat Saber 😥 réessaye plus tard 😕", - "NoManifestCode": "Impossible de télécharger Beat Saber 😥 réessaye plus tard 😕", - "Unknown": "Une erreur inconnue s'est produite ¯\\_(ツ)_/¯", - "NoServer": "Impossible de contacter les serveurs de Steam.", - "NotAllowed": "Apparemment tu n'es pas autorisé à télécharger Beat Saber 🥱", - "ConnectionTimeout": "Impossible de se connecter à Steam 😕", - "SteamLib": "Si tu as cette erreur, signale le bug sur GitHub avec les logs stp.", - "ConnectionError": "Impossible de se connecter à Steam après 10 essais 🤯", - "LicenceError": "Impossible d'obtenir la liste des licences.", - "RateLimitExceeded": "Tu as essayé trop de fois attends un peu et recommence plus tard.", - "TokenRejected": "Votre token de connexion a été rejeté 😕 Veuillez réessayer.", - "AccessDenied": "L'accès à Steam a été refusé.", - "dotnet-required": ".NET 6 Runtime doit être installé pour pouvoir télécharger une version de Beat Saber. Télécharge-le en cliquant sur le bouton ci-dessous." - }, - "actions": { - "download-dotnet": "Télécharger .NET 6" + "oculus-download": { + "errors": { + "msg": { + "DOWNLOAD_MANIFEST_FAILED": "Impossible de télécharger le manifest de cette version.", + "MANIFEST_FILE_NOT_FOUND": "Impossible de trouver le manifest de cette version.", + "PARSE_MANIFEST_FILE_FAILED": "Une erreur c'est produite lors de la lecture du manifest.", + "ALREADY_DOWNLOADING": "Une version est déjà en cours de téléchargement.", + "UNABLE_TO_GET_MANIFEST": "Impossible d'obtenir le manifest nécessaire au téléchargement.", + "VERIFY_INTEGRITY_FAILED": "Une erreur c'est produite lors de la vérification des fichiers.", + "SOME_FILES_FAILED_TO_DOWNLOAD": "Certains fichiers n'ont pas pu être téléchargés.", + "OCULUS_LOGIN_TIMED_OUT": "Le Token de connexion à mis trop de temps à être récupéré.", + "OCULUS_LOGIN_WINDOW_CLOSED_BY_USER": "La fenêtre de connexion à Meta a été fermée.", + "NO_META_AUTH_TOKEN": "Impossible de récupérer le token de connexion à Meta nécessaire au téléchargement.", + "UNKNOWN_ERROR": "Une erreur inconnue s'est produite." + } } } }, diff --git a/assets/jsons/translations/ru.json b/assets/jsons/translations/ru.json index 13b2a276..91a12332 100644 --- a/assets/jsons/translations/ru.json +++ b/assets/jsons/translations/ru.json @@ -214,46 +214,65 @@ "verification-finished": "Проверка завершена" } }, - "warnings": { - "msg": { - "ManifestChecksum": "Предыдущий файл манифесте не совпадает с новым 🤔", - "ConnectionTimeout": "У вас нестабильное соединение с интернетом 🥶", - "ConnectionLost": "Соединение потеряно, попробуйте снова...", - "ConnectionError": "Не удалось подключиться к Steam, попробуйте снова...", - "Unknown": "Что-то странное произошло 🤔 Возможно ваш интернет барахлит." + "steam-download": { + "warnings": { + "msg": { + "ManifestChecksum": "Предыдущий файл манифесте не совпадает с новым 🤔", + "ConnectionTimeout": "У вас нестабильное соединение с интернетом 🥶", + "ConnectionLost": "Соединение потеряно, попробуйте снова...", + "ConnectionError": "Не удалось подключиться к Steam, попробуйте снова...", + "Unknown": "Что-то странное произошло 🤔 Возможно ваш интернет барахлит." + } + }, + "errors": { + "titles": { + "dotnet-required": "Требуется .NET 6" + }, + "msg": { + "401": "Похоже Steam не хочет, чтобы мы скачали Beat Saber 😢", + "404": "Нет связи с серверами Steam.", + "Password": "Неверный пароль.", + "InvalidCredentials": "Неверные учетные данные для входа, неразрешенное соединение или слишком много попыток входа.", + "NoManifest": "Файл манифеста не найден", + "DirectoryCreate": "Не смогли создать нужные папки.", + "NotAvailableApp": "Вы пытаетесь скачать Beat Saber, не купив её? 🤣", + "DepotNotFound": "Не удалось скачать Beat Saber 😥 повторите попытку позже 😕", + "NotCompleted": "Скачивание не завершилось ¯\\_(ツ)_/¯", + "InvalidManifest": "Не удалось скачать Beat Saber 😥 повторите попытку позже 😕", + "NoValidKey": "Не удалось скачать Beat Saber 😥 повторите попытку позже 😕", + "NoManifestCode": "Не удалось скачать Beat Saber 😥 повторите попытку позже 😕", + "Unknown": "Неизвестная ошибка ¯\\_(ツ)_/¯", + "NoServer": "Нет связи с серверами Steam.", + "NotAllowed": "Внезапно, вы не можете скачать Beat Saber 🥱", + "ConnectionTimeout": "Не удалось подключиться к Steam 😕", + "SteamLib": "Если вы это видите, пожалуйста, сообщите о баге на GitHub с файлом логов.", + "ConnectionError": "Не удалось подключиться к Steam за 10 попыток 🤯", + "LicenceError": "Не удалось проверить наличие лицензии.", + "RateLimitExceeded": "Слишком много попыток, вернитесь позже и попробуйте снова.", + "TokenRejected": "Ваш токен для входа был отклонен 😕 Пожалуйста, попробуйте снова.", + "AccessDenied": "Доступ к Steam был отклонен.", + "dotnet-required": "Среда запуска .NET 6 должна быть установлена, чтобы скачать Beat Saber. Скачайте её с помощью кнопки ниже." + }, + "actions": { + "download-dotnet": "Скачать .NET 6" + } } }, - "errors": { - "titles": { - "dotnet-required": "Требуется .NET 6" - }, - "msg": { - "401": "Похоже Steam не хочет, чтобы мы скачали Beat Saber 😢", - "404": "Нет связи с серверами Steam.", - "Password": "Неверный пароль.", - "InvalidCredentials": "Неверные учетные данные для входа, неразрешенное соединение или слишком много попыток входа.", - "NoManifest": "Файл манифеста не найден", - "DirectoryCreate": "Не смогли создать нужные папки.", - "NotAvailableApp": "Вы пытаетесь скачать Beat Saber, не купив её? 🤣", - "DepotNotFound": "Не удалось скачать Beat Saber 😥 повторите попытку позже 😕", - "NotCompleted": "Скачивание не завершилось ¯\\_(ツ)_/¯", - "InvalidManifest": "Не удалось скачать Beat Saber 😥 повторите попытку позже 😕", - "NoValidKey": "Не удалось скачать Beat Saber 😥 повторите попытку позже 😕", - "NoManifestCode": "Не удалось скачать Beat Saber 😥 повторите попытку позже 😕", - "Unknown": "Неизвестная ошибка ¯\\_(ツ)_/¯", - "NoServer": "Нет связи с серверами Steam.", - "NotAllowed": "Внезапно, вы не можете скачать Beat Saber 🥱", - "ConnectionTimeout": "Не удалось подключиться к Steam 😕", - "SteamLib": "Если вы это видите, пожалуйста, сообщите о баге на GitHub с файлом логов.", - "ConnectionError": "Не удалось подключиться к Steam за 10 попыток 🤯", - "LicenceError": "Не удалось проверить наличие лицензии.", - "RateLimitExceeded": "Слишком много попыток, вернитесь позже и попробуйте снова.", - "TokenRejected": "Ваш токен для входа был отклонен 😕 Пожалуйста, попробуйте снова.", - "AccessDenied": "Доступ к Steam был отклонен.", - "dotnet-required": "Среда запуска .NET 6 должна быть установлена, чтобы скачать Beat Saber. Скачайте её с помощью кнопки ниже." - }, - "actions": { - "download-dotnet": "Скачать .NET 6" + "oculus-download": { + "errors": { + "msg": { + "DOWNLOAD_MANIFEST_FAILED": "Невозможно загрузить манифест этой версии.", + "MANIFEST_FILE_NOT_FOUND": "Невозможно найти манифест этой версии.", + "PARSE_MANIFEST_FILE_FAILED": "При чтении манифеста произошла ошибка.", + "ALREADY_DOWNLOADING": "Версия уже загружается.", + "UNABLE_TO_GET_MANIFEST": "Невозможно получить манифест, необходимый для загрузки.", + "VERIFY_INTEGRITY_FAILED": "При проверке файлов произошла ошибка.", + "SOME_FILES_FAILED_TO_DOWNLOAD": "Некоторые файлы не удалось загрузить.", + "OCULUS_LOGIN_TIMED_OUT": "Получение токена входа заняло слишком много времени.", + "OCULUS_LOGIN_WINDOW_CLOSED_BY_USER": "Окно входа в Meta было закрыто.", + "NO_META_AUTH_TOKEN": "Невозможно получить токен входа в Meta, необходимый для загрузки.", + "UNKNOWN_ERROR": "Произошла неизвестная ошибка." + } } } }, diff --git a/src/main/models/oculus-downloader.class.ts b/src/main/models/oculus-downloader.class.ts index 11786480..558f2031 100644 --- a/src/main/models/oculus-downloader.class.ts +++ b/src/main/models/oculus-downloader.class.ts @@ -30,7 +30,7 @@ export class OculusDownloader { private async getManifest(): Promise { const downloadUrl = this.getDownloadManifestUrl(this.options.accessToken, this.options.binaryId); - const manifestZip = await this.downloadManifestZip(downloadUrl).catch(err => CustomError.throw(err, "DOWNLOAD_MANIFEST_ZIP_FAILED")); + const manifestZip = await this.downloadManifestZip(downloadUrl).catch(err => CustomError.throw(err, "DOWNLOAD_MANIFEST_FAILED")); const manifestFile = manifestZip.file("manifest.json"); if(!manifestFile){ diff --git a/src/main/services/bs-local-version.service.ts b/src/main/services/bs-local-version.service.ts index 0bb86b4d..9eb58011 100644 --- a/src/main/services/bs-local-version.service.ts +++ b/src/main/services/bs-local-version.service.ts @@ -1,5 +1,5 @@ import { BSVersionLibService } from "./bs-version-lib.service"; -import { BSVersion } from "shared/bs-version.interface"; +import { BSVersion, BSVersionMetadata } from "shared/bs-version.interface"; import { InstallationLocationService } from "./installation-location.service"; import { SteamService } from "./steam.service"; import { BS_APP_ID, OCULUS_BS_DIR } from "../constants"; @@ -112,8 +112,7 @@ export class BSLocalVersionService { folderVersion.ino = folderStats.ino; } - const versionStore: BsStore = await this.getVersionMetadata(folderVersion, "store"); - folderVersion.store = versionStore ?? BsStore.STEAM; + folderVersion.metadata = await this.getAllVersionMetadata(folderVersion, { store: BsStore.STEAM }); const customVersion = this.getCustomVersions().find(customVersion => { return customVersion.BSVersion === folderVersion.BSVersion && customVersion.name === folderVersion.name; @@ -124,32 +123,32 @@ export class BSLocalVersionService { return folderVersion; } - public getAllVersionMetadata(version: BSVersion): Promise|null>{ + public getAllVersionMetadata(version: BSVersion, defaultMetadata?: BSVersionMetadata): Promise{ return (async () => { const versionPath = await this.getVersionPath(version); const contents = await readFile(path.join(versionPath, this.METADATA_FILE), "utf-8"); return JSON.parse(contents); })().catch(e => { log.warn(e); - return null; - }); + return {}; + }).then(metadata => ({...defaultMetadata, ...metadata})); } - public getVersionMetadata(version: BSVersion, key: string): Promise{ + public getVersionMetadata(version: BSVersion, key: K, defaultValue?: T): Promise{ return (async () => { const metadata = await this.getAllVersionMetadata(version); - return metadata?.[key] as T; + return metadata?.[key]; })().catch(e => { log.warn(e); return null; - }); + }).then(value => (value ?? defaultValue) as T); } - public setVersionMetadata(version: BSVersion, key: string, value: unknown): Promise{ + public setVersionMetadata(version: BSVersion, key: K, value: T): Promise{ return (async () => { const versionPath = await this.getVersionPath(version); const metadataPath = path.join(versionPath, this.METADATA_FILE); - const metadata = await this.getAllVersionMetadata(version) || {}; + const metadata = await this.getAllVersionMetadata(version) ?? ({} as BSVersionMetadata); metadata[key] = value; await writeFile(metadataPath, JSON.stringify(metadata)); })().catch(e => { diff --git a/src/main/services/bs-version-download/bs-oculus-downloader.service.ts b/src/main/services/bs-version-download/bs-oculus-downloader.service.ts index 3d1a6ec8..af1f1269 100644 --- a/src/main/services/bs-version-download/bs-oculus-downloader.service.ts +++ b/src/main/services/bs-version-download/bs-oculus-downloader.service.ts @@ -96,7 +96,7 @@ export class BsOculusDownloaderService { const promise = new Promise((resolve, reject) => { timout = setTimeout(() => { - reject(new CustomError("Trying to get Oculus user token timed out", "OCULUS_LOGIN_TIMED_OUT")); + reject(new CustomError("Trying to get Oculus user token timed out", "META_LOGIN_TIMED_OUT")); window.close(); }, minToMs(5)); @@ -113,7 +113,7 @@ export class BsOculusDownloaderService { }); window.on("closed", () => { - reject(new CustomError("Oculus login window closed by user", "OCULUS_LOGIN_WINDOW_CLOSED_BY_USER")); + reject(new CustomError("Oculus login window closed by user", "META_LOGIN_WINDOW_CLOSED_BY_USER")); }); }).finally(() => { diff --git a/src/renderer/components/version-viewer/slides/launch/launch-slide.component.tsx b/src/renderer/components/version-viewer/slides/launch/launch-slide.component.tsx index f5cc661a..c6f8d9ce 100644 --- a/src/renderer/components/version-viewer/slides/launch/launch-slide.component.tsx +++ b/src/renderer/components/version-viewer/slides/launch/launch-slide.component.tsx @@ -74,7 +74,7 @@ export function LaunchSlide({ version }: Props) {

{version.name ? `${version.BSVersion} - ${version.name}` : version.BSVersion}

- {!(version.oculus || version.store === BsStore.OCULUS) && setMode(LaunchMods.OCULUS_MOD, !oculusMode)} active={oculusMode} text="pages.version-viewer.launch-mods.oculus" />} + {!(version.oculus || version.metadata.store === BsStore.OCULUS) && setMode(LaunchMods.OCULUS_MOD, !oculusMode)} active={oculusMode} text="pages.version-viewer.launch-mods.oculus" />} setMode(LaunchMods.DESKTOP_MOD, !desktopMode)} active={desktopMode} text="pages.version-viewer.launch-mods.desktop" /> setMode(LaunchMods.DEBUG_MOD, !debugMode)} active={debugMode} text="pages.version-viewer.launch-mods.debug" />
diff --git a/src/renderer/services/bs-version-download/bs-downloader.service.ts b/src/renderer/services/bs-version-download/bs-downloader.service.ts index 139332b2..f7c47b32 100644 --- a/src/renderer/services/bs-version-download/bs-downloader.service.ts +++ b/src/renderer/services/bs-version-download/bs-downloader.service.ts @@ -53,13 +53,7 @@ export class BsDownloaderService extends AbstractBsDownloaderService { } public getLastStoreDownloadedFrom(): BsStore | undefined { - const lastStore = this.config.get("lastStoreDownloadedFrom"); - - if(!lastStore){ - return undefined; - } - - return lastStore as BsStore; + return this.config.get("lastStoreDownloadedFrom"); } public async chooseStoreToDownloadFrom(): Promise { @@ -81,7 +75,7 @@ export class BsDownloaderService extends AbstractBsDownloaderService { public verifyBsVersion(version: BSVersion){ this._isVerifying$.next(true); - return this.getStoreDownloader(version.store).verifyBsVersion(version).finally(() => { + return this.getStoreDownloader(version.metadata.store).verifyBsVersion(version).finally(() => { this.resetDownloadState(); this.versionManager.askInstalledVersions(); }); diff --git a/src/renderer/services/bs-version-download/oculus-downloader.service.ts b/src/renderer/services/bs-version-download/oculus-downloader.service.ts index 15fba494..86050932 100644 --- a/src/renderer/services/bs-version-download/oculus-downloader.service.ts +++ b/src/renderer/services/bs-version-download/oculus-downloader.service.ts @@ -1,4 +1,4 @@ -import { Observable, Subscription, catchError, finalize, lastValueFrom, map, of, take, tap } from "rxjs"; +import { Observable, Subscription, catchError, finalize, lastValueFrom, map, noop, of, take, tap } from "rxjs"; import { BSVersion } from "shared/bs-version.interface"; import { IpcService } from "../ipc.service"; import { Progression } from "main/helpers/fs.helpers"; @@ -10,7 +10,7 @@ import { LoginToMetaModal } from "renderer/components/modal/modal-types/bs-downg import { DownloaderServiceInterface } from "./bs-store-downloader.interface"; import { AbstractBsDownloaderService } from "./abstract-bs-downloader.service"; import { DownloadInfo } from "main/services/bs-version-download/bs-steam-downloader.service"; -import { MetaAuthErrorCodes } from "shared/models/bs-version-download/oculus-download.model"; +import { MetaAuthErrorCodes, OculusDownloaderErrorCodes } from "shared/models/bs-version-download/oculus-download.model"; export class OculusDownloaderService extends AbstractBsDownloaderService implements DownloaderServiceInterface{ @@ -29,6 +29,8 @@ export class OculusDownloaderService extends AbstractBsDownloaderService impleme private readonly notifications: NotificationService; private readonly modals: ModalService; + private readonly DISPLAYABLE_ERROR_CODES: string[] = [...Object.values(MetaAuthErrorCodes), ...Object.values(OculusDownloaderErrorCodes)]; + private constructor(){ super(); this.ipc = IpcService.getInstance(); @@ -37,12 +39,12 @@ export class OculusDownloaderService extends AbstractBsDownloaderService impleme this.modals = ModalService.getInstance(); } - private handleDownloadErrors(err: CustomError): void{ - if(!err?.code){ - // handle unknown error + private handleDownloadErrors(err: CustomError): Promise{ + if(!err?.code || !this.DISPLAYABLE_ERROR_CODES.includes(err.code)){ + return this.notifications.notifyError({title: "notifications.types.error", desc: `notifications.bs-download.oculus-download.errors.msg.UNKNOWN_ERROR`}).then(noop); } - this.notifications.notifyError({title: err.code}); + return this.notifications.notifyError({title: "notifications.types.error", desc: `notifications.bs-download.oculus-download.errors.msg.${err.code}`}).then(noop); } private handleDownload(download: Observable>, ingoreErrorCodes?: string[]): Observable> { @@ -75,7 +77,7 @@ export class OculusDownloaderService extends AbstractBsDownloaderService impleme } private startDownloadBsVersion(downloadInfo: DownloadInfo): Observable>{ - const ignoreCode = [MetaAuthErrorCodes.OCULUS_LOGIN_WINDOW_CLOSED_BY_USER]; + const ignoreCode = [MetaAuthErrorCodes.META_LOGIN_WINDOW_CLOSED_BY_USER]; return this.handleDownload( this.ipc.sendV2>("bs-oculus-download", { args: downloadInfo }), ignoreCode diff --git a/src/renderer/services/bs-version-download/steam-downloader.service.ts b/src/renderer/services/bs-version-download/steam-downloader.service.ts index 92f18c5b..55771c17 100644 --- a/src/renderer/services/bs-version-download/steam-downloader.service.ts +++ b/src/renderer/services/bs-version-download/steam-downloader.service.ts @@ -56,9 +56,9 @@ export class SteamDownloaderService extends AbstractBsDownloaderService implemen private async showDotNetNotInstalledError(): Promise { const choice = await this.notificationService.notifyError({ duration: 11_000, - title: "notifications.bs-download.errors.titles.dotnet-required", - desc: "notifications.bs-download.errors.msg.dotnet-required", - actions: [{ id: "0", title: "notifications.bs-download.errors.actions.download-dotnet" }], + title: "notifications.bs-download.steam-download.errors.titles.dotnet-required", + desc: "notifications.bs-download.steam-download.errors.msg.dotnet-required", + actions: [{ id: "0", title: "notifications.bs-download..errors.actions.download-dotnet" }], }); if (choice === "0") { @@ -141,7 +141,7 @@ export class SteamDownloaderService extends AbstractBsDownloaderService implemen subs.push(events$.pipe( filter(event => handledWarnings.includes(event.subType as DepotDownloaderWarningEvent)), ).subscribe(event => { - this.notificationService.notifyWarning({title: "notifications.types.warning", desc: `notifications.bs-download.warnings.msg.${event.subType}`}); + this.notificationService.notifyWarning({title: "notifications.types.warning", desc: `notifications.bs-download.steam-download.warnings.msg.${event.subType}`}); })); return subs; @@ -151,10 +151,10 @@ export class SteamDownloaderService extends AbstractBsDownloaderService implemen const handledErrors = Object.values(DepotDownloaderErrorEvent); if(handledErrors.includes(errorEvent?.subType as DepotDownloaderErrorEvent)){ - return this.notificationService.notifyError({title: "notifications.types.error", desc: `notifications.bs-download.errors.msg.${errorEvent.subType}`, duration: 10_000}); + return this.notificationService.notifyError({title: "notifications.types.error", desc: `notifications.bs-download.steam-download.errors.msg.${errorEvent.subType}`, duration: 10_000}); } - return this.notificationService.notifyError({title: "notifications.types.error", desc: `notifications.bs-download.errors.msg.${DepotDownloaderErrorEvent.Unknown}`, duration: 10_000}); + return this.notificationService.notifyError({title: "notifications.types.error", desc: `notifications.bs-download.steam-download.errors.msg.${DepotDownloaderErrorEvent.Unknown}`, duration: 10_000}); } private wrapDownload(download$: Observable, silent?: boolean): Observable { diff --git a/src/shared/bs-version.interface.ts b/src/shared/bs-version.interface.ts index 79e51759..f3b30bb2 100644 --- a/src/shared/bs-version.interface.ts +++ b/src/shared/bs-version.interface.ts @@ -14,9 +14,13 @@ export interface BSVersion extends PartialBSVersion { year?: string; steam?: boolean; oculus?: boolean; - color?: string; - store?: BsStore; + color?: string; // TODO : Should be in metadata OculusBinaryId?: string; + metadata?: BSVersionMetadata; +} + +export interface BSVersionMetadata { + store: BsStore; } diff --git a/src/shared/models/bs-version-download/oculus-download.model.ts b/src/shared/models/bs-version-download/oculus-download.model.ts index 4dca030a..486c32ec 100644 --- a/src/shared/models/bs-version-download/oculus-download.model.ts +++ b/src/shared/models/bs-version-download/oculus-download.model.ts @@ -1,6 +1,6 @@ export enum OculusDownloaderErrorCodes { - DOWNLOAD_MANIFEST_ZIP_FAILED = "DOWNLOAD_MANIFEST_ZIP_FAILED", + DOWNLOAD_MANIFEST_FAILED = "DOWNLOAD_MANIFEST_FAILED", MANIFEST_FILE_NOT_FOUND = "MANIFEST_FILE_NOT_FOUND", PARSE_MANIFEST_FILE_FAILED = "PARSE_MANIFEST_FILE_FAILED", ALREADY_DOWNLOADING = "ALREADY_DOWNLOADING", @@ -10,7 +10,7 @@ export enum OculusDownloaderErrorCodes { } export enum MetaAuthErrorCodes { - OCULUS_LOGIN_TIMED_OUT = "OCULUS_LOGIN_TIMED_OUT", - OCULUS_LOGIN_WINDOW_CLOSED_BY_USER = "OCULUS_LOGIN_WINDOW_CLOSED_BY_USER", + META_LOGIN_TIMED_OUT = "META_LOGIN_TIMED_OUT", + META_LOGIN_WINDOW_CLOSED_BY_USER = "META_LOGIN_WINDOW_CLOSED_BY_USER", NO_META_AUTH_TOKEN = "NO_META_AUTH_TOKEN", } \ No newline at end of file