app/src/plugins/vue-i18n.tstypescript
import { createI18n } from "vue-i18n";
import de from "../i18n/de.json";
import en from "../i18n/en.json";
const messages = { de, en };
const dateTimeFormats = {
en: {
time: {
hour: "numeric",
minute: "numeric",
},
date: {
year: "numeric",
month: "numeric",
day: "numeric",
},
},
de: {
time: {
hour: "numeric",
minute: "numeric",
},
date: {
year: "numeric",
month: "numeric",
day: "numeric",
},
},
} as const;
// Load language from localStorage or browser settings
// (moved from LanguageService to avoid circular dependency)
const localStorageKey = "cp-locale";
const storedLanguage = localStorage.getItem(localStorageKey);
const usersLanguage = window.navigator.language.split("-")[0] ?? "";
const availableLocales = Object.keys(messages);
let locale = "de";
if (storedLanguage && availableLocales.includes(storedLanguage)) {
locale = storedLanguage;
} else if (availableLocales.includes(usersLanguage)) {
locale = usersLanguage;
}
const i18n = createI18n({
legacy: false,
globalInjection: true,
locale: locale,
fallbackLocale: "de",
messages,
datetimeFormats: dateTimeFormats,
warnHtmlMessage: false,
});
export default i18n;