28 lines
948 B
JavaScript
28 lines
948 B
JavaScript
// 使用 require.context 动态加载 locales 目录中的语言文件
|
|
|
|
export function loadLocaleMessages() {
|
|
const locales = require.context('@/locales', true, /\.js$/)
|
|
|
|
return locales.keys().reduce((messages, key) => {
|
|
// 获取语言文件的默认导出
|
|
const locale = locales(key).default
|
|
|
|
// 根据文件名推断语言代码,比如将 `en_US.js` 解析为 `en_US`
|
|
const localeKey = key.match(/([a-zA-Z_]+)\./i)[1]
|
|
|
|
// 添加到 messages 对象
|
|
messages[localeKey] = locale
|
|
return messages
|
|
}, {})
|
|
}
|
|
|
|
export function getBrowserLanguage() {
|
|
const browserLanguage = navigator.language || navigator.userLanguage
|
|
return browserLanguage.replace('-', '_')
|
|
}
|
|
|
|
// 获取浏览器语言,判断是否支持,返回相应语言代码
|
|
export function getBrowserLocale(messages, fallbackLocale = 'en_US') {
|
|
return Object.keys(messages).includes(getBrowserLanguage()) ? getBrowserLanguage() : fallbackLocale
|
|
}
|