37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
import i18n from 'i18next'
|
|
import { initReactI18next } from 'react-i18next'
|
|
import LanguageDetector from 'i18next-browser-languagedetector'
|
|
|
|
import enTranslation from './locales/en/translation.json'
|
|
import esTranslation from './locales/es/translation.json'
|
|
import frTranslation from './locales/fr/translation.json'
|
|
import deTranslation from './locales/de/translation.json'
|
|
import zhTranslation from './locales/zh/translation.json'
|
|
|
|
const resources = {
|
|
en: { translation: enTranslation },
|
|
es: { translation: esTranslation },
|
|
fr: { translation: frTranslation },
|
|
de: { translation: deTranslation },
|
|
zh: { translation: zhTranslation },
|
|
}
|
|
|
|
i18n
|
|
.use(LanguageDetector) // Detect user language
|
|
.use(initReactI18next) // Pass i18n instance to react-i18next
|
|
.init({
|
|
resources,
|
|
fallbackLng: 'en', // Fallback to English if translation not found
|
|
debug: false, // Set to true for debugging
|
|
interpolation: {
|
|
escapeValue: false, // React already escapes values
|
|
},
|
|
detection: {
|
|
order: ['localStorage', 'navigator'], // Check localStorage first, then browser language
|
|
caches: ['localStorage'], // Cache language selection in localStorage
|
|
lookupLocalStorage: 'charon-language', // Key for storing language in localStorage
|
|
},
|
|
})
|
|
|
|
export default i18n
|