Skip to content

Commit eeee175

Browse files
object-kazmaslowcccy0
authored andcommitted
i18n for register page (labring#192)
* docs: update docs; * docs: fix deploy docs * feat: validate old password before updating password (labring#152) * feat: add account sign up mode config (labring#172) (labring#181) * chore: add account sign up mode config (labring#172) * fix: k8s ACCOUNT_SIGNUP_MODE config (labring#172) * docs: migrate vitepress to 1.0.0 (labring#182) * doc: release 0.8.4 * docs: complete docs (labring#185) * docs: release 0.8.5 * fix: error of `process is not defined` (labring#146) * docs: update docs; * fix: error on opening app-console Co-authored-by: maslow <[email protected]> * fix: default route * feat: i18n for register page Co-authored-by: maslow <[email protected]> Co-authored-by: CCCY <[email protected]>
1 parent d1634a3 commit eeee175

File tree

10 files changed

+3770
-3770
lines changed

10 files changed

+3770
-3770
lines changed

packages/web/auto-imports.d.ts

-2
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ declare global {
110110
const useAttrs: typeof import('vue')['useAttrs']
111111
const useBase64: typeof import('@vueuse/core')['useBase64']
112112
const useBattery: typeof import('@vueuse/core')['useBattery']
113-
const useBluetooth: typeof import('@vueuse/core')['useBluetooth']
114113
const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints']
115114
const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel']
116115
const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation']
@@ -158,7 +157,6 @@ declare global {
158157
const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
159158
const useI18n: typeof import('vue-i18n')['useI18n']
160159
const useIdle: typeof import('@vueuse/core')['useIdle']
161-
const useImage: typeof import('@vueuse/core')['useImage']
162160
const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
163161
const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver']
164162
const useInterval: typeof import('@vueuse/core')['useInterval']

packages/web/components.d.ts

-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ declare module '@vue/runtime-core' {
77
export interface GlobalComponents {
88
CommonOpener: typeof import('./src/components/CommonOpener.vue')['default']
99
Counter: typeof import('./src/components/Counter.vue')['default']
10-
ElAside: typeof import('element-plus/es')['ElAside']
1110
ElButton: typeof import('element-plus/es')['ElButton']
1211
ElCard: typeof import('element-plus/es')['ElCard']
1312
ElContainer: typeof import('element-plus/es')['ElContainer']
@@ -21,13 +20,10 @@ declare module '@vue/runtime-core' {
2120
ElIcon: typeof import('element-plus/es')['ElIcon']
2221
ElInput: typeof import('element-plus/es')['ElInput']
2322
ElMain: typeof import('element-plus/es')['ElMain']
24-
ElMenu: typeof import('element-plus/es')['ElMenu']
25-
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
2623
ElRadio: typeof import('element-plus/es')['ElRadio']
2724
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
2825
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
2926
ElSpace: typeof import('element-plus/es')['ElSpace']
30-
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
3127
ElTable: typeof import('element-plus/es')['ElTable']
3228
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
3329
ElTag: typeof import('element-plus/es')['ElTag']

packages/web/locales/en.yml

+6-1
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,15 @@ pages:
2020
login-btn: Login
2121
password: Password
2222
title: Login
23-
register: Register
23+
register:
24+
name: Name
25+
success-msg: registration success!
26+
title: Register
2427
utils:
2528
form:
2629
email: Email is invalid
30+
maxlength: '{name} is not longer than {len} digits'
31+
minlength: '{name} is not less than {len} digits'
2732
password: '{name} requires at least 8 digits'
2833
required: '{name} cannot be empty'
2934
submit: Submit

packages/web/locales/zh-CN.yml

+6-1
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,15 @@ pages:
2020
login-btn: 登录
2121
password: 密码
2222
title: 登录
23-
register: 注册
23+
register:
24+
name: 姓名
25+
success-msg: 注册成功!
26+
title: 注册
2427
utils:
2528
form:
2629
email: 邮箱格式不正确
30+
maxlength: '{name}的长度不高于{len}位'
31+
minlength: '{name}的长度不少于{len}位'
2732
password: '{name} 至少需要8位'
2833
required: '{name}不能为空'
2934
submit: 提交

packages/web/src/assets/logo.png

-4.21 KB
Binary file not shown.

packages/web/src/pages/account/login.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ const login = async (loginEl: FormInstance | undefined) => {
5555
<div flex justify-between items-center>
5656
<span text-4>{{ $t('pages.account.login.title') }}</span>
5757
<el-button type="primary" text @click="goPage('/register')">
58-
{{ $t('pages.account.register') }}
58+
{{ $t('pages.account.register.title') }}
5959
</el-button>
6060
</div>
6161
</template>

packages/web/src/pages/account/register.vue

+28-23
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
<script setup lang="ts">
22
import type { FormInstance } from 'element-plus'
33
import * as useraApi from '~/api/user'
4-
4+
import LanguageMenu from '~/layout/components/LanguageMenu.vue'
5+
import { maxLengthField, minLengthField, passwordField, requiredField } from '~/utils/form'
6+
const { t } = useI18n()
57
const router = useRouter()
68
const goLogin = () => {
79
router.push('/login')
@@ -17,24 +19,24 @@ const registerForm = $ref({
1719
})
1820
const registerRules = {
1921
username: [
20-
{ required: true, message: 'Please input your username!' },
21-
{ min: 4, message: 'Length should be greater than 4' },
22-
{ max: 20, message: 'Length should be less than 20' },
22+
requiredField(t('pages.account.login.account')),
23+
minLengthField(4, t('pages.account.login.account')),
24+
maxLengthField(20, t('pages.account.login.account')),
2325
],
2426
name: [
25-
{ required: true, message: 'Please input your name!' },
27+
requiredField(t('pages.account.register.name')),
2628
],
2729
password: [
28-
{ required: true, message: 'Please input your password!', trigger: 'blur' },
29-
{ min: 8, message: 'Length should be greater than 8' },
30+
requiredField(t('pages.account.login.password')),
31+
passwordField(t('pages.account.login.password')),
3032
],
3133
password2: [
32-
{ required: true, message: 'Please input your password again!' },
33-
{ min: 8, message: 'Length should be greater than 8' },
34+
requiredField(t('layout.components.reset-password.form.confirm-password')),
35+
passwordField(t('layout.components.reset-password.form.confirm-password')),
3436
{
3537
validator: (rule: any, value: string, callback: any) => {
3638
if (value !== registerForm.password)
37-
callback(new Error('Two passwords that you enter is inconsistent!'))
39+
callback(new Error(t('layout.components.reset-password.rules.confirm')))
3840
3941
else
4042
callback()
@@ -66,7 +68,7 @@ const register = async (registerEl: FormInstance | undefined) => {
6668
}
6769
6870
ElMessage({
69-
message: '注册成功!',
71+
message: t('pages.account.register.success-msg'),
7072
type: 'success',
7173
})
7274
goLogin()
@@ -78,13 +80,13 @@ const register = async (registerEl: FormInstance | undefined) => {
7880
<el-card w-sm mt-20 ma>
7981
<template #header>
8082
<div flex justify-between items-center>
81-
<span text-4>LAF 云开发账户注册</span>
83+
<span text-4>{{ $t('pages.account.register.title') }}</span>
8284
<el-button
8385
type="primary"
8486
text
8587
@click="goLogin"
8688
>
87-
去登录
89+
{{ $t('pages.account.login.title') }}
8890
</el-button>
8991
</div>
9092
</template>
@@ -96,17 +98,17 @@ const register = async (registerEl: FormInstance | undefined) => {
9698
:rules="registerRules"
9799
autocomplete="off"
98100
>
99-
<el-form-item label="账户" prop="username">
100-
<el-input v-model.trim="registerForm.username" placeholder="请输入账户名" />
101+
<el-form-item :label="$t('pages.account.login.account')" prop="username">
102+
<el-input v-model.trim="registerForm.username" />
101103
</el-form-item>
102-
<el-form-item label="姓名" mt-6 prop="name">
103-
<el-input v-model.trim="registerForm.name" placeholder="请输入姓名" />
104+
<el-form-item :label="$t('pages.account.register.name')" mt-6 prop="name">
105+
<el-input v-model.trim="registerForm.name" />
104106
</el-form-item>
105-
<el-form-item label="密码" mt-6 prop="password">
106-
<el-input v-model.trim="registerForm.password" type="password" placeholder="请输入密码" />
107+
<el-form-item :label="$t('pages.account.login.password')" mt-6 prop="password">
108+
<el-input v-model.trim="registerForm.password" type="password" />
107109
</el-form-item>
108-
<el-form-item label="确认密码" mt-6 prop="password2">
109-
<el-input v-model.trim="registerForm.password2" type="password" placeholder="请再次输入密码" />
110+
<el-form-item :label="$t('layout.components.reset-password.form.confirm-password')" mt-6 prop="password2">
111+
<el-input v-model.trim="registerForm.password2" type="password" />
110112
</el-form-item>
111113
<el-form-item mt-10>
112114
<el-button
@@ -116,15 +118,18 @@ const register = async (registerEl: FormInstance | undefined) => {
116118
:loading="loading"
117119
@click="register(registerFormRef)"
118120
>
119-
注册
121+
{{ $t('pages.account.register.title') }}
120122
</el-button>
121123
</el-form-item>
122124
</el-form>
125+
<div text-center>
126+
<LanguageMenu show-name />
127+
</div>
123128
</el-card>
124129
</template>
125130

126131
<route lang="yaml">
127132
name: register
128133
meta:
129-
title: 注册
134+
title: t('pages.account.register.title')
130135
</route>

packages/web/src/router/permission.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ router.beforeEach(async (to, from, next) => {
3535

3636
if (to.path === '/login' || to.path === '/register' || to.path === '/') {
3737
// if is logged in, redirect to the home page
38-
next({ path: '/application' })
38+
next({ path: '/apps' })
3939
NProgress.done() // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
4040
}
4141
else {

packages/web/src/utils/form.ts

+16
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,19 @@ export function emailField(name: string): FormItemRule {
1919
message: i18n.global.t('utils.form.email', { name }),
2020
}
2121
}
22+
23+
export function minLengthField(len: number, name: string): FormItemRule {
24+
return {
25+
trigger: 'blur',
26+
min: len,
27+
message: i18n.global.t('utils.form.minlength', { name, len }),
28+
}
29+
}
30+
31+
export function maxLengthField(len: number, name: string): FormItemRule {
32+
return {
33+
trigger: 'blur',
34+
max: len,
35+
message: i18n.global.t('utils.form.maxlength', { name, len }),
36+
}
37+
}

0 commit comments

Comments
 (0)