fix: add static JSON imports with debug logging for i18n
This commit is contained in:
@@ -1,8 +1,17 @@
|
||||
import i18n from 'i18next'
|
||||
import { initReactI18next } from 'react-i18next'
|
||||
import ruData from '../../../public/assets/i18n/ru.json'
|
||||
import enData from '../../../public/assets/i18n/en.json'
|
||||
import esData from '../../../public/assets/i18n/es.json'
|
||||
import frData from '../../../public/assets/i18n/fr.json'
|
||||
import itData from '../../../public/assets/i18n/it.json'
|
||||
import jaData from '../../../public/assets/i18n/ja.json'
|
||||
import koData from '../../../public/assets/i18n/ko.json'
|
||||
import deData from '../../../public/assets/i18n/de.json'
|
||||
import zhData from '../../../public/assets/i18n/zh.json'
|
||||
|
||||
// Flatten nested translation objects
|
||||
const flattenTranslations = (obj: any, prefix = ''): Record<string, string> => {
|
||||
const flattenTranslations = (obj: any): Record<string, string> => {
|
||||
const result: Record<string, string> = {}
|
||||
|
||||
const flatten = (current: any, path: string) => {
|
||||
@@ -16,7 +25,7 @@ const flattenTranslations = (obj: any, prefix = ''): Record<string, string> => {
|
||||
}
|
||||
}
|
||||
|
||||
flatten(obj, prefix)
|
||||
flatten(obj, '')
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -49,21 +58,30 @@ const getInitialLanguage = (): string => {
|
||||
|
||||
const lng = getInitialLanguage()
|
||||
|
||||
// Initialize with empty resources, will be loaded dynamically
|
||||
// Create resources with flattened translations
|
||||
const ruFlat = flattenTranslations(ruData)
|
||||
const resources = {
|
||||
ru: { translation: ruFlat },
|
||||
en: { translation: flattenTranslations(enData) },
|
||||
es: { translation: flattenTranslations(esData) },
|
||||
fr: { translation: flattenTranslations(frData) },
|
||||
it: { translation: flattenTranslations(itData) },
|
||||
ja: { translation: flattenTranslations(jaData) },
|
||||
ko: { translation: flattenTranslations(koData) },
|
||||
de: { translation: flattenTranslations(deData) },
|
||||
zh: { translation: flattenTranslations(zhData) },
|
||||
}
|
||||
|
||||
// Debug logging
|
||||
console.log('i18n: Selected language:', lng)
|
||||
console.log('i18n: SHARED.TRIP_TYPE value:', ruFlat['SHARED.TRIP_TYPE'])
|
||||
console.log('i18n: SHARED.SELECT_CITY value:', ruFlat['SHARED.SELECT_CITY'])
|
||||
console.log('i18n: Number of keys in ru.translation:', Object.keys(ruFlat).length)
|
||||
|
||||
i18n
|
||||
.use(initReactI18next)
|
||||
.init({
|
||||
resources: {
|
||||
ru: { translation: {} },
|
||||
en: { translation: {} },
|
||||
es: { translation: {} },
|
||||
fr: { translation: {} },
|
||||
it: { translation: {} },
|
||||
ja: { translation: {} },
|
||||
ko: { translation: {} },
|
||||
de: { translation: {} },
|
||||
zh: { translation: {} },
|
||||
},
|
||||
resources,
|
||||
fallbackLng: 'ru',
|
||||
lng,
|
||||
defaultNS: 'translation',
|
||||
@@ -76,27 +94,4 @@ i18n
|
||||
},
|
||||
})
|
||||
|
||||
// Load translations dynamically
|
||||
const loadLanguage = async (language: string) => {
|
||||
try {
|
||||
const response = await fetch(`/assets/i18n/${language}.json`)
|
||||
if (!response.ok) throw new Error(`Failed to load ${language} translations`)
|
||||
|
||||
const data = await response.json()
|
||||
const flattened = flattenTranslations(data)
|
||||
|
||||
i18n.addResourceBundle(language, 'translation', flattened, true, true)
|
||||
} catch (error) {
|
||||
console.error(`Error loading ${language} translations:`, error)
|
||||
}
|
||||
}
|
||||
|
||||
// Load current language
|
||||
loadLanguage(lng).then(() => {
|
||||
// Also preload fallback language
|
||||
if (lng !== 'ru') {
|
||||
loadLanguage('ru')
|
||||
}
|
||||
})
|
||||
|
||||
export default i18n
|
||||
|
||||
Reference in New Issue
Block a user