master
lion 4 weeks ago
parent d2dc7f13eb
commit 5b8a29c735

@ -20,6 +20,7 @@ export default {
quickAria: 'Registration portals',
invalidMobile: 'Please enter a valid mobile number',
invalidCaptcha: 'Please enter the 6-digit code',
invalidOrExpired: 'The verification code is invalid or has expired.',
missingSlug: 'Missing competition address. Please use the official entry link.',
competitionMissing: 'This competition is unavailable or unpublished.',
competitionLoadFailed: 'Unable to load this competition. Please try again later.',

@ -20,6 +20,7 @@ export default {
quickAria: '快捷入口',
invalidMobile: '请先填写正确手机号',
invalidCaptcha: '请输入 6 位验证码',
invalidOrExpired: '验证码无效或已过期',
missingSlug: '缺少赛事访问地址,请从正确入口进入',
competitionMissing: '赛事不存在或未发布,请核对访问地址',
competitionLoadFailed: '暂时无法加载赛事信息,请稍后重试',

@ -181,8 +181,19 @@ function onCaptchaInput(event: Event) {
captchaFieldError.value = false
}
function localizePortalApiMessage(message: string): string {
if (!isEnglishLogin.value) return message
if (message === '验证码无效或已过期') return t('login.invalidOrExpired')
if (message === '赛事不存在或未发布' || message.startsWith('赛事不存在或未发布')) {
return t('login.competitionMissing')
}
const frequent = message.match(/请勿频繁发送,请\s*(\d+)\s*秒后再试/)
if (frequent) return t('login.tooFrequent', { n: frequent[1] })
return message
}
function parseJsonErrorPayload(data: unknown): string {
return userFacingApiMessage(data, t('login.requestFailed'))
return localizePortalApiMessage(userFacingApiMessage(data, t('login.requestFailed')))
}
let loginHtmlClassApplied = false
@ -264,6 +275,7 @@ async function sendCode() {
mobile: m,
portal: isAudienceLogin.value ? 'audience' : 'participant',
competition_slug: competitionSlug.value || undefined,
lang: portalLocale.value === 'en' ? 'en' : undefined,
}),
})
const data: unknown = await r.json().catch(() => ({}))

Loading…
Cancel
Save