Skip to content
Pages Router

Next.js Pages Router internationalization (i18n)

While it's recommended to use next-intl with the App Router, the Pages Router is still fully supported.

  1. npm install next-intl
  2. Set up internationalized routing (opens in a new tab)
  3. Add the provider in _app.tsx
import {NextIntlClientProvider} from 'next-intl';
import {useRouter} from 'next/router';
export default function App({Component, pageProps}) {
  const router = useRouter();
  return (
      <Component {...pageProps} />
  1. Provide messages on a page-level.
export async function getStaticProps(context) {
  return {
    props: {
      // You can get the messages from anywhere you like. The recommended
      // pattern is to put them in JSON files separated by locale and read
      // the desired one based on the `locale` received from Next.js.
      messages: (await import(`../../messages/${context.locale}.json`)).default
  1. Use translations in your components!

Next steps: