55 lines
1.4 KiB
Vue
55 lines
1.4 KiB
Vue
<template>
|
||
<!--element-plus语言国际化,全局修改为中文-->
|
||
<el-config-provider
|
||
:locale='locale'
|
||
:size='assemblySize'
|
||
:button='buttonConfig'
|
||
>
|
||
<router-view />
|
||
</el-config-provider>
|
||
</template>
|
||
|
||
<script lang='ts' setup>
|
||
defineOptions({
|
||
name: 'App',
|
||
})
|
||
import { useI18n } from 'vue-i18n'
|
||
import { getBrowserLang } from '@/utils'
|
||
import { useTheme } from '@/hooks/useTheme'
|
||
import { ElConfigProvider } from 'element-plus'
|
||
import { 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'
|
||
|
||
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></style>
|