All files / app/src/shared/lib/change-language use-translate.tsx

77.77% Statements 14/18
100% Branches 1/1
25% Functions 1/4
77.77% Lines 14/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 371x               1x 742x 742x     742x           742x     742x   742x         742x 742x   742x 742x 742x 742x  
import { useTranslation } from 'next-i18next'
import { useRouter } from 'next/router'
// Вернуть, когда будет несколько языков
// import En from '@/shared/assets/icons/common/en.svg'
// import Ru from '@/shared/assets/icons/common/ru.svg'
import { LANG_EN, LANG_RU } from '@/shared/config'
import { Language } from '@/shared/@types'
 
export const useTranslate = (namespace: string[] = []) => {
  const router = useRouter()
  const translation = useTranslation(namespace)
  // const [Icon, setIcon] = useState(() => En)
 
  const lang = translation.i18n.language
 
  // useEffect(() => {
  //   setIcon(() => (lang === LANG_RU ? En : Ru))
  // }, [lang])
 
  const _changeLocale = (locale: string) =>
    router.push({ pathname: router.pathname, query: router.query }, router.asPath, { locale })
 
  const changeLanguage = (lang: Language) => _changeLocale(lang).then(() => translation.i18n.changeLanguage(lang))
 
  const toggleLanguage = () => {
    const newLang = lang === LANG_RU ? LANG_EN : LANG_RU
    _changeLocale(newLang).then(() => translation.i18n.changeLanguage(newLang))
  }
 
  return {
    ...translation,
    // Icon,
    changeLanguage,
    toggleLanguage,
  }
}