Nextra 3.0 がリリースされました。 詳しくはこちら

Next.js I18n

⚠️

この機能は nextra-theme-docs でのみ利用可能です。

Nextra は、Next.js の国際化ルーティング を標準でサポートしています。このドキュメントでは、その設定方法と使用方法について説明します。

I18n 設定の追加

Nextra アプリケーションに多言語ページを追加するには、まず next.config.mjsi18n を設定する必要があります。

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

: UTS ロケール識別子 の任意の形式を使用して、next.config ファイルにロケールを定義できます。例えば、en-US (アメリカ合衆国で話される英語) のような言語と地域形式などです。

ドキュメントテーマの設定

theme.config.jsxi18n オプションを追加して、言語ドロップダウンを設定します。

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

ユーザーが選択した言語を自動検出してリダイレクトする (オプション)

ユーザーの優先言語を自動的に検出して、サイトの対応するバージョンにリダイレクトできます。これを実現するには、プロジェクトのルートに middleware.js ファイルを作成し、nextra/locales から Nextra のミドルウェア関数をエクスポートします。

middleware.js
export { middleware } from 'nextra/locales'
 
export const config = {
  // Matcher ignoring `/_next/` and `/api/`
  matcher: [
    '/((?!api|_next/static|_next/image|favicon.ico|icon.svg|apple-icon.png|manifest).*)'
  ]
}
⚠️

: このアプローチは、nextConfigoutput: "export" を使用して静的にエクスポートされた i18n サイトでは機能しません。

カスタム 404 ページ (オプション)

Nextra 3 では、共有テーマレイアウトを使用する i18n ウェブサイトで 404.mdx ページを作成することはできません。ただし、翻訳付きの 404.jsx ページを実装できます。その方法については、SWR i18n の例 を参照してください。

Nextra 4 では、共有テーマレイアウトを使用する i18n ウェブサイト用に、翻訳付きのカスタム not-found.jsx を作成できます。この実装については、SWR i18n の例 を確認してください。