28 lines
739 B
TypeScript
28 lines
739 B
TypeScript
import en from './i18n/en';
|
|
import { createI18n } from 'vue-i18n';
|
|
|
|
export type Locale = 'en' | 'ja' | 'pl' | 'zh-Hans' | 'es' | 'ko';
|
|
|
|
const loadLocaleMessages = async (locale: Locale) => {
|
|
return (await import(`./i18n/${locale}.ts`)).default;
|
|
};
|
|
|
|
const i18n = createI18n({
|
|
legacy: false,
|
|
locale: 'en',
|
|
fallbackLocale: 'en',
|
|
warnHtmlInMessage: false,
|
|
warnHtmlMessage: false,
|
|
messages: { en, ja: {}, pl: {}, 'zh-Hans': {}, es: {}, ko: {} },
|
|
});
|
|
|
|
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 };
|