59 lines
1.5 KiB
Vue
59 lines
1.5 KiB
Vue
<template>
|
||
<!--element-plus语言国际化,全局修改为中文-->
|
||
<!-- 测试升级功能 - 2025-10-24 -->
|
||
<el-config-provider :locale="locale" :size="assemblySize" :button="buttonConfig">
|
||
<router-view />
|
||
</el-config-provider>
|
||
</template>
|
||
|
||
<script lang="ts" setup>
|
||
import { useI18n } from 'vue-i18n'
|
||
import { getBrowserLang } from '@/utils'
|
||
import { useTheme } from '@/hooks/useTheme'
|
||
import { ElConfigProvider } from 'element-plus'
|
||
import { type LanguageType } from './stores/interface'
|
||
import { useGlobalStore } from '@/stores/modules/global'
|
||
import en from 'element-plus/es/locale/lang/en'
|
||
import zhCn from 'element-plus/es/locale/lang/zh-cn'
|
||
|
||
defineOptions({
|
||
name: 'App'
|
||
})
|
||
|
||
const globalStore = useGlobalStore()
|
||
|
||
// init theme
|
||
const { initTheme } = useTheme()
|
||
initTheme()
|
||
|
||
// init language
|
||
const i18n = useI18n()
|
||
onMounted(() => {
|
||
const language = globalStore.language ?? getBrowserLang()
|
||
i18n.locale.value = language
|
||
globalStore.setGlobalState('language', language as LanguageType)
|
||
})
|
||
|
||
// element language
|
||
const locale = computed(() => {
|
||
if (globalStore.language == 'zh') return zhCn
|
||
if (globalStore.language == 'en') return en
|
||
return getBrowserLang() == 'zh' ? zhCn : en
|
||
})
|
||
|
||
// element assemblySize
|
||
const assemblySize = computed(() => globalStore.assemblySize)
|
||
|
||
// element button config
|
||
const buttonConfig = reactive({ autoInsertSpace: false })
|
||
|
||
document.getElementById('loadingPage')?.remove()
|
||
</script>
|
||
<style scoped>
|
||
#app {
|
||
width: 100vw;
|
||
height: 100vh;
|
||
overflow: hidden;
|
||
}
|
||
</style>
|