40 lines
919 B
JavaScript
40 lines
919 B
JavaScript
|
import { createI18n } from 'vue-i18n'
|
||
|
import en from '../locales/en'
|
||
|
import zh from '../locales/zh'
|
||
|
import ja from '../locales/ja'
|
||
|
import zhTW from '../locales/zh-TW'
|
||
|
|
||
|
// 获取浏览器语言
|
||
|
function getBrowserLanguage() {
|
||
|
const language = navigator.language || navigator.userLanguage
|
||
|
const lang = language.toLowerCase()
|
||
|
|
||
|
// 匹配语言
|
||
|
if (lang.includes('zh')) {
|
||
|
if (lang.includes('tw') || lang.includes('hk')) {
|
||
|
return 'zh-TW'
|
||
|
}
|
||
|
return 'zh'
|
||
|
}
|
||
|
if (lang.includes('ja')) {
|
||
|
return 'ja'
|
||
|
}
|
||
|
return 'zh' // 默认中文,而不是英语
|
||
|
}
|
||
|
|
||
|
// 获取存储的语言或浏览器语言
|
||
|
const savedLanguage = localStorage.getItem('language') || getBrowserLanguage()
|
||
|
|
||
|
const i18n = createI18n({
|
||
|
legacy: false, // 使用 Composition API
|
||
|
locale: savedLanguage,
|
||
|
fallbackLocale: 'zh', // 备用语言
|
||
|
messages: {
|
||
|
en,
|
||
|
zh,
|
||
|
ja,
|
||
|
'zh-TW': zhTW
|
||
|
}
|
||
|
})
|
||
|
|
||
|
export default i18n
|