first commit
This commit is contained in:
38
src/boot/lang.js
Normal file
38
src/boot/lang.js
Normal file
@@ -0,0 +1,38 @@
|
||||
import { createI18n } from 'vue-i18n';
|
||||
import yaml from 'js-yaml';
|
||||
|
||||
export const lang = [];
|
||||
|
||||
const systemLocale = navigator.language || 'en-US';
|
||||
const savedLang = localStorage.getItem('lang');
|
||||
|
||||
const messages = {};
|
||||
const modules = import.meta.glob('src/assets/lang/*.yaml', {
|
||||
eager: true,
|
||||
import: 'default',
|
||||
query: '?raw',
|
||||
});
|
||||
|
||||
for (const path in modules) {
|
||||
const raw = modules[path];
|
||||
const parsed = yaml.load(raw);
|
||||
|
||||
// Extract the file name (e.g., "en.yaml" → "en")
|
||||
const locale = path.split('/').pop().replace('.yaml', '');
|
||||
|
||||
lang.push(locale);
|
||||
messages[locale] = parsed;
|
||||
}
|
||||
|
||||
const i18n = createI18n({
|
||||
legacy: false, // Composition API mode
|
||||
locale: savedLang || systemLocale,
|
||||
fallbackLocale: systemLocale,
|
||||
messages,
|
||||
});
|
||||
|
||||
export default ({ app }) => {
|
||||
app.use(i18n);
|
||||
};
|
||||
|
||||
export { i18n };
|
Reference in New Issue
Block a user