Intlayerで/[locale]/パスの代わりにドメインベースのルーティングをどのように設定しますか?
簡単な回答
ドメインベースのルーティングはパスベースのルーティング(example.com/[locale]/)よりも簡単です。なぜなら、すべてのミドルウェアやルーティング設定を省略できるからです。各言語のドメインにアプリをデプロイし、ドメインごとに1つの環境変数を設定するだけです。
ステップバイステップ
- ドメインごとに1回デプロイする(
example.com、exemple.fr、ejemplo.es、…)。 - 各デプロイメントごとに、
LOCALE(および通常のIntlayer環境変数)を、そのドメインが提供すべきロケールに設定します。 - その変数を
intlayer.config.[ts|js]のdefaultLocaleとして参照します。
ts
コードをコピー
コードをクリップボードにコピー
以上です。Next.js、Vite + React、Vite + Vueなどでも同様に動作します。
すべてのドメインが同じデプロイメントにアクセスする場合はどうすればよいですか?
すべてのドメインが同じアプリケーションバンドルを指している場合、実行時にホストを検出し、プロバイダーを通じてロケールを手動で渡す必要があります。
Next.jsの場合
tsx
コードをコピー
コードをクリップボードにコピー
Vueの場合
ts
コードをコピー
コードをクリップボードにコピー
getLocaleFromHostname() を独自のルックアップロジックに置き換えてください。
ロケールスイッチャーの更新
ドメインベースのルーティングを使用している場合、言語を変更することは別のドメインに移動することを意味します:
ts
コードをコピー
コードをクリップボードにコピー
ドメインベースのルーティングの利点
- 設定が簡単:
intlayerProxy、generateStaticParams、react-router、vue-routerの設定が不要 - より良いSEO: 各言語が独自のドメインを持つ
- よりクリーンなURL: パスにロケールのプレフィックスがない
- メンテナンスが容易: 各言語のデプロイが独立している