diff --git a/api-server/server/boot/authentication.js b/api-server/server/boot/authentication.js index 19405113ca..8e8c65aa40 100644 --- a/api-server/server/boot/authentication.js +++ b/api-server/server/boot/authentication.js @@ -180,10 +180,7 @@ function createGetPasswordlessAuth(app) { // update user and log them in .map(user => user.loginByRequest(req, res)) .do(() => { - req.flash( - 'success', - 'Success! You have signed in to your account. Happy Coding!' - ); + req.flash('success', 'flash.signin-success'); return res.redirectWithFlash(`${origin}/learn`); }) .subscribe(() => {}, next) diff --git a/api-server/server/boot/certificate.js b/api-server/server/boot/certificate.js index caf54a02b1..e268168cdc 100644 --- a/api-server/server/boot/certificate.js +++ b/api-server/server/boot/certificate.js @@ -283,7 +283,7 @@ function createVerifyCert(certTypeIds, app) { if (user[certType]) { return Observable.just({ type: 'info', - message: 'flash.msg-27', + message: 'flash.already-claimed', variables: { name: certName } }); } @@ -294,7 +294,7 @@ function createVerifyCert(certTypeIds, app) { reportError(`Error claiming ${certName}`); return Observable.just({ type: 'danger', - message: 'flash.msg-29', + message: 'flash.wrong-name', variables: { name: certName } }); } @@ -303,7 +303,7 @@ function createVerifyCert(certTypeIds, app) { if (!canClaim(tests, user.completedChallenges)) { return Observable.just({ type: 'info', - message: 'flash.msg-26', + message: 'flash.incomplete-steps', variables: { name: certName } }); } @@ -323,7 +323,7 @@ function createVerifyCert(certTypeIds, app) { if (!user.name) { return Observable.just({ type: 'info', - message: 'flash.msg-25' + message: 'flash.name-needed' }); } // set here so sendCertifiedEmail works properly @@ -351,7 +351,7 @@ function createVerifyCert(certTypeIds, app) { log('Certificates updated'); return { type: 'success', - message: 'flash.msg-28', + message: 'flash.cert-claim-success', variables: { username: user.username, name: certName @@ -417,7 +417,7 @@ function createShowCert(app) { messages: [ { type: 'info', - message: 'flash.msg-31', + message: 'flash.username-not-found', variables: { username: username } } ] @@ -430,7 +430,7 @@ function createShowCert(app) { messages: [ { type: 'info', - message: 'flash.msg-32' + message: 'flash.add-name' } ] }); @@ -441,7 +441,7 @@ function createShowCert(app) { messages: [ { type: 'info', - message: 'flash.msg-33' + message: 'flash.not-eligible' } ] }); @@ -452,7 +452,7 @@ function createShowCert(app) { messages: [ { type: 'info', - message: 'flash.msg-34', + message: 'flash.profile-private', variables: { username: username } } ] @@ -464,7 +464,7 @@ function createShowCert(app) { messages: [ { type: 'info', - message: 'flash.msg-35', + message: 'flash.certs-private', variables: { username: username } } ] @@ -476,7 +476,7 @@ function createShowCert(app) { messages: [ { type: 'info', - message: 'flash.msg-36', + message: 'flash.not-honest', variables: { username: username } } ] @@ -524,7 +524,7 @@ function createShowCert(app) { messages: [ { type: 'info', - message: 'flash.msg-37', + message: 'flash.user-not-certified', variables: { username: username, cert: certText[certType] } } ] diff --git a/api-server/server/boot/settings.js b/api-server/server/boot/settings.js index cbb5868b5e..c844d3b183 100644 --- a/api-server/server/boot/settings.js +++ b/api-server/server/boot/settings.js @@ -53,12 +53,12 @@ export default function settingsController(app) { const standardErrorMessage = { type: 'danger', - message: 'flash.msg-9' + message: 'flash.wrong-updating' }; const standardSuccessMessage = { type: 'success', - message: 'flash.msg-10' + message: 'flash.updated-preferences' }; const createStandardHandler = (req, res, next) => err => { @@ -195,7 +195,7 @@ function createUpdateMyUsername(app) { if (username === user.username) { return res.json({ type: 'info', - message: 'flash.msg-16' + message: 'flash.username-used' }); } const validation = isValidUsername(username); @@ -212,7 +212,7 @@ function createUpdateMyUsername(app) { if (exists) { return res.json({ type: 'info', - message: 'flash.msg-17' + message: 'flash.username-taken' }); } @@ -224,7 +224,7 @@ function createUpdateMyUsername(app) { return res.status(200).json({ type: 'success', - message: `flash.msg-18`, + message: `flash.username-updated`, variables: { username: username } }); }); diff --git a/api-server/server/boot/user.js b/api-server/server/boot/user.js index 1a102b83d9..8e567fd18f 100644 --- a/api-server/server/boot/user.js +++ b/api-server/server/boot/user.js @@ -216,7 +216,7 @@ function createPostReportUserProfile(app) { if (!username || !report || report === '') { return res.json({ type: 'danger', - message: 'flash.msg-44' + message: 'flash.provide-username' }); } return Email.send$( @@ -247,7 +247,7 @@ function createPostReportUserProfile(app) { return res.json({ type: 'info', - message: 'flash.msg-45', + message: 'flash.report-sent', variables: { email: user.email } }); } diff --git a/api-server/server/component-passport.js b/api-server/server/component-passport.js index 0ed09652cb..891592b3e8 100644 --- a/api-server/server/component-passport.js +++ b/api-server/server/component-passport.js @@ -118,12 +118,7 @@ export const createPassportCallbackAuthenticator = (strategy, config) => ( const { provider } = config; if (accessToken && accessToken.id) { if (provider === 'auth0') { - req.flash( - 'success', - dedent` - Success! You have signed in to your account. Happy Coding! - ` - ); + req.flash('success', 'flash.signin-success'); } else if (user.email) { req.flash( 'info', diff --git a/client/i18n/locales/chinese/translations.json b/client/i18n/locales/chinese/translations.json index fd47da8ed9..e439922ec5 100644 --- a/client/i18n/locales/chinese/translations.json +++ b/client/i18n/locales/chinese/translations.json @@ -414,63 +414,63 @@ "last-page": "访问最后一页" }, "flash": { - "msg-1": "申请认证之前,你必须先接受我们的《学术诚信条例》", - "msg-2": "出现了一些奇怪的情况。如果再出现这种情况,请考虑在 https://github.com/freeCodeCamp/freeCodeCamp/issues/new 提 issue", - "msg-3": "有些不对劲。已生成报告,通知 freeCodeCamp.org 团队。", - "msg-4": "出了点问题,请检查并重试。", - "msg-5": "你的账号已被成功删除", - "msg-6": "你的进度已被重置", - "msg-7": "你无权继续访问", - "msg-8": "我们未找到你搜索的信息。请检查并重试。", - "msg-9": "更新你的账号出了点问题。请检查并重试。", - "msg-10": "我们已更新你的偏好设置。", - "msg-11": "邮箱格式无效", - "msg-12": "currentChallengeId 是无效的挑战 ID", - "msg-13": "主题无效", - "msg-14": "主题已设置", - "msg-15": "你的主题已更新!", - "msg-16": "用户名已和此账号关联", - "msg-17": "用户名已和别的账号关联", - "msg-18": "我们已更新你的用户名为 {{username}}", - "msg-19": "你的账号未退出,请稍后重试。", - "msg-20": "链接中的邮箱格式不正确", - "msg-21": "有点不对劲。请刷新链接再登录/注册", - "msg-22": "你点击的链接似乎已过期,请刷新链接再登录", - "msg-23": "成功了!你已经登录账号。", - "msg-24": "鉴于隐私原因,我们已取消社交账号授权。我们建议你下次使用邮箱:{{email}} 登录。", - "msg-25": "我们需要将你的名字放在认证证书上。在你的账号设置中添加名字,点击保存按钮。然后我们会给你发布认证。", - "msg-26": "你似乎未完成必要的步骤。请完成必做项目以申请 {{name}} 认证。", - "msg-27": "你似乎已申请 {{name}} 认证", - "msg-28": "@{{username}},你已成功申请 {{name}} 认证!代表 freeCodeCamp.org 团队恭喜你!", - "msg-29": "{{name}} 验证有点问题,请重试。如果你继续收到这个错误提示,你可以发邮件至 support@freeCodeCamp.org,获得帮助", - "msg-30": "申请 {{certName}} 认证出错", - "msg-31": "我们未找到用户名为 \"{{username}}\" 的用户", - "msg-32": "这个用户需要在账号中添加名字,以便其他人查看该用户的认证。", - "msg-33": "这个用户目前不符合 freeCodeCamp.org 认证的条件。", - "msg-34": "{{username}} 已将其作品集设置为仅自己可见。用户需要将作品集设置为公开,其他人才能查看该用户的认证。", - "msg-35": "{{username}} 已将其作品集设置为仅自己可见。用户需要将认证设置为公开,其他人才能查看该用户的认证。", - "msg-36": "{{username}} 未接受我们的《学术诚信条例》。", - "msg-37": "用户 {{username}} 似乎未获得 {{cert}} 认证", - "msg-38": "这似乎不是一个有效的提交", - "msg-39": "你未提供有效链接,我们无法检查你的作品。", - "msg-40": "未发现社交账号", - "msg-41": "无效的社交账号", - "msg-42": "未链接 {{website}} 账号", - "msg-43": "你已成功取消 {{website}} 链接", - "msg-44": "检查你是否提供用户名和报告", - "msg-45": "已通过 {{email}} 向团队发送副本报告" + "honest-first": "申请认证之前,你必须先接受我们的《学术诚信条例》", + "really-weird": "出现了一些奇怪的情况。如果再出现这种情况,请考虑在 https://github.com/freeCodeCamp/freeCodeCamp/issues/new 提 issue", + "not-right": "有些不对劲。已生成报告,通知 freeCodeCamp.org 团队。", + "went-wrong": "出了点问题,请检查并重试。", + "account-deleted": "你的账号已被成功删除", + "progress-reset": "你的进度已被重置", + "not-authorized": "你无权继续访问", + "could-not-find": "我们未找到你搜索的信息。请检查并重试。", + "wrong-updating": "更新你的账号出了点问题。请检查并重试。", + "updated-preferences": "我们已更新你的偏好设置。", + "email-invalid": "邮箱格式无效", + "bad-challengeId": "currentChallengeId 是无效的挑战 ID", + "theme-invalid": "主题无效", + "theme-set": "主题已设置", + "theme-updated": "你的主题已更新!", + "username-used": "用户名已和此账号关联", + "username-taken": "用户名已和别的账号关联", + "username-updated": "我们已更新你的用户名为 {{username}}", + "could-not-logout": "你的账号未退出,请稍后重试。", + "email-encoded-wrong": "链接中的邮箱格式不正确", + "oops-not-right": "有点不对劲。请刷新链接再登录/注册", + "expired-link": "你点击的链接似乎已过期,请刷新链接再登录", + "signin-success": "成功了!你已经登录账号。", + "social-auth-gone": "鉴于隐私原因,我们已取消社交账号授权。我们建议你下次使用邮箱:{{email}} 登录。", + "name-needed": "我们需要将你的名字放在认证证书上。在你的账号设置中添加名字,点击保存按钮。然后我们会给你发布认证。", + "incomplete-steps": "你似乎未完成必要的步骤。请完成必做项目以申请 {{name}} 认证。", + "already-claimed": "你似乎已申请 {{name}} 认证", + "cert-claim-success": "@{{username}},你已成功申请 {{name}} 认证!代表 freeCodeCamp.org 团队恭喜你!", + "wrong-name": "{{name}} 验证有点问题,请重试。如果你继续收到这个错误提示,你可以发邮件至 support@freeCodeCamp.org,获得帮助", + "error-claiming": "申请 {{certName}} 认证出错", + "username-not-found": "我们未找到用户名为 \"{{username}}\" 的用户", + "add-name": "这个用户需要在账号中添加名字,以便其他人查看该用户的认证。", + "not-eligible": "这个用户目前不符合 freeCodeCamp.org 认证的条件。", + "profile-private": "{{username}} 已将其作品集设置为仅自己可见。用户需要将作品集设置为公开,其他人才能查看该用户的认证。", + "certs-private": "{{username}} 已将其作品集设置为仅自己可见。用户需要将认证设置为公开,其他人才能查看该用户的认证。", + "not-honest": "{{username}} 未接受我们的《学术诚信条例》。", + "user-not-certified": "用户 {{username}} 似乎未获得 {{cert}} 认证", + "invalid-challenge": "这似乎不是一个有效的提交", + "no-links-provided": "你未提供有效链接,我们无法检查你的作品。", + "no-social": "未发现社交账号", + "invalid-social": "无效的社交账号", + "no-account": "未链接 {{website}} 账号", + "unlink-success": "你已成功取消 {{website}} 链接", + "provide-username": "检查你是否提供用户名和报告", + "report-sent": "已通过 {{email}} 向团队发送副本报告" }, "validation": { - "msg-1": "字符数最多为 288 characters,你还可以输入 {{charsLeft}} 个字符", - "msg-2": "这个邮箱和你当前邮箱一样", - "msg-3": "我们无法验证你的邮箱,请确保填写正确", - "msg-4": "两个新邮箱必须相同", - "msg-5": "必须填写标题", - "msg-6": "标题太长", - "msg-7": "标题太短", - "msg-8": "我们无法验证你的 URL,请确保填写正确", - "msg-9": "URL 必须以 http 或 https 开头", - "msg-10": "URL 必须直接链接到图片文件", - "msg-11": "请使用有效的 URL" + "max-characters": "字符数最多为 288 characters,你还可以输入 {{charsLeft}} 个字符", + "same-email": "这个邮箱和你当前邮箱一样", + "invalid-email": "我们无法验证你的邮箱,请确保填写正确", + "email-mismatch": "两个新邮箱必须相同", + "title-required": "必须填写标题", + "title-short": "标题太长", + "title-long": "标题太短", + "invalid-url": "我们无法验证你的 URL,请确保填写正确", + "invalid-protocol": "URL 必须以 http 或 https 开头", + "url-not-image": "URL 必须直接链接到图片文件", + "use-valid-url": "请使用有效的 URL" } } diff --git a/client/i18n/locales/english/translations.json b/client/i18n/locales/english/translations.json index 248a782d22..870c6158b9 100644 --- a/client/i18n/locales/english/translations.json +++ b/client/i18n/locales/english/translations.json @@ -416,63 +416,63 @@ "last-page": "Go to last page" }, "flash": { - "msg-1": "To claim a certification, you must first accept our academic honesty policy", - "msg-2": "Something really weird happened, if it happens again, please consider raising an issue on https://github.com/freeCodeCamp/freeCodeCamp/issues/new", - "msg-3": "Something is not quite right. A report has been generated and the freeCodeCamp.org team have been notified", - "msg-4": "Something went wrong, please check and try again", - "msg-5": "Your account has been successfully deleted", - "msg-6": "Your progress has been reset", - "msg-7": "You are not authorized to continue on this route", - "msg-8": "We couldn't find what you were looking for. Please check and try again", - "msg-9": "Something went wrong updating your account. Please check and try again", - "msg-10": "We have updated your preferences", - "msg-11": "Email format is invalid", - "msg-12": "currentChallengeId is not a valid challenge ID", - "msg-13": "Theme is invalid", - "msg-14": "Theme already set", - "msg-15": "Your theme has been updated!", - "msg-16": "Username is already associated with this account", - "msg-17": "Username is already associated with a different account", - "msg-18": "We have updated your username to {{username}}", - "msg-19": "We could not log you out, please try again in a moment", - "msg-20": "The email encoded in the link is incorrectly formatted", - "msg-21": "Oops, something is not right, please request a fresh link to sign in / sign up", - "msg-22": "Looks like the link you clicked has expired, please request a fresh link, to sign in", - "msg-23": "Success! You have signed in to your account. Happy Coding!", - "msg-24": "We are moving away from social authentication for privacy reasons. Next time we recommend using your email address: {{email}} to sign in instead.", - "msg-25": "We need your name so we can put it on your certification. Add your name to your account settings and click the save button. Then we can issue your certification.", - "msg-26": "It looks like you have not completed the necessary steps. Please complete the required projects to claim the {{name}} Certification.", - "msg-27": "It looks like you already have claimed the {{name}} Certification", - "msg-28": "@{{username}}, you have successfully claimed the {{name}} Certification! Congratulations on behalf of the freeCodeCamp.org team!", - "msg-29": "Something went wrong with the verification of {{name}}, please try again. If you continue to receive this error, you can send a message to support@freeCodeCamp.org to get help.", - "msg-30": "Error claiming {{certName}}", - "msg-31": "We could not find a user with the username \"{{username}}\"", - "msg-32": "This user needs to add their name to their account in order for others to be able to view their certification.", - "msg-33": "This user is not eligible for freeCodeCamp.org certifications at this time.", - "msg-34": "{{username}} has chosen to make their portfolio private. They will need to make their portfolio public in order for others to be able to view their certification.", - "msg-35": "{{username}} has chosen to make their certifications private. They will need to make their certifications public in order for others to be able to view them.", - "msg-36": "{{username}} has not yet agreed to our Academic Honesty Pledge.", - "msg-37": "It looks like user {{username}} is not {{cert}} certified", - "msg-38": "That does not appear to be a valid challenge submission", - "msg-39": "You have not provided the valid links for us to inspect your work.", - "msg-40": "No social account found", - "msg-41": "Invalid social account", - "msg-42": "No {{website}} account associated", - "msg-43": "You've successfully unlinked your {{website}}", - "msg-44": "Check if you have provided a username and a report", - "msg-45": "A report was sent to the team with {{email}} in copy" + "honest-first": "To claim a certification, you must first accept our academic honesty policy", + "really-weird": "Something really weird happened, if it happens again, please consider raising an issue on https://github.com/freeCodeCamp/freeCodeCamp/issues/new", + "not-right": "Something is not quite right. A report has been generated and the freeCodeCamp.org team have been notified", + "went-wrong": "Something went wrong, please check and try again", + "account-deleted": "Your account has been successfully deleted", + "progress-reset": "Your progress has been reset", + "not-authorized": "You are not authorized to continue on this route", + "could-not-find": "We couldn't find what you were looking for. Please check and try again", + "wrong-updating": "Something went wrong updating your account. Please check and try again", + "updated-preferences": "We have updated your preferences", + "email-invalid": "Email format is invalid", + "bad-challengeId": "currentChallengeId is not a valid challenge ID", + "theme-invalid": "Theme is invalid", + "theme-set": "Theme already set", + "theme-updated": "Your theme has been updated!", + "username-used": "Username is already associated with this account", + "username-taken": "Username is already associated with a different account", + "username-updated": "We have updated your username to {{username}}", + "could-not-logout": "We could not log you out, please try again in a moment", + "email-encoded-wrong": "The email encoded in the link is incorrectly formatted", + "oops-not-right": "Oops, something is not right, please request a fresh link to sign in / sign up", + "expired-link": "Looks like the link you clicked has expired, please request a fresh link, to sign in", + "signin-success": "Success! You have signed in to your account. Happy Coding!", + "social-auth-gone": "We are moving away from social authentication for privacy reasons. Next time we recommend using your email address: {{email}} to sign in instead.", + "name-needed": "We need your name so we can put it on your certification. Add your name to your account settings and click the save button. Then we can issue your certification.", + "incomplete-steps": "It looks like you have not completed the necessary steps. Please complete the required projects to claim the {{name}} Certification.", + "already-claimed": "It looks like you already have claimed the {{name}} Certification", + "cert-claim-success": "@{{username}}, you have successfully claimed the {{name}} Certification! Congratulations on behalf of the freeCodeCamp.org team!", + "wrong-name": "Something went wrong with the verification of {{name}}, please try again. If you continue to receive this error, you can send a message to support@freeCodeCamp.org to get help.", + "error-claiming": "Error claiming {{certName}}", + "username-not-found": "We could not find a user with the username \"{{username}}\"", + "add-name": "This user needs to add their name to their account in order for others to be able to view their certification.", + "not-eligible": "This user is not eligible for freeCodeCamp.org certifications at this time.", + "profile-private": "{{username}} has chosen to make their portfolio private. They will need to make their portfolio public in order for others to be able to view their certification.", + "certs-private": "{{username}} has chosen to make their certifications private. They will need to make their certifications public in order for others to be able to view them.", + "not-honest": "{{username}} has not yet agreed to our Academic Honesty Pledge.", + "user-not-certified": "It looks like user {{username}} is not {{cert}} certified", + "invalid-challenge": "That does not appear to be a valid challenge submission", + "no-links-provided": "You have not provided the valid links for us to inspect your work.", + "no-social": "No social account found", + "invalid-social": "Invalid social account", + "no-account": "No {{website}} account associated", + "unlink-success": "You've successfully unlinked your {{website}}", + "provide-username": "Check if you have provided a username and a report", + "report-sent": "A report was sent to the team with {{email}} in copy" }, "validation": { - "msg-1": "There is a maximum limit of 288 characters, you have {{charsLeft}} left", - "msg-2": "This email is the same as your current email", - "msg-3": "We could not validate your email correctly, please ensure it is correct", - "msg-4": "Both new email addresses must be the same", - "msg-5": "A title is required", - "msg-6": "Title is too short", - "msg-7": "Title is too long", - "msg-8": "We could not validate your URL correctly, please ensure it is correct", - "msg-9": "URL must start with http or https", - "msg-10": "URL must link directly to an image file", - "msg-11": "Please use a valid URL" + "max-characters": "There is a maximum limit of 288 characters, you have {{charsLeft}} left", + "same-email": "This email is the same as your current email", + "invalid-email": "We could not validate your email correctly, please ensure it is correct", + "email-mismatch": "Both new email addresses must be the same", + "title-required": "A title is required", + "title-short": "Title is too short", + "title-long": "Title is too long", + "invalid-url": "We could not validate your URL correctly, please ensure it is correct", + "invalid-protocol": "URL must start with http or https", + "url-not-image": "URL must link directly to an image file", + "use-valid-url": "Please use a valid URL" } } diff --git a/client/i18n/locales/espanol/translations.json b/client/i18n/locales/espanol/translations.json index b6d7b6684e..db30050cf9 100644 --- a/client/i18n/locales/espanol/translations.json +++ b/client/i18n/locales/espanol/translations.json @@ -416,63 +416,63 @@ "last-page": "Ir a la última página" }, "flash": { - "msg-1": "Para reclamar una certificación, primero debes aceptar nuestra política de honestidad académica.", - "msg-2": "Algo realmente extraño sucedió. Si vuelve a ocurrir, considera hacer un reporte del problema en https://github.com/freeCodeCamp/freeCodeCamp/issues/new", - "msg-3": "Algo no está bien. Se ha generado un informe y se ha notificado al equipo de freeCodeCamp.org", - "msg-4": "Algo salió mal, verifica e intenta nuevamente", - "msg-5": "Tu cuenta ha sido eliminada con éxito", - "msg-6": "Tu progreso se ha restablecido", - "msg-7": "No estás autorizado a continuar en esta ruta", - "msg-8": "No pudimos encontrar lo que buscabas. Por favor revisa e intenta de nuevo", - "msg-9": "Se produjo un error al actualizar tu cuenta. Por favor revisa e intenta de nuevo", - "msg-10": "Hemos actualizado tus preferencias", - "msg-11": "El formato del correo electrónico no es válido", - "msg-12": "currentChallengeId no es un ID de desafío válido", - "msg-13": "El tema no es válido", - "msg-14": "Tema ya establecido", - "msg-15": "¡Tu tema ha sido actualizado!", - "msg-16": "El nombre de usuario ya está asociado a esta cuenta", - "msg-17": "El nombre de usuario ya está asociado a una cuenta diferente", - "msg-18": "Hemos actualizado tu nombre de usuario a {{username}}", - "msg-19": "No pudimos cerrar la sesión. Vuelve a intentarlo en un momento.", - "msg-20": "El correo electrónico codificado en el enlace tiene un formato incorrecto", - "msg-21": "¡uy!, algo no está bien, solicite un enlace nuevo para iniciar sesión / registrarse", - "msg-22": "Parece que el enlace en el que hiciste clic ha expirado, solicita un enlace nuevo para iniciar sesión", - "msg-23": "¡Éxito! Ha iniciado sesión en su cuenta. ¡Feliz día programando!", - "msg-24": "Nos estamos alejando de la autenticación social por razones de privacidad. La próxima vez, te recomendamos que utilices tu dirección de correo electrónico: {{email}} para iniciar sesión.", - "msg-25": "Necesitamos tu nombre para poder incluirlo en tu certificación. Agregue tu nombre a la configuración de tu cuenta y haz clic en el botón Guardar. Entonces podemos emitir tu certificación.", - "msg-26": "Parece que no haz completado los pasos necesarios. Completa los proyectos requeridos para reclamar la Certificación {{name}}", - "msg-27": "Parece que ya reclamó la Certificación {{name}}", - "msg-28": "@{{usernane}}, has reclamado con éxito el {{name}} Certificación! ¡Felicitaciones en nombre del equipo de freeCodeCamp.org!", - "msg-29": "Se produjo un error con la verificación de {{name}}. Vuelve a intentarlo. Si continúas recibiendo este error, puedes enviar un mensaje a support@freeCodeCamp.org para obtener ayuda.", - "msg-30": "Error al reclamar {{certName}}", - "msg-31": "No pudimos encontrar un usuario con el nombre de usuario \"{{username}}\"", - "msg-32": "Este usuario debe agregar su nombre a su cuenta para que otros puedan ver su certificación.", - "msg-33": "Este usuario no es elegible para las certificaciones de freeCodeCamp.org en este momento.", - "msg-34": "{{username}} ha elegido que su cartera sea privada. Deberán hacer pública su cartera para que otros puedan ver su certificación.", - "msg-35": "{{username}} ha optado por que sus certificaciones sean privadas. Deberán hacer públicas sus certificaciones para que otros puedan verlas.", - "msg-36": "{{username}} aún no está de acuerdo con nuestro Compromiso de Honestidad Académica.", - "msg-37": "Parece que el usuario {{username}} no está certificado por {{cert}}", - "msg-38": "Eso no parece ser un envío de desafío válido", - "msg-39": "No has proporcionado los enlaces válidos para que inspeccionemos tu trabajo.", - "msg-40": "No se encontró ninguna cuenta social", - "msg-41": "Cuenta social no válida", - "msg-42": "No hay cuenta de {{website}} asociada", - "msg-43": "Has desvinculado correctamente tu {{website}}", - "msg-44": "Comprueba si has proporcionado un nombre de usuario y un informe", - "msg-45": "Se envió un informe al equipo con {{email}} en copia" + "honest-first": "Para reclamar una certificación, primero debes aceptar nuestra política de honestidad académica.", + "really-weird": "Algo realmente extraño sucedió. Si vuelve a ocurrir, considera hacer un reporte del problema en https://github.com/freeCodeCamp/freeCodeCamp/issues/new", + "not-right": "Algo no está bien. Se ha generado un informe y se ha notificado al equipo de freeCodeCamp.org", + "went-wrong": "Algo salió mal, verifica e intenta nuevamente", + "account-deleted": "Tu cuenta ha sido eliminada con éxito", + "progress-reset": "Tu progreso se ha restablecido", + "not-authorized": "No estás autorizado a continuar en esta ruta", + "could-not-find": "No pudimos encontrar lo que buscabas. Por favor revisa e intenta de nuevo", + "wrong-updating": "Se produjo un error al actualizar tu cuenta. Por favor revisa e intenta de nuevo", + "updated-preferences": "Hemos actualizado tus preferencias", + "email-invalid": "El formato del correo electrónico no es válido", + "bad-challengeId": "currentChallengeId no es un ID de desafío válido", + "theme-invalid": "El tema no es válido", + "theme-set": "Tema ya establecido", + "theme-updated": "¡Tu tema ha sido actualizado!", + "username-used": "El nombre de usuario ya está asociado a esta cuenta", + "username-taken": "El nombre de usuario ya está asociado a una cuenta diferente", + "username-updated": "Hemos actualizado tu nombre de usuario a {{username}}", + "could-not-logout": "No pudimos cerrar la sesión. Vuelve a intentarlo en un momento.", + "email-encoded-wrong": "El correo electrónico codificado en el enlace tiene un formato incorrecto", + "oops-not-right": "¡uy!, algo no está bien, solicite un enlace nuevo para iniciar sesión / registrarse", + "expired-link": "Parece que el enlace en el que hiciste clic ha expirado, solicita un enlace nuevo para iniciar sesión", + "signin-success": "¡Éxito! Ha iniciado sesión en su cuenta. ¡Feliz día programando!", + "social-auth-gone": "Nos estamos alejando de la autenticación social por razones de privacidad. La próxima vez, te recomendamos que utilices tu dirección de correo electrónico: {{email}} para iniciar sesión.", + "name-needed": "Necesitamos tu nombre para poder incluirlo en tu certificación. Agregue tu nombre a la configuración de tu cuenta y haz clic en el botón Guardar. Entonces podemos emitir tu certificación.", + "incomplete-steps": "Parece que no haz completado los pasos necesarios. Completa los proyectos requeridos para reclamar la Certificación {{name}}", + "already-claimed": "Parece que ya reclamó la Certificación {{name}}", + "cert-claim-success": "@{{username}}, has reclamado con éxito el {{name}} Certificación! ¡Felicitaciones en nombre del equipo de freeCodeCamp.org!", + "wrong-name": "Se produjo un error con la verificación de {{name}}. Vuelve a intentarlo. Si continúas recibiendo este error, puedes enviar un mensaje a support@freeCodeCamp.org para obtener ayuda.", + "error-claiming": "Error al reclamar {{certName}}", + "username-not-found": "No pudimos encontrar un usuario con el nombre de usuario \"{{username}}\"", + "add-name": "Este usuario debe agregar su nombre a su cuenta para que otros puedan ver su certificación.", + "not-eligible": "Este usuario no es elegible para las certificaciones de freeCodeCamp.org en este momento.", + "profile-private": "{{username}} ha elegido que su cartera sea privada. Deberán hacer pública su cartera para que otros puedan ver su certificación.", + "certs-private": "{{username}} ha optado por que sus certificaciones sean privadas. Deberán hacer públicas sus certificaciones para que otros puedan verlas.", + "not-honest": "{{username}} aún no está de acuerdo con nuestro Compromiso de Honestidad Académica.", + "user-not-certified": "Parece que el usuario {{username}} no está certificado por {{cert}}", + "invalid-challenge": "Eso no parece ser un envío de desafío válido", + "no-links-provided": "No has proporcionado los enlaces válidos para que inspeccionemos tu trabajo.", + "no-social": "No se encontró ninguna cuenta social", + "invalid-social": "Cuenta social no válida", + "no-account": "No hay cuenta de {{website}} asociada", + "unlink-success": "Has desvinculado correctamente tu {{website}}", + "provide-username": "Comprueba si has proporcionado un nombre de usuario y un informe", + "report-sent": "Se envió un informe al equipo con {{email}} en copia" }, "validation": { - "msg-1": "Hay un límite máximo de 288 caracteres, te quedan {{charsLeft}}", - "msg-2": "Este correo electrónico es el mismo que su correo electrónico actual", - "msg-3": "No pudimos validar tu correo electrónico correctamente, asegúrate de que sea correcto", - "msg-4": "Ambas nuevas direcciones de correo electrónico deben ser iguales", - "msg-5": "Se requiere un título", - "msg-6": "El título es demasiado corto", - "msg-7": "El título es demasiado largo", - "msg-8": "No hemos podido validar tu URL correctamente, por favor asegúrate de que este correcta", - "msg-9": "La URL debe comenzar con http o https", - "msg-10": "URL debes enlazar directamente a un archivo de imagen", - "msg-11": "Utiliza un URL válido" + "max-characters": "Hay un límite máximo de 288 caracteres, te quedan {{charsLeft}}", + "same-email": "Este correo electrónico es el mismo que su correo electrónico actual", + "invalid-email": "No pudimos validar tu correo electrónico correctamente, asegúrate de que sea correcto", + "email-mismatch": "Ambas nuevas direcciones de correo electrónico deben ser iguales", + "title-required": "Se requiere un título", + "title-short": "El título es demasiado corto", + "title-long": "El título es demasiado largo", + "invalid-url": "No hemos podido validar tu URL correctamente, por favor asegúrate de que este correcta", + "invalid-protocol": "La URL debe comenzar con http o https", + "url-not-image": "URL debes enlazar directamente a un archivo de imagen", + "use-valid-url": "Utiliza un URL válido" } } diff --git a/client/i18n/translations-schema.js b/client/i18n/translations-schema.js index 085dc9648e..f8d199ea9a 100644 --- a/client/i18n/translations-schema.js +++ b/client/i18n/translations-schema.js @@ -488,85 +488,92 @@ const translationsSchema = { 'last-page': 'Go to last page' }, flash: { - 'msg-1': + 'honest-first': 'To claim a certification, you must first accept our academic honesty policy', - 'msg-2': + 'really-weird': 'Something really weird happened, if it happens again, please consider raising an issue on https://github.com/freeCodeCamp/freeCodeCamp/issues/new', - 'msg-3': + 'not-right': 'Something is not quite right. A report has been generated and the freeCodeCamp.org team have been notified', - 'msg-4': 'Something went wrong, please check and try again', - 'msg-5': 'Your account has been successfully deleted', - 'msg-6': 'Your progress has been reset', - 'msg-7': 'You are not authorized to continue on this route', - 'msg-8': + 'went-wrong': 'Something went wrong, please check and try again', + 'account-deleted': 'Your account has been successfully deleted', + 'progress-reset': 'Your progress has been reset', + 'not-authorized': 'You are not authorized to continue on this route', + 'could-not-find': "We couldn't find what you were looking for. Please check and try again", - 'msg-9': + 'wrong-updating': 'Something went wrong updating your account. Please check and try again', - 'msg-10': 'We have updated your preferences', - 'msg-11': 'Email format is invalid', - 'msg-12': 'currentChallengeId is not a valid challenge ID', - 'msg-13': 'Theme is invalid', - 'msg-14': 'Theme already set', - 'msg-15': 'Your theme has been updated!', - 'msg-16': 'Username is already associated with this account', - 'msg-17': 'Username is already associated with a different account', - 'msg-18': 'We have updated your username to {{username}}', - 'msg-19': 'We could not log you out, please try again in a moment', - 'msg-20': 'The email encoded in the link is incorrectly formatted', - 'msg-21': + 'updated-preferences': 'We have updated your preferences', + 'email-invalid': 'Email format is invalid', + 'bad-challengeId': 'currentChallengeId is not a valid challenge ID', + 'theme-invalid': 'Theme is invalid', + 'theme-set': 'Theme already set', + 'theme-updated': 'Your theme has been updated!', + 'username-used': 'Username is already associated with this account', + 'username-taken': 'Username is already associated with a different account', + 'username-updated': 'We have updated your username to {{username}}', + 'could-not-logout': + 'We could not log you out, please try again in a moment', + 'email-encoded-wrong': + 'The email encoded in the link is incorrectly formatted', + 'oops-not-right': 'Oops, something is not right, please request a fresh link to sign in / sign up', - 'msg-22': + 'expired-link': 'Looks like the link you clicked has expired, please request a fresh link, to sign in', - 'msg-23': 'Success! You have signed in to your account. Happy Coding!', - 'msg-24': + 'signin-success': + 'Success! You have signed in to your account. Happy Coding!', + 'social-auth-gone': 'We are moving away from social authentication for privacy reasons. Next time we recommend using your email address: {{email}} to sign in instead.', - 'msg-25': + 'name-needed': 'We need your name so we can put it on your certification. Add your name to your account settings and click the save button. Then we can issue your certification.', - 'msg-26': + 'incomplete-steps': 'It looks like you have not completed the necessary steps. Please complete the required projects to claim the {{name}} Certification.', - 'msg-27': + 'already-claimed': 'It looks like you already have claimed the {{name}} Certification', - 'msg-28': + 'cert-claim-success': '@{{username}}, you have successfully claimed the {{name}} Certification! Congratulations on behalf of the freeCodeCamp.org team!', - 'msg-29': + 'wrong-name': 'Something went wrong with the verification of {{name}}, please try again. If you continue to receive this error, you can send a message to support@freeCodeCamp.org to get help.', - 'msg-30': 'Error claiming {{certName}}', - 'msg-31': 'We could not find a user with the username "{{username}}"', - 'msg-32': + 'error-claiming': 'Error claiming {{certName}}', + 'username-not-found': + 'We could not find a user with the username "{{username}}"', + 'add-name': 'This user needs to add their name to their account in order for others to be able to view their certification.', - 'msg-33': + 'not-eligible': 'This user is not eligible for freeCodeCamp.org certifications at this time.', - 'msg-34': + 'profile-private': '{{username}} has chosen to make their portfolio private. They will need to make their portfolio public in order for others to be able to view their certification.', - 'msg-35': + 'certs-private': '{{username}} has chosen to make their certifications private. They will need to make their certifications public in order for others to be able to view them.', - 'msg-36': '{{username}} has not yet agrees to our Academic Honesty Pledge.', - 'msg-37': 'It looks like user {{username}} is not {{cert}} certified', - 'msg-38': 'That does not appear to be a valid challenge submission', - 'msg-39': + 'not-honest': + '{{username}} has not yet agreed to our Academic Honesty Pledge.', + 'user-not-certified': + 'It looks like user {{username}} is not {{cert}} certified', + 'invalid-challenge': + 'That does not appear to be a valid challenge submission', + 'no-links-provided': 'You have not provided the valid links for us to inspect your work.', - 'msg-40': 'No social account found', - 'msg-41': 'Invalid social account', - 'msg-42': 'No {{website}} account associated', - 'msg-43': "You've successfully unlinked your {{website}}", - 'msg-44': 'Check if you have provided a username and a report', - 'msg-45': 'A report was sent to the team with {{email}} in copy' + 'no-social': 'No social account found', + 'invalid-social': 'Invalid social account', + 'no-account': 'No {{website}} account associated', + 'unlink-success': "You've successfully unlinked your {{website}}", + 'provide-username': 'Check if you have provided a username and a report', + 'report-sent': 'A report was sent to the team with {{email}} in copy' }, validation: { - 'msg-1': + 'max-characters': 'There is a maximum limit of 288 characters, you have {{charsLeft}} left', - 'msg-2': 'This email is the same as your current email', - 'msg-3': + 'same-email': 'This email is the same as your current email', + 'invalid-email': 'We could not validate your email correctly, please ensure it is correct', - 'msg-4': 'Both new email addresses must be the same', - 'msg-5': 'A title is required', - 'msg-6': 'Title is too short', - 'msg-7': 'Title is too long', - 'msg-8': + 'email-mismatch': 'Both new email addresses must be the same', + 'title-required': 'A title is required', + 'title-short': 'Title is too short', + 'title-long': 'Title is too long', + 'invalid-url': 'We could not validate your URL correctly, please ensure it is correct', - 'msg-9': 'URL must start with http or https', - 'msg-10': 'URL must link directly to an image file', - 'msg-11': 'Please use a valid URL' + 'invalid-protocol': 'URL must start with http or https', + 'url-not-image': 'URL must link directly to an image file', + 'use-valid-url': 'Please use a valid URL' } }; diff --git a/client/src/components/settings/Certification.js b/client/src/components/settings/Certification.js index 330dd08d06..c724d565c0 100644 --- a/client/src/components/settings/Certification.js +++ b/client/src/components/settings/Certification.js @@ -140,7 +140,7 @@ const isCertMapSelector = createSelector( const honestyInfoMessage = { type: 'info', - message: 'flash.msg-1' + message: 'flash.honest-first' }; const initialState = { diff --git a/client/src/components/settings/Email.js b/client/src/components/settings/Email.js index 1177ba2013..88b766a091 100644 --- a/client/src/components/settings/Email.js +++ b/client/src/components/settings/Email.js @@ -97,7 +97,7 @@ class EmailSettings extends Component { if (newEmail === currentEmail) { return { state: 'error', - message: t('validation.msg-2') + message: t('validation.same-email') }; } if (isEmail(newEmail)) { @@ -105,7 +105,7 @@ class EmailSettings extends Component { } else { return { state: 'error', - message: t('validation.msg-3') + message: t('validation.invalid-email') }; } }; @@ -126,7 +126,7 @@ class EmailSettings extends Component { if (maybeEmailRE.test(confirmNewEmail)) { return { state: isMatch ? 'success' : 'error', - message: isMatch ? '' : t('validation.msg-4') + message: isMatch ? '' : t('validation.email-mismatch') }; } else { return { diff --git a/client/src/components/settings/Internet.js b/client/src/components/settings/Internet.js index 3f38262995..ae2ee3c897 100644 --- a/client/src/components/settings/Internet.js +++ b/client/src/components/settings/Internet.js @@ -82,7 +82,7 @@ class InternetSettings extends Component { } return { state: 'error', - message: t('validation.msg-8') + message: t('validation.invalid-url') }; } diff --git a/client/src/components/settings/Portfolio.js b/client/src/components/settings/Portfolio.js index 0b1d84e532..fdf683dc2f 100644 --- a/client/src/components/settings/Portfolio.js +++ b/client/src/components/settings/Portfolio.js @@ -138,13 +138,13 @@ class PortfolioSettings extends Component { if (charsLeft < 0) { return { state: 'error', - message: t('validation.msg-1', { charsLeft: 0 }) + message: t('validation.max-characters', { charsLeft: 0 }) }; } if (charsLeft < 41 && charsLeft > 0) { return { state: 'warning', - message: t('validation.msg-1', { charsLeft: charsLeft }) + message: t('validation.max-characters', { charsLeft: charsLeft }) }; } if (charsLeft === 288) { @@ -156,14 +156,14 @@ class PortfolioSettings extends Component { getTitleValidation(title) { const { t } = this.props; if (!title) { - return { state: 'error', message: t('validation.msg-5') }; + return { state: 'error', message: t('validation.title-required') }; } const len = title.length; if (len < 2) { - return { state: 'error', message: t('validation.msg-6') }; + return { state: 'error', message: t('validation.title-short') }; } if (len > 144) { - return { state: 'error', message: t('validation.msg-7') }; + return { state: 'error', message: t('validation.title-long') }; } return { state: 'success', message: '' }; } @@ -172,7 +172,7 @@ class PortfolioSettings extends Component { const { t } = this.props; const len = maybeUrl.length; if (len >= 4 && !hasProtocolRE.test(maybeUrl)) { - return { state: 'error', message: t('validation.msg-9') }; + return { state: 'error', message: t('validation.invalid-protocol') }; } if (isImage && !maybeUrl) { return { state: null, message: '' }; @@ -180,12 +180,12 @@ class PortfolioSettings extends Component { if (isImage && !/\.(png|jpg|jpeg|gif)$/.test(maybeUrl)) { return { state: 'error', - message: t('validation.msg-10') + message: t('validation.url-not-image') }; } return isURL(maybeUrl) ? { state: 'success', message: '' } - : { state: 'warning', message: t('validation.msg-11') }; + : { state: 'warning', message: t('validation.use-valid-url') }; } renderPortfolio = (portfolio, index, arr) => { diff --git a/client/src/redux/settings/danger-zone-saga.js b/client/src/redux/settings/danger-zone-saga.js index b09bc8dd8b..e8ebc6e372 100644 --- a/client/src/redux/settings/danger-zone-saga.js +++ b/client/src/redux/settings/danger-zone-saga.js @@ -12,7 +12,7 @@ function* deleteAccountSaga() { yield put( createFlashMessage({ type: 'info', - message: 'flash.msg-5' + message: 'flash.account-deleted' }) ); // remove current user information from application state @@ -29,7 +29,7 @@ function* resetProgressSaga() { yield put( createFlashMessage({ type: 'info', - message: 'flash.msg-6' + message: 'flash.progress-reset' }) ); // refresh current user data in application state diff --git a/client/src/utils/handled-error.js b/client/src/utils/handled-error.js index da3eaf34f2..eb66ebac14 100644 --- a/client/src/utils/handled-error.js +++ b/client/src/utils/handled-error.js @@ -33,14 +33,14 @@ export function handle400Error(e, options = { redirectTo: '/' }) { return { ...flash, type: 'warn', - message: 'flash.msg-7' + message: 'flash.not-authorized' }; } case 404: { return { ...flash, type: 'info', - message: 'flash.msg-8' + message: 'flash.could-not-find' }; } default: { diff --git a/client/src/utils/reallyWeirdErrorMessage.js b/client/src/utils/reallyWeirdErrorMessage.js index e40e1ac173..29c6c58999 100644 --- a/client/src/utils/reallyWeirdErrorMessage.js +++ b/client/src/utils/reallyWeirdErrorMessage.js @@ -1,4 +1,4 @@ export default { type: 'danger', - message: 'flash.msg-2' + message: 'flash.really-weird' }; diff --git a/client/src/utils/reportedErrorMessage.js b/client/src/utils/reportedErrorMessage.js index 0a34f4dd60..099473f64e 100644 --- a/client/src/utils/reportedErrorMessage.js +++ b/client/src/utils/reportedErrorMessage.js @@ -1,4 +1,4 @@ export default { type: 'danger', - message: 'flash.msg-3' + message: 'flash.not-right' }; diff --git a/client/src/utils/standardErrorMessage.js b/client/src/utils/standardErrorMessage.js index 2f6d158ba8..d84aeb8c4f 100644 --- a/client/src/utils/standardErrorMessage.js +++ b/client/src/utils/standardErrorMessage.js @@ -1,4 +1,4 @@ export default { type: 'danger', - message: 'flash.msg-4' + message: 'flash.went-wrong' };