import type { Locale } from './locale' export const zhCN = { 'app.title': '身份认证', 'app.description': '安全登录 GitDataAI,使用统一账户访问应用与服务。', 'common.backToLogin': '返回登录', 'common.close': '关闭', 'common.resend': '重新发送', 'common.retry': '重试', 'common.sending': '正在发送…', 'error.invalid_credentials': '邮箱、用户名或密码有误,请核对后重试。', 'error.invalid_email': '请输入有效的邮箱地址。', 'error.invalid_username': '用户名支持 1–64 位字母、数字、下划线、点和短横线。', 'error.username_taken': '该用户名已被使用,请换一个。', 'error.email_taken': '该邮箱已注册,请直接登录。', 'error.invalid_displayname': '显示名称最多为 64 个字符。', 'error.invalid_birth_date': '请选择有效的出生日期。', 'error.under_minimum_age': '创建账户需要年满 13 周岁。', 'error.invalid_password': '请检查密码是否符合要求。', 'error.invalid_email_code': '验证码有误或已过期,请核对或重新发送。', 'error.email_code_attempts_exceeded': '验证码尝试次数已达上限,请重新发送。', 'error.invalid_reset_token': '重置链接已过期或已使用,请重新申请。', 'error.expired': '安全验证已过期,请重试。', 'error.invalid_proof': '安全验证失败,请重试。', 'error.invalid_payload': '安全验证信息已变更,请重试。', 'error.malformed_request': '请求信息有误,请检查后重试。', 'error.unauthenticated': '登录会话已过期,请重新登录。', 'error.login_forbidden': '该账户的登录已受限,请联系管理员。', 'error.mfa_required': '请重新登录并完成二次验证。', 'error.totp_code_invalid': '动态验证码有误,请输入当前验证码。', 'error.totp_step_reused': '该动态验证码已使用,请等待下一组验证码。', 'error.recovery_code_invalid': '恢复码有误或已使用。', 'error.recovery_codes_exhausted': '恢复码已用尽,请使用身份验证器。', 'error.rate_limited': '操作过于频繁,请稍后重试。', 'error.email': '邮件投递暂时受阻,请稍后重新发送。', 'error.timeout': '连接超时,请稍后重试。', 'error.connection': '暂时无法连接认证服务,请检查网络后重试。', 'error.server': '认证服务暂时不可用,请稍后重试。', 'error.unexpected': '请求暂时无法完成,请重试。', 'validation.email.invalid': '请输入有效的邮箱地址。', 'validation.password.short': '密码至少需要 8 个字符。', 'validation.password.weak': '密码需包含大写字母、小写字母和数字。', 'validation.username.invalid': '请输入 1–64 位字母、数字、下划线、点或短横线。', 'validation.birth.incomplete': '请选择完整的出生日期。', 'validation.birth.invalid': '请选择有效的出生日期。', 'validation.birth.underage': '创建账户需要年满 13 周岁。', 'pow.invalid': '安全验证参数有误,请重试。', 'pow.timeout': '安全验证已超时,请重试。', 'pow.failed': '安全验证暂时无法完成,请重试。', 'pow.unavailable': '安全验证暂时不可用,请重试。', 'field.email.label': '邮箱地址', 'field.password.label': '密码', 'field.password.placeholder': '请输入密码', 'field.username.label': '用户名', 'ui.field.reveal': '显示{label}', 'ui.field.conceal': '隐藏{label}', 'ui.otp.label': '邮箱验证码', 'ui.otp.helper': '可粘贴完整验证码,也可使用系统自动填充。', 'ui.birth.legend': '出生日期', 'ui.birth.helper': '用于确认你的年龄资格。', 'ui.birth.aria.year': '出生年份', 'ui.birth.aria.month': '出生月份', 'ui.birth.aria.day': '出生日期', 'ui.birth.placeholder.year': '年', 'ui.birth.placeholder.month': '月', 'ui.birth.placeholder.day': '日', 'ui.birth.unit.month': '月', 'ui.birth.unit.day': '日', 'ui.agreement.title': '同意服务条款与隐私政策', 'ui.agreement.aria': '我已阅读并同意服务条款和隐私政策', 'ui.agreement.label': '我已阅读并同意', 'ui.agreement.and': '和', 'ui.legal.terms': '服务条款', 'ui.legal.privacy': '隐私政策', 'ui.legal.missing': '{title}链接待服务管理员配置。请在阅读正式条款后确认同意并创建账户。', 'account.checking': '正在确认登录状态…', 'ui.retry': '请在 {seconds} 秒后重试', 'ui.resend.prompt': '还没收到?', 'ui.resend.wait': '{seconds} 秒后重新发送', 'theme.toLight': '切换至浅色主题', 'theme.toDark': '切换至深色主题', 'theme.system': '跟随系统,点击切换主题', 'theme.currentLight': '当前为浅色主题', 'theme.currentDark': '当前为深色主题', 'shell.home': 'GitDataAI 首页', 'login.title': '登录 GitDataAI', 'login.description': '登录以继续访问应用与服务', 'login.form': '密码登录', 'login.identity.label': '邮箱地址或用户名', 'login.identity.error': '请输入邮箱地址、用户名或用户编号。', 'login.password.error': '请输入密码。', 'login.codeLink': '使用邮箱验证码登录', 'login.forgotLink': '忘记密码?', 'login.submit': '登录', 'login.busy': '正在安全登录…', 'login.prompt': '还没有账户?', 'login.action': '创建账户', 'loginCode.title': '邮箱验证码登录', 'loginCode.titleSent': '输入邮箱验证码', 'loginCode.description': '使用注册邮箱接收验证码,安全登录。', 'loginCode.descriptionSent': '输入发送至以下邮箱的 6 位验证码。', 'loginCode.form': '邮箱验证码登录', 'loginCode.send': '发送验证码', 'loginCode.changeEmail': '修改邮箱', 'loginCode.expired': '验证码已过期,请重新发送。', 'loginCode.submit': '验证并登录', 'loginCode.notice': '验证码已发送,请查看收件箱与垃圾邮件。', 'loginCode.codeError': '请输入完整的 6 位验证码。', 'loginCode.back': '使用密码登录', 'register.title': '创建 GitDataAI 账户', 'register.step': '第 1 步,共 2 步', 'register.description': '创建统一账户,登录接入的应用与服务。', 'register.form': '创建账户', 'register.email.helper': '验证码将发送至该邮箱。', 'register.username.placeholder': '设置唯一用户名', 'register.username.helper': '1–64 位字母、数字、下划线、点或短横线。', 'register.password.placeholder': '设置登录密码', 'register.password.reuse': '已设置,可输入新密码替换', 'register.password.helper': '至少 8 个字符,建议包含字母和数字。', 'register.submit': '发送验证码', 'register.submitContinue': '继续验证邮箱', 'register.prompt': '已有账户?', 'register.action': '登录', 'register.agreementError': '请阅读并同意服务条款与隐私政策。', 'registerVerify.title': '验证你的邮箱', 'registerVerify.step': '第 2 步,共 2 步', 'registerVerify.description': '输入发送至以下邮箱的 6 位验证码。', 'registerVerify.changeEmail': '修改邮箱', 'registerVerify.back': '返回注册', 'registerVerify.submit': '验证并创建账户', 'registerVerify.backToForm': '返回修改注册信息', 'registerVerify.expired': '验证码已过期,请重新发送。', 'registerVerify.notice': '验证码已重新发送,请使用最新验证码。', 'registerVerify.codeError': '请输入完整的 6 位验证码。', 'registerVerify.guardTitle': '继续创建账户', 'registerVerify.guardDescription': '请先填写注册资料并获取邮箱验证码。', 'registerVerify.guardAction': '填写注册资料', 'forgot.title': '忘记密码?', 'forgot.description': '输入注册邮箱,我们会发送密码重置链接。', 'forgot.submit': '发送重置链接', 'resetSent.title': '请查收邮件', 'resetSent.description': '如果该邮箱已注册,你会收到一封\n包含密码重置链接的邮件。', 'resetSent.hint': '请查看收件箱与垃圾邮件,并按邮件指引操作。', 'resetSent.resend': '重新发送邮件', 'resetSent.wrongEmail': '邮箱填错了?', 'resetSent.changeEmail': '更换邮箱', 'resetSent.notice': '已提交重发请求。邮箱已注册时会收到邮件,请按邮件指引操作。', 'resetSent.guardTitle': '重新获取重置邮件', 'resetSent.guardDescription': '请先输入注册邮箱,获取密码重置链接。', 'resetSent.guardAction': '输入邮箱地址', 'resetPassword.title': '设置新密码', 'resetPassword.description': '请设置一个安全且易于记忆的新密码。', 'resetPassword.newLabel': '新密码', 'resetPassword.newPlaceholder': '输入新密码', 'resetPassword.confirmLabel': '确认新密码', 'resetPassword.confirmPlaceholder': '再次输入新密码', 'resetPassword.helper': '至少 8 个字符,建议包含字母和数字。', 'resetPassword.submit': '重置密码', 'resetPassword.mismatch': '两次输入的密码需要一致。', 'resetPassword.invalidTitle': '重置链接无效', 'resetPassword.invalidDescription': '请通过邮件中的完整链接设置新密码。', 'resetPassword.missingAlert': '重置令牌缺失,请重新申请密码重置邮件。', 'resetPassword.invalidAction': '重新获取重置链接', 'resetComplete.title': '密码已重置', 'resetComplete.description': '你已成功更新密码。\n请使用新密码重新登录 GitDataAI。', 'resetComplete.hint': '为保障账户安全,其他设备上的登录状态将失效。', 'resetComplete.guardTitle': '返回 GitDataAI', 'resetComplete.guardDescription': '请使用你的账户密码登录。', 'resetComplete.guardAction': '返回登录', 'mfa.title': '验证你的身份', 'mfa.descriptionTotp': '输入身份验证器中当前显示的 6 位动态验证码。', 'mfa.descriptionRecovery': '输入一组尚未使用的账户恢复码。', 'mfa.totpLabel': '身份验证器验证码', 'mfa.totpHelper': '请使用当前验证码,使用过的验证码将自动失效。', 'mfa.recoveryLabel': '恢复码', 'mfa.recoveryPlaceholder': '输入一次性恢复码', 'mfa.recoveryHelper': '每组恢复码仅可使用一次。', 'mfa.submit': '验证并登录', 'mfa.useRecovery': '使用恢复码', 'mfa.useTotp': '使用身份验证器', 'mfa.codeError': '请输入完整的 6 位动态验证码。', 'mfa.recoveryError': '请输入账户恢复码。', 'mfa.back': '返回并重新登录', 'mfa.guardTitle': '请重新开始验证', 'mfa.guardDescription': '此页面需要前一步的验证信息,请重新开始。', 'mfa.missingChallenge': '二次验证信息缺失,请重新登录。', 'account.titleDone': '登录成功', 'account.descriptionDone': '你已安全登录 GitDataAI。', 'account.unavailable': '暂时无法读取账户信息。', 'scope.user_name': '读取你的用户名', 'scope.profile': '读取你的个人资料', 'scope.email': '读取你的邮箱地址', 'scope.avatar': '读取你的头像', 'scope.theme': '读取你的界面主题偏好', 'scope.assets': '读取你上传的资源', 'scope.ssh_key': '读取你的 SSH 公钥', 'scope.access_key': '读取你的访问密钥', 'scope.guild': '读取你加入的群组', 'scope.event': '读取你的活动记录', 'scope.repo_read': '读取你的代码仓库', 'scope.repo_write': '写入你的代码仓库', 'notFound.title': '页面暂不可用', 'notFound.description': '通过登录入口继续访问 GitDataAI。', } as const export type MessageKey = keyof typeof zhCN export const en: Record = { 'app.title': 'Authentication', 'app.description': 'Sign in to GitDataAI and reach every connected app and service with one account.', 'common.backToLogin': 'Back to sign in', 'common.close': 'Close', 'common.resend': 'Resend', 'common.retry': 'Try again', 'common.sending': 'Sending…', 'error.invalid_credentials': 'The email, username or password is incorrect. Check it and try again.', 'error.invalid_email': 'Enter a valid email address.', 'error.invalid_username': 'Usernames accept 1–64 letters, digits, underscores, dots and hyphens.', 'error.username_taken': 'That username is taken. Pick another one.', 'error.email_taken': 'That email already has an account. Sign in instead.', 'error.invalid_displayname': 'Display names are limited to 64 characters.', 'error.invalid_birth_date': 'Enter a valid date of birth.', 'error.under_minimum_age': 'You must be at least 13 years old to create an account.', 'error.invalid_password': 'Check that the password meets the requirements.', 'error.invalid_email_code': 'The code is wrong or has expired. Check it or send a new one.', 'error.email_code_attempts_exceeded': 'Too many code attempts. Send a new code.', 'error.invalid_reset_token': 'The reset link has expired or was already used. Request a new one.', 'error.expired': 'The security check expired. Try again.', 'error.invalid_proof': 'The security check failed. Try again.', 'error.invalid_payload': 'The security check data changed. Try again.', 'error.malformed_request': 'The request was malformed. Check it and try again.', 'error.unauthenticated': 'Your session has expired. Sign in again.', 'error.login_forbidden': 'Sign-in is restricted for this account. Contact an administrator.', 'error.mfa_required': 'Sign in again and complete two-factor verification.', 'error.totp_code_invalid': 'The authenticator code is wrong. Enter the current one.', 'error.totp_step_reused': 'That authenticator code was already used. Wait for the next one.', 'error.recovery_code_invalid': 'The recovery code is wrong or was already used.', 'error.recovery_codes_exhausted': 'No recovery codes left. Use your authenticator app.', 'error.rate_limited': 'Too many attempts. Try again later.', 'error.email': 'Email delivery is temporarily blocked. Send again later.', 'error.timeout': 'The connection timed out. Try again later.', 'error.connection': 'Cannot reach the auth service. Check your network and try again.', 'error.server': 'The auth service is temporarily unavailable. Try again later.', 'error.unexpected': 'The request could not be completed. Try again.', 'validation.email.invalid': 'Enter a valid email address.', 'validation.password.short': 'Passwords need at least 8 characters.', 'validation.password.weak': 'Passwords need upper case, lower case and a digit.', 'validation.username.invalid': 'Use 1–64 letters, digits, underscores, dots or hyphens.', 'validation.birth.incomplete': 'Select your full date of birth.', 'validation.birth.invalid': 'Enter a valid date of birth.', 'validation.birth.underage': 'You must be at least 13 years old to create an account.', 'pow.invalid': 'The security check parameters are invalid. Try again.', 'pow.timeout': 'The security check timed out. Try again.', 'pow.failed': 'The security check could not be completed. Try again.', 'pow.unavailable': 'The security check is unavailable. Try again.', 'field.email.label': 'Email address', 'field.password.label': 'Password', 'field.password.placeholder': 'Enter your password', 'field.username.label': 'Username', 'ui.field.reveal': 'Show {label}', 'ui.field.conceal': 'Hide {label}', 'ui.otp.label': 'Email code', 'ui.otp.helper': 'Paste the full code, or use autofill.', 'ui.birth.legend': 'Date of birth', 'ui.birth.helper': 'Used to confirm your age.', 'ui.birth.aria.year': 'Year of birth', 'ui.birth.aria.month': 'Month of birth', 'ui.birth.aria.day': 'Day of birth', 'ui.birth.placeholder.year': 'Year', 'ui.birth.placeholder.month': 'Month', 'ui.birth.placeholder.day': 'Day', 'ui.birth.unit.month': '', 'ui.birth.unit.day': '', 'ui.agreement.title': 'Agree to the terms of service and privacy policy', 'ui.agreement.aria': 'I have read and agree to the terms of service and privacy policy', 'ui.agreement.label': 'I have read and agree to the', 'ui.agreement.and': 'and', 'ui.legal.terms': 'Terms of Service', 'ui.legal.privacy': 'Privacy Policy', 'ui.legal.missing': 'The {title} link has not been configured by an administrator yet. Review the official document, then agree and create your account.', 'account.checking': 'Checking your sign-in status…', 'ui.retry': 'Try again in {seconds}s', 'ui.resend.prompt': "Didn't get it?", 'ui.resend.wait': 'Resend in {seconds}s', 'theme.toLight': 'Switch to the light theme', 'theme.toDark': 'Switch to the dark theme', 'theme.system': 'Following the system theme, click to switch', 'theme.currentLight': 'Light theme', 'theme.currentDark': 'Dark theme', 'shell.home': 'GitDataAI home', 'login.title': 'Sign in to GitDataAI', 'login.description': 'Sign in to continue to your apps and services', 'login.form': 'Password sign in', 'login.identity.label': 'Email or username', 'login.identity.error': 'Enter your email, username or user ID.', 'login.password.error': 'Enter your password.', 'login.codeLink': 'Sign in with an email code', 'login.forgotLink': 'Forgot password?', 'login.submit': 'Sign in', 'login.busy': 'Signing in…', 'login.prompt': 'No account yet?', 'login.action': 'Create account', 'loginCode.title': 'Sign in with an email code', 'loginCode.titleSent': 'Enter your email code', 'loginCode.description': 'Receive a code at your email address and sign in securely.', 'loginCode.descriptionSent': 'Enter the 6-digit code sent to the address below.', 'loginCode.form': 'Email code sign in', 'loginCode.send': 'Send code', 'loginCode.changeEmail': 'Change email', 'loginCode.expired': 'The code expired. Send a new one.', 'loginCode.submit': 'Verify and sign in', 'loginCode.notice': 'Code sent. Check your inbox and spam folder.', 'loginCode.codeError': 'Enter the full 6-digit code.', 'loginCode.back': 'Sign in with a password', 'register.title': 'Create your GitDataAI account', 'register.step': 'Step 1 of 2', 'register.description': 'Create one account for every connected app and service.', 'register.form': 'Create account', 'register.email.helper': 'We send the code to this address.', 'register.username.placeholder': 'Pick a unique username', 'register.username.helper': '1–64 letters, digits, underscores, dots or hyphens.', 'register.password.placeholder': 'Create a password', 'register.password.reuse': 'Already set — enter a new password to replace it', 'register.password.helper': 'At least 8 characters; letters and digits recommended.', 'register.submit': 'Send code', 'register.submitContinue': 'Continue to verify email', 'register.prompt': 'Already have an account?', 'register.action': 'Sign in', 'register.agreementError': 'Read and agree to the terms of service and privacy policy.', 'registerVerify.title': 'Verify your email', 'registerVerify.step': 'Step 2 of 2', 'registerVerify.description': 'Enter the 6-digit code sent to the address below.', 'registerVerify.changeEmail': 'Change email', 'registerVerify.back': 'Back to registration', 'registerVerify.submit': 'Verify and create account', 'registerVerify.backToForm': 'Back to edit your details', 'registerVerify.expired': 'The code expired. Send a new one.', 'registerVerify.notice': 'Code resent. Use the latest one.', 'registerVerify.codeError': 'Enter the full 6-digit code.', 'registerVerify.guardTitle': 'Continue creating your account', 'registerVerify.guardDescription': 'Fill in your details and request an email code first.', 'registerVerify.guardAction': 'Fill in your details', 'forgot.title': 'Forgot password?', 'forgot.description': 'Enter your email and we send a password reset link.', 'forgot.submit': 'Send reset link', 'resetSent.title': 'Check your email', 'resetSent.description': 'If that email has an account, a message with a password reset link is on its way.', 'resetSent.hint': 'Check your inbox and spam folder, then follow the link in the email.', 'resetSent.resend': 'Resend email', 'resetSent.wrongEmail': 'Wrong email?', 'resetSent.changeEmail': 'Use another email', 'resetSent.notice': 'Resend requested. If the email has an account, follow the link you receive.', 'resetSent.guardTitle': 'Request a new reset email', 'resetSent.guardDescription': 'Enter your email to get a password reset link.', 'resetSent.guardAction': 'Enter your email', 'resetPassword.title': 'Set a new password', 'resetPassword.description': 'Choose a new password that is secure and easy to remember.', 'resetPassword.newLabel': 'New password', 'resetPassword.newPlaceholder': 'Enter a new password', 'resetPassword.confirmLabel': 'Confirm new password', 'resetPassword.confirmPlaceholder': 'Enter the new password again', 'resetPassword.helper': 'At least 8 characters; letters and digits recommended.', 'resetPassword.submit': 'Reset password', 'resetPassword.mismatch': 'Both passwords must match.', 'resetPassword.invalidTitle': 'Invalid reset link', 'resetPassword.invalidDescription': 'Open the full link from your email to set a new password.', 'resetPassword.missingAlert': 'The reset token is missing. Request a new password reset email.', 'resetPassword.invalidAction': 'Request a new reset link', 'resetComplete.title': 'Password reset', 'resetComplete.description': 'Your password was updated. Sign in to GitDataAI with the new password.', 'resetComplete.hint': 'For your security, sessions on other devices were revoked.', 'resetComplete.guardTitle': 'Back to GitDataAI', 'resetComplete.guardDescription': 'Sign in with your account password.', 'resetComplete.guardAction': 'Back to sign in', 'mfa.title': 'Verify your identity', 'mfa.descriptionTotp': 'Enter the 6-digit code shown in your authenticator app.', 'mfa.descriptionRecovery': 'Enter an unused account recovery code.', 'mfa.totpLabel': 'Authenticator code', 'mfa.totpHelper': 'Use the current code; used codes stop working right away.', 'mfa.recoveryLabel': 'Recovery code', 'mfa.recoveryPlaceholder': 'Enter a one-time recovery code', 'mfa.recoveryHelper': 'Each recovery code works once.', 'mfa.submit': 'Verify and sign in', 'mfa.useRecovery': 'Use a recovery code', 'mfa.useTotp': 'Use the authenticator', 'mfa.codeError': 'Enter the full 6-digit code.', 'mfa.recoveryError': 'Enter your account recovery code.', 'mfa.back': 'Back and sign in again', 'mfa.guardTitle': 'Restart verification', 'mfa.guardDescription': 'This step needs the challenge from the previous step. Start over.', 'mfa.missingChallenge': 'The two-factor challenge is missing. Sign in again.', 'account.titleDone': 'Signed in', 'account.descriptionDone': 'You are signed in to GitDataAI.', 'account.unavailable': 'Your account details are unavailable right now.', 'scope.user_name': 'Read your username', 'scope.profile': 'Read your profile', 'scope.email': 'Read your email address', 'scope.avatar': 'Read your avatar', 'scope.theme': 'Read your theme preference', 'scope.assets': 'Read your uploaded assets', 'scope.ssh_key': 'Read your SSH keys', 'scope.access_key': 'Read your access keys', 'scope.guild': 'Read your groups', 'scope.event': 'Read your activity', 'scope.repo_read': 'Read your repositories', 'scope.repo_write': 'Write to your repositories', 'notFound.title': 'Page unavailable', 'notFound.description': 'Continue to GitDataAI from the sign-in page.', } export const messages: Record> = { 'zh-CN': zhCN, en, }