App.vue 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <script setup lang="ts">
  2. import { RouterView } from 'vue-router'
  3. import { useLangStore } from '@/stores/modules/lang'
  4. import { useI18n } from 'vue-i18n'
  5. import { useRoute } from 'vue-router'
  6. import VideoView from '@/views/Video/src/VideoView.vue'
  7. const route = useRoute()
  8. const langStore = useLangStore()
  9. /* getCurrentInstance()可以用来获取当前组件实例 */
  10. let current = getCurrentInstance()?.appContext.config.globalProperties as any
  11. const langValue = ref()
  12. const { locale } = useI18n() // 解构出 locale
  13. langValue.value = localStorage.getItem('lang') || 'English'
  14. const languageChangetest = (label: string) => {
  15. if (label === 'Chinese') {
  16. // current.$i18n.locale = 'zh_TW'
  17. locale.value = 'zh_TW' // 修改 locale 的值
  18. langStore.setLang('Chinese')
  19. } else {
  20. // current.$i18n.locale = 'en_US'
  21. locale.value = 'en_US'
  22. langStore.setLang('English')
  23. }
  24. }
  25. languageChangetest(langValue.value)
  26. const langData = ref({})
  27. onMounted(async () => {
  28. try {
  29. const response = await fetch('./locales/en.json')
  30. console.log('Fetch response:', response)
  31. langData.value = await response.json()
  32. console.log('Fetch response:', langData.value)
  33. } catch (error) {
  34. console.error('Error fetching the JSON file:', error)
  35. }
  36. })
  37. </script>
  38. <template>
  39. <el-config-provider :locale="langStore.ElementLocale">
  40. <VideoView v-if="route.name === 'Demo Video'" />
  41. <RouterView v-else />
  42. </el-config-provider>
  43. </template>