/** * i18n Configuration * Internationalization setup using react-i18next */ import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; import LanguageDetector from 'i18next-browser-languagedetector'; // Import translation files import en from './locales/en.json'; import es from './locales/es.json'; import fr from './locales/fr.json'; import de from './locales/de.json'; export const supportedLanguages = [ { code: 'en', name: 'English', flag: '🇺🇸' }, { code: 'es', name: 'Español', flag: '🇪🇸' }, { code: 'fr', name: 'Français', flag: '🇫🇷' }, { code: 'de', name: 'Deutsch', flag: '🇩🇪' }, ] as const; export type SupportedLanguage = typeof supportedLanguages[number]['code']; const resources = { en: { translation: en }, es: { translation: es }, fr: { translation: fr }, de: { translation: de }, }; i18n .use(LanguageDetector) .use(initReactI18next) .init({ resources, fallbackLng: 'en', debug: false, // Disable debug logging interpolation: { escapeValue: false, // React already escapes values }, detection: { // Order of language detection order: ['localStorage', 'navigator', 'htmlTag'], // Cache user language preference caches: ['localStorage'], lookupLocalStorage: 'smoothschedule_language', }, }); export default i18n;