43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import type { Locale as TypeLocale } from '#i18n'
|
|
import { Locale } from 'vant'
|
|
import enUS from 'vant/es/locale/lang/en-US'
|
|
import zhCN from 'vant/es/locale/lang/zh-CN'
|
|
import jaJP from 'vant/es/locale/lang/ja-JP'
|
|
import zhTW from 'vant/es/locale/lang/zh-TW'
|
|
|
|
export default defineNuxtPlugin(() => {
|
|
// 载入 vant 语言包
|
|
Locale.use('zh-CN', zhCN)
|
|
Locale.use('en-US', enUS)
|
|
Locale.use('ja-JP', jaJP)
|
|
Locale.use('zh-TW', zhTW)
|
|
|
|
if (import.meta.client) {
|
|
const i18n = useNuxtApp().$i18n
|
|
const { setLocale } = i18n
|
|
const nuxtApp = useNuxtApp()
|
|
|
|
// 获取系统语言
|
|
const getSystemLanguage = () => {
|
|
const browserLang = navigator.language
|
|
|
|
// 将浏览器语言映射到应用支持的语言
|
|
if (browserLang.startsWith('zh')) {
|
|
return browserLang.includes('TW') || browserLang.includes('HK') ? 'zh-TW' : 'zh-CN'
|
|
} else if (browserLang.startsWith('ja')) {
|
|
return 'ja-JP'
|
|
} else if (browserLang.startsWith('en')) {
|
|
return 'en-US'
|
|
}
|
|
|
|
// 默认返回中文
|
|
return 'zh-CN'
|
|
}
|
|
|
|
// 使用系统语言
|
|
const systemLang = getSystemLanguage()
|
|
setLocale(systemLang as TypeLocale)
|
|
Locale.use(systemLang)
|
|
}
|
|
})
|