import en from '../../locales/en.json'
import ru from '../../locales/ru.json'
const translations = {
en,
ru,
}
export type LanguageCode = 'en' | 'ru'
export const useTranslation = (initialLanguage: LanguageCode = 'en') => {
const [language, setLanguage] = useState<LanguageCode>(initialLanguage)
const [texts, setTexts] = useState<(typeof translations)[LanguageCode]>(
translations[initialLanguage]
)
useEffect(() => {
setTexts(translations[language])
}, [language])
const t = useCallback(
(key: string): any => {
const value = key.split('.').reduce((obj, keyPart) => {
if (obj && typeof obj === 'object') {
return obj[keyPart]
}
return undefined
}, texts as Record<string, any>)
return value
},
[texts]
)
return { t, setLanguage, language }
}
Чтобы реализовать вращение на 3 полных круга + случайный индекс, нужно учитывать поведение с loop, а также использовать slideToLoop, который корректно обрабатывает циклическую прокрутку
А вот это не слишком плохо?