diff --git a/Makefile b/Makefile index c3f4d96c..d7805814 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ export TRANSIFEX_RESOURCE = frontend-app-authn -transifex_langs = "ar,fr,es_419,zh_CN,it_IT,pt_PT,de_DE,uk,ru,hi" +transifex_langs = "ar,fr,es_419,zh_CN,pt,it,de,uk,ru,hi,fr_CA,it_IT,pt_PT,de_DE" transifex_utils = ./node_modules/.bin/transifex-utils.js i18n = ./src/i18n @@ -44,9 +44,22 @@ push_translations: # Pulls translations from Transifex. pull_translations: - tx pull -t -f --mode reviewed --languages=$(transifex_langs) + tx pull -f --mode reviewed --languages=$(transifex_langs) -# This target is used by CI. +# This target is used by Travis. validate-no-uncommitted-package-lock-changes: # Checking for package-lock.json changes... git diff --exit-code package-lock.json + +.PHONY: validate +validate: + make validate-no-uncommitted-package-lock-changes + npm run i18n_extract + npm run lint -- --max-warnings 0 + npm run test + npm run build + +.PHONY: validate.ci +validate.ci: + npm ci + make validate diff --git a/src/i18n/index.jsx b/src/i18n/index.jsx index 986f8d65..3f8208da 100644 --- a/src/i18n/index.jsx +++ b/src/i18n/index.jsx @@ -1,41 +1,34 @@ import arMessages from './messages/ar.json'; -import caMessages from './messages/ca.json'; -// no need to import en messages-- they are in the defaultMessage field -import dedeMessages from './messages/de_DE.json'; +import deMessages from './messages/de.json'; +import dedeCAMessages from './messages/de_DE.json'; import es419Messages from './messages/es_419.json'; import frMessages from './messages/fr.json'; -import heMessages from './messages/he.json'; +import frCAMessages from './messages/fr_CA.json'; import hiMessages from './messages/hi.json'; -import idMessages from './messages/id.json'; -import ititMessages from './messages/it_IT.json'; -import kokrMessages from './messages/ko_kr.json'; -import plMessages from './messages/pl.json'; -import ptbrMessages from './messages/pt_br.json'; -import ptptMessages from './messages/pt_PT.json'; +import itMessages from './messages/it.json'; +import ititCAMessages from './messages/it_IT.json'; +import ptMessages from './messages/pt.json'; +import ptptCAMessages from './messages/pt_PT.json'; import ruMessages from './messages/ru.json'; -import thMessages from './messages/th.json'; import ukMessages from './messages/uk.json'; import zhcnMessages from './messages/zh_CN.json'; +// no need to import en messages-- they are in the defaultMessage field const messages = { ar: arMessages, - es: es419Messages, // Prospectus uses es language code for spanish, added `es` option and pointed to es-419 strings. 'es-419': es419Messages, fr: frMessages, 'zh-cn': zhcnMessages, - 'it-it': ititMessages, - 'pt-pt': ptptMessages, - 'de-de': dedeMessages, - ca: caMessages, - he: heMessages, - id: idMessages, - 'ko-kr': kokrMessages, - pl: plMessages, - 'pt-br': ptbrMessages, - ru: ruMessages, - th: thMessages, - uk: ukMessages, + pt: ptMessages, + it: itMessages, + de: deMessages, hi: hiMessages, + 'fr-ca': frCAMessages, + ru: ruMessages, + uk: ukMessages, + 'de-de': dedeCAMessages, + 'it-it': ititCAMessages, + 'pt-pt': ptptCAMessages, }; export default messages; diff --git a/src/i18n/messages/de.json b/src/i18n/messages/de.json new file mode 100644 index 00000000..e612d512 --- /dev/null +++ b/src/i18n/messages/de.json @@ -0,0 +1,159 @@ +{ + "start.learning": "Start learning", + "with.site.name": "with {siteName}", + "complete.your.profile.1": "Complete", + "complete.your.profile.2": "your profile", + "welcome.to.platform": "Welcome to {siteName}, {username}!", + "institution.login.page.sub.heading": "Choose your institution from the list below", + "logistration.sign.in": "Sign in", + "logistration.register": "Register", + "enterprisetpa.title.heading": "Would you like to sign in using your {providerName} credentials?", + "enterprisetpa.login.button.text": "Show me other ways to sign in or register", + "sso.sign.in.with": "Sign in with {providerName}", + "sso.create.account.using": "Create account using {providerName}", + "show.password": "Show password", + "hide.password": "Hide password", + "one.letter": "1 letter", + "one.number": "1 number", + "eight.characters": "8 characters", + "password.sr.only.helping.text": "Password must contain at least 8 characters, at least one letter, and at least one number", + "tpa.alert.heading": "Almost done!", + "login.third.party.auth.account.not.linked": "You have successfully signed into {currentProvider}, but your {currentProvider} account does not have a linked {platformName} account. To link your accounts, sign in now using your {platformName} password.", + "register.third.party.auth.account.not.linked": "You've successfully signed into {currentProvider}! We just need a little more information before you start learning with {platformName}.", + "registration.using.tpa.form.heading": "Finish creating your account", + "error.notfound.message": "The page you're looking for is unavailable or there's an error in the URL. Please check the URL and try again.", + "forgot.password.confirmation.message": "We sent an email to {email} with instructions to reset your password.\n If you do not receive a password reset message after 1 minute, verify that you entered\n the correct email address, or check your spam folder. If you need further assistance, {supportLink}.", + "forgot.password.page.title": "Forgot Password | {siteName}", + "forgot.password.page.heading": "Reset password", + "forgot.password.page.instructions": "Please enter your email address below and we will send you an email with instructions on how to reset your password.", + "forgot.password.page.invalid.email.message": "Enter a valid email address", + "forgot.password.page.email.field.label": "Email", + "forgot.password.page.submit.button": "Submit", + "forgot.password.error.alert.title.": "We were unable to contact you.", + "forgot.password.error.message.title": "An error occurred.", + "forgot.password.request.in.progress.message": "Your previous request is in progress, please try again in a few moments.", + "forgot.password.empty.email.field.error": "Enter your email", + "forgot.password.email.help.text": "The email address you used to register with {platformName}", + "confirmation.message.title": "Check your email", + "confirmation.support.link": "contact technical support", + "need.help.sign.in.text": "Need help signing in?", + "additional.help.text": "For additional help, contact {platformName} support at ", + "sign.in.text": "Sign in", + "extend.field.errors": "{emailError} below.", + "invalid.token.heading": "Invalid password reset link", + "invalid.token.error.message": "This password reset link is invalid. It may have been used already. Enter your email below to receive a new link.", + "token.validation.rate.limit.error.heading": "Too many requests", + "token.validation.rate.limit.error": "An error has occurred because of too many requests. Please try again after some time.", + "token.validation.internal.sever.error.heading": "Token validation failure", + "token.validation.internal.sever.error": "An error has occurred. Try refreshing the page, or check your internet connection.", + "internal.server.error": "An error has occurred. Try refreshing the page, or check your internet connection.", + "account.activation.error.message": "Something went wrong, please {supportLink} to resolve this issue.", + "login.inactive.user.error": "In order to sign in, you need to activate your account.{lineBreak}\n {lineBreak}We just sent an activation link to {email}. If you do not receive an email,\n check your spam folders or {supportLink}.", + "allowed.domain.login.error": "As {allowedDomain} user, You must login with your {allowedDomain} {tpaLink}.", + "login.incorrect.credentials.error.attempts.text.1": "The username, email or password you entered is incorrect. You have {remainingAttempts} more sign in\n attempts before your account is temporarily locked.", + "login.incorrect.credentials.error.attempts.text.2": "If you've forgotten your password, {resetLink}", + "account.locked.out.message.2": "To be on the safe side, you can {resetLink} before trying again.", + "login.incorrect.credentials.error.with.reset.link": "The username, email, or password you entered is incorrect. Please try again or {resetLink}.", + "login.page.title": "Login | {siteName}", + "login.user.identity.label": "Username or email", + "login.password.label": "Password", + "sign.in.button": "Sign in", + "forgot.password": "Forgot password", + "institution.login.button": "Institution/campus credentials", + "institution.login.page.title": "Sign in with institution/campus credentials", + "login.other.options.heading": "Or sign in with:", + "non.compliant.password.title": "We recently changed our password requirements", + "non.compliant.password.message": "Your current password does not meet the new security requirements. We just sent a password-reset message to the email address associated with this account. Thank you for helping us keep your data safe.", + "account.locked.out.message.1": "To protect your account, it's been temporarily locked. Try again in 30 minutes.", + "enterprise.login.btn.text": "Company or school credentials", + "username.or.email.format.validation.less.chars.message": "Username or email must have at least 3 characters.", + "email.validation.message": "Enter your username or email", + "password.validation.message": "Password criteria has not been met", + "account.activation.success.message.title": "Success! You have activated your account.", + "account.activation.success.message": "You will now receive email updates and alerts from us related to the courses you are enrolled in. Sign in to continue.", + "account.activation.info.message": "This account has already been activated.", + "account.activation.error.message.title": "Your account could not be activated", + "account.activation.support.link": "contact support", + "account.confirmation.success.message.title": "Success! You have confirmed your email.", + "account.confirmation.success.message": "Sign in to continue.", + "account.confirmation.info.message": "This email has already been confirmed.", + "account.confirmation.error.message.title": "Your email could not be confirmed", + "tpa.account.link": "{provider} account", + "internal.server.error.message": "An error has occurred. Try refreshing the page, or check your internet connection.", + "login.rate.limit.reached.message": "Too many failed login attempts. Try again later.", + "login.failure.header.title": "We couldn't sign you in.", + "contact.support.link": "contact {platformName} support", + "login.incorrect.credentials.error": "The username, email, or password you entered is incorrect. Please try again.", + "login.form.invalid.error.message": "Please fill in the fields below.", + "login.incorrect.credentials.error.reset.link.text": "reset your password", + "login.incorrect.credentials.error.before.account.blocked.text": "click here to reset it.", + "password.security.nudge.title": "Password security", + "password.security.block.title": "Password change required", + "password.security.nudge.body": "Our system detected that your password is vulnerable. We recommend you change it so that your account stays secure.", + "password.security.block.body": "Our system detected that your password is vulnerable. Change your password so that your account stays secure.", + "password.security.close.button": "Close", + "password.security.redirect.to.reset.password.button": "Reset your password", + "progressive.profiling.page.title": "Optional Fields | {siteName}", + "progressive.profiling.page.heading": "A few questions for you will help us get smarter.", + "optional.fields.information.link": "Learn more about how we use this information.", + "optional.fields.submit.button": "Submit", + "optional.fields.skip.button": "Skip for now", + "continue.to.platform": "Continue to {platformName}", + "modal.title": "Thanks for letting us know.", + "modal.description": "You can complete your profile in settings at any time if you change your mind.", + "welcome.page.error.heading": "We couldn't update your profile", + "welcome.page.error.message": "An error occurred. You can complete your profile in settings at any time.", + "register.page.title": "Register | {siteName}", + "registration.fullname.label": "Full name", + "registration.email.label": "Email", + "registration.username.label": "Public username", + "registration.password.label": "Password", + "registration.country.label": "Country/Region", + "registration.opt.in.label": "I agree that {siteName} may send me marketing messages.", + "help.text.name": "This name will be used by any certificates that you earn.", + "help.text.username.1": "The name that will identify you in your courses.", + "help.text.username.2": "This can not be changed later.", + "help.text.email": "For account activation and important updates", + "create.account.for.free.button": "Create an account for free", + "registration.other.options.heading": "Or register with:", + "register.institution.login.button": "Institution/campus credentials", + "register.institution.login.page.title": "Register with institution/campus credentials", + "empty.name.field.error": "Enter your full name", + "empty.email.field.error": "Enter your email", + "empty.username.field.error": "Username must be between 2 and 30 characters", + "empty.password.field.error": "Password criteria has not been met", + "empty.country.field.error": "Select your country or region of residence", + "email.do.not.match": "The email addresses do not match.", + "email.invalid.format.error": "Enter a valid email address", + "username.validation.message": "Username must be between 2 and 30 characters", + "name.validation.message": "Enter a valid name", + "username.format.validation.message": "Usernames can only contain letters (A-Z, a-z), numerals (0-9), underscores (_), and hyphens (-). Usernames cannot contain spaces", + "registration.request.failure.header": "We couldn't create your account.", + "registration.empty.form.submission.error": "Please check your responses and try again.", + "registration.request.server.error": "An error has occurred. Try refreshing the page, or check your internet connection.", + "registration.rate.limit.error": "Too many failed registration attempts. Try again later.", + "registration.tpa.session.expired": "Registration using {provider} has timed out.", + "terms.of.service.and.honor.code": "Terms of Service and Honor Code", + "privacy.policy": "Privacy Policy", + "honor.code": "Honor Code", + "terms.of.service": "Terms of Service", + "registration.username.suggestion.label": "Suggested:", + "did.you.mean.alert.text": "Did you mean", + "register.page.terms.of.service.and.honor.code": "By creating an account, you agree to the {tosAndHonorCode} and you acknowledge that {platformName} and each\n Member process your personal data in accordance with the {privacyPolicy}.", + "register.page.honor.code": "I agree to the {platformName} {tosAndHonorCode}", + "register.page.terms.of.service": "I agree to the {platformName} {termsOfService}", + "sign.in": "Sign in", + "reset.password.page.title": "Reset Password | {siteName}", + "reset.password": "Reset password", + "reset.password.page.instructions": "Enter and confirm your new password.", + "new.password.label": "New password", + "confirm.password.label": "Confirm password", + "passwords.do.not.match": "Passwords do not match", + "confirm.your.password": "Confirm your password", + "reset.password.failure.heading": "We couldn't reset your password.", + "reset.password.form.submission.error": "Please check your responses and try again.", + "reset.server.rate.limit.error": "Too many requests.", + "reset.password.success.heading": "Password reset complete.", + "reset.password.success": "Your password has been reset. Sign in to your account.", + "rate.limit.error": "An error has occurred because of too many requests. Please try again after some time." +} \ No newline at end of file diff --git a/src/i18n/messages/fr_CA.json b/src/i18n/messages/fr_CA.json new file mode 100644 index 00000000..636bc1c1 --- /dev/null +++ b/src/i18n/messages/fr_CA.json @@ -0,0 +1,159 @@ +{ + "start.learning": "Démarrer l'apprentissage", + "with.site.name": "avec {siteName}", + "complete.your.profile.1": "Complet", + "complete.your.profile.2": "votre profil", + "welcome.to.platform": "Bienvenue sur {siteName}, {username}!", + "institution.login.page.sub.heading": "Sélectionner votre institution dans la liste ci-dessous", + "logistration.sign.in": "Connexion", + "logistration.register": "Inscription", + "enterprisetpa.title.heading": "Souhaitez-vous vous connecter à l'aide de vos identifiants {providerName}?", + "enterprisetpa.login.button.text": "Affichez moi d'autres façons de se connecter ou de s'inscrire", + "sso.sign.in.with": "Connectez-vous avec {providerName}", + "sso.create.account.using": "Créer un compte avec {providerName}", + "show.password": "Afficher le mot de passe", + "hide.password": "Cacher le mot de passe", + "one.letter": "1 lettre", + "one.number": "1 numéro", + "eight.characters": "8 caractères", + "password.sr.only.helping.text": "Le mot de passe doit contenir au moins 8 caractères, au moins une lettre et au moins un chiffre", + "tpa.alert.heading": "Presque terminé!", + "login.third.party.auth.account.not.linked": "Vous vous êtes connecté avec succès à {currentProvider}, mais votre compte {currentProvider} n'a pas de compte relié à {platformName}. Pour lier vos comptes, connectez-vous en utilisant votre mot de passe {platformName}.", + "register.third.party.auth.account.not.linked": "Vous vous êtes connecté avec succès à {currentProvider}! Nous avons juste besoin d'un peu plus d'informations avant que vous commenciez à apprendre avec {platformName}.", + "registration.using.tpa.form.heading": "Terminer la création de votre compte", + "error.notfound.message": "La page que vous recherchez n'est pas disponible ou il y a une erreur dans l'URL. Veuillez vérifier l'URL et réessayer.", + "forgot.password.confirmation.message": "Nous avons envoyé un courriel à {email} avec des instructions pour réinitialiser votre mot de passe.\n Si vous ne recevez pas de message de réinitialisation de mot de passe après 1 minute, vérifiez que vous avez saisi\nl'adresse courriel correctement, ou vérifiez votre dossier de courriel indésirable. Si vous avez besoin d'aide supplémentaire, {supportLink}.", + "forgot.password.page.title": "Mot de passe oublié | {siteName}", + "forgot.password.page.heading": "Réinitialiser le mot de passe", + "forgot.password.page.instructions": "Veuillez entrer votre adresse courriel ci-dessous et nous vous enverrons un courriel avec les instructions pour réinitialiser votre mot de passe.", + "forgot.password.page.invalid.email.message": "Entrez une adresse de courriel valide", + "forgot.password.page.email.field.label": "Courriel", + "forgot.password.page.submit.button": "Soumettre", + "forgot.password.error.alert.title.": "Nous n'avons pas pu vous contacter.", + "forgot.password.error.message.title": "Une erreur est survenue.", + "forgot.password.request.in.progress.message": "Votre demande précédente est en cours, veuillez réessayer dans quelques instants.", + "forgot.password.empty.email.field.error": "Saisissez votre courriel", + "forgot.password.email.help.text": "L'adresse courriel que vous avez utilisée pour vous inscrire sur {platformName}", + "confirmation.message.title": "Vérifiez votre courriel", + "confirmation.support.link": "contacter le support technique", + "need.help.sign.in.text": "Besoin d'aide pour vous connecter?", + "additional.help.text": "Pour obtenir une aide supplémentaire, contactez l'assistance {platformName} à l'adresse", + "sign.in.text": "Connexion", + "extend.field.errors": "{emailError} ci-dessous.", + "invalid.token.heading": "Lien de réinitialisation du mot de passe non valide", + "invalid.token.error.message": "Ce lien de réinitialisation de mot de passe n'est pas valide. Il a peut-être déjà été utilisé. Entrez votre courriel ci-dessous pour recevoir un nouveau lien.", + "token.validation.rate.limit.error.heading": "Trop de demandes", + "token.validation.rate.limit.error": "Une erreur s'est produite en raison d'un trop grand nombre de demandes. Veuillez réessayer après un certain temps.", + "token.validation.internal.sever.error.heading": "Échec de la validation du jeton", + "token.validation.internal.sever.error": "Une erreur est survenue. Essayer de rafraîchir la page, ou vérifier votre connexion Internet.", + "internal.server.error": "Une erreur est survenue. Essayer de rafraîchir la page, ou vérifier votre connexion Internet.", + "account.activation.error.message": "Une erreur s'est produite, veuillez {supportLink} pour résoudre ce problème.", + "login.inactive.user.error": "Pour vous connecter, vous devez activer votre compte.{lineBreak}\n {lineBreak}Nous venons d'envoyer un lien d'activation à {email}. Si vous ne recevez pas de courriel,\n vérifiez vos dossiers de spam ou {supportLink}.", + "allowed.domain.login.error": "En tant qu'utilisateur {allowedDomain}, vous devez vous connecter avec votre {allowedDomain} {tpaLink}.", + "login.incorrect.credentials.error.attempts.text.1": "Le nom d'utilisateur, le courriel ou le mot de passe que vous avez entré est incorrect. Vous avez {remainingAttempts} tentatives\n de connexion avant que votre compte soit temporairement verrouillé.", + "login.incorrect.credentials.error.attempts.text.2": "Si vous avez oublié votre mot de passe, {resetLink}", + "account.locked.out.message.2": "Par mesure de sécurité, vous pouvez {resetLink} avant de réessayer.", + "login.incorrect.credentials.error.with.reset.link": "Le nom d'utilisateur, l'adresse courriel ou le mot de passe que vous avez saisis sont incorrects. Veuillez réessayer ou {resetLink}.", + "login.page.title": "Connexion | {siteName}", + "login.user.identity.label": "Nom d'utilisateur ou courriel", + "login.password.label": "Mot de passe", + "sign.in.button": "Connexion", + "forgot.password": "Mot de passe oublié", + "institution.login.button": "Identifiants de l'établissement/du campus", + "institution.login.page.title": "Connectez vous avec les crédentiels d'institution ou de campus", + "login.other.options.heading": "Ou se connecter avec :", + "non.compliant.password.title": "Nous avons récemment modifié nos exigences en matière de mot de passe", + "non.compliant.password.message": "Votre mot de passe actuel ne répond pas aux nouvelles exigences de sécurité. Nous venons d'envoyer un message de réinitialisation de mot de passe à l'adresse courriel associée à ce compte. Merci de nous aider à protéger vos données.", + "account.locked.out.message.1": "Pour protéger votre compte, il a été temporairement verrouillé. Réessayez dans 30 minutes.", + "enterprise.login.btn.text": "Identifiants de la compagnie ou de l'école", + "username.or.email.format.validation.less.chars.message": "Le nom d'utilisateur ou l'adresse courriel doit comporter au moins 3 caractères.", + "email.validation.message": "Entrez votre nom d'utilisateur ou votre adresse courriel", + "password.validation.message": "Les critères de mot de passe n'ont pas été remplis", + "account.activation.success.message.title": "Succès! Vous avez activé votre compte.", + "account.activation.success.message": "Vous recevrez maintenant des mises à jour par courriel et des alertes de notre part concernant les cours auxquels vous êtes inscrit. Connectez-vous pour continuer.", + "account.activation.info.message": "Ce compte a déjà été activé.", + "account.activation.error.message.title": "Votre compte n'a pas pu être activé", + "account.activation.support.link": "contacter le support", + "account.confirmation.success.message.title": "Bravo! Vous avez confirmé votre courriel.", + "account.confirmation.success.message": "Se connecter pour continuer.", + "account.confirmation.info.message": "Ce courriel a déjà été confirmé.", + "account.confirmation.error.message.title": "Votre courriel ne peut pas être confirmé", + "tpa.account.link": "compte {provider}", + "internal.server.error.message": "Une erreur est survenue. Essayer de rafraîchir la page, ou vérifier votre connexion Internet.", + "login.rate.limit.reached.message": "Trop de tentatives d'accès refusées. Essayer plus tard.", + "login.failure.header.title": "Nous n'avons pas pu vous connecter.", + "contact.support.link": "veuillez contacter le support {platformName}", + "login.incorrect.credentials.error": "Le nom d'utilisateur, l'adresse courriel ou le mot de passe que vous avez saisis sont incorrects. Veuillez réessayer.", + "login.form.invalid.error.message": "Veuillez remplir les champs ci-dessous.", + "login.incorrect.credentials.error.reset.link.text": "réinitialiser votre mot de passe", + "login.incorrect.credentials.error.before.account.blocked.text": "cliquez ici pour le réinitialiser.", + "password.security.nudge.title": "Sécurité du mot de passe", + "password.security.block.title": "Changement de mot de passe requis", + "password.security.nudge.body": "Notre système a détecté que votre mot de passe est vulnérable. Nous vous recommandons de le modifier afin que votre compte reste sécurisé.", + "password.security.block.body": "Notre système a détecté que votre mot de passe est vulnérable. Changez votre mot de passe afin que votre compte reste sécurisé.", + "password.security.close.button": "Fermer", + "password.security.redirect.to.reset.password.button": "Réinitialiser votre mot de passe", + "progressive.profiling.page.title": "Champs optionnels | {siteName}", + "progressive.profiling.page.heading": "Quelques questions pour vous nous aideront à devenir plus intelligents.", + "optional.fields.information.link": "En savoir plus sur la façon dont nous utilisons ces informations.", + "optional.fields.submit.button": "Soumettre", + "optional.fields.skip.button": "Ignorer pour l'instant", + "continue.to.platform": "Continuer vers {platformName}", + "modal.title": "Merci de nous en informer.", + "modal.description": "Vous pouvez compléter votre profil dans les paramètres à tout moment si vous changez d'avis.", + "welcome.page.error.heading": "Nous n'avons pas pu mettre à jour votre profil", + "welcome.page.error.message": "Une erreur s'est produite. Vous pouvez compléter votre profil dans les paramètres à tout moment.", + "register.page.title": "S'inscrire | {siteName}", + "registration.fullname.label": "Nom complet", + "registration.email.label": "Courriel", + "registration.username.label": "Nom d'utilisateur", + "registration.password.label": "Mot de passe", + "registration.country.label": "Pays/Région", + "registration.opt.in.label": "{siteName} peux m'envoyer des messages de marketing.", + "help.text.name": "Ce nom sera utilisé pour toutes les attestations que vous obtiendrez.", + "help.text.username.1": "Le nom qui vous identifiera dans vos cours.", + "help.text.username.2": "Cela ne peut pas être modifié ultérieurement.", + "help.text.email": "Pour l'activation du compte et les mises à jour importantes", + "create.account.for.free.button": "Créer un compte gratuitement", + "registration.other.options.heading": "Ou inscrivez-vous avec :", + "register.institution.login.button": "Identifiants de l'établissement/du campus", + "register.institution.login.page.title": "Inscription avec les crédentiels d'institution ou de campus", + "empty.name.field.error": "Saisissez votre nom complet", + "empty.email.field.error": "Saisissez votre courriel", + "empty.username.field.error": "Le nom d'utilisateur doit comporter entre 2 et 30 caractères", + "empty.password.field.error": "Les critères de mot de passe n'ont pas été remplis", + "empty.country.field.error": "Sélectionnez votre pays ou région de résidence", + "email.do.not.match": "Les adresses courriel ne correspondent pas.", + "email.invalid.format.error": "Entrez une adresse de courriel valide", + "username.validation.message": "Le nom d'utilisateur doit comporter entre 2 et 30 caractères", + "name.validation.message": "Entrez un nom valide", + "username.format.validation.message": "Les noms d'utilisateur ne peuvent contenir que des lettres (AZ, az), des chiffres (0-9), des traits de soulignement (_) et des traits d'union (-). Les noms d'utilisateur ne peuvent pas contenir d'espaces", + "registration.request.failure.header": "Nous n'avons pas pu créer votre compte.", + "registration.empty.form.submission.error": "Veuillez vérifier vos réponses et réessayer.", + "registration.request.server.error": "Une erreur est survenue. Essayer de rafraîchir la page, ou vérifier votre connexion Internet.", + "registration.rate.limit.error": "Trop de tentatives d'inscriptions ont échoué. Réessayez plus tard.", + "registration.tpa.session.expired": "L'inscription à l'aide de {provider} a expiré.", + "terms.of.service.and.honor.code": "Conditions générales du service et code d'honneur", + "privacy.policy": "Politique de confidentialité", + "honor.code": "Code d'honneur", + "terms.of.service": "Conditions générales du service", + "registration.username.suggestion.label": "Suggéré :", + "did.you.mean.alert.text": "Vouliez-vous dire", + "register.page.terms.of.service.and.honor.code": "En créant un compte, vous acceptez le {tosAndHonorCode} et vous reconnaissez que {platformName} et chaque\n membre peut traiter vos données personnelles conformément à la {privacyPolicy}.", + "register.page.honor.code": "J'accepte le {tosAndHonorCode} {platformName}", + "register.page.terms.of.service": "J'accepte les {termsOfService} {platformName}", + "sign.in": "Connexion", + "reset.password.page.title": "Réinitialiser le mot de passe | {siteName}", + "reset.password": "Réinitialiser le mot de passe", + "reset.password.page.instructions": "Saisir et confirmer votre nouveau mot de passe.", + "new.password.label": "Nouveau mot de passe", + "confirm.password.label": "Confirmer le mot de passe", + "passwords.do.not.match": "Les mots de passe ne correspondent pas", + "confirm.your.password": "Confirmer votre mot de passe", + "reset.password.failure.heading": "Nous n'avons pas pu réinitialiser votre mot de passe.", + "reset.password.form.submission.error": "Veuillez vérifier vos réponses et réessayer.", + "reset.server.rate.limit.error": "Trop de demandes.", + "reset.password.success.heading": "Réinitialisation du mot de passe complétée.", + "reset.password.success": "Votre mot de passe a été réinitialisé. Connectez-vous à votre compte.", + "rate.limit.error": "Une erreur s'est produite en raison d'un trop grand nombre de demandes. Veuillez réessayer après un certain temps." +} \ No newline at end of file diff --git a/src/i18n/messages/it.json b/src/i18n/messages/it.json new file mode 100644 index 00000000..e612d512 --- /dev/null +++ b/src/i18n/messages/it.json @@ -0,0 +1,159 @@ +{ + "start.learning": "Start learning", + "with.site.name": "with {siteName}", + "complete.your.profile.1": "Complete", + "complete.your.profile.2": "your profile", + "welcome.to.platform": "Welcome to {siteName}, {username}!", + "institution.login.page.sub.heading": "Choose your institution from the list below", + "logistration.sign.in": "Sign in", + "logistration.register": "Register", + "enterprisetpa.title.heading": "Would you like to sign in using your {providerName} credentials?", + "enterprisetpa.login.button.text": "Show me other ways to sign in or register", + "sso.sign.in.with": "Sign in with {providerName}", + "sso.create.account.using": "Create account using {providerName}", + "show.password": "Show password", + "hide.password": "Hide password", + "one.letter": "1 letter", + "one.number": "1 number", + "eight.characters": "8 characters", + "password.sr.only.helping.text": "Password must contain at least 8 characters, at least one letter, and at least one number", + "tpa.alert.heading": "Almost done!", + "login.third.party.auth.account.not.linked": "You have successfully signed into {currentProvider}, but your {currentProvider} account does not have a linked {platformName} account. To link your accounts, sign in now using your {platformName} password.", + "register.third.party.auth.account.not.linked": "You've successfully signed into {currentProvider}! We just need a little more information before you start learning with {platformName}.", + "registration.using.tpa.form.heading": "Finish creating your account", + "error.notfound.message": "The page you're looking for is unavailable or there's an error in the URL. Please check the URL and try again.", + "forgot.password.confirmation.message": "We sent an email to {email} with instructions to reset your password.\n If you do not receive a password reset message after 1 minute, verify that you entered\n the correct email address, or check your spam folder. If you need further assistance, {supportLink}.", + "forgot.password.page.title": "Forgot Password | {siteName}", + "forgot.password.page.heading": "Reset password", + "forgot.password.page.instructions": "Please enter your email address below and we will send you an email with instructions on how to reset your password.", + "forgot.password.page.invalid.email.message": "Enter a valid email address", + "forgot.password.page.email.field.label": "Email", + "forgot.password.page.submit.button": "Submit", + "forgot.password.error.alert.title.": "We were unable to contact you.", + "forgot.password.error.message.title": "An error occurred.", + "forgot.password.request.in.progress.message": "Your previous request is in progress, please try again in a few moments.", + "forgot.password.empty.email.field.error": "Enter your email", + "forgot.password.email.help.text": "The email address you used to register with {platformName}", + "confirmation.message.title": "Check your email", + "confirmation.support.link": "contact technical support", + "need.help.sign.in.text": "Need help signing in?", + "additional.help.text": "For additional help, contact {platformName} support at ", + "sign.in.text": "Sign in", + "extend.field.errors": "{emailError} below.", + "invalid.token.heading": "Invalid password reset link", + "invalid.token.error.message": "This password reset link is invalid. It may have been used already. Enter your email below to receive a new link.", + "token.validation.rate.limit.error.heading": "Too many requests", + "token.validation.rate.limit.error": "An error has occurred because of too many requests. Please try again after some time.", + "token.validation.internal.sever.error.heading": "Token validation failure", + "token.validation.internal.sever.error": "An error has occurred. Try refreshing the page, or check your internet connection.", + "internal.server.error": "An error has occurred. Try refreshing the page, or check your internet connection.", + "account.activation.error.message": "Something went wrong, please {supportLink} to resolve this issue.", + "login.inactive.user.error": "In order to sign in, you need to activate your account.{lineBreak}\n {lineBreak}We just sent an activation link to {email}. If you do not receive an email,\n check your spam folders or {supportLink}.", + "allowed.domain.login.error": "As {allowedDomain} user, You must login with your {allowedDomain} {tpaLink}.", + "login.incorrect.credentials.error.attempts.text.1": "The username, email or password you entered is incorrect. You have {remainingAttempts} more sign in\n attempts before your account is temporarily locked.", + "login.incorrect.credentials.error.attempts.text.2": "If you've forgotten your password, {resetLink}", + "account.locked.out.message.2": "To be on the safe side, you can {resetLink} before trying again.", + "login.incorrect.credentials.error.with.reset.link": "The username, email, or password you entered is incorrect. Please try again or {resetLink}.", + "login.page.title": "Login | {siteName}", + "login.user.identity.label": "Username or email", + "login.password.label": "Password", + "sign.in.button": "Sign in", + "forgot.password": "Forgot password", + "institution.login.button": "Institution/campus credentials", + "institution.login.page.title": "Sign in with institution/campus credentials", + "login.other.options.heading": "Or sign in with:", + "non.compliant.password.title": "We recently changed our password requirements", + "non.compliant.password.message": "Your current password does not meet the new security requirements. We just sent a password-reset message to the email address associated with this account. Thank you for helping us keep your data safe.", + "account.locked.out.message.1": "To protect your account, it's been temporarily locked. Try again in 30 minutes.", + "enterprise.login.btn.text": "Company or school credentials", + "username.or.email.format.validation.less.chars.message": "Username or email must have at least 3 characters.", + "email.validation.message": "Enter your username or email", + "password.validation.message": "Password criteria has not been met", + "account.activation.success.message.title": "Success! You have activated your account.", + "account.activation.success.message": "You will now receive email updates and alerts from us related to the courses you are enrolled in. Sign in to continue.", + "account.activation.info.message": "This account has already been activated.", + "account.activation.error.message.title": "Your account could not be activated", + "account.activation.support.link": "contact support", + "account.confirmation.success.message.title": "Success! You have confirmed your email.", + "account.confirmation.success.message": "Sign in to continue.", + "account.confirmation.info.message": "This email has already been confirmed.", + "account.confirmation.error.message.title": "Your email could not be confirmed", + "tpa.account.link": "{provider} account", + "internal.server.error.message": "An error has occurred. Try refreshing the page, or check your internet connection.", + "login.rate.limit.reached.message": "Too many failed login attempts. Try again later.", + "login.failure.header.title": "We couldn't sign you in.", + "contact.support.link": "contact {platformName} support", + "login.incorrect.credentials.error": "The username, email, or password you entered is incorrect. Please try again.", + "login.form.invalid.error.message": "Please fill in the fields below.", + "login.incorrect.credentials.error.reset.link.text": "reset your password", + "login.incorrect.credentials.error.before.account.blocked.text": "click here to reset it.", + "password.security.nudge.title": "Password security", + "password.security.block.title": "Password change required", + "password.security.nudge.body": "Our system detected that your password is vulnerable. We recommend you change it so that your account stays secure.", + "password.security.block.body": "Our system detected that your password is vulnerable. Change your password so that your account stays secure.", + "password.security.close.button": "Close", + "password.security.redirect.to.reset.password.button": "Reset your password", + "progressive.profiling.page.title": "Optional Fields | {siteName}", + "progressive.profiling.page.heading": "A few questions for you will help us get smarter.", + "optional.fields.information.link": "Learn more about how we use this information.", + "optional.fields.submit.button": "Submit", + "optional.fields.skip.button": "Skip for now", + "continue.to.platform": "Continue to {platformName}", + "modal.title": "Thanks for letting us know.", + "modal.description": "You can complete your profile in settings at any time if you change your mind.", + "welcome.page.error.heading": "We couldn't update your profile", + "welcome.page.error.message": "An error occurred. You can complete your profile in settings at any time.", + "register.page.title": "Register | {siteName}", + "registration.fullname.label": "Full name", + "registration.email.label": "Email", + "registration.username.label": "Public username", + "registration.password.label": "Password", + "registration.country.label": "Country/Region", + "registration.opt.in.label": "I agree that {siteName} may send me marketing messages.", + "help.text.name": "This name will be used by any certificates that you earn.", + "help.text.username.1": "The name that will identify you in your courses.", + "help.text.username.2": "This can not be changed later.", + "help.text.email": "For account activation and important updates", + "create.account.for.free.button": "Create an account for free", + "registration.other.options.heading": "Or register with:", + "register.institution.login.button": "Institution/campus credentials", + "register.institution.login.page.title": "Register with institution/campus credentials", + "empty.name.field.error": "Enter your full name", + "empty.email.field.error": "Enter your email", + "empty.username.field.error": "Username must be between 2 and 30 characters", + "empty.password.field.error": "Password criteria has not been met", + "empty.country.field.error": "Select your country or region of residence", + "email.do.not.match": "The email addresses do not match.", + "email.invalid.format.error": "Enter a valid email address", + "username.validation.message": "Username must be between 2 and 30 characters", + "name.validation.message": "Enter a valid name", + "username.format.validation.message": "Usernames can only contain letters (A-Z, a-z), numerals (0-9), underscores (_), and hyphens (-). Usernames cannot contain spaces", + "registration.request.failure.header": "We couldn't create your account.", + "registration.empty.form.submission.error": "Please check your responses and try again.", + "registration.request.server.error": "An error has occurred. Try refreshing the page, or check your internet connection.", + "registration.rate.limit.error": "Too many failed registration attempts. Try again later.", + "registration.tpa.session.expired": "Registration using {provider} has timed out.", + "terms.of.service.and.honor.code": "Terms of Service and Honor Code", + "privacy.policy": "Privacy Policy", + "honor.code": "Honor Code", + "terms.of.service": "Terms of Service", + "registration.username.suggestion.label": "Suggested:", + "did.you.mean.alert.text": "Did you mean", + "register.page.terms.of.service.and.honor.code": "By creating an account, you agree to the {tosAndHonorCode} and you acknowledge that {platformName} and each\n Member process your personal data in accordance with the {privacyPolicy}.", + "register.page.honor.code": "I agree to the {platformName} {tosAndHonorCode}", + "register.page.terms.of.service": "I agree to the {platformName} {termsOfService}", + "sign.in": "Sign in", + "reset.password.page.title": "Reset Password | {siteName}", + "reset.password": "Reset password", + "reset.password.page.instructions": "Enter and confirm your new password.", + "new.password.label": "New password", + "confirm.password.label": "Confirm password", + "passwords.do.not.match": "Passwords do not match", + "confirm.your.password": "Confirm your password", + "reset.password.failure.heading": "We couldn't reset your password.", + "reset.password.form.submission.error": "Please check your responses and try again.", + "reset.server.rate.limit.error": "Too many requests.", + "reset.password.success.heading": "Password reset complete.", + "reset.password.success": "Your password has been reset. Sign in to your account.", + "rate.limit.error": "An error has occurred because of too many requests. Please try again after some time." +} \ No newline at end of file diff --git a/src/i18n/messages/pt.json b/src/i18n/messages/pt.json new file mode 100644 index 00000000..e612d512 --- /dev/null +++ b/src/i18n/messages/pt.json @@ -0,0 +1,159 @@ +{ + "start.learning": "Start learning", + "with.site.name": "with {siteName}", + "complete.your.profile.1": "Complete", + "complete.your.profile.2": "your profile", + "welcome.to.platform": "Welcome to {siteName}, {username}!", + "institution.login.page.sub.heading": "Choose your institution from the list below", + "logistration.sign.in": "Sign in", + "logistration.register": "Register", + "enterprisetpa.title.heading": "Would you like to sign in using your {providerName} credentials?", + "enterprisetpa.login.button.text": "Show me other ways to sign in or register", + "sso.sign.in.with": "Sign in with {providerName}", + "sso.create.account.using": "Create account using {providerName}", + "show.password": "Show password", + "hide.password": "Hide password", + "one.letter": "1 letter", + "one.number": "1 number", + "eight.characters": "8 characters", + "password.sr.only.helping.text": "Password must contain at least 8 characters, at least one letter, and at least one number", + "tpa.alert.heading": "Almost done!", + "login.third.party.auth.account.not.linked": "You have successfully signed into {currentProvider}, but your {currentProvider} account does not have a linked {platformName} account. To link your accounts, sign in now using your {platformName} password.", + "register.third.party.auth.account.not.linked": "You've successfully signed into {currentProvider}! We just need a little more information before you start learning with {platformName}.", + "registration.using.tpa.form.heading": "Finish creating your account", + "error.notfound.message": "The page you're looking for is unavailable or there's an error in the URL. Please check the URL and try again.", + "forgot.password.confirmation.message": "We sent an email to {email} with instructions to reset your password.\n If you do not receive a password reset message after 1 minute, verify that you entered\n the correct email address, or check your spam folder. If you need further assistance, {supportLink}.", + "forgot.password.page.title": "Forgot Password | {siteName}", + "forgot.password.page.heading": "Reset password", + "forgot.password.page.instructions": "Please enter your email address below and we will send you an email with instructions on how to reset your password.", + "forgot.password.page.invalid.email.message": "Enter a valid email address", + "forgot.password.page.email.field.label": "Email", + "forgot.password.page.submit.button": "Submit", + "forgot.password.error.alert.title.": "We were unable to contact you.", + "forgot.password.error.message.title": "An error occurred.", + "forgot.password.request.in.progress.message": "Your previous request is in progress, please try again in a few moments.", + "forgot.password.empty.email.field.error": "Enter your email", + "forgot.password.email.help.text": "The email address you used to register with {platformName}", + "confirmation.message.title": "Check your email", + "confirmation.support.link": "contact technical support", + "need.help.sign.in.text": "Need help signing in?", + "additional.help.text": "For additional help, contact {platformName} support at ", + "sign.in.text": "Sign in", + "extend.field.errors": "{emailError} below.", + "invalid.token.heading": "Invalid password reset link", + "invalid.token.error.message": "This password reset link is invalid. It may have been used already. Enter your email below to receive a new link.", + "token.validation.rate.limit.error.heading": "Too many requests", + "token.validation.rate.limit.error": "An error has occurred because of too many requests. Please try again after some time.", + "token.validation.internal.sever.error.heading": "Token validation failure", + "token.validation.internal.sever.error": "An error has occurred. Try refreshing the page, or check your internet connection.", + "internal.server.error": "An error has occurred. Try refreshing the page, or check your internet connection.", + "account.activation.error.message": "Something went wrong, please {supportLink} to resolve this issue.", + "login.inactive.user.error": "In order to sign in, you need to activate your account.{lineBreak}\n {lineBreak}We just sent an activation link to {email}. If you do not receive an email,\n check your spam folders or {supportLink}.", + "allowed.domain.login.error": "As {allowedDomain} user, You must login with your {allowedDomain} {tpaLink}.", + "login.incorrect.credentials.error.attempts.text.1": "The username, email or password you entered is incorrect. You have {remainingAttempts} more sign in\n attempts before your account is temporarily locked.", + "login.incorrect.credentials.error.attempts.text.2": "If you've forgotten your password, {resetLink}", + "account.locked.out.message.2": "To be on the safe side, you can {resetLink} before trying again.", + "login.incorrect.credentials.error.with.reset.link": "The username, email, or password you entered is incorrect. Please try again or {resetLink}.", + "login.page.title": "Login | {siteName}", + "login.user.identity.label": "Username or email", + "login.password.label": "Password", + "sign.in.button": "Sign in", + "forgot.password": "Forgot password", + "institution.login.button": "Institution/campus credentials", + "institution.login.page.title": "Sign in with institution/campus credentials", + "login.other.options.heading": "Or sign in with:", + "non.compliant.password.title": "We recently changed our password requirements", + "non.compliant.password.message": "Your current password does not meet the new security requirements. We just sent a password-reset message to the email address associated with this account. Thank you for helping us keep your data safe.", + "account.locked.out.message.1": "To protect your account, it's been temporarily locked. Try again in 30 minutes.", + "enterprise.login.btn.text": "Company or school credentials", + "username.or.email.format.validation.less.chars.message": "Username or email must have at least 3 characters.", + "email.validation.message": "Enter your username or email", + "password.validation.message": "Password criteria has not been met", + "account.activation.success.message.title": "Success! You have activated your account.", + "account.activation.success.message": "You will now receive email updates and alerts from us related to the courses you are enrolled in. Sign in to continue.", + "account.activation.info.message": "This account has already been activated.", + "account.activation.error.message.title": "Your account could not be activated", + "account.activation.support.link": "contact support", + "account.confirmation.success.message.title": "Success! You have confirmed your email.", + "account.confirmation.success.message": "Sign in to continue.", + "account.confirmation.info.message": "This email has already been confirmed.", + "account.confirmation.error.message.title": "Your email could not be confirmed", + "tpa.account.link": "{provider} account", + "internal.server.error.message": "An error has occurred. Try refreshing the page, or check your internet connection.", + "login.rate.limit.reached.message": "Too many failed login attempts. Try again later.", + "login.failure.header.title": "We couldn't sign you in.", + "contact.support.link": "contact {platformName} support", + "login.incorrect.credentials.error": "The username, email, or password you entered is incorrect. Please try again.", + "login.form.invalid.error.message": "Please fill in the fields below.", + "login.incorrect.credentials.error.reset.link.text": "reset your password", + "login.incorrect.credentials.error.before.account.blocked.text": "click here to reset it.", + "password.security.nudge.title": "Password security", + "password.security.block.title": "Password change required", + "password.security.nudge.body": "Our system detected that your password is vulnerable. We recommend you change it so that your account stays secure.", + "password.security.block.body": "Our system detected that your password is vulnerable. Change your password so that your account stays secure.", + "password.security.close.button": "Close", + "password.security.redirect.to.reset.password.button": "Reset your password", + "progressive.profiling.page.title": "Optional Fields | {siteName}", + "progressive.profiling.page.heading": "A few questions for you will help us get smarter.", + "optional.fields.information.link": "Learn more about how we use this information.", + "optional.fields.submit.button": "Submit", + "optional.fields.skip.button": "Skip for now", + "continue.to.platform": "Continue to {platformName}", + "modal.title": "Thanks for letting us know.", + "modal.description": "You can complete your profile in settings at any time if you change your mind.", + "welcome.page.error.heading": "We couldn't update your profile", + "welcome.page.error.message": "An error occurred. You can complete your profile in settings at any time.", + "register.page.title": "Register | {siteName}", + "registration.fullname.label": "Full name", + "registration.email.label": "Email", + "registration.username.label": "Public username", + "registration.password.label": "Password", + "registration.country.label": "Country/Region", + "registration.opt.in.label": "I agree that {siteName} may send me marketing messages.", + "help.text.name": "This name will be used by any certificates that you earn.", + "help.text.username.1": "The name that will identify you in your courses.", + "help.text.username.2": "This can not be changed later.", + "help.text.email": "For account activation and important updates", + "create.account.for.free.button": "Create an account for free", + "registration.other.options.heading": "Or register with:", + "register.institution.login.button": "Institution/campus credentials", + "register.institution.login.page.title": "Register with institution/campus credentials", + "empty.name.field.error": "Enter your full name", + "empty.email.field.error": "Enter your email", + "empty.username.field.error": "Username must be between 2 and 30 characters", + "empty.password.field.error": "Password criteria has not been met", + "empty.country.field.error": "Select your country or region of residence", + "email.do.not.match": "The email addresses do not match.", + "email.invalid.format.error": "Enter a valid email address", + "username.validation.message": "Username must be between 2 and 30 characters", + "name.validation.message": "Enter a valid name", + "username.format.validation.message": "Usernames can only contain letters (A-Z, a-z), numerals (0-9), underscores (_), and hyphens (-). Usernames cannot contain spaces", + "registration.request.failure.header": "We couldn't create your account.", + "registration.empty.form.submission.error": "Please check your responses and try again.", + "registration.request.server.error": "An error has occurred. Try refreshing the page, or check your internet connection.", + "registration.rate.limit.error": "Too many failed registration attempts. Try again later.", + "registration.tpa.session.expired": "Registration using {provider} has timed out.", + "terms.of.service.and.honor.code": "Terms of Service and Honor Code", + "privacy.policy": "Privacy Policy", + "honor.code": "Honor Code", + "terms.of.service": "Terms of Service", + "registration.username.suggestion.label": "Suggested:", + "did.you.mean.alert.text": "Did you mean", + "register.page.terms.of.service.and.honor.code": "By creating an account, you agree to the {tosAndHonorCode} and you acknowledge that {platformName} and each\n Member process your personal data in accordance with the {privacyPolicy}.", + "register.page.honor.code": "I agree to the {platformName} {tosAndHonorCode}", + "register.page.terms.of.service": "I agree to the {platformName} {termsOfService}", + "sign.in": "Sign in", + "reset.password.page.title": "Reset Password | {siteName}", + "reset.password": "Reset password", + "reset.password.page.instructions": "Enter and confirm your new password.", + "new.password.label": "New password", + "confirm.password.label": "Confirm password", + "passwords.do.not.match": "Passwords do not match", + "confirm.your.password": "Confirm your password", + "reset.password.failure.heading": "We couldn't reset your password.", + "reset.password.form.submission.error": "Please check your responses and try again.", + "reset.server.rate.limit.error": "Too many requests.", + "reset.password.success.heading": "Password reset complete.", + "reset.password.success": "Your password has been reset. Sign in to your account.", + "rate.limit.error": "An error has occurred because of too many requests. Please try again after some time." +} \ No newline at end of file