27 lines
633 B
TypeScript
27 lines
633 B
TypeScript
import en from './i18n/en';
|
|
import ja from './i18n/ja';
|
|
import { createI18n } from 'vue-i18n';
|
|
|
|
export type Locale = 'en' | 'ja';
|
|
|
|
const loadLocaleMessages = async (locale: Locale) => {
|
|
return (await import(`./i18n/${locale}.ts`)).default;
|
|
};
|
|
|
|
const i18n = createI18n({
|
|
legacy: false,
|
|
locale: 'en',
|
|
fallbackLocale: 'en',
|
|
messages: { en, ja },
|
|
});
|
|
|
|
const setLocale = async (locale: Locale) => {
|
|
if (locale !== 'en') {
|
|
const messages = await loadLocaleMessages(locale);
|
|
i18n.global.setLocaleMessage(locale, messages);
|
|
}
|
|
i18n.global.locale.value = locale;
|
|
};
|
|
|
|
export { i18n, setLocale };
|