For the SEO purposes I need to set up English as default language -> mynextapp.com/ when user enters the website, he/she can choose between ENGLISH or FRENCH, if English is selected the url will change to mynextapp.com/en, if the French will be chosen -> mynextapp.com/fr
Currently I am using the build in option in Next – i18n:
i18n: {
locales: ['en', 'fr'],
defaultLocale: 'en',
},
But this allows me to have English only as a default path = mynextapp.com/
Language Switcher:
<Link
href="/"
locale={router.locale === 'en' ? 'fr' : 'en'}
>
<a>Switch</a>
</Link>
Is there a way how to handle the same language under different urls? So that when you click on "en" in language switcher, the url path should be myapp.com/en.
2
Answers
To force the default language to add the locale to the URL you could pass it to the
href
directly, and opt-out of automatically handling the locale prefixing by settinglocale
tofalse
.If you want all your
Link
s to behave this way, and also force the default locale on the URL, the same logic would need to be applied.Assuming you have a link to the
/about
page, it would look like the following.If using
next/router
to do the routing, the same logic can also be applied.For future reference, I managed to get my code working by routing to the other language (2 locales, one of them default) and have the default prefix always in the URL by using the following redirecting logic in my language switcher: