39 lines
817 B
JavaScript
39 lines
817 B
JavaScript
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 };
|