Get current language next-i18next
withTranslation
injects the i18n
object.
import {withTranslation} from '../config/next-i18next';const Home = function Home({ i18n }) { return (<div>{i18n.language}</div>) // ----------------^};Home.getInitialProps = async () => { return {namespacesRequired: ['home']}};export default withTranslation('home')(Home);
Or using Hooks,
import {useTranslation} from '../config/next-i18next';const Home = function Home() { const { i18n } = useTranslation('home'); return (<div>{i18n.language}</div>) // ----------------^};Home.getInitialProps = async () => { return {namespacesRequired: ['home']}};export default Home;
With Next.js you could also use the useRouter hook.
import {withTranslation} from '../config/next-i18next';import { useRouter } from 'next/router'const Home = function Home() {const router = useRouter()const currentLang = router.locale // => locale string eg. "en" return (<div>test</div>)};Home.getInitialProps = async () => { return {namespacesRequired: ['home']}};export default withTranslation('home')(Home);