Commit 5ca3f840 authored by tyyin lan's avatar tyyin lan

chore: 登录页多语言

parent bde09892
...@@ -68,9 +68,22 @@ common_module: ...@@ -68,9 +68,22 @@ common_module:
login_module: login_module:
app_welcome_words: '欢迎使用萃想POC' app_welcome_words: '欢迎使用萃想POC'
please_enter_your_username: '请输入用户名'
please_enter_your_password: '请输入密码'
please_enter_your_cell_phone_number: '请输入手机号'
please_enter_your_correct_cell_phone_number: '请输入正确手机号'
please_enter_the_verification_code: '请输入验证码'
please_enter_your_email_address: '请输入邮箱地址'
please_enter_the_correct_email_address: '请输入正确邮箱地址'
mainland_china: '中国大陆'
hong_kong_china: '中国香港'
login_success: '登录成功'
successful: '获取成功'
get_verification_code: '获取验证码'
other_login_methods: '其他登录方式'
home_module: home_module:
agent_welcome_message: 'Hi, 迎使用SuperLink' agent_welcome_message: 'Hi, 迎使用SuperLink'
agent_description: '在这里,你可以体验多个平台的模型和专属的智能体' agent_description: '在这里,你可以体验多个平台的模型和专属的智能体'
router_title_module: router_title_module:
......
...@@ -68,6 +68,19 @@ common_module: ...@@ -68,6 +68,19 @@ common_module:
login_module: login_module:
app_welcome_words: '歡迎使用萃想POC' app_welcome_words: '歡迎使用萃想POC'
please_enter_your_username: '請輸入用戶名'
please_enter_your_password: '請輸入密碼'
please_enter_your_cell_phone_number: '請輸入手機號'
please_enter_your_correct_cell_phone_number: '請輸入正確手機號'
please_enter_the_verification_code: '請輸入驗証碼'
please_enter_your_email_address: '請輸入郵箱地址'
please_enter_the_correct_email_address: '請輸入正確郵箱地址'
mainland_china: '中國大陸'
hong_kong_china: '中國香港'
login_success: '登錄成功'
successful: '獲取成功'
get_verification_code: '獲取驗証碼'
other_login_methods: '其他登錄方式'
home_module: home_module:
agent_welcome_message: 'Hi, 歡迎使用SuperLink' agent_welcome_message: 'Hi, 歡迎使用SuperLink'
......
...@@ -10,6 +10,7 @@ import SparkMD5 from 'spark-md5' ...@@ -10,6 +10,7 @@ import SparkMD5 from 'spark-md5'
import { useUserStore } from '@/store/modules/user' import { useUserStore } from '@/store/modules/user'
import type { UserInfo } from '@/store/types/user' import type { UserInfo } from '@/store/types/user'
import { useRouter, useRoute } from 'vue-router' import { useRouter, useRoute } from 'vue-router'
import { useI18n } from 'vue-i18n'
enum StorageKeyEnum { enum StorageKeyEnum {
smsCountdownTime = 'SMS_COUNTDOWN_TIME', smsCountdownTime = 'SMS_COUNTDOWN_TIME',
...@@ -26,6 +27,7 @@ interface LoginPayload { ...@@ -26,6 +27,7 @@ interface LoginPayload {
const userStore = useUserStore() const userStore = useUserStore()
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
const { t } = useI18n()
const passwordLoginFormRef = useTemplateRef<FormInst>('passwordLoginFormRef') const passwordLoginFormRef = useTemplateRef<FormInst>('passwordLoginFormRef')
const smsLoginFormRef = useTemplateRef<FormInst>('smsLoginFormRef') const smsLoginFormRef = useTemplateRef<FormInst>('smsLoginFormRef')
...@@ -51,8 +53,8 @@ const emailLoginForm = ref({ ...@@ -51,8 +53,8 @@ const emailLoginForm = ref({
}) })
const passwordLoginFormRules = shallowReadonly<FormRules>({ const passwordLoginFormRules = shallowReadonly<FormRules>({
account: { required: true, message: '請輸入用戶名', trigger: 'blur' }, account: { required: true, message: t('login_module.please_enter_your_username'), trigger: 'blur' },
password: { required: true, message: '請輸入密碼', trigger: 'blur' }, password: { required: true, message: t('login_module.please_enter_your_password'), trigger: 'blur' },
}) })
const smsLoginFormRules = shallowReadonly<FormRules>({ const smsLoginFormRules = shallowReadonly<FormRules>({
phoneNumber: { phoneNumber: {
...@@ -60,15 +62,15 @@ const smsLoginFormRules = shallowReadonly<FormRules>({ ...@@ -60,15 +62,15 @@ const smsLoginFormRules = shallowReadonly<FormRules>({
required: true, required: true,
validator: (_rule: FormItemRule, value: string) => { validator: (_rule: FormItemRule, value: string) => {
if (!value) { if (!value) {
return new Error('請輸入手機號') return new Error(t('login_module.please_enter_your_cell_phone_number'))
} else if (!isMobilePhone(value, ['zh-CN', 'zh-HK'])) { } else if (!isMobilePhone(value, ['zh-CN', 'zh-HK'])) {
return new Error('請輸入正確手機號') return new Error(t('login_module.please_enter_your_correct_cell_phone_number'))
} }
return return
}, },
}, },
code: { required: true, message: '請輸入驗証碼' }, code: { required: true, message: t('login_module.please_enter_the_verification_code') },
}) })
const emailLoginFormRules = shallowReadonly<FormRules>({ const emailLoginFormRules = shallowReadonly<FormRules>({
email: { email: {
...@@ -76,24 +78,24 @@ const emailLoginFormRules = shallowReadonly<FormRules>({ ...@@ -76,24 +78,24 @@ const emailLoginFormRules = shallowReadonly<FormRules>({
required: true, required: true,
validator: (_rule: FormItemRule, value: string) => { validator: (_rule: FormItemRule, value: string) => {
if (!value) { if (!value) {
return new Error('請輸入郵箱地址') return new Error(t('login_module.please_enter_your_email_address'))
} else if (!isEmail(value)) { } else if (!isEmail(value)) {
return new Error('請輸入正確郵箱地址') return new Error(t('login_module.please_enter_the_correct_email_address'))
} }
return return
}, },
}, },
code: { required: true, message: '請輸入驗証碼' }, code: { required: true, message: t('login_module.please_enter_the_verification_code') },
}) })
const phoneNumberAreaOptions = shallowReadonly([ const phoneNumberAreaOptions = shallowReadonly([
{ {
label: '+86 中國大陸', label: `+86 ${t('login_module.mainland_china')}`,
value: '+86', value: '+86',
}, },
{ {
label: '+852 中國香港', label: `+852 ${t('login_module.hong_kong_china')}`,
value: '+852', value: '+852',
}, },
]) ])
...@@ -232,7 +234,7 @@ function handleLoginSubmit(method: LoginMethod) { ...@@ -232,7 +234,7 @@ function handleLoginSubmit(method: LoginMethod) {
const redirectUrl = decodeURIComponent((route.query.redirect as string) || '') const redirectUrl = decodeURIComponent((route.query.redirect as string) || '')
router.replace({ path: redirectUrl ? redirectUrl : '/' }) router.replace({ path: redirectUrl ? redirectUrl : '/' })
window.$message.success('登錄成功') window.$message.success(t('login_module.login_success'))
ss.remove(StorageKeyEnum.smsCountdownTime) ss.remove(StorageKeyEnum.smsCountdownTime)
ss.remove(StorageKeyEnum.emailCountdownTime) ss.remove(StorageKeyEnum.emailCountdownTime)
...@@ -264,7 +266,7 @@ function handleSMSCodeGain() { ...@@ -264,7 +266,7 @@ function handleSMSCodeGain() {
fetchSMSCode(getInputPhoneNumber()).then((res) => { fetchSMSCode(getInputPhoneNumber()).then((res) => {
if (res.code !== 0) return '' if (res.code !== 0) return ''
window.$message.success('獲取成功') window.$message.success(t('login_module.successful'))
}) })
}, },
(rule) => { (rule) => {
...@@ -286,7 +288,7 @@ function handleEmailCodeGain() { ...@@ -286,7 +288,7 @@ function handleEmailCodeGain() {
fetchEmailCode(encodeURIComponent(emailLoginForm.value.email)).then((res) => { fetchEmailCode(encodeURIComponent(emailLoginForm.value.email)).then((res) => {
if (res.code !== 0) return '' if (res.code !== 0) return ''
window.$message.success('獲取成功') window.$message.success(t('login_module.successful'))
}) })
}, },
(rule) => { (rule) => {
...@@ -309,7 +311,7 @@ function handleEmailCodeGain() { ...@@ -309,7 +311,7 @@ function handleEmailCodeGain() {
style="transform-style: preserve-3d" style="transform-style: preserve-3d"
@animationend="onCardReserveAnimationEnd" @animationend="onCardReserveAnimationEnd"
> >
<h1 class="font-600 py-[34px] text-center text-[22px]">歡迎使用萃想POC</h1> <h1 class="font-600 py-[34px] text-center text-[22px]">{{ t('login_module.app_welcome_words') }}</h1>
<div> <div>
<!-- 密码登录 --> <!-- 密码登录 -->
...@@ -326,7 +328,7 @@ function handleEmailCodeGain() { ...@@ -326,7 +328,7 @@ function handleEmailCodeGain() {
v-model:value="passwordLoginForm.account" v-model:value="passwordLoginForm.account"
:allow-input="noSideSpace" :allow-input="noSideSpace"
:maxlength="11" :maxlength="11"
placeholder="請輸入用戶名" :placeholder="t('login_module.please_enter_your_username')"
> >
<template #prefix> <template #prefix>
<div class="mr-[6px]"> <div class="mr-[6px]">
...@@ -342,7 +344,7 @@ function handleEmailCodeGain() { ...@@ -342,7 +344,7 @@ function handleEmailCodeGain() {
:allow-input="noSideSpace" :allow-input="noSideSpace"
type="password" type="password"
show-password-on="click" show-password-on="click"
placeholder="請輸入密碼" :placeholder="t('login_module.please_enter_your_password')"
> >
<template #prefix> <template #prefix>
<div class="mr-[6px]"> <div class="mr-[6px]">
...@@ -360,7 +362,7 @@ function handleEmailCodeGain() { ...@@ -360,7 +362,7 @@ function handleEmailCodeGain() {
:disabled="!passwordLoginForm.account || !passwordLoginForm.password" :disabled="!passwordLoginForm.account || !passwordLoginForm.password"
@click="handleLoginSubmit('password')" @click="handleLoginSubmit('password')"
> >
登錄 {{ t('common_module.login') }}
</n-button> </n-button>
</n-form-item> </n-form-item>
</n-form> </n-form>
...@@ -379,7 +381,7 @@ function handleEmailCodeGain() { ...@@ -379,7 +381,7 @@ function handleEmailCodeGain() {
v-model:value.trim="smsLoginForm.phoneNumber" v-model:value.trim="smsLoginForm.phoneNumber"
:allow-input="onlyAllowNumber" :allow-input="onlyAllowNumber"
:maxlength="currentPhoneNumberArea === '+852' ? 8 : 11" :maxlength="currentPhoneNumberArea === '+852' ? 8 : 11"
placeholder="請輸入手機號" :placeholder="t('login_module.please_enter_your_cell_phone_number')"
> >
<template #prefix> <template #prefix>
<div class="flex items-center"> <div class="flex items-center">
...@@ -406,7 +408,7 @@ function handleEmailCodeGain() { ...@@ -406,7 +408,7 @@ function handleEmailCodeGain() {
:allow-input="onlyAllowNumber" :allow-input="onlyAllowNumber"
show-password-on="click" show-password-on="click"
:maxlength="6" :maxlength="6"
placeholder="請輸入驗証碼" :placeholder="t('login_module.please_enter_the_verification_code')"
> >
<template #suffix> <template #suffix>
<div class="flex items-center"> <div class="flex items-center">
...@@ -420,7 +422,7 @@ function handleEmailCodeGain() { ...@@ -420,7 +422,7 @@ function handleEmailCodeGain() {
size="small" size="small"
@click="handleSMSCodeGain" @click="handleSMSCodeGain"
> >
獲取驗証碼 {{ t('login_module.get_verification_code') }}
</n-button> </n-button>
<div v-show="isShowCountdown" class="inline-block w-[50px] text-center"> <div v-show="isShowCountdown" class="inline-block w-[50px] text-center">
...@@ -446,7 +448,7 @@ function handleEmailCodeGain() { ...@@ -446,7 +448,7 @@ function handleEmailCodeGain() {
:disabled="!smsLoginForm.phoneNumber || !smsLoginForm.code" :disabled="!smsLoginForm.phoneNumber || !smsLoginForm.code"
@click="handleLoginSubmit('sms')" @click="handleLoginSubmit('sms')"
> >
登錄 {{ t('common_module.login') }}
</n-button> </n-button>
</n-form-item> </n-form-item>
</n-form> </n-form>
...@@ -461,7 +463,11 @@ function handleEmailCodeGain() { ...@@ -461,7 +463,11 @@ function handleEmailCodeGain() {
:rules="emailLoginFormRules" :rules="emailLoginFormRules"
> >
<n-form-item path="email"> <n-form-item path="email">
<n-input v-model:value="emailLoginForm.email" :allow-input="noSideSpace" placeholder="請輸入郵箱地址"> <n-input
v-model:value="emailLoginForm.email"
:allow-input="noSideSpace"
:placeholder="t('login_module.please_enter_your_email_address')"
>
<template #prefix> <template #prefix>
<div class="mr-[6px]"> <div class="mr-[6px]">
<Mail theme="outline" size="16" fill="#868686" :stroke-width="3" /> <Mail theme="outline" size="16" fill="#868686" :stroke-width="3" />
...@@ -475,7 +481,7 @@ function handleEmailCodeGain() { ...@@ -475,7 +481,7 @@ function handleEmailCodeGain() {
:allow-input="onlyAllowNumber" :allow-input="onlyAllowNumber"
show-password-on="click" show-password-on="click"
:maxlength="6" :maxlength="6"
placeholder="請輸入驗証碼" :placeholder="t('login_module.please_enter_the_verification_code')"
> >
<template #suffix> <template #suffix>
<div class="flex items-center"> <div class="flex items-center">
...@@ -489,7 +495,7 @@ function handleEmailCodeGain() { ...@@ -489,7 +495,7 @@ function handleEmailCodeGain() {
size="small" size="small"
@click="handleEmailCodeGain" @click="handleEmailCodeGain"
> >
獲取驗証碼 {{ t('login_module.get_verification_code') }}
</n-button> </n-button>
<div v-show="isShowCountdown" class="inline-block w-[50px] text-center"> <div v-show="isShowCountdown" class="inline-block w-[50px] text-center">
...@@ -515,7 +521,7 @@ function handleEmailCodeGain() { ...@@ -515,7 +521,7 @@ function handleEmailCodeGain() {
:disabled="!emailLoginForm.email || !emailLoginForm.code" :disabled="!emailLoginForm.email || !emailLoginForm.code"
@click="handleLoginSubmit('email')" @click="handleLoginSubmit('email')"
> >
登錄 {{ t('common_module.login') }}
</n-button> </n-button>
</n-form-item> </n-form-item>
</n-form> </n-form>
...@@ -523,7 +529,9 @@ function handleEmailCodeGain() { ...@@ -523,7 +529,9 @@ function handleEmailCodeGain() {
<div class="absolute bottom-[22px] left-0 w-full"> <div class="absolute bottom-[22px] left-0 w-full">
<div class="mb-[32px]"> <div class="mb-[32px]">
<div class="mb-[12px] text-center text-[12px] text-[#999999]">其他登錄方式</div> <div class="mb-[12px] text-center text-[12px] text-[#999999]">
{{ t('login_module.other_login_methods') }}
</div>
<div class="flex items-center justify-center"> <div class="flex items-center justify-center">
<button <button
v-show="currentLoginMethod !== 'email'" v-show="currentLoginMethod !== 'email'"
......
...@@ -73,6 +73,18 @@ declare namespace I18n { ...@@ -73,6 +73,18 @@ declare namespace I18n {
login_module: { login_module: {
app_welcome_words: string app_welcome_words: string
please_enter_your_username: string
please_enter_your_password: string
please_enter_your_cell_phone_number: string
please_enter_your_correct_cell_phone_number: string
please_enter_the_verification_code: string
please_enter_your_email_address: string
please_enter_the_correct_email_address: string
mainland_china: string
hong_kong_china: string
login_success: string
get_verification_code: string
other_login_methods: string
} }
home_module: { home_module: {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment