Files
claude-relay-service/web/admin-spa/src/i18n/index.js

91 lines
2.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { createI18n } from 'vue-i18n'
import zhCn from './locales/zh-cn.js'
import zhTw from './locales/zh-tw.js'
import en from './locales/en.js'
// 获取浏览器语言设置
function getBrowserLocale() {
const navigatorLocale = navigator.languages ? navigator.languages[0] : navigator.language
if (!navigatorLocale) {
return 'zh-cn'
}
const trimmedLocale = navigatorLocale.trim().split(';')[0].toLowerCase()
if (trimmedLocale.includes('zh')) {
if (
trimmedLocale.includes('tw') ||
trimmedLocale.includes('hk') ||
trimmedLocale.includes('mo')
) {
return 'zh-tw'
}
return 'zh-cn'
}
if (trimmedLocale.includes('en')) {
return 'en'
}
return 'zh-cn' // 默认简体中文
}
// 获取保存的语言设置或浏览器语言
const savedLocale = localStorage.getItem('app-locale')
const defaultLocale = savedLocale || getBrowserLocale()
// 创建一个函数来获取本地化的语言信息
export function getSupportedLocalesWithI18n(t) {
return {
'zh-cn': {
name: t('common.languageSwitch.zhCnName'),
flag: t('common.languageSwitch.zhCnFlag'),
shortName: t('common.languageSwitch.zhCnFlag')
},
'zh-tw': {
name: t('common.languageSwitch.zhTwName'),
flag: t('common.languageSwitch.zhTwFlag'),
shortName: t('common.languageSwitch.zhTwFlag')
},
en: {
name: t('common.languageSwitch.enName'),
flag: t('common.languageSwitch.enFlag'),
shortName: t('common.languageSwitch.enFlag')
}
}
}
// 保持原有的SUPPORTED_LOCALES作为默认值用于不依赖i18n的场景
export const SUPPORTED_LOCALES = {
'zh-cn': {
name: '简体中文',
flag: '简',
shortName: '简'
},
'zh-tw': {
name: '繁體中文',
flag: '繁',
shortName: '繁'
},
en: {
name: 'English',
flag: 'EN',
shortName: 'EN'
}
}
export const i18n = createI18n({
legacy: false, // 使用 Composition API 模式
locale: defaultLocale,
fallbackLocale: 'zh-cn',
messages: {
'zh-cn': zhCn,
'zh-tw': zhTw,
en: en
},
globalInjection: true // 全局注入 $t 函数
})
export default i18n