From 1c80ba9fbc18efedf192a9f3c748d4d243da807c Mon Sep 17 00:00:00 2001 From: zhangyahui Date: Wed, 3 Jun 2026 09:53:23 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E8=AE=BE=E7=BD=AE=E9=A1=B5?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E8=AF=AD=E8=A8=80=E5=8F=98=E5=8C=96=E9=87=8D?= =?UTF-8?q?=E6=96=B0=E8=8E=B7=E5=8F=96=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/setting/index.vue | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/views/setting/index.vue b/src/views/setting/index.vue index 1b10fcc..7780f5f 100644 --- a/src/views/setting/index.vue +++ b/src/views/setting/index.vue @@ -75,7 +75,7 @@ diff --git a/src/views/setting/index.vue b/src/views/setting/index.vue index 7780f5f..38ad3e0 100644 --- a/src/views/setting/index.vue +++ b/src/views/setting/index.vue @@ -119,9 +119,9 @@ loadUserProfile } = useSettingsForm({ t, locale }) - watch(locale, () => { - loadUserProfile() - }) + // watch(locale, () => { + // loadUserProfile() + // }) onMounted(() => { loadUserProfile() diff --git a/src/views/setting/types.ts b/src/views/setting/types.ts index b452b55..78130d7 100644 --- a/src/views/setting/types.ts +++ b/src/views/setting/types.ts @@ -12,7 +12,7 @@ export const roleValues = [ 'other' ] as const -export const languageValues = ['english', 'chinese'] as const +export const languageValues = ['ENGLISH', 'CHINESE_SIMPLIFIED'] as const export type RoleValue = (typeof roleValues)[number] diff --git a/src/views/setting/useSettingsForm.ts b/src/views/setting/useSettingsForm.ts index 6d6f732..08894a5 100644 --- a/src/views/setting/useSettingsForm.ts +++ b/src/views/setting/useSettingsForm.ts @@ -6,7 +6,8 @@ import { type UserProfile, updateUserProfile, verifyEmailCode, - fetchVerifyCode + fetchVerifyCode, + setUserLanguage } from '@/api/user' import regionList from '@/utils/area' import { @@ -18,6 +19,9 @@ import { type SettingsData } from './types' import { validateCase, validateLength, validateSpecial } from '@/views/login/tools' +import {useUserInfoStore} from '@/stores' + +const userInfoStore = useUserInfoStore() type Translate = (key: string, ...args: unknown[]) => string @@ -26,24 +30,6 @@ interface UseSettingsFormOptions { locale: Ref } -// 前端 UI 使用的语言值(用于下拉选择) -const languageLocaleMap: Record = { - english: 'ENGLISH', - chinese: 'CHINESE_SIMPLIFIED' -} - -// 后端 API 使用的语言值 -const backendLanguageMap: Record<'ENGLISH' | 'CHINESE_SIMPLIFIED', 'en' | 'zh-CN'> = { - ENGLISH: 'en', - CHINESE_SIMPLIFIED: 'zh-CN' -} - -// 后端语言值转换为前端语言值 -const backendToFrontendLanguage: Record<'en' | 'zh-CN', LanguageValue> = { - en: 'english', - 'zh-CN': 'chinese' -} - const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/ const isRoleValue = (value: string): value is RoleValue => @@ -75,15 +61,10 @@ const normalizeLanguage = (language: string | null | undefined): LanguageValue = if (!language) { return '' as LanguageValue } - - // 后端返回 'en' 或 'zh-CN' const trimmed = language.trim() - if (trimmed === 'en') { - return 'english' - } else if (trimmed === 'zh-CN') { - return 'chinese' + if (trimmed === 'ENGLISH' || trimmed === 'CHINESE_SIMPLIFIED') { + return trimmed as LanguageValue } - return '' as LanguageValue } @@ -182,9 +163,8 @@ export function useSettingsForm({ t, locale }: UseSettingsFormOptions) { } const syncAppLanguage = (language: LanguageValue) => { - const nextLocale = languageLocaleMap[language] - locale.value = nextLocale - localStorage.setItem('language', nextLocale) + locale.value = language + localStorage.setItem('language', language) } const loadUserProfile = async () => { @@ -334,12 +314,8 @@ export function useSettingsForm({ t, locale }: UseSettingsFormOptions) { return } - // 将前端语言值转换为后端格式 - let backendLanguage = '' - if (draftData.value.language) { - const i18nLocale = languageLocaleMap[draftData.value.language as LanguageValue] - backendLanguage = backendLanguageMap[i18nLocale] - } + // 前端语言值直接作为后端格式 + const backendLanguage = draftData.value.language || '' const nextData: UserProfile = { firstName: draftData.value.firstName.trim(), @@ -370,10 +346,8 @@ export function useSettingsForm({ t, locale }: UseSettingsFormOptions) { try { await updateUserProfile(nextData) - // 将后端返回的语言值转换为前端格式 - const frontendLanguage = backendLanguage - ? backendToFrontendLanguage[backendLanguage as 'en' | 'zh-CN'] - : '' + // 后端返回的语言值直接作为前端格式 + const frontendLanguage = backendLanguage as LanguageValue const settingsData: SettingsData = { firstName: nextData.firstName, @@ -388,7 +362,12 @@ export function useSettingsForm({ t, locale }: UseSettingsFormOptions) { console.log(nextData) if (frontendLanguage && frontendLanguage !== previousLanguage) { - syncAppLanguage(frontendLanguage as LanguageValue) + // syncAppLanguage(frontendLanguage as LanguageValue) + setUserLanguage(frontendLanguage).then((res) => { + // console.log(res) + userInfoStore.setToken(res) + location.reload() + }) } draftData.value = cloneSettingsData(sourceData.value)