Explorar o código

feat: 完善多语言

Jack Zhou hai 1 semana
pai
achega
fd50eeec4c
Modificáronse 1 ficheiros con 13 adicións e 7 borrados
  1. 13 7
      src/views/Layout/src/components/Header/HeaderView.vue

+ 13 - 7
src/views/Layout/src/components/Header/HeaderView.vue

@@ -210,6 +210,7 @@ const handleDemoVideo = () => {
   window.open(href, '_blank')
 }
 
+const languagePopoverVisible = ref(false)
 const langValue = ref()
 const languageList = ref([
   {
@@ -242,13 +243,17 @@ const { locale } = useI18n() // 解构出 locale
 langValue.value = localStorage.getItem('lang') || 'English'
 const languageChange = async (item) => {
   userManualLoading.value = true
-  langValue.value = item.label
-  const targetLocale = resolveLocaleByLangLabel(item.value)
-  localStorage.setItem('lang', item.label)
-  console.log(targetLocale, 'value')
-  await switchAppLocale(targetLocale)
-  locale.value = targetLocale
-  userManualLoading.value = false
+  try {
+    langValue.value = item.label
+    const targetLocale = resolveLocaleByLangLabel(item.value)
+    localStorage.setItem('lang', item.label)
+    await switchAppLocale(targetLocale)
+    locale.value = targetLocale
+  } finally {
+    window.location.reload()
+    userManualLoading.value = false
+    languagePopoverVisible.value = false
+  }
 }
 </script>
 
@@ -374,6 +379,7 @@ const languageChange = async (item) => {
         :width="256"
         trigger="click"
         popper-class="user-config-popover"
+        v-model:visible="languagePopoverVisible"
       >
         <div class="options">
           <div