33 lines
803 B
TypeScript
33 lines
803 B
TypeScript
import type {I18n} from 'vue-i18n';
|
|
import {createI18n as vueCreateI18n} from 'vue-i18n';
|
|
import {datetimeFormatsEn, messagesEn} from '@/locale/en';
|
|
import {datetimeFormatsDe, messagesDe} from '@/locale/de';
|
|
|
|
const messages = {
|
|
en: messagesEn,
|
|
de: messagesDe,
|
|
};
|
|
|
|
const datetimeFormats = {
|
|
en: datetimeFormatsEn,
|
|
de: datetimeFormatsDe,
|
|
};
|
|
|
|
export function createI18n(): I18n {
|
|
let browserLocale = (navigator.language ?? '').toLowerCase();
|
|
const match = browserLocale.match(/^([a-z][a-z])/);
|
|
if (match) {
|
|
browserLocale = match[1];
|
|
} else {
|
|
browserLocale = 'en';
|
|
}
|
|
return vueCreateI18n({
|
|
locale: browserLocale,
|
|
fallbackLocale: 'en',
|
|
messages: messages,
|
|
//@ts-ignore TS2769 TODO weird typing issue
|
|
datetimeFormats: datetimeFormats,
|
|
legacy: true,
|
|
});
|
|
}
|