feat(i18n): set up vue-i18n with dynamic locale loading
This commit is contained in:
27
frontend/src/i18n/index.js
Normal file
27
frontend/src/i18n/index.js
Normal file
@@ -0,0 +1,27 @@
|
||||
import { createI18n } from 'vue-i18n'
|
||||
import languages from '../../../locales/languages.json'
|
||||
|
||||
const localeFiles = import.meta.glob('../../../locales/!(languages).json', { eager: true })
|
||||
|
||||
const messages = {}
|
||||
const availableLocales = []
|
||||
|
||||
for (const path in localeFiles) {
|
||||
const key = path.match(/\/([^/]+)\.json$/)[1]
|
||||
if (languages[key]) {
|
||||
messages[key] = localeFiles[path].default
|
||||
availableLocales.push({ key, label: languages[key].label })
|
||||
}
|
||||
}
|
||||
|
||||
const savedLocale = localStorage.getItem('locale') || 'zh'
|
||||
|
||||
const i18n = createI18n({
|
||||
legacy: false,
|
||||
locale: savedLocale,
|
||||
fallbackLocale: 'zh',
|
||||
messages
|
||||
})
|
||||
|
||||
export { availableLocales }
|
||||
export default i18n
|
||||
Reference in New Issue
Block a user