fix: add static JSON imports with debug logging for i18n

This commit is contained in:
gnezim
2026-04-06 10:12:35 +03:00
parent 1b5f07249d
commit d6be4d4716
+32 -37
View File
@@ -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