🎉 Nextra 4.0 is released. Read more →
DocumentationGuideNext.js I18n

Next.js I18n

⚠️
This feature is only available in the docs theme.

Nextra supports Next.js Internationalized Routing out of the box. These docs explain how to configure and use it.

Add I18n Config

To add multi-language pages to your Nextra application, you need to config i18n in next.config.mjs first:

next.config.mjs
import nextra from 'nextra'
 
const withNextra = nextra({
  theme: 'nextra-theme-docs',
  themeConfig: './theme.config.tsx'
})
 
export default withNextra({
  i18n: {
    locales: ['en-US', 'zh-CN', 'de-DE'],
    defaultLocale: 'en-US'
  }
})

Add Locale to Filenames

Then, add the locale codes to your file extensions (required for the default locale too):

/pages
  _meta.en-US.json
  _meta.zh-CN.json
  _meta.de-DE.json
  index.en-US.md
  index.zh-CN.md
  index.de-DE.md
  ...

Configure the Docs Theme

Finally, add the i18n option to your theme.config.jsx to configure the language dropdown:

theme.config.jsx
i18n: [
  { locale: 'en-US', name: 'English' },
  { locale: 'zh-CN', name: '中文' },
  { locale: 'de-DE', name: 'Deutsch' },
  { locale: 'ar-SA', name: 'العربية', direction: 'rtl' }
]