diff --git a/web/src/layouts/components/bars/toolbar/components/translate.tsx b/web/src/layouts/components/bars/toolbar/components/translate.tsx index 0d902f909..63cf0b209 100644 --- a/web/src/layouts/components/bars/toolbar/components/translate.tsx +++ b/web/src/layouts/components/bars/toolbar/components/translate.tsx @@ -17,10 +17,15 @@ export default defineComponent({ const settingStore = useSettingStore() const locales = userStore.getLocales() const { locale, t } = useI18n() - function changeLanguage(item: { label: string, value: string }) { + async function changeLanguage(item: { label: string, value: string }) { userStore.setLanguage(item.value) + const appSettings = settingStore.getSettings('app') + if (appSettings) { + appSettings.useLocale = item.value + } locale.value = item.value settingStore.setTitle(route.meta?.i18n ? t(route.meta?.i18n as string) : route.meta?.title as string) + await userStore.saveSettingToSever() } return () => ( diff --git a/web/src/store/modules/useUserStore.ts b/web/src/store/modules/useUserStore.ts index 9140bd345..2371a31db 100644 --- a/web/src/store/modules/useUserStore.ts +++ b/web/src/store/modules/useUserStore.ts @@ -211,16 +211,23 @@ const useUserStore = defineStore( await nextTick() useThemeColor().initThemeColor() - const locale = settings?.app?.useLocale ?? (language.value?.trim() || 'zh_CN') + const cacheLanguage = cache.get('language', '')?.trim?.() || '' + const settingsLanguage = settings?.app?.useLocale?.trim?.() || '' + const locale = cacheLanguage || settingsLanguage || 'zh_CN' + const appSettings = setting.getSettings('app') + if (appSettings) { + appSettings.useLocale = locale + } setLanguage(locale) } function saveSettingToSever() { const backend_setting = setting.getSettings() - useHttp().post('/admin/permission/update', { backend_setting }).then(() => { + return useHttp().post('/admin/permission/update', { backend_setting }).then(() => { cache.set('sys_settings', backend_setting) }).catch((error) => { console.log(error) + return Promise.reject(error) }) }