[feature-274] Add errors notifications with their translations

This commit is contained in:
MathieuG-P
2023-10-29 01:28:04 +02:00
parent 43bf822aee
commit 0645e88307
14 changed files with 324 additions and 230 deletions
+57 -38
View File
@@ -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."
}
}
}
},
+57 -38
View File
@@ -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."
}
}
}
},
+57 -38
View File
@@ -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."
}
}
}
},
+56 -37
View File
@@ -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."
}
}
}
},
+57 -38
View File
@@ -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": "Произошла неизвестная ошибка."
}
}
}
},
+1 -1
View File
@@ -30,7 +30,7 @@ export class OculusDownloader {
private async getManifest(): Promise<OculusManifest> {
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){
+10 -11
View File
@@ -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<Record<string, unknown>|null>{
public getAllVersionMetadata(version: BSVersion, defaultMetadata?: BSVersionMetadata): Promise<BSVersionMetadata>{
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<T = unknown>(version: BSVersion, key: string): Promise<T|null>{
public getVersionMetadata<K extends keyof BSVersionMetadata, T extends BSVersionMetadata[K]>(version: BSVersion, key: K, defaultValue?: T): Promise<T|undefined>{
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<void>{
public setVersionMetadata<K extends keyof BSVersionMetadata, T extends BSVersionMetadata[K]>(version: BSVersion, key: K, value: T): Promise<void>{
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 => {
@@ -96,7 +96,7 @@ export class BsOculusDownloaderService {
const promise = new Promise<string>((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(() => {
@@ -74,7 +74,7 @@ export function LaunchSlide({ version }: Props) {
<h1 className="relative text-4xl font-bold italic -top-3">{version.name ? `${version.BSVersion} - ${version.name}` : version.BSVersion}</h1>
</div>
<div className="grid grid-flow-col gap-6">
{!(version.oculus || version.store === BsStore.OCULUS) && <LaunchModToogle infoText="pages.version-viewer.launch-mods.oculus-description" icon="oculus" onClick={() => setMode(LaunchMods.OCULUS_MOD, !oculusMode)} active={oculusMode} text="pages.version-viewer.launch-mods.oculus" />}
{!(version.oculus || version.metadata.store === BsStore.OCULUS) && <LaunchModToogle infoText="pages.version-viewer.launch-mods.oculus-description" icon="oculus" onClick={() => setMode(LaunchMods.OCULUS_MOD, !oculusMode)} active={oculusMode} text="pages.version-viewer.launch-mods.oculus" />}
<LaunchModToogle infoText="pages.version-viewer.launch-mods.desktop-description" icon="desktop" onClick={() => setMode(LaunchMods.DESKTOP_MOD, !desktopMode)} active={desktopMode} text="pages.version-viewer.launch-mods.desktop" />
<LaunchModToogle infoText="pages.version-viewer.launch-mods.debug-description" icon="terminal" onClick={() => setMode(LaunchMods.DEBUG_MOD, !debugMode)} active={debugMode} text="pages.version-viewer.launch-mods.debug" />
</div>
@@ -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<BsStore>("lastStoreDownloadedFrom");
}
public async chooseStoreToDownloadFrom(): Promise<BsStore | undefined> {
@@ -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();
});
@@ -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<void>{
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<Progression<BSVersion>>, ingoreErrorCodes?: string[]): Observable<Progression<BSVersion>> {
@@ -75,7 +77,7 @@ export class OculusDownloaderService extends AbstractBsDownloaderService impleme
}
private startDownloadBsVersion(downloadInfo: DownloadInfo): Observable<Progression<BSVersion>>{
const ignoreCode = [MetaAuthErrorCodes.OCULUS_LOGIN_WINDOW_CLOSED_BY_USER];
const ignoreCode = [MetaAuthErrorCodes.META_LOGIN_WINDOW_CLOSED_BY_USER];
return this.handleDownload(
this.ipc.sendV2<Progression<BSVersion>>("bs-oculus-download", { args: downloadInfo }),
ignoreCode
@@ -56,9 +56,9 @@ export class SteamDownloaderService extends AbstractBsDownloaderService implemen
private async showDotNetNotInstalledError(): Promise<void> {
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<DepotDownloaderEvent>, silent?: boolean): Observable<DepotDownloaderEvent> {
+6 -2
View File
@@ -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;
}
@@ -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",
}