jmalcloud-view/src/utils/loadLocaleMessages.js
2024-09-10 17:50:30 +08:00

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
}