/** * Cookie names for language preference */ const LANGUAGE_COOKIE_NAME = 'votianlt.language'; const COOKIE_MAX_AGE_DAYS = 365; // Cookie gültig für 1 Jahr /** * Sets the language cookie with the selected language code * @param languageCode - The language code (e.g., 'de', 'en', 'fr', 'es') */ export function setLanguageCookie(languageCode: string): void { const maxAge = COOKIE_MAX_AGE_DAYS * 24 * 60 * 60; // Convert days to seconds document.cookie = `${LANGUAGE_COOKIE_NAME}=${languageCode};path=/;max-age=${maxAge};SameSite=Lax`; } /** * Gets the language code from the cookie * @returns The language code or null if not found */ export function getLanguageCookie(): string | null { const cookies = document.cookie.split(';'); for (const cookie of cookies) { const [name, value] = cookie.trim().split('='); if (name === LANGUAGE_COOKIE_NAME) { return decodeURIComponent(value); } } return null; } /** * Clears the language cookie */ export function clearLanguageCookie(): void { document.cookie = `${LANGUAGE_COOKIE_NAME}=;path=/;max-age=0;SameSite=Lax`; } /** * Maps Language enum values to locale strings */ export const languageToLocale: Record = { DE: 'de', EN: 'en', FR: 'fr', ES: 'es', }; /** * Maps locale strings to Language enum values */ export const localeToLanguage: Record = { de: 'DE', en: 'EN', fr: 'FR', es: 'ES', };