From b50121ad0bd4a6f30111ef90c6e262f8159f0479 Mon Sep 17 00:00:00 2001 From: Lorenzo Date: Thu, 26 Jun 2025 00:36:22 +0200 Subject: [PATCH] Translate user account info page --- .../src/locales/langs/en-US/authentication.ts | 4 + .../src/locales/langs/en-US/certd.ts | 11 + .../src/locales/langs/zh-CN/authentication.ts | 4 + .../src/locales/langs/zh-CN/certd.ts | 11 + .../access/access-selector/access/crud.tsx | 264 +++++++++--------- .../src/views/certd/access/index.vue | 54 ++-- .../certd/mine/change-password-button.vue | 156 +++++------ .../src/views/certd/mine/user-profile.vue | 57 ++-- 8 files changed, 303 insertions(+), 258 deletions(-) diff --git a/packages/ui/certd-client/src/locales/langs/en-US/authentication.ts b/packages/ui/certd-client/src/locales/langs/en-US/authentication.ts index a20035f3..0469d159 100644 --- a/packages/ui/certd-client/src/locales/langs/en-US/authentication.ts +++ b/packages/ui/certd-client/src/locales/langs/en-US/authentication.ts @@ -77,4 +77,8 @@ export default { newPasswordNotSameOld: "The new password cannot be the same as the old password", enterPasswordAgain: "Please enter the password again", passwordsNotMatch: "The two passwords do not match!", + avatar: "Avatar", + nickName: "Nickname", + phoneNumber: "Phone Number", + changePassword: "Change Password", } \ No newline at end of file diff --git a/packages/ui/certd-client/src/locales/langs/en-US/certd.ts b/packages/ui/certd-client/src/locales/langs/en-US/certd.ts index 09c62e3f..258f3097 100644 --- a/packages/ui/certd-client/src/locales/langs/en-US/certd.ts +++ b/packages/ui/certd-client/src/locales/langs/en-US/certd.ts @@ -289,4 +289,15 @@ export default { step3: "3. Enter the verification code", inputVerifyCode: "Please enter the verification code", cancel: "Cancel", + authorizationManagement: "Authorization Management", + manageThirdPartyAuth: "Manage third-party system authorization information", + name: "Name", + pleaseEnterName: "Please enter the name", + nameHelper: "Fill in as you like, useful to distinguish when multiple authorizations of the same type exist", + level: "Level", + system: "System", + usera: "User", + nickName: "Nickname", + max50Chars: "Maximum 50 characters", + myInfo: "My Information", }; diff --git a/packages/ui/certd-client/src/locales/langs/zh-CN/authentication.ts b/packages/ui/certd-client/src/locales/langs/zh-CN/authentication.ts index 4c34c2df..384c1265 100644 --- a/packages/ui/certd-client/src/locales/langs/zh-CN/authentication.ts +++ b/packages/ui/certd-client/src/locales/langs/zh-CN/authentication.ts @@ -78,4 +78,8 @@ export default { newPasswordNotSameOld: "新密码不能和旧密码相同", enterPasswordAgain: "请再次输入密码", passwordsNotMatch: "两次输入密码不一致!", + avatar: "头像", + nickName: "昵称", + phoneNumber: "手机号", + changePassword: "修改密码", } diff --git a/packages/ui/certd-client/src/locales/langs/zh-CN/certd.ts b/packages/ui/certd-client/src/locales/langs/zh-CN/certd.ts index 98d61d31..1983dadd 100644 --- a/packages/ui/certd-client/src/locales/langs/zh-CN/certd.ts +++ b/packages/ui/certd-client/src/locales/langs/zh-CN/certd.ts @@ -295,4 +295,15 @@ export default { step3: "3. 输入验证码", inputVerifyCode: "请输入验证码", cancel: "取消", + authorizationManagement: "授权管理", + manageThirdPartyAuth: "管理第三方系统授权信息", + name: "名称", + pleaseEnterName: "请填写名称", + nameHelper: "随便填,当多个相同类型的授权时,便于区分", + level: "级别", + system: "系统", + usera: "用户", + nickName: "昵称", + max50Chars: "最大50个字符", + myInfo: "我的信息", }; diff --git a/packages/ui/certd-client/src/views/certd/access/access-selector/access/crud.tsx b/packages/ui/certd-client/src/views/certd/access/access-selector/access/crud.tsx index 23bbb1f8..dfb06237 100644 --- a/packages/ui/certd-client/src/views/certd/access/access-selector/access/crud.tsx +++ b/packages/ui/certd-client/src/views/certd/access/access-selector/access/crud.tsx @@ -2,141 +2,143 @@ import { ref } from "vue"; import { getCommonColumnDefine } from "/@/views/certd/access/common"; import { AddReq, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, dict, EditReq, UserPageQuery, UserPageRes } from "@fast-crud/fast-crud"; +import { useI18n } from "vue-i18n"; export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet { - const { crudBinding } = crudExpose; - const { props, ctx, api } = context; - const lastResRef = ref(); - const pageRequest = async (query: UserPageQuery): Promise => { - return await context.api.GetList(query); - }; - const editRequest = async (req: EditReq) => { - const { form, row } = req; - form.id = row.id; - form.type = props.type; - const res = await context.api.UpdateObj(form); - lastResRef.value = res; - return res; - }; - const delRequest = async (req: DelReq) => { - const { row } = req; - return await context.api.DelObj(row.id); - }; + const { t } = useI18n(); + const { crudBinding } = crudExpose; + const { props, ctx, api } = context; + const lastResRef = ref(); + const pageRequest = async (query: UserPageQuery): Promise => { + return await context.api.GetList(query); + }; + const editRequest = async (req: EditReq) => { + const { form, row } = req; + form.id = row.id; + form.type = props.type; + const res = await context.api.UpdateObj(form); + lastResRef.value = res; + return res; + }; + const delRequest = async (req: DelReq) => { + const { row } = req; + return await context.api.DelObj(row.id); + }; - const addRequest = async (req: AddReq) => { - const { form } = req; - form.type = props.type; - const res = await context.api.AddObj(form); - lastResRef.value = res; - return res; - }; + const addRequest = async (req: AddReq) => { + const { form } = req; + form.type = props.type; + const res = await context.api.AddObj(form); + lastResRef.value = res; + return res; + }; - const selectedRowKey = ref([props.modelValue]); + const selectedRowKey = ref([props.modelValue]); - const onSelectChange = (changed: any) => { - selectedRowKey.value = changed; - ctx.emit("update:modelValue", changed[0]); - }; + const onSelectChange = (changed: any) => { + selectedRowKey.value = changed; + ctx.emit("update:modelValue", changed[0]); + }; - const typeRef = ref("aliyun"); - context.typeRef = typeRef; - const commonColumnsDefine = getCommonColumnDefine(crudExpose, typeRef, api); - commonColumnsDefine.type.form.component.disabled = true; - return { - typeRef, - crudOptions: { - request: { - pageRequest, - addRequest, - editRequest, - delRequest, - }, - toolbar: { - show: false, - }, - search: { - show: false, - }, - form: { - wrapper: { - width: "1050px", - }, - }, - rowHandle: { - width: 200, - }, - table: { - scroll: { - x: 800, - }, - rowSelection: { - type: "radio", - selectedRowKeys: selectedRowKey, - onChange: onSelectChange, - }, - customRow: (record: any) => { - return { - onClick: () => { - onSelectChange([record.id]); - }, // 点击行 - }; - }, - }, - columns: { - id: { - title: "ID", - key: "id", - type: "number", - column: { - width: 50, - }, - form: { - show: false, - }, - }, - name: { - title: "名称", - search: { - show: true, - }, - type: ["text"], - form: { - rules: [{ required: true, message: "请填写名称" }], - helper: "随便填,当多个相同类型的授权时,便于区分", - }, - column: { - width: 200, - }, - }, - from: { - title: "级别", - type: "dict-select", - dict: dict({ - data: [ - { label: "系统", value: "sys" }, - { label: "用户", value: "user" }, - ], - }), - search: { - show: false, - }, - form: { - show: false, - }, - column: { - width: 100, - align: "center", - component: { - color: "auto", - }, - order: 10, - }, - valueBuilder: ({ row, key, value }) => { - row[key] = row.userId > 0 ? "user" : "sys"; - }, - }, - ...commonColumnsDefine, - }, - }, - }; + const typeRef = ref("aliyun"); + context.typeRef = typeRef; + const commonColumnsDefine = getCommonColumnDefine(crudExpose, typeRef, api); + commonColumnsDefine.type.form.component.disabled = true; + return { + typeRef, + crudOptions: { + request: { + pageRequest, + addRequest, + editRequest, + delRequest, + }, + toolbar: { + show: false, + }, + search: { + show: false, + }, + form: { + wrapper: { + width: "1050px", + }, + }, + rowHandle: { + width: 200, + }, + table: { + scroll: { + x: 800, + }, + rowSelection: { + type: "radio", + selectedRowKeys: selectedRowKey, + onChange: onSelectChange, + }, + customRow: (record: any) => { + return { + onClick: () => { + onSelectChange([record.id]); + }, // 点击行 + }; + }, + }, + columns: { + id: { + title: "ID", + key: "id", + type: "number", + column: { + width: 50, + }, + form: { + show: false, + }, + }, + name: { + title: t("certd.name"), + search: { + show: true, + }, + type: ["text"], + form: { + rules: [{ required: true, message: t("certd.pleaseEnterName") }], + helper: t("certd.nameHelper"), + }, + column: { + width: 200, + }, + }, + from: { + title: t("certd.level"), + type: "dict-select", + dict: dict({ + data: [ + { label: t("certd.system"), value: "sys" }, + { label: t("certd.usera"), value: "user" }, + ], + }), + search: { + show: false, + }, + form: { + show: false, + }, + column: { + width: 100, + align: "center", + component: { + color: "auto", + }, + order: 10, + }, + valueBuilder: ({ row, key, value }) => { + row[key] = row.userId > 0 ? "user" : "sys"; + }, + }, + ...commonColumnsDefine, + }, + }, + }; } diff --git a/packages/ui/certd-client/src/views/certd/access/index.vue b/packages/ui/certd-client/src/views/certd/access/index.vue index 79d6164f..9bf9a750 100644 --- a/packages/ui/certd-client/src/views/certd/access/index.vue +++ b/packages/ui/certd-client/src/views/certd/access/index.vue @@ -1,13 +1,13 @@ diff --git a/packages/ui/certd-client/src/views/certd/mine/change-password-button.vue b/packages/ui/certd-client/src/views/certd/mine/change-password-button.vue index b61057fa..920afe71 100644 --- a/packages/ui/certd-client/src/views/certd/mine/change-password-button.vue +++ b/packages/ui/certd-client/src/views/certd/mine/change-password-button.vue @@ -1,7 +1,7 @@