mirror of
https://github.com/elyby/accounts-frontend.git
synced 2024-11-09 17:42:03 +05:30
Reimplement the pull command of the crowdin script
This commit is contained in:
parent
b5d1cb01d4
commit
e47eaf720f
@ -9,4 +9,4 @@ end_of_line = lf
|
|||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
trim_trailing_whitespace = true
|
trim_trailing_whitespace = true
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 4
|
||||||
|
@ -79,7 +79,7 @@
|
|||||||
"components.contact.cannotAccessMyAccount": "Je ne peux pas accéder a mon compte",
|
"components.contact.cannotAccessMyAccount": "Je ne peux pas accéder a mon compte",
|
||||||
"components.contact.close": "Fermer",
|
"components.contact.close": "Fermer",
|
||||||
"components.contact.disclaimer": "Veuillez formuler vos commentaires en fournissant le plus d'informations utiles que possible pour nous aider à comprendre votre problème et à le résoudre",
|
"components.contact.disclaimer": "Veuillez formuler vos commentaires en fournissant le plus d'informations utiles que possible pour nous aider à comprendre votre problème et à le résoudre",
|
||||||
"components.contact.email": "E‑mail",
|
"components.contact.email": "E-mail",
|
||||||
"components.contact.foundBugOnSite": "J'ai trouvé un problème sur le site",
|
"components.contact.foundBugOnSite": "J'ai trouvé un problème sur le site",
|
||||||
"components.contact.improvementsSuggestion": "J'ai une suggestion pour améliorer les fonctionnalités du site",
|
"components.contact.improvementsSuggestion": "J'ai une suggestion pour améliorer les fonctionnalités du site",
|
||||||
"components.contact.integrationQuestion": "Les questions d'intégration de service",
|
"components.contact.integrationQuestion": "Les questions d'intégration de service",
|
||||||
@ -91,56 +91,56 @@
|
|||||||
"components.contact.title": "Formulaire de commentaires",
|
"components.contact.title": "Formulaire de commentaires",
|
||||||
"components.contact.whichQuestion": "Qu'est-ce qui vous intéresse?",
|
"components.contact.whichQuestion": "Qu'est-ce qui vous intéresse?",
|
||||||
"components.contact.youMessageReceived": "Votre message a été reçu. Nous vous répondrons sous peu. La réponse arrivera directement à votre adresse E‑mail:",
|
"components.contact.youMessageReceived": "Votre message a été reçu. Nous vous répondrons sous peu. La réponse arrivera directement à votre adresse E‑mail:",
|
||||||
"components.dev.apps.accountsAllowsYouYoUseOauth2": "Ely.by Accounts service provides users with a quick and easy-to-use way to login to your site, launcher or Minecraft server via OAuth2 authorization protocol. You can find more information about integration with Ely.by Accounts in {ourDocumentation}.",
|
"components.dev.apps.accountsAllowsYouYoUseOauth2": "Le service Comptes Ely.by offre aux utilisateurs un moyen simple et rapide de se connecter à votre site, à votre launcher ou à votre serveur Minecraft via le protocole d'autorisation OAuth2. Vous pouvez trouver plus d’informations sur l’intégration avec Ely.by Accounts dans {ourDocumentation}.",
|
||||||
"components.dev.apps.accountsForDevelopers": "Ely.by Accounts for developers",
|
"components.dev.apps.accountsForDevelopers": "Comptes Ely.by pour les développeurs",
|
||||||
"components.dev.apps.addNew": "Add new",
|
"components.dev.apps.addNew": "Ajouter un nouveau",
|
||||||
"components.dev.apps.allRefreshTokensWillBecomeInvalid": "All \"refresh\" tokens will become invalid and after next authorization the user will get permissions prompt.",
|
"components.dev.apps.allRefreshTokensWillBecomeInvalid": "Tous les jetons \"rafraîchir\" deviendront invalides et après la prochaine autorisation, l'utilisateur obtiendra une invite de permissions.",
|
||||||
"components.dev.apps.appAndAllTokenWillBeDeleted": "Application and all associated tokens will be deleted.",
|
"components.dev.apps.appAndAllTokenWillBeDeleted": "L'application et tous les jetons associés seront supprimés.",
|
||||||
"components.dev.apps.applicationForm.appDescriptionWillBeAlsoVisibleOnOauthPage": "Application's description will be displayed at the authorization page too. It isn't a required field. In authorization process the value may be overridden.",
|
"components.dev.apps.applicationForm.appDescriptionWillBeAlsoVisibleOnOauthPage": "La description de l'application sera également affichée sur la page d'autorisation. Ce n'est pas un champ obligatoire. Dans le processus d'autorisation, la valeur peut être remplacée.",
|
||||||
"components.dev.apps.applicationForm.applicationName": "Application name:",
|
"components.dev.apps.applicationForm.applicationName": "Nom de l'application:",
|
||||||
"components.dev.apps.applicationForm.createApplication": "Create application",
|
"components.dev.apps.applicationForm.createApplication": "Créer une application",
|
||||||
"components.dev.apps.applicationForm.creatingApplication": "Creating an application",
|
"components.dev.apps.applicationForm.creatingApplication": "Création d’une application",
|
||||||
"components.dev.apps.applicationForm.description": "Description :",
|
"components.dev.apps.applicationForm.description": "Description :",
|
||||||
"components.dev.apps.applicationForm.ipAddressIsOptionButPreferable": "IP address is optional, but is very preferable. It might become handy in case of we suddenly decide to play on your server with the entire band (=",
|
"components.dev.apps.applicationForm.ipAddressIsOptionButPreferable": "L'adresse IP est facultative, mais très préférable. Cela pourrait devenir pratique si nous décidions soudainement de jouer sur votre serveur avec l’ensemble du groupe (=",
|
||||||
"components.dev.apps.applicationForm.minecraftServer": "Minecraft server",
|
"components.dev.apps.applicationForm.minecraftServer": "Serveur Minecraft",
|
||||||
"components.dev.apps.applicationForm.redirectUri": "Redirect URI:",
|
"components.dev.apps.applicationForm.redirectUri": "URL de redirection:",
|
||||||
"components.dev.apps.applicationForm.redirectUriLimitsAllowableBaseAddress": "Redirection URI (redirectUri) determines a base address, that user will be allowed to be redirected to after authorization. In order to improve security it's better to use the whole path instead of just a domain name. For example: https://example.com/oauth/ely.",
|
"components.dev.apps.applicationForm.redirectUriLimitsAllowableBaseAddress": "L'URI de redirection (redirectUri) détermine une adresse de base à laquelle cet utilisateur sera autorisé à être redirigé après autorisation. Afin d'améliorer la sécurité, il est préférable d'utiliser l'intégralité du chemin plutôt qu'un simple nom de domaine. Par exemple: https://example.com/oauth/ely.",
|
||||||
"components.dev.apps.applicationForm.serverIp": "Server IP:",
|
"components.dev.apps.applicationForm.serverIp": "IP du Serveur:",
|
||||||
"components.dev.apps.applicationForm.serverName": "Server name:",
|
"components.dev.apps.applicationForm.serverName": "Nom du serveur:",
|
||||||
"components.dev.apps.applicationForm.toDisplayRegistrationFormChooseType": "To display registration form for a new application choose necessary type.",
|
"components.dev.apps.applicationForm.toDisplayRegistrationFormChooseType": "Pour afficher le formulaire d'inscription pour une nouvelle application, sélectionnez le type nécessaire.",
|
||||||
"components.dev.apps.applicationForm.updateApplication": "Update application",
|
"components.dev.apps.applicationForm.updateApplication": "Mettre à jour de l'application",
|
||||||
"components.dev.apps.applicationForm.updatingApplication": "Updating an application",
|
"components.dev.apps.applicationForm.updatingApplication": "Mise à jour d'une application",
|
||||||
"components.dev.apps.applicationForm.website": "Web site",
|
"components.dev.apps.applicationForm.website": "Site Web",
|
||||||
"components.dev.apps.applicationForm.websiteLink": "Website link:",
|
"components.dev.apps.applicationForm.websiteLink": "Adresse du site internet:",
|
||||||
"components.dev.apps.applicationForm.websiteLinkWillBeUsedAsAdditionalId": "Site's link is optional, but it can be used as an additional identifier of the application.",
|
"components.dev.apps.applicationForm.websiteLinkWillBeUsedAsAdditionalId": "Le lien du site est facultatif, mais il peut être utilisé comme identifiant supplémentaire de l'application.",
|
||||||
"components.dev.apps.applicationForm.youCanAlsoSpecifyServerSite": "You also can specify either server's site URL or its community in a social network.",
|
"components.dev.apps.applicationForm.youCanAlsoSpecifyServerSite": "Vous pouvez également spécifier l'URL du site du serveur ou sa communauté dans un réseau social.",
|
||||||
"components.dev.apps.authorization": "Authorization",
|
"components.dev.apps.authorization": "Autorisation",
|
||||||
"components.dev.apps.cancel": "Cancel",
|
"components.dev.apps.cancel": "Annuler",
|
||||||
"components.dev.apps.continue": "Continue",
|
"components.dev.apps.continue": "Continuer",
|
||||||
"components.dev.apps.countUsers": "{count, plural, =0 {No users} one {# user} other {# users}}",
|
"components.dev.apps.countUsers": "{count, plural, =0 {Pas d'utilisateurs} one {# utilisateur} other {# utilisateurs}}",
|
||||||
"components.dev.apps.delete": "Delete",
|
"components.dev.apps.delete": "Supprimer",
|
||||||
"components.dev.apps.editDescription": "{icon} Edit description",
|
"components.dev.apps.editDescription": "{icon} Modifier la description",
|
||||||
"components.dev.apps.feedback": "feedback",
|
"components.dev.apps.feedback": "commentaires",
|
||||||
"components.dev.apps.ifYouHaveAnyTroubles": "If you are experiencing difficulties, you can always use {feedback}. We'll surely help you.",
|
"components.dev.apps.ifYouHaveAnyTroubles": "Si vous rencontrez des difficultés, vous pouvez toujours utiliser {feedback}. Nous allons sûrement vous aider.",
|
||||||
"components.dev.apps.ifYouSuspectingThatSecretHasBeenCompromised": "If you are suspecting that your Client Secret has been compromised, then you may want to reset it value. It'll cause recall of the all \"access\" and \"refresh\" tokens that have been issued. You can also recall all issued tokens without changing Client Secret.",
|
"components.dev.apps.ifYouSuspectingThatSecretHasBeenCompromised": "Si vous pensez que votre secret client a été compromis, vous souhaiterez peut-être réinitialiser sa valeur. Cela provoquera le rappel de tous les jetons \"d'accès\" et \"d'actualisation\" qui ont été émis. Vous pouvez également rappeler tous les jetons émis sans modifier le Client Secret.",
|
||||||
"components.dev.apps.ourDocumentation": "our documentation",
|
"components.dev.apps.ourDocumentation": "notre documentation",
|
||||||
"components.dev.apps.performing": "Performing…",
|
"components.dev.apps.performing": "Exécution…",
|
||||||
"components.dev.apps.resetClientSecret": "Reset Client Secret",
|
"components.dev.apps.resetClientSecret": "Réinitialiser le Client Secret",
|
||||||
"components.dev.apps.revokeAllTokens": "Revoke all tokens",
|
"components.dev.apps.revokeAllTokens": "Révoquer touts les tokens",
|
||||||
"components.dev.apps.shallWeStart": "Shall we start?",
|
"components.dev.apps.shallWeStart": "Allons-nous commencer?",
|
||||||
"components.dev.apps.takeCareAccessTokensInvalidation": "Take care because \"access\" tokens won't be invalidated immediately.",
|
"components.dev.apps.takeCareAccessTokensInvalidation": "Prenez-en soin parce que les jetons \"d'accès\" ne seront pas invalidés immédiatement.",
|
||||||
"components.dev.apps.weDontKnowAnythingAboutYou": "We don't know anything about you yet.",
|
"components.dev.apps.weDontKnowAnythingAboutYou": "Nous ne savons rien de vous pour le moment.",
|
||||||
"components.dev.apps.youDontHaveAnyApplication": "You don't have any app registered yet.",
|
"components.dev.apps.youDontHaveAnyApplication": "Vous n'avez pas d'application enregistrée pour le moment.",
|
||||||
"components.dev.apps.youMustAuthToBegin": "You have to authorize to start.",
|
"components.dev.apps.youMustAuthToBegin": "Vous devez autoriser le démarrage.",
|
||||||
"components.dev.apps.yourApplications": "Your applications:",
|
"components.dev.apps.yourApplications": "Vos applications:",
|
||||||
"components.footerMenu.contactUs": "Nous contacter",
|
"components.footerMenu.contactUs": "Nous contacter",
|
||||||
"components.footerMenu.forDevelopers": "For developers",
|
"components.footerMenu.forDevelopers": "Pour développeurs",
|
||||||
"components.footerMenu.rules": "Règles",
|
"components.footerMenu.rules": "Règles",
|
||||||
"components.footerMenu.siteLanguage": "Langue du site",
|
"components.footerMenu.siteLanguage": "Langue du site",
|
||||||
"components.languageSwitcher.improveTranslates": "Améliorer la traduction Ely.by",
|
"components.languageSwitcher.improveTranslates": "Améliorer la traduction Ely.by",
|
||||||
"components.languageSwitcher.improveTranslatesDescription": "Ely.by’s localization is a community effort. If you want to improve the translation of Ely.by, we'd love your help.",
|
"components.languageSwitcher.improveTranslatesDescription": "La traduction d'Ely.by est un effort de la communauté. Si vous souhaitez améliorer la traduction d'Ely.by, nous aimerions votre aide.",
|
||||||
"components.languageSwitcher.improveTranslatesParticipate": "Click here to participate.",
|
"components.languageSwitcher.improveTranslatesParticipate": "Cliquer ici pour participer.",
|
||||||
"components.languageSwitcher.mayBeInaccurate": "May be inaccurate",
|
"components.languageSwitcher.mayBeInaccurate": "Peut être inexacte",
|
||||||
"components.languageSwitcher.siteLanguage": "Langue du site",
|
"components.languageSwitcher.siteLanguage": "Langue du site",
|
||||||
"components.languageSwitcher.startTyping": "Commencer à écrire...",
|
"components.languageSwitcher.startTyping": "Commencer à écrire...",
|
||||||
"components.languageSwitcher.translationProgress": "{progress}% traduit",
|
"components.languageSwitcher.translationProgress": "{progress}% traduit",
|
||||||
@ -175,31 +175,31 @@
|
|||||||
"components.profile.changeUsername.changeUsernameWarning": "Faites attention: si vous jouez sur un serveur avec un surnom, après l'avoir changé, vous risquez de perdre toute votre progression.",
|
"components.profile.changeUsername.changeUsernameWarning": "Faites attention: si vous jouez sur un serveur avec un surnom, après l'avoir changé, vous risquez de perdre toute votre progression.",
|
||||||
"components.profile.changedAt": "Changé il y a {at}",
|
"components.profile.changedAt": "Changé il y a {at}",
|
||||||
"components.profile.disabled": "Désactivée",
|
"components.profile.disabled": "Désactivée",
|
||||||
"components.profile.email": "E‑mail:",
|
"components.profile.email": "E-mail:",
|
||||||
"components.profile.enabled": "Activer",
|
"components.profile.enabled": "Activer",
|
||||||
"components.profile.languageIsUnavailableWarning": "The locale \"{locale}\" you've used earlier isn't currently translated enough. If you want to continue using the selected language, please {participateInTheTranslation} of the project.",
|
"components.profile.languageIsUnavailableWarning": "Les paramètres régionaux \"{locale}\" vous avez utilisé précédemment n'est pas traduit actuellement assez. Si vous souhaitez continuer à utiliser la langue sélectionnée, veuillez {participateInTheTranslation} du projet.",
|
||||||
"components.profile.mojangPriorityWarning": "Un compte Mojang avec le même pseudo a été trouvé. Selon les {rules}, le propriétaire du compte a le droit d'exiger la restauration du contrôle sur le surnom.",
|
"components.profile.mojangPriorityWarning": "Un compte Mojang avec le même pseudo a été trouvé. Selon les {rules}, le propriétaire du compte a le droit d'exiger la restauration du contrôle sur le surnom.",
|
||||||
"components.profile.multiFactorAuth.codePlaceholder": "Entrez le code ici",
|
"components.profile.multiFactorAuth.codePlaceholder": "Entrez le code ici",
|
||||||
"components.profile.multiFactorAuth.disable": "Désactiver",
|
"components.profile.multiFactorAuth.disable": "Désactiver",
|
||||||
"components.profile.multiFactorAuth.disableMfa": "Désactiver l'authentification à deux facteurs",
|
"components.profile.multiFactorAuth.disableMfa": "Désactiver l'authentification à deux facteurs",
|
||||||
"components.profile.multiFactorAuth.disableMfaInstruction": "In order to disable two‑factor authentication, you need to provide a code from your mobile app and confirm your action with your current account password.",
|
"components.profile.multiFactorAuth.disableMfaInstruction": "Pour désactiver l'authentification à deux facteurs, vous devez fournir un code à partir de votre application mobile et confirmer votre action avec le mot de passe actuel de votre compte.",
|
||||||
"components.profile.multiFactorAuth.enable": "Activer",
|
"components.profile.multiFactorAuth.enable": "Activer",
|
||||||
"components.profile.multiFactorAuth.enterCodeFromApp": "In order to finish two‑factor auth setup, please enter the code received in the mobile app:",
|
"components.profile.multiFactorAuth.enterCodeFromApp": "Afin de terminer la configuration de l'authentification à deux facteurs, veuillez entrer le code reçu dans l'application mobile:",
|
||||||
"components.profile.multiFactorAuth.enterKeyManually": "If you can't scan QR code, try entering your secret key manually:",
|
"components.profile.multiFactorAuth.enterKeyManually": "Si vous ne pouvez pas scanner le code QR, essayez d'entrer votre clé secrète manuellement:",
|
||||||
"components.profile.multiFactorAuth.findAlternativeApps": "Trouver des apps alternatives",
|
"components.profile.multiFactorAuth.findAlternativeApps": "Trouver des apps alternatives",
|
||||||
"components.profile.multiFactorAuth.installOnOfTheApps": "Installez une de ces apps:",
|
"components.profile.multiFactorAuth.installOnOfTheApps": "Installez une de ces apps:",
|
||||||
"components.profile.multiFactorAuth.mfaDescription": "Two‑factor authentication is an extra layer of security designed to ensure you that you're the only person who can access your account, even if the password gets stolen.",
|
"components.profile.multiFactorAuth.mfaDescription": "L'authentification à deux facteurs est une couche de sécurité supplémentaire conçue pour garantir que vous êtes la seule personne pouvant accéder à votre compte, même en cas de vol du mot de passe.",
|
||||||
"components.profile.multiFactorAuth.mfaEnabledForYourAcc": "Two‑factor authentication for your account is active now",
|
"components.profile.multiFactorAuth.mfaEnabledForYourAcc": "L'authentification à deux facteurs pour votre compte est maintenant activée",
|
||||||
"components.profile.multiFactorAuth.mfaIntroduction": "First of all, you need to install one of our suggested apps on your phone. This app will generate login codes for you. Please choose your OS to get corresponding installation links.",
|
"components.profile.multiFactorAuth.mfaIntroduction": "Tout d'abord, vous devez installer l'une de nos applications suggérées sur votre téléphone. Cette application va générer des codes de connexion pour vous. Veuillez choisir votre système d'exploitation pour obtenir les liens d'installation correspondants.",
|
||||||
"components.profile.multiFactorAuth.mfaLoginFlowDesc": "Additional code will be requested next time you log in. Please note, that Minecraft authorization won't work when two‑factor auth is enabled.",
|
"components.profile.multiFactorAuth.mfaLoginFlowDesc": "Un code supplémentaire vous sera demandé lors de votre prochaine connexion. Veuillez noter que l’autorisation Minecraft ne fonctionnera pas si l’authentification à deux facteurs est activée.",
|
||||||
"components.profile.multiFactorAuth.mfaTitle": "Authentification à deux facteurs",
|
"components.profile.multiFactorAuth.mfaTitle": "Authentification à deux facteurs",
|
||||||
"components.profile.multiFactorAuth.or": "OU",
|
"components.profile.multiFactorAuth.or": "OU",
|
||||||
"components.profile.multiFactorAuth.ready": "Prêt",
|
"components.profile.multiFactorAuth.ready": "Prêt",
|
||||||
"components.profile.multiFactorAuth.scanQrCode": "Ouvrez votre scanner QR favoris et scannez ce code QR suivant:",
|
"components.profile.multiFactorAuth.scanQrCode": "Ouvrez votre scanner QR favoris et scannez ce code QR suivant:",
|
||||||
"components.profile.multiFactorAuth.theAppIsInstalled": "L'application a été installé",
|
"components.profile.multiFactorAuth.theAppIsInstalled": "L'application a été installé",
|
||||||
"components.profile.multiFactorAuth.whenKeyEntered": "If a temporary code appears in your two‑factor auth app, then you may proceed to the next step.",
|
"components.profile.multiFactorAuth.whenKeyEntered": "Si un code temporaire apparaît dans votre application d'authentification à deux facteurs, vous pouvez passer à l'étape suivante.",
|
||||||
"components.profile.nickname": "Surnom:",
|
"components.profile.nickname": "Surnom:",
|
||||||
"components.profile.participateInTheTranslation": "participate in the translation",
|
"components.profile.participateInTheTranslation": "participer à la traduction",
|
||||||
"components.profile.password": "Mot de passe:",
|
"components.profile.password": "Mot de passe:",
|
||||||
"components.profile.passwordRequestForm.continue": "Continuer",
|
"components.profile.passwordRequestForm.continue": "Continuer",
|
||||||
"components.profile.passwordRequestForm.description": "Pour compléter cette action, entrez le mot de passe du compte",
|
"components.profile.passwordRequestForm.description": "Pour compléter cette action, entrez le mot de passe du compte",
|
||||||
@ -256,7 +256,7 @@
|
|||||||
"services.errorsDict.emailNotFound": "L'E-mail specifié n'as pas été trouvé",
|
"services.errorsDict.emailNotFound": "L'E-mail specifié n'as pas été trouvé",
|
||||||
"services.errorsDict.emailRequired": "L'email est obligatoire",
|
"services.errorsDict.emailRequired": "L'email est obligatoire",
|
||||||
"services.errorsDict.emailToLong": "L'email est trop longue",
|
"services.errorsDict.emailToLong": "L'email est trop longue",
|
||||||
"services.errorsDict.forgotYourPassword": "forgot your password",
|
"services.errorsDict.forgotYourPassword": "mot de passe oublié",
|
||||||
"services.errorsDict.invalidPassword": "Vous avez entré le mauvais mot de passe pour ce compte.",
|
"services.errorsDict.invalidPassword": "Vous avez entré le mauvais mot de passe pour ce compte.",
|
||||||
"services.errorsDict.keyNotExists": "La clé est incorrecte ou a expiré.",
|
"services.errorsDict.keyNotExists": "La clé est incorrecte ou a expiré.",
|
||||||
"services.errorsDict.keyRequired": "S'il vous plaît, entrez une clé d'activation",
|
"services.errorsDict.keyRequired": "S'il vous plaît, entrez une clé d'activation",
|
||||||
@ -269,10 +269,10 @@
|
|||||||
"services.errorsDict.passwordTooShort": "Votre mot de passe doit comporter au moins 8 caractères",
|
"services.errorsDict.passwordTooShort": "Votre mot de passe doit comporter au moins 8 caractères",
|
||||||
"services.errorsDict.passwordsDoesNotMatch": "Les mots de passe ne correspondent pas",
|
"services.errorsDict.passwordsDoesNotMatch": "Les mots de passe ne correspondent pas",
|
||||||
"services.errorsDict.rePasswordRequired": "Veuillez retaper votre mot de passe",
|
"services.errorsDict.rePasswordRequired": "Veuillez retaper votre mot de passe",
|
||||||
"services.errorsDict.redirectUriInvalid": "Redirect URI is invalid",
|
"services.errorsDict.redirectUriInvalid": "URL de redirection invalide",
|
||||||
"services.errorsDict.redirectUriRequired": "Redirect URI is required",
|
"services.errorsDict.redirectUriRequired": "Un URL de redirection est obligatoire",
|
||||||
"services.errorsDict.rulesAgreementRequired": "Vous devez accepter les règles afin de créer un compte",
|
"services.errorsDict.rulesAgreementRequired": "Vous devez accepter les règles afin de créer un compte",
|
||||||
"services.errorsDict.suggestResetPassword": "Have you {forgotYourPassword}?",
|
"services.errorsDict.suggestResetPassword": "Avez-vous {forgotYourPassword}?",
|
||||||
"services.errorsDict.totpIncorrect": "Le code est incorrect",
|
"services.errorsDict.totpIncorrect": "Le code est incorrect",
|
||||||
"services.errorsDict.totpRequired": "Veuillez entrer le code",
|
"services.errorsDict.totpRequired": "Veuillez entrer le code",
|
||||||
"services.errorsDict.usernameInvalid": "Surnom invalide",
|
"services.errorsDict.usernameInvalid": "Surnom invalide",
|
||||||
|
@ -17,14 +17,14 @@ module.exports = {
|
|||||||
code: 'fr',
|
code: 'fr',
|
||||||
name: 'Français',
|
name: 'Français',
|
||||||
englishName: 'French',
|
englishName: 'French',
|
||||||
progress: 72.2,
|
progress: 100,
|
||||||
isReleased: true,
|
isReleased: true,
|
||||||
},
|
},
|
||||||
id: {
|
id: {
|
||||||
code: 'id',
|
code: 'id',
|
||||||
name: 'Bahasa Indonesia',
|
name: 'Bahasa Indonesia',
|
||||||
englishName: 'Indonesian',
|
englishName: 'Indonesian',
|
||||||
progress: 98.7,
|
progress: 98,
|
||||||
isReleased: true,
|
isReleased: true,
|
||||||
},
|
},
|
||||||
lt: {
|
lt: {
|
||||||
@ -59,14 +59,14 @@ module.exports = {
|
|||||||
code: 'sr',
|
code: 'sr',
|
||||||
name: 'Српски',
|
name: 'Српски',
|
||||||
englishName: 'Serbian',
|
englishName: 'Serbian',
|
||||||
progress: 98.7,
|
progress: 100,
|
||||||
isReleased: false,
|
isReleased: false,
|
||||||
},
|
},
|
||||||
uk: {
|
uk: {
|
||||||
code: 'uk',
|
code: 'uk',
|
||||||
name: 'Українська',
|
name: 'Українська',
|
||||||
englishName: 'Ukrainian',
|
englishName: 'Ukrainian',
|
||||||
progress: 98.7,
|
progress: 98,
|
||||||
isReleased: true,
|
isReleased: true,
|
||||||
},
|
},
|
||||||
vi: {
|
vi: {
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
"components.accounts.goToEly": "Idź do profilu Ely.by",
|
"components.accounts.goToEly": "Idź do profilu Ely.by",
|
||||||
"components.accounts.logout": "Wyloguj się",
|
"components.accounts.logout": "Wyloguj się",
|
||||||
"components.auth.acceptRules.accept": "Akceptuj",
|
"components.auth.acceptRules.accept": "Akceptuj",
|
||||||
"components.auth.acceptRules.declineAndLogout": "Wyjdź i wyloguj się",
|
"components.auth.acceptRules.declineAndLogout": "Odrzuć i wyloguj się",
|
||||||
"components.auth.acceptRules.description1": "Zaktualizowaliśmy nasze {link}",
|
"components.auth.acceptRules.description1": "Zaktualizowaliśmy nasze {link}.",
|
||||||
"components.auth.acceptRules.description2": "W celu kontynuowania używania {name}, musisz je zaakceptować.",
|
"components.auth.acceptRules.description2": "W celu kontynuowania używania naszej usługi, musisz zaakceptować {name}.",
|
||||||
"components.auth.acceptRules.termsOfService": "warunki usługi",
|
"components.auth.acceptRules.termsOfService": "warunki usługi",
|
||||||
"components.auth.acceptRules.title": "Zgoda użytkownika",
|
"components.auth.acceptRules.title": "Zgoda użytkownika",
|
||||||
"components.auth.activation.accountActivationTitle": "Aktywacja konta",
|
"components.auth.activation.accountActivationTitle": "Aktywacja konta",
|
||||||
@ -14,37 +14,37 @@
|
|||||||
"components.auth.activation.confirmEmail": "Potwierdź E-mail",
|
"components.auth.activation.confirmEmail": "Potwierdź E-mail",
|
||||||
"components.auth.activation.didNotReceivedEmail": "Nie otrzymałeś E-mail'a?",
|
"components.auth.activation.didNotReceivedEmail": "Nie otrzymałeś E-mail'a?",
|
||||||
"components.auth.activation.enterTheCode": "Wpisz tu kod z E-mail'a",
|
"components.auth.activation.enterTheCode": "Wpisz tu kod z E-mail'a",
|
||||||
"components.auth.appInfo.appDescription": "Witamy w usłudze autoryzacji Ely.by, która umożliwia bezpieczne wykonywanie wszelkich czynności związanych z Twoim kontem. Jest to główny punkt wejścia do witryn internetowych i oprogramowania komputerowego, w tym uruchamiania gier.",
|
"components.auth.appInfo.appDescription": "Witamy w usłudze autoryzacji Ely.by, która umożliwia bezpieczne wykonywanie wszelkich czynności związanych z Twoim kontem. Jest to główny punkt wejścia do witryn internetowych i oprogramowania komputerowego, w tym launcherów.",
|
||||||
"components.auth.appInfo.appName": "Konta Ely",
|
"components.auth.appInfo.appName": "Konta Ely",
|
||||||
"components.auth.appInfo.documentation": "dokumentację",
|
"components.auth.appInfo.documentation": "dokumentację",
|
||||||
"components.auth.appInfo.goToAuth": "Przejdź do autoryzacji",
|
"components.auth.appInfo.goToAuth": "Przejdź do autoryzacji",
|
||||||
"components.auth.appInfo.useItYourself": "Odwiedź naszą {link}, aby dowiedzieć się, jak korzystać z tej usługi w Twoich projektach",
|
"components.auth.appInfo.useItYourself": "Odwiedź naszą {link}, aby dowiedzieć się, jak korzystać z tej usługi w Twoich projektach.",
|
||||||
"components.auth.chooseAccount.addAccount": "Zaloguj się na inne konto",
|
"components.auth.chooseAccount.addAccount": "Zaloguj się na inne konto",
|
||||||
"components.auth.chooseAccount.chooseAccountTitle": "Wybierz konto",
|
"components.auth.chooseAccount.chooseAccountTitle": "Wybierz konto",
|
||||||
"components.auth.chooseAccount.logoutAll": "Wyloguj się ze wszystkich kont",
|
"components.auth.chooseAccount.logoutAll": "Wyloguj się ze wszystkich kont",
|
||||||
"components.auth.chooseAccount.pleaseChooseAccount": "Wybierz konto, którego chcesz używać",
|
"components.auth.chooseAccount.pleaseChooseAccount": "Wybierz konto, którego chcesz używać",
|
||||||
"components.auth.chooseAccount.pleaseChooseAccountForApp": "Wybierz konto, które chcesz autoryzować {appName} ",
|
"components.auth.chooseAccount.pleaseChooseAccountForApp": "Wybierz konto, które chcesz użyć do autoryzacji {appName}",
|
||||||
"components.auth.finish.authForAppFailed": "Autoryzacja {appName} nie powiodła się",
|
"components.auth.finish.authForAppFailed": "Autoryzacja {appName} nie powiodła się",
|
||||||
"components.auth.finish.authForAppSuccessful": "Autoryzacja dla {appName} została pomyślnie zakończona",
|
"components.auth.finish.authForAppSuccessful": "Autoryzacja {appName} została pomyślnie zakończona",
|
||||||
"components.auth.finish.copy": "Kopiuj",
|
"components.auth.finish.copy": "Kopiuj",
|
||||||
"components.auth.finish.passCodeToApp": "Aby zakończyć proces autoryzacji, podaj następujący kod do {appName}",
|
"components.auth.finish.passCodeToApp": "Aby zakończyć proces autoryzacji, podaj następujący kod do {appName}",
|
||||||
"components.auth.finish.waitAppReaction": "Poczekaj, aż Twoja odpowiedź zostanie zgłoszona",
|
"components.auth.finish.waitAppReaction": "Poczekaj na odpowiedź aplikacji",
|
||||||
"components.auth.forgotPassword.alreadyHaveCode": "Już mam kod",
|
"components.auth.forgotPassword.alreadyHaveCode": "Już mam kod",
|
||||||
"components.auth.forgotPassword.pleasePressButton": "Naciśnij przycisk poniżej, aby uzyskać wiadomość e-mail z kodem odzyskiwania hasła.",
|
"components.auth.forgotPassword.pleasePressButton": "Naciśnij przycisk poniżej, aby dostać wiadomość e-mail z kodem do odzyskania hasła.",
|
||||||
"components.auth.forgotPassword.sendMail": "Wyślij maila",
|
"components.auth.forgotPassword.sendMail": "Wyślij maila",
|
||||||
"components.auth.forgotPassword.specifyEmail": "Podaj adres E-mailowy rejestracji lub ostatnią nazwę użytkownika konta, a my wyślemy wiadomość e-mail z instrukcjami dotyczącymi dalszego odzyskiwania hasła.",
|
"components.auth.forgotPassword.specifyEmail": "Podaj adres E-mail który podałeś podczas rejestracji lub ostatnią nazwę użytkownika konta, a my wyślemy wiadomość e-mail z instrukcjami dotyczącymi dalszego odzyskiwania hasła.",
|
||||||
"components.auth.forgotPassword.title": "Zapomniałeś hasła",
|
"components.auth.forgotPassword.title": "Odzyskiwanie hasła",
|
||||||
"components.auth.login.createNewAccount": "Stwórz nowe konto",
|
"components.auth.login.createNewAccount": "Stwórz nowe konto",
|
||||||
"components.auth.login.emailOrUsername": "Email lub nazwa użytkownika",
|
"components.auth.login.emailOrUsername": "Email lub nazwa użytkownika",
|
||||||
"components.auth.login.loginTitle": "Zaloguj",
|
"components.auth.login.loginTitle": "Zaloguj się",
|
||||||
"components.auth.login.next": "Następnie",
|
"components.auth.login.next": "Dalej",
|
||||||
"components.auth.mfa.description": "Aby zalogować się na to konto, musisz wpisać jednorazowe hasło z aplikacji mobilnej",
|
"components.auth.mfa.description": "Aby zalogować się na to konto, musisz podać jednorazowe hasło z aplikacji mobilnej",
|
||||||
"components.auth.mfa.enterTotp": "Wprowadź kod",
|
"components.auth.mfa.enterTotp": "Podaj kod",
|
||||||
"components.auth.password.accountPassword": "Hasło do konta",
|
"components.auth.password.accountPassword": "Hasło do konta",
|
||||||
"components.auth.password.forgotPassword": "Zapomniałeś hasła",
|
"components.auth.password.forgotPassword": "Zapomniałem hasło",
|
||||||
"components.auth.password.passwordTitle": "Wprowadź hasło",
|
"components.auth.password.passwordTitle": "Wprowadź hasło",
|
||||||
"components.auth.password.rememberMe": "Zapamiętaj mnie na tym urządzeniu",
|
"components.auth.password.rememberMe": "Zapamiętaj mnie na tym urządzeniu",
|
||||||
"components.auth.password.signInButton": "Zaloguj",
|
"components.auth.password.signInButton": "Zaloguj się",
|
||||||
"components.auth.permissions.approve": "Zezwól",
|
"components.auth.permissions.approve": "Zezwól",
|
||||||
"components.auth.permissions.decline": "Odrzuć",
|
"components.auth.permissions.decline": "Odrzuć",
|
||||||
"components.auth.permissions.permissionsTitle": "Uprawnienia aplikacji",
|
"components.auth.permissions.permissionsTitle": "Uprawnienia aplikacji",
|
||||||
@ -181,23 +181,23 @@
|
|||||||
"components.profile.mojangPriorityWarning": "Znaleziono konto Mojang z tym samym nickiem. Zgodnie z {rules} właściciel konta ma prawo żądać przywrócenia kontroli nad pseudonimem.",
|
"components.profile.mojangPriorityWarning": "Znaleziono konto Mojang z tym samym nickiem. Zgodnie z {rules} właściciel konta ma prawo żądać przywrócenia kontroli nad pseudonimem.",
|
||||||
"components.profile.multiFactorAuth.codePlaceholder": "Wprowadź tutaj kod",
|
"components.profile.multiFactorAuth.codePlaceholder": "Wprowadź tutaj kod",
|
||||||
"components.profile.multiFactorAuth.disable": "Wyłącz",
|
"components.profile.multiFactorAuth.disable": "Wyłącz",
|
||||||
"components.profile.multiFactorAuth.disableMfa": "Wyłącz uwierzytelnianie dwuetapowe",
|
"components.profile.multiFactorAuth.disableMfa": "Wyłącz weryfikację dwuetapową",
|
||||||
"components.profile.multiFactorAuth.disableMfaInstruction": "Aby wyłączyć uwierzytelnianie dwuetapowe, musisz podać kod z aplikacji mobilnej i potwierdzić swoje działanie za pomocą bieżącego hasła do konta.",
|
"components.profile.multiFactorAuth.disableMfaInstruction": "Aby wyłączyć weryfikację dwuetapową, musisz podać kod z aplikacji mobilnej i potwierdzić swoje działanie za pomocą bieżącego hasła do konta.",
|
||||||
"components.profile.multiFactorAuth.enable": "Włącz",
|
"components.profile.multiFactorAuth.enable": "Włącz",
|
||||||
"components.profile.multiFactorAuth.enterCodeFromApp": "Aby zakończyć konfigurację dwuetapowej autoryzacji, wpisz kod otrzymany w aplikacji mobilnej:",
|
"components.profile.multiFactorAuth.enterCodeFromApp": "Aby zakończyć konfigurację autoryzacji dwuetapowej, wpisz kod otrzymany w aplikacji mobilnej:",
|
||||||
"components.profile.multiFactorAuth.enterKeyManually": "Jeśli nie możesz zeskanować kodu QR, spróbuj wpisać tajny klucz ręcznie:",
|
"components.profile.multiFactorAuth.enterKeyManually": "Jeśli nie możesz zeskanować kodu QR, spróbuj wpisać tajny klucz ręcznie:",
|
||||||
"components.profile.multiFactorAuth.findAlternativeApps": "Znajdź alternatywne aplikacje",
|
"components.profile.multiFactorAuth.findAlternativeApps": "Znajdź alternatywne aplikacje",
|
||||||
"components.profile.multiFactorAuth.installOnOfTheApps": "Zainstaluj jedną z tych aplikacji:",
|
"components.profile.multiFactorAuth.installOnOfTheApps": "Zainstaluj jedną z tych aplikacji:",
|
||||||
"components.profile.multiFactorAuth.mfaDescription": "Uwierzytelnianie dwuetapowe to dodatkowa warstwa zabezpieczeń zaprojektowana, aby zapewnić, że jesteś jedyną osobą, która może uzyskać dostęp do Twojego konta, nawet jeśli hasło zostanie skradzione.",
|
"components.profile.multiFactorAuth.mfaDescription": "Weryfikacja dwuetapowa to dodatkowa warstwa zabezpieczeń zaprojektowana, aby zapewnić, że jesteś jedyną osobą, która może uzyskać dostęp do Twojego konta, nawet jeśli hasło zostanie skradzione.",
|
||||||
"components.profile.multiFactorAuth.mfaEnabledForYourAcc": "Uwierzytelnianie dwuetapowe dla Twojego konta jest teraz aktywne",
|
"components.profile.multiFactorAuth.mfaEnabledForYourAcc": "Weryfikacja dwuetapowa dla Twojego konta jest teraz aktywne",
|
||||||
"components.profile.multiFactorAuth.mfaIntroduction": "Najpierw powinieneś zainstalować jedną z naszych sugerowanych aplikacji na telefon. Pomoże Ci ona wygenerować kody weryfikacji dwuetapowej. Wybierz swój system operacyjny, by otrzymać odpowiedni link instalacyjny.",
|
"components.profile.multiFactorAuth.mfaIntroduction": "Najpierw powinieneś zainstalować jedną z naszych sugerowanych aplikacji na telefon. Pomoże Ci ona wygenerować kody weryfikacji dwuetapowej. Wybierz swój system operacyjny, by otrzymać odpowiedni link instalacyjny.",
|
||||||
"components.profile.multiFactorAuth.mfaLoginFlowDesc": "Dodatkowy kod będzie wymagany z następnym logowaniem. Miej to na uwadze, że autoryzacja Minecraft nie będzie działała, gdy uwierzytelnianie dwuetapowe będzie włączone.",
|
"components.profile.multiFactorAuth.mfaLoginFlowDesc": "Dodatkowy kod będzie wymagany z następnym logowaniem. Miej to na uwadze, że autoryzacja Minecraft nie będzie działała, gdy uwierzytelnianie dwuetapowe będzie włączone.",
|
||||||
"components.profile.multiFactorAuth.mfaTitle": "Uwierzytelnianie dwuetapowe",
|
"components.profile.multiFactorAuth.mfaTitle": "Weryfikacja dwuetapowa",
|
||||||
"components.profile.multiFactorAuth.or": "LUB",
|
"components.profile.multiFactorAuth.or": "LUB",
|
||||||
"components.profile.multiFactorAuth.ready": "Gotowe",
|
"components.profile.multiFactorAuth.ready": "Gotowe",
|
||||||
"components.profile.multiFactorAuth.scanQrCode": "Otwórz swoją ulubioną aplikację do kodów QR oraz zeskanuj poniższy kod:",
|
"components.profile.multiFactorAuth.scanQrCode": "Otwórz swoją ulubioną aplikację do kodów QR oraz zeskanuj poniższy kod:",
|
||||||
"components.profile.multiFactorAuth.theAppIsInstalled": "Aplikacja została zainstalowana",
|
"components.profile.multiFactorAuth.theAppIsInstalled": "Już ją zainstalowałem",
|
||||||
"components.profile.multiFactorAuth.whenKeyEntered": "Jeżeli kod tymczasowy pojawia się w twojej aplikacji uwierzytelniania dwuetapowego, możesz przejść do następnego kroku.",
|
"components.profile.multiFactorAuth.whenKeyEntered": "Jeżeli kod tymczasowy pojawia się w twojej aplikacji weryfikacji dwuetapowej, możesz przejść do następnego kroku.",
|
||||||
"components.profile.nickname": "Nick:",
|
"components.profile.nickname": "Nick:",
|
||||||
"components.profile.participateInTheTranslation": "pomóż tłumaczyć",
|
"components.profile.participateInTheTranslation": "pomóż tłumaczyć",
|
||||||
"components.profile.password": "Hasło:",
|
"components.profile.password": "Hasło:",
|
||||||
@ -208,7 +208,7 @@
|
|||||||
"components.profile.preferencesDescription": "Tu możesz zmienić kluczowe preferencje Twojego konta. Należy pamiętać, że wszystkie akcje muszą być potwierdzone przez wprowadzenie hasła.",
|
"components.profile.preferencesDescription": "Tu możesz zmienić kluczowe preferencje Twojego konta. Należy pamiętać, że wszystkie akcje muszą być potwierdzone przez wprowadzenie hasła.",
|
||||||
"components.profile.projectRules": "zasady projektu",
|
"components.profile.projectRules": "zasady projektu",
|
||||||
"components.profile.siteLanguage": "Język strony:",
|
"components.profile.siteLanguage": "Język strony:",
|
||||||
"components.profile.twoFactorAuth": "Uwierzytelnianie dwuetapowe:",
|
"components.profile.twoFactorAuth": "Weryfikacja dwuetapowa:",
|
||||||
"components.profile.uuid": "UUID:",
|
"components.profile.uuid": "UUID:",
|
||||||
"components.ui.bsod.alsoYouCanInteractWithBackground": "Możesz też pobawić się tłem - jest interaktywne ;)",
|
"components.ui.bsod.alsoYouCanInteractWithBackground": "Możesz też pobawić się tłem - jest interaktywne ;)",
|
||||||
"components.ui.bsod.criticalErrorHappened": "Wystąpił krytyczny błąd, przez który aplikacja nie może kontynuować normalnej pracy.",
|
"components.ui.bsod.criticalErrorHappened": "Wystąpił krytyczny błąd, przez który aplikacja nie może kontynuować normalnej pracy.",
|
||||||
@ -262,7 +262,7 @@
|
|||||||
"services.errorsDict.keyRequired": "Proszę podać klucz aktywacyjny",
|
"services.errorsDict.keyRequired": "Proszę podać klucz aktywacyjny",
|
||||||
"services.errorsDict.loginNotExist": "Przepraszamy, Ely nie rozpoznaje Twojego loginu.",
|
"services.errorsDict.loginNotExist": "Przepraszamy, Ely nie rozpoznaje Twojego loginu.",
|
||||||
"services.errorsDict.loginRequired": "Proszę podać adres E-mail lub nazwę użytkownika",
|
"services.errorsDict.loginRequired": "Proszę podać adres E-mail lub nazwę użytkownika",
|
||||||
"services.errorsDict.mfaAlreadyEnabled": "Uwierzytelnianie dwuetapowe jest już włączone",
|
"services.errorsDict.mfaAlreadyEnabled": "Weryfikacja dwuetapowa jest już włączona",
|
||||||
"services.errorsDict.newPasswordRequired": "Wprowadź nowe hasło",
|
"services.errorsDict.newPasswordRequired": "Wprowadź nowe hasło",
|
||||||
"services.errorsDict.newRePasswordRequired": "Proszę powtórzyć nowe hasło",
|
"services.errorsDict.newRePasswordRequired": "Proszę powtórzyć nowe hasło",
|
||||||
"services.errorsDict.passwordRequired": "Proszę wpisać hasło",
|
"services.errorsDict.passwordRequired": "Proszę wpisać hasło",
|
||||||
|
@ -13,8 +13,8 @@
|
|||||||
"components.auth.activation.activationMailWasSentNoEmail": "Проверите е-пошту за поруке са даљим упутствима",
|
"components.auth.activation.activationMailWasSentNoEmail": "Проверите е-пошту за поруке са даљим упутствима",
|
||||||
"components.auth.activation.confirmEmail": "Потврди е-пошту",
|
"components.auth.activation.confirmEmail": "Потврди е-пошту",
|
||||||
"components.auth.activation.didNotReceivedEmail": "Нисте примили е-поруку?",
|
"components.auth.activation.didNotReceivedEmail": "Нисте примили е-поруку?",
|
||||||
"components.auth.activation.enterTheCode": "Овде унесите кôд из е-поруке",
|
"components.auth.activation.enterTheCode": "Овде унесите код из е-поруке",
|
||||||
"components.auth.appInfo.appDescription": "Ви сте на Ely.by услузи овлашћења која вам омогућава да безбедно извршите било коју операцију на налогу. Ово је једнострука тачка уноса за веб-сајтове и десктоп-софтвер, укључујући покретаче игрица.",
|
"components.auth.appInfo.appDescription": "Ви сте на Ely.by услузи овлашћења која вам омогућава да безбедно извршите било коју операцију на налогу. Ово је једнострука тачка уноса за веб-сајтове и десктоп софтвер, укључујући покретаче игрица.",
|
||||||
"components.auth.appInfo.appName": "Ely налози",
|
"components.auth.appInfo.appName": "Ely налози",
|
||||||
"components.auth.appInfo.documentation": "документацију",
|
"components.auth.appInfo.documentation": "документацију",
|
||||||
"components.auth.appInfo.goToAuth": "Иди на овлашћење",
|
"components.auth.appInfo.goToAuth": "Иди на овлашћење",
|
||||||
@ -27,7 +27,7 @@
|
|||||||
"components.auth.finish.authForAppFailed": "Овлашћење на апликацију {appName} није успело",
|
"components.auth.finish.authForAppFailed": "Овлашћење на апликацију {appName} није успело",
|
||||||
"components.auth.finish.authForAppSuccessful": "Овлашћење на апликацију {appName} је успешно завршено",
|
"components.auth.finish.authForAppSuccessful": "Овлашћење на апликацију {appName} је успешно завршено",
|
||||||
"components.auth.finish.copy": "Копирај",
|
"components.auth.finish.copy": "Копирај",
|
||||||
"components.auth.finish.passCodeToApp": "Да бисте довршили процес овлашћења, пружите следећи кôд апликацији {appName}",
|
"components.auth.finish.passCodeToApp": "Да бисте довршили процес овлашћења, пружите следећи код апликацији {appName}",
|
||||||
"components.auth.finish.waitAppReaction": "Сачекајте до одговора апликације",
|
"components.auth.finish.waitAppReaction": "Сачекајте до одговора апликације",
|
||||||
"components.auth.forgotPassword.alreadyHaveCode": "Већ имате кôд",
|
"components.auth.forgotPassword.alreadyHaveCode": "Већ имате кôд",
|
||||||
"components.auth.forgotPassword.pleasePressButton": "Притисните дугме испод да бисте добили е-поруку са кодом за опоравак лозинке.",
|
"components.auth.forgotPassword.pleasePressButton": "Притисните дугме испод да бисте добили е-поруку са кодом за опоравак лозинке.",
|
||||||
@ -57,11 +57,11 @@
|
|||||||
"components.auth.permissions.youAuthorizedAs": "Овластили сте се као:",
|
"components.auth.permissions.youAuthorizedAs": "Овластили сте се као:",
|
||||||
"components.auth.recoverPassword.change": "Промени лозинку",
|
"components.auth.recoverPassword.change": "Промени лозинку",
|
||||||
"components.auth.recoverPassword.contactSupport": "Контактирајте са подршком",
|
"components.auth.recoverPassword.contactSupport": "Контактирајте са подршком",
|
||||||
"components.auth.recoverPassword.enterCodeBelow": "Унесите примљени кôд унутар поља испод:",
|
"components.auth.recoverPassword.enterCodeBelow": "Унесите примљени код унутар поља испод:",
|
||||||
"components.auth.recoverPassword.enterNewPasswordBelow": "Унесите и поновите нову лозинку испод:",
|
"components.auth.recoverPassword.enterNewPasswordBelow": "Унесите и поновите нову лозинку испод:",
|
||||||
"components.auth.recoverPassword.enterTheCode": "Унесите кôд за потврду",
|
"components.auth.recoverPassword.enterTheCode": "Унесите код за потврду",
|
||||||
"components.auth.recoverPassword.messageWasSent": "Кôд за опоравак је послат на е-пошту налога.",
|
"components.auth.recoverPassword.messageWasSent": "Код за опоравак је послат на е-пошту налога.",
|
||||||
"components.auth.recoverPassword.messageWasSentTo": "Кôд за опоравак је послат на е-пошту {email}.",
|
"components.auth.recoverPassword.messageWasSentTo": "Код за опоравак је послат на е-пошту {email}.",
|
||||||
"components.auth.recoverPassword.newPassword": "Унесите нову лозинку",
|
"components.auth.recoverPassword.newPassword": "Унесите нову лозинку",
|
||||||
"components.auth.recoverPassword.newRePassword": "Поновите нову лозинку",
|
"components.auth.recoverPassword.newRePassword": "Поновите нову лозинку",
|
||||||
"components.auth.recoverPassword.title": "Враћање лозинке",
|
"components.auth.recoverPassword.title": "Враћање лозинке",
|
||||||
@ -74,7 +74,7 @@
|
|||||||
"components.auth.register.yourEmail": "Ваша е-пошта",
|
"components.auth.register.yourEmail": "Ваша е-пошта",
|
||||||
"components.auth.register.yourNickname": "Ваш надимак",
|
"components.auth.register.yourNickname": "Ваш надимак",
|
||||||
"components.auth.resendActivation.sendNewEmail": "Пошаљи нову е-поруку",
|
"components.auth.resendActivation.sendNewEmail": "Пошаљи нову е-поруку",
|
||||||
"components.auth.resendActivation.specifyYourEmail": "Унесите е-пошту са којом сте се регистровали и ми ћемо вам послати нови кôд за активацију",
|
"components.auth.resendActivation.specifyYourEmail": "Унесите е-пошту са којом сте се регистровали и ми ћемо вам послати нови код за активацију",
|
||||||
"components.auth.resendActivation.title": "Нисте примили е-поруку",
|
"components.auth.resendActivation.title": "Нисте примили е-поруку",
|
||||||
"components.contact.cannotAccessMyAccount": "Не могу да приступим налогу",
|
"components.contact.cannotAccessMyAccount": "Не могу да приступим налогу",
|
||||||
"components.contact.close": "Затвори",
|
"components.contact.close": "Затвори",
|
||||||
@ -113,7 +113,7 @@
|
|||||||
"components.dev.apps.applicationForm.website": "Веб-сајт",
|
"components.dev.apps.applicationForm.website": "Веб-сајт",
|
||||||
"components.dev.apps.applicationForm.websiteLink": "Веза до веб-сајта:",
|
"components.dev.apps.applicationForm.websiteLink": "Веза до веб-сајта:",
|
||||||
"components.dev.apps.applicationForm.websiteLinkWillBeUsedAsAdditionalId": "Веза до сајта је опционална, али се може користити као додатни идентификатор апликације.",
|
"components.dev.apps.applicationForm.websiteLinkWillBeUsedAsAdditionalId": "Веза до сајта је опционална, али се може користити као додатни идентификатор апликације.",
|
||||||
"components.dev.apps.applicationForm.youCanAlsoSpecifyServerSite": "Такође, можете да наведете или URL сајта сервера или његову заједницу на друштвеној мрежи.",
|
"components.dev.apps.applicationForm.youCanAlsoSpecifyServerSite": "Можете и да наведете или URL сајта сервера или његову заједницу на друштвеној мрежи.",
|
||||||
"components.dev.apps.authorization": "Овлашћење",
|
"components.dev.apps.authorization": "Овлашћење",
|
||||||
"components.dev.apps.cancel": "Откажи",
|
"components.dev.apps.cancel": "Откажи",
|
||||||
"components.dev.apps.continue": "Настави",
|
"components.dev.apps.continue": "Настави",
|
||||||
@ -154,10 +154,10 @@
|
|||||||
"components.profile.changeEmail.changeEmailTitle": "Промена е-поште",
|
"components.profile.changeEmail.changeEmailTitle": "Промена е-поште",
|
||||||
"components.profile.changeEmail.codePlaceholder": "Овде налепите кôд",
|
"components.profile.changeEmail.codePlaceholder": "Овде налепите кôд",
|
||||||
"components.profile.changeEmail.currentAccountEmail": "Тренутна е-адреса налога:",
|
"components.profile.changeEmail.currentAccountEmail": "Тренутна е-адреса налога:",
|
||||||
"components.profile.changeEmail.enterFinalizationCode": "Како бисте потврдили нову е-пошту, унесите примљени кôд унутар поља испод:",
|
"components.profile.changeEmail.enterFinalizationCode": "Како бисте потврдили нову е-пошту, унесите примљени код унутар поља испод:",
|
||||||
"components.profile.changeEmail.enterInitializationCode": "Е-порука са кодом за покретање процедуре промене е-поште је послата на е-пошту {email}. Унесите кôд унутар поља испод:",
|
"components.profile.changeEmail.enterInitializationCode": "Е-порука са кодом за покретање процедуре промене е-поште је послата на е-пошту {email}. Унесите код унутар поља испод:",
|
||||||
"components.profile.changeEmail.enterNewEmail": "Затим пружите нову адресу е-поште коју желите да користите са овим налогом. Послаћемо вам е-поруку са кодом за потврду.",
|
"components.profile.changeEmail.enterNewEmail": "Затим пружите нову адресу е-поште коју желите да користите са овим налогом. Послаћемо вам е-поруку са кодом за потврду.",
|
||||||
"components.profile.changeEmail.finalizationCodeWasSentToEmail": "Кôд за потврду промене е-поште је послат на е-пошту {email}.",
|
"components.profile.changeEmail.finalizationCodeWasSentToEmail": "Код за потврду промене е-поште је послат на е-пошту {email}.",
|
||||||
"components.profile.changeEmail.newEmailPlaceholder": "Унесите нову е-пошту",
|
"components.profile.changeEmail.newEmailPlaceholder": "Унесите нову е-пошту",
|
||||||
"components.profile.changeEmail.pressButtonToStart": "Притисните дугме испод да бисте послали поруку са кодом за покретање промене е-поште.",
|
"components.profile.changeEmail.pressButtonToStart": "Притисните дугме испод да бисте послали поруку са кодом за покретање промене е-поште.",
|
||||||
"components.profile.changeEmail.sendEmailButton": "Пошаљи е-поруку",
|
"components.profile.changeEmail.sendEmailButton": "Пошаљи е-поруку",
|
||||||
@ -177,29 +177,29 @@
|
|||||||
"components.profile.disabled": "онемогућена",
|
"components.profile.disabled": "онемогућена",
|
||||||
"components.profile.email": "Е-пошта:",
|
"components.profile.email": "Е-пошта:",
|
||||||
"components.profile.enabled": "омогућена",
|
"components.profile.enabled": "омогућена",
|
||||||
"components.profile.languageIsUnavailableWarning": "The locale \"{locale}\" you've used earlier isn't currently translated enough. If you want to continue using the selected language, please {participateInTheTranslation} of the project.",
|
"components.profile.languageIsUnavailableWarning": "Локални стандард „{locale}” који сте користили раније тренутно није довољно преведен. Ако желите да наставите са коришћењем изабраног језика, {participateInTheTranslation} пројекта.",
|
||||||
"components.profile.mojangPriorityWarning": "Пронађен је Mojang налог са истим надимком. Према {rules}, власник налога има право да затражи враћање контроле над надимком.",
|
"components.profile.mojangPriorityWarning": "Пронађен је Mojang налог са истим надимком. Према {rules}, власник налога има право да затражи враћање контроле над надимком.",
|
||||||
"components.profile.multiFactorAuth.codePlaceholder": "Овде унесите кôд",
|
"components.profile.multiFactorAuth.codePlaceholder": "Овде унесите кôд",
|
||||||
"components.profile.multiFactorAuth.disable": "Онемогући",
|
"components.profile.multiFactorAuth.disable": "Онемогући",
|
||||||
"components.profile.multiFactorAuth.disableMfa": "Онемогућите потврду идентитета помоћу два фактора",
|
"components.profile.multiFactorAuth.disableMfa": "Онемогућите потврду идентитета помоћу два фактора",
|
||||||
"components.profile.multiFactorAuth.disableMfaInstruction": "Како бисте онемогућили потврду идентитета помоћу два фактора, морате да пружите кôд из мобилне апликације и потврдите радњу са тренутном лозинком налога.",
|
"components.profile.multiFactorAuth.disableMfaInstruction": "Како бисте онемогућили потврду идентитета помоћу два фактора, морате да пружите код из мобилне апликације и потврдите радњу са тренутном лозинком налога.",
|
||||||
"components.profile.multiFactorAuth.enable": "Омогући",
|
"components.profile.multiFactorAuth.enable": "Омогући",
|
||||||
"components.profile.multiFactorAuth.enterCodeFromApp": "Како бисте довршили подешавање потврде идентитета у два фактора, унесите примљени кôд у мобилну апликацију:",
|
"components.profile.multiFactorAuth.enterCodeFromApp": "Како бисте довршили подешавање потврде идентитета у два фактора, унесите примљени код у мобилну апликацију:",
|
||||||
"components.profile.multiFactorAuth.enterKeyManually": "Ако не можете да скенирате QR кôд, покушајте ручно да унесете тајни кључ:",
|
"components.profile.multiFactorAuth.enterKeyManually": "Ако не можете да скенирате QR код, покушајте ручно да унесете тајни кључ:",
|
||||||
"components.profile.multiFactorAuth.findAlternativeApps": "Пронађи алтернативне апликације",
|
"components.profile.multiFactorAuth.findAlternativeApps": "Пронађи алтернативне апликације",
|
||||||
"components.profile.multiFactorAuth.installOnOfTheApps": "Инсталирајте једну од следећих апликација:",
|
"components.profile.multiFactorAuth.installOnOfTheApps": "Инсталирајте једну од следећих апликација:",
|
||||||
"components.profile.multiFactorAuth.mfaDescription": "Потврда идентитета помоћу два фактора је додатни слој безбедности осмишљен да осигура да сте једина особа која може приступити налогу, чак и ако се лозинка украде.",
|
"components.profile.multiFactorAuth.mfaDescription": "Потврда идентитета помоћу два фактора је додатни слој безбедности осмишљен да осигура да сте једина особа која може приступити налогу, чак и ако се лозинка украде.",
|
||||||
"components.profile.multiFactorAuth.mfaEnabledForYourAcc": "Потврда идентитета помоћу два фактора за налог је сада активна",
|
"components.profile.multiFactorAuth.mfaEnabledForYourAcc": "Потврда идентитета помоћу два фактора за налог је сада активна",
|
||||||
"components.profile.multiFactorAuth.mfaIntroduction": "Пре свега, морате да инсталирате једну од наших предложених апликација на телефону. Ова апликација ће генерисати кодове за вас. Одаберите оперативни систем да бисте добили одговарајуће везе за инсталацију.",
|
"components.profile.multiFactorAuth.mfaIntroduction": "Пре свега, морате да инсталирате једну од наших предложених апликација на телефону. Ова апликација ће генерисати кодове за вас. Одаберите оперативни систем да бисте добили одговарајуће везе за инсталацију.",
|
||||||
"components.profile.multiFactorAuth.mfaLoginFlowDesc": "Додатни кôд ће бити затражен следећи пут када се пријавите. Запамтите да овлашћење на Minecraft неће радити када је омогућена потврда идентитета помоћу два фактора.",
|
"components.profile.multiFactorAuth.mfaLoginFlowDesc": "Додатни код биће затражен следећи пут када се пријавите. Запамтите да овлашћење на Minecraft неће радити када је омогућена потврда идентитета помоћу два фактора.",
|
||||||
"components.profile.multiFactorAuth.mfaTitle": "Потврда идентитета помоћу два фактора",
|
"components.profile.multiFactorAuth.mfaTitle": "Потврда идентитета помоћу два фактора",
|
||||||
"components.profile.multiFactorAuth.or": "ИЛИ",
|
"components.profile.multiFactorAuth.or": "ИЛИ",
|
||||||
"components.profile.multiFactorAuth.ready": "Спремно",
|
"components.profile.multiFactorAuth.ready": "Спремно",
|
||||||
"components.profile.multiFactorAuth.scanQrCode": "Отворите омиљену апликацију-скенер QR-а и скенирајте следећи QR кôд:",
|
"components.profile.multiFactorAuth.scanQrCode": "Отворите омиљену апликацију скенера QR-а и скенирајте следећи код:",
|
||||||
"components.profile.multiFactorAuth.theAppIsInstalled": "Апликација је инсталирана",
|
"components.profile.multiFactorAuth.theAppIsInstalled": "Апликација је инсталирана",
|
||||||
"components.profile.multiFactorAuth.whenKeyEntered": "Ако се привремени кôд појави у апликацији за потврду идентитета помоћу два фактора, можете прећи на следећи корак.",
|
"components.profile.multiFactorAuth.whenKeyEntered": "Ако се привремени код појави у апликацији за потврду идентитета помоћу два фактора, можете прећи на следећи корак.",
|
||||||
"components.profile.nickname": "Надимак:",
|
"components.profile.nickname": "Надимак:",
|
||||||
"components.profile.participateInTheTranslation": "participate in the translation",
|
"components.profile.participateInTheTranslation": "учествујте у превођењу",
|
||||||
"components.profile.password": "Лозинка:",
|
"components.profile.password": "Лозинка:",
|
||||||
"components.profile.passwordRequestForm.continue": "Настави",
|
"components.profile.passwordRequestForm.continue": "Настави",
|
||||||
"components.profile.passwordRequestForm.description": "Да бисте довршили радњу, унесите лозинку налога",
|
"components.profile.passwordRequestForm.description": "Да бисте довршили радњу, унесите лозинку налога",
|
||||||
@ -210,7 +210,7 @@
|
|||||||
"components.profile.siteLanguage": "Језик сајта:",
|
"components.profile.siteLanguage": "Језик сајта:",
|
||||||
"components.profile.twoFactorAuth": "Потврда идентитета помоћу два фактора",
|
"components.profile.twoFactorAuth": "Потврда идентитета помоћу два фактора",
|
||||||
"components.profile.uuid": "UUID:",
|
"components.profile.uuid": "UUID:",
|
||||||
"components.ui.bsod.alsoYouCanInteractWithBackground": "Такође се можете играти позадином — интерактивна је ;)",
|
"components.ui.bsod.alsoYouCanInteractWithBackground": "Можете и да се играте позадином — интерактивна је ;)",
|
||||||
"components.ui.bsod.criticalErrorHappened": "Дошло је до критичне грешке због које апликација не може нормално да настави са радом.",
|
"components.ui.bsod.criticalErrorHappened": "Дошло је до критичне грешке због које апликација не може нормално да настави са радом.",
|
||||||
"components.ui.bsod.reloadPageOrContactUs": "Поново учитајте ову страницу, па покушајте поново. Ако се проблем и даље буде јављао, пријавите га програмерима слањем е-поруке на",
|
"components.ui.bsod.reloadPageOrContactUs": "Поново учитајте ову страницу, па покушајте поново. Ако се проблем и даље буде јављао, пријавите га програмерима слањем е-поруке на",
|
||||||
"components.userbar.login": "Пријава",
|
"components.userbar.login": "Пријава",
|
||||||
@ -273,7 +273,7 @@
|
|||||||
"services.errorsDict.redirectUriRequired": "URI преусмеравања је обавезан",
|
"services.errorsDict.redirectUriRequired": "URI преусмеравања је обавезан",
|
||||||
"services.errorsDict.rulesAgreementRequired": "Морате да прихватите правила како бисте отворили налог",
|
"services.errorsDict.rulesAgreementRequired": "Морате да прихватите правила како бисте отворили налог",
|
||||||
"services.errorsDict.suggestResetPassword": "Нисте ли {forgotYourPassword}?",
|
"services.errorsDict.suggestResetPassword": "Нисте ли {forgotYourPassword}?",
|
||||||
"services.errorsDict.totpIncorrect": "Кôд је неисправан",
|
"services.errorsDict.totpIncorrect": "Код није исправан",
|
||||||
"services.errorsDict.totpRequired": "Унесите кôд",
|
"services.errorsDict.totpRequired": "Унесите кôд",
|
||||||
"services.errorsDict.usernameInvalid": "Корисничко име је неважеће",
|
"services.errorsDict.usernameInvalid": "Корисничко име је неважеће",
|
||||||
"services.errorsDict.usernameRequired": "Корисничко име је обавезно",
|
"services.errorsDict.usernameRequired": "Корисничко име је обавезно",
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
"components.auth.permissions.decline": "拒绝",
|
"components.auth.permissions.decline": "拒绝",
|
||||||
"components.auth.permissions.permissionsTitle": "应用程序权限",
|
"components.auth.permissions.permissionsTitle": "应用程序权限",
|
||||||
"components.auth.permissions.scope_account_email": "访问您的邮件地址",
|
"components.auth.permissions.scope_account_email": "访问您的邮件地址",
|
||||||
"components.auth.permissions.scope_account_info": "访问您的个人资料数据(除了邮件)",
|
"components.auth.permissions.scope_account_info": "访问您的个人资料数据(除了电子邮件地址)",
|
||||||
"components.auth.permissions.scope_minecraft_server_session": "Minecraft服务器的授权数据",
|
"components.auth.permissions.scope_minecraft_server_session": "Minecraft服务器的授权数据",
|
||||||
"components.auth.permissions.scope_offline_access": "当您离线时访问您的个人资料数据",
|
"components.auth.permissions.scope_offline_access": "当您离线时访问您的个人资料数据",
|
||||||
"components.auth.permissions.theAppNeedsAccess1": "此应用程序需要访问",
|
"components.auth.permissions.theAppNeedsAccess1": "此应用程序需要访问",
|
||||||
|
@ -3,7 +3,10 @@
|
|||||||
|
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
import axios from 'axios';
|
||||||
|
import JSON5 from 'json5';
|
||||||
import CrowdinApi, { LanguageStatusNode, LanguageStatusResponse, ProjectInfoResponse } from 'crowdin-api';
|
import CrowdinApi, { LanguageStatusNode, LanguageStatusResponse, ProjectInfoResponse } from 'crowdin-api';
|
||||||
|
import { TranslationStatus, Translations, Credentials } from '@crowdin/crowdin-api-client';
|
||||||
import MultiProgress from 'multi-progress';
|
import MultiProgress from 'multi-progress';
|
||||||
import ch from 'chalk';
|
import ch from 'chalk';
|
||||||
import iso639 from 'iso-639-1';
|
import iso639 from 'iso-639-1';
|
||||||
@ -18,7 +21,9 @@ if (!config.crowdinApiKey) {
|
|||||||
process.exit(126);
|
process.exit(126);
|
||||||
}
|
}
|
||||||
|
|
||||||
const PROJECT_ID = 'elyby';
|
const ORGANIZATION_ID = 'elyby';
|
||||||
|
const PROJECT_ID = 350687;
|
||||||
|
const FILE_ID = 6;
|
||||||
const PROJECT_KEY = config.crowdinApiKey;
|
const PROJECT_KEY = config.crowdinApiKey;
|
||||||
const CROWDIN_FILE_PATH = 'accounts/site.json';
|
const CROWDIN_FILE_PATH = 'accounts/site.json';
|
||||||
const SOURCE_LANG = 'en';
|
const SOURCE_LANG = 'en';
|
||||||
@ -26,16 +31,22 @@ const LANG_DIR = path.resolve(`${__dirname}/../app/i18n`);
|
|||||||
const INDEX_FILE_NAME = 'index.js';
|
const INDEX_FILE_NAME = 'index.js';
|
||||||
const MIN_RELEASE_PROGRESS = 80; // Minimal ready percent before translation can be published
|
const MIN_RELEASE_PROGRESS = 80; // Minimal ready percent before translation can be published
|
||||||
|
|
||||||
|
const credentials: Credentials = {
|
||||||
|
token: config.crowdinApiKey,
|
||||||
|
};
|
||||||
|
const translationStatusApi = new TranslationStatus(credentials);
|
||||||
|
const translationsApi = new Translations(credentials);
|
||||||
|
|
||||||
const crowdin = new CrowdinApi({
|
const crowdin = new CrowdinApi({
|
||||||
apiKey: PROJECT_KEY,
|
apiKey: PROJECT_KEY,
|
||||||
projectName: PROJECT_ID,
|
projectName: ORGANIZATION_ID,
|
||||||
});
|
});
|
||||||
const progressBar = new MultiProgress();
|
const progressBar = new MultiProgress();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Locales that has been verified by core team members
|
* Locales that has been verified by core team members
|
||||||
*/
|
*/
|
||||||
const RELEASED_LOCALES: Array<string> = ['be', 'fr', 'id', 'pt', 'ru', 'uk', 'vi', 'zh'];
|
const releasedLocales: Array<string> = ['be', 'fr', 'id', 'pt', 'ru', 'uk', 'vi', 'zh'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Array of Crowdin locales to our internal locales representation
|
* Array of Crowdin locales to our internal locales representation
|
||||||
@ -80,7 +91,7 @@ function toInternalLocale(code: string): string {
|
|||||||
* хранятся в самом приложении
|
* хранятся в самом приложении
|
||||||
*/
|
*/
|
||||||
function serializeToModule(translates: Record<string, any>): string {
|
function serializeToModule(translates: Record<string, any>): string {
|
||||||
const src = JSON.stringify(sortByKeys(translates), null, 2);
|
const src = JSON5.stringify(sortByKeys(translates), null, 4);
|
||||||
|
|
||||||
return `module.exports = ${src};\n`;
|
return `module.exports = ${src};\n`;
|
||||||
}
|
}
|
||||||
@ -129,6 +140,70 @@ interface IndexFileEntry {
|
|||||||
isReleased: boolean;
|
isReleased: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function pullNew(): Promise<void> {
|
||||||
|
console.log('Pulling translation progress...');
|
||||||
|
const { data: translationProgress } = await translationStatusApi.getFileProgress(PROJECT_ID, FILE_ID, 100);
|
||||||
|
|
||||||
|
const localesToPull: Array<string> = [];
|
||||||
|
const indexFileEntries: Record<string, IndexFileEntry> = {
|
||||||
|
en: {
|
||||||
|
code: 'en',
|
||||||
|
name: 'English',
|
||||||
|
englishName: 'English',
|
||||||
|
progress: 100,
|
||||||
|
isReleased: true,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
translationProgress.forEach(({ data: { languageId, approvalProgress } }) => {
|
||||||
|
const locale = toInternalLocale(languageId);
|
||||||
|
if (releasedLocales.includes(locale) || approvalProgress >= MIN_RELEASE_PROGRESS) {
|
||||||
|
localesToPull.push(languageId);
|
||||||
|
indexFileEntries[locale] = {
|
||||||
|
code: locale,
|
||||||
|
name: NATIVE_NAMES_MAP[locale] || iso639.getNativeName(locale),
|
||||||
|
englishName: ENGLISH_NAMES_MAP[locale] || iso639.getName(locale),
|
||||||
|
progress: approvalProgress,
|
||||||
|
isReleased: releasedLocales.includes(locale),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add prefix 'c' to current and total to prevent filling thees placeholders with real values
|
||||||
|
const downloadingProgressBar = progressBar.newBar('Downloading translates :bar :percent | :cCurrent/:total', {
|
||||||
|
total: localesToPull.length,
|
||||||
|
incomplete: '\u2591',
|
||||||
|
complete: '\u2588',
|
||||||
|
width: Object.keys(indexFileEntries).length - 1,
|
||||||
|
});
|
||||||
|
let downloadingReady = 0;
|
||||||
|
|
||||||
|
const promises = localesToPull.map(async (languageId): Promise<void> => {
|
||||||
|
const { data: { url } } = await translationsApi.buildProjectFileTranslation(PROJECT_ID, FILE_ID, {
|
||||||
|
targetLanguageId: languageId,
|
||||||
|
exportApprovedOnly: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
const fileResponse = await axios.get(url, {
|
||||||
|
// Disable response parsing
|
||||||
|
transformResponse: [],
|
||||||
|
});
|
||||||
|
fs.writeFileSync(path.join(LANG_DIR, `${toInternalLocale(languageId)}.json`), fileResponse.data);
|
||||||
|
|
||||||
|
downloadingProgressBar.update(++downloadingReady / localesToPull, {
|
||||||
|
cCurrent: downloadingReady,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
await Promise.all(promises);
|
||||||
|
|
||||||
|
console.log('Writing an index file');
|
||||||
|
|
||||||
|
fs.writeFileSync(path.join(LANG_DIR, INDEX_FILE_NAME), serializeToModule(indexFileEntries));
|
||||||
|
|
||||||
|
console.log(ch.green('The index file was successfully written'));
|
||||||
|
}
|
||||||
|
|
||||||
async function pull() {
|
async function pull() {
|
||||||
console.log('Pulling locales list...');
|
console.log('Pulling locales list...');
|
||||||
const locales = await pullLocales();
|
const locales = await pullLocales();
|
||||||
@ -169,7 +244,7 @@ async function pull() {
|
|||||||
|
|
||||||
const progress = (fileInfo.words_approved / fileInfo.words) * 100;
|
const progress = (fileInfo.words_approved / fileInfo.words) * 100;
|
||||||
|
|
||||||
if (!RELEASED_LOCALES.includes(toInternalLocale(locale.code)) && progress < MIN_RELEASE_PROGRESS) {
|
if (!releasedLocales.includes(toInternalLocale(locale.code)) && progress < MIN_RELEASE_PROGRESS) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,7 +271,7 @@ async function pull() {
|
|||||||
|
|
||||||
console.log('Locales are downloaded. Writing them to file system.');
|
console.log('Locales are downloaded. Writing them to file system.');
|
||||||
|
|
||||||
const indexFileEntries: { [key: string]: IndexFileEntry } = {
|
const indexFileEntries: Record<string, IndexFileEntry> = {
|
||||||
en: {
|
en: {
|
||||||
code: 'en',
|
code: 'en',
|
||||||
name: 'English',
|
name: 'English',
|
||||||
@ -223,7 +298,7 @@ async function pull() {
|
|||||||
name: NATIVE_NAMES_MAP[ourCode] || iso639.getNativeName(ourCode),
|
name: NATIVE_NAMES_MAP[ourCode] || iso639.getNativeName(ourCode),
|
||||||
englishName: ENGLISH_NAMES_MAP[ourCode] || name,
|
englishName: ENGLISH_NAMES_MAP[ourCode] || name,
|
||||||
progress: parseFloat(progress.toFixed(1)),
|
progress: parseFloat(progress.toFixed(1)),
|
||||||
isReleased: RELEASED_LOCALES.includes(ourCode),
|
isReleased: releasedLocales.includes(ourCode),
|
||||||
};
|
};
|
||||||
|
|
||||||
fs.copyFile(translatesFilePath, path.join(LANG_DIR, `${ourCode}.json`), 0, (err) => {
|
fs.copyFile(translatesFilePath, path.join(LANG_DIR, `${ourCode}.json`), 0, (err) => {
|
||||||
@ -286,7 +361,7 @@ try {
|
|||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case 'pull':
|
case 'pull':
|
||||||
pull();
|
pullNew();
|
||||||
break;
|
break;
|
||||||
case 'push':
|
case 'push':
|
||||||
push();
|
push();
|
||||||
|
@ -11,15 +11,18 @@
|
|||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/node": "^7.8.3",
|
"@babel/node": "^7.8.3",
|
||||||
|
"@crowdin/crowdin-api-client": "^1.8.0",
|
||||||
"@types/mkdirp": "^1.0.0",
|
"@types/mkdirp": "^1.0.0",
|
||||||
"@types/progress": "^2.0.3",
|
"@types/progress": "^2.0.3",
|
||||||
|
"axios": "^0.19.2",
|
||||||
"chalk": "^4.0.0",
|
"chalk": "^4.0.0",
|
||||||
"crowdin-api": "^4.0.0",
|
"crowdin-api": "^4.0.0",
|
||||||
"glob": "^7.1.6",
|
"glob": "^7.1.6",
|
||||||
"iso-639-1": "^2.1.3",
|
"iso-639-1": "^2.1.3",
|
||||||
|
"json5": "^2.1.3",
|
||||||
"mkdirp": "^1.0.4",
|
"mkdirp": "^1.0.4",
|
||||||
"multi-progress": "^2.0.0",
|
"multi-progress": "^2.0.0",
|
||||||
"prompt": "^1.0.0",
|
"prompt": "https://github.com/flatiron/prompt.git#master",
|
||||||
"utility-types": "^3.10.0"
|
"utility-types": "^3.10.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
38
yarn.lock
38
yarn.lock
@ -1905,6 +1905,13 @@
|
|||||||
exec-sh "^0.3.2"
|
exec-sh "^0.3.2"
|
||||||
minimist "^1.2.0"
|
minimist "^1.2.0"
|
||||||
|
|
||||||
|
"@crowdin/crowdin-api-client@^1.8.0":
|
||||||
|
version "1.8.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@crowdin/crowdin-api-client/-/crowdin-api-client-1.8.0.tgz#017a7c62dd6fd115444a172620a9d5f937ec2fdf"
|
||||||
|
integrity sha512-OyQbSbIHnURNyAESuhE6ZK5WB0r0JKjMClo39Bc6+95UKNzy1rFTrF33W1stRJs7j6WfuOf3sYsPXu9deyYURQ==
|
||||||
|
dependencies:
|
||||||
|
axios "^0.19.0"
|
||||||
|
|
||||||
"@cypress/listr-verbose-renderer@0.4.1":
|
"@cypress/listr-verbose-renderer@0.4.1":
|
||||||
version "0.4.1"
|
version "0.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a"
|
resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a"
|
||||||
@ -4293,7 +4300,7 @@ axios@0.19.0:
|
|||||||
follow-redirects "1.5.10"
|
follow-redirects "1.5.10"
|
||||||
is-buffer "^2.0.2"
|
is-buffer "^2.0.2"
|
||||||
|
|
||||||
axios@^0.19.2:
|
axios@^0.19.0, axios@^0.19.2:
|
||||||
version "0.19.2"
|
version "0.19.2"
|
||||||
resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27"
|
resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27"
|
||||||
integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==
|
integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==
|
||||||
@ -9998,7 +10005,7 @@ json5@^1.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
minimist "^1.2.0"
|
minimist "^1.2.0"
|
||||||
|
|
||||||
json5@^2.1.0, json5@^2.1.2:
|
json5@^2.1.0, json5@^2.1.2, json5@^2.1.3:
|
||||||
version "2.1.3"
|
version "2.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
|
resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
|
||||||
integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==
|
integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==
|
||||||
@ -12006,16 +12013,6 @@ pkg-up@2.0.0, pkg-up@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
find-up "^2.1.0"
|
find-up "^2.1.0"
|
||||||
|
|
||||||
pkginfo@0.3.x:
|
|
||||||
version "0.3.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.3.1.tgz#5b29f6a81f70717142e09e765bbeab97b4f81e21"
|
|
||||||
integrity sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=
|
|
||||||
|
|
||||||
pkginfo@0.x.x:
|
|
||||||
version "0.4.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff"
|
|
||||||
integrity sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=
|
|
||||||
|
|
||||||
please-upgrade-node@^3.2.0:
|
please-upgrade-node@^3.2.0:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
|
resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
|
||||||
@ -12608,17 +12605,15 @@ promise@^7.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
asap "~2.0.3"
|
asap "~2.0.3"
|
||||||
|
|
||||||
prompt@^1.0.0:
|
"prompt@https://github.com/flatiron/prompt.git#master":
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/prompt/-/prompt-1.0.0.tgz#8e57123c396ab988897fb327fd3aedc3e735e4fe"
|
resolved "https://github.com/flatiron/prompt.git#8d5495c84c3f433b8f26ea2798f8ba68c3656459"
|
||||||
integrity sha1-jlcSPDlquYiJf7Mn/Trtw+c15P4=
|
|
||||||
dependencies:
|
dependencies:
|
||||||
colors "^1.1.2"
|
colors "^1.1.2"
|
||||||
pkginfo "0.x.x"
|
|
||||||
read "1.0.x"
|
read "1.0.x"
|
||||||
revalidator "0.1.x"
|
revalidator "0.1.x"
|
||||||
utile "0.3.x"
|
utile "0.3.x"
|
||||||
winston "2.1.x"
|
winston "2.x"
|
||||||
|
|
||||||
prompts@^2.0.1:
|
prompts@^2.0.1:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
@ -16208,17 +16203,16 @@ widest-line@^3.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
string-width "^4.0.0"
|
string-width "^4.0.0"
|
||||||
|
|
||||||
winston@2.1.x:
|
winston@2.x:
|
||||||
version "2.1.1"
|
version "2.4.4"
|
||||||
resolved "https://registry.yarnpkg.com/winston/-/winston-2.1.1.tgz#3c9349d196207fd1bdff9d4bc43ef72510e3a12e"
|
resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.4.tgz#a01e4d1d0a103cf4eada6fc1f886b3110d71c34b"
|
||||||
integrity sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4=
|
integrity sha512-NBo2Pepn4hK4V01UfcWcDlmiVTs7VTB1h7bgnB0rgP146bYhMxX0ypCz3lBOfNxCO4Zuek7yeT+y/zM1OfMw4Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
async "~1.0.0"
|
async "~1.0.0"
|
||||||
colors "1.0.x"
|
colors "1.0.x"
|
||||||
cycle "1.0.x"
|
cycle "1.0.x"
|
||||||
eyes "0.1.x"
|
eyes "0.1.x"
|
||||||
isstream "0.1.x"
|
isstream "0.1.x"
|
||||||
pkginfo "0.3.x"
|
|
||||||
stack-trace "0.0.x"
|
stack-trace "0.0.x"
|
||||||
|
|
||||||
word-wrap@^1.2.3, word-wrap@~1.2.3:
|
word-wrap@^1.2.3, word-wrap@~1.2.3:
|
||||||
|
Loading…
Reference in New Issue
Block a user