Next.js統合: useIntlayerフックのドキュメント
useIntlayerフックは、Next.jsアプリケーション向けに設計されており、ローカライズされたコンテンツを効率的に取得および管理するためのものです。このドキュメントでは、Next.jsプロジェクト内でフックを利用する方法に焦点を当て、適切なローカライゼーションの実践を確保します。
Next.jsでのuseIntlayerのインポート
Next.jsアプリケーションでクライアントサイドまたはサーバーサイドのコンポーネントを操作するかに応じて、以下のようにuseIntlayerフックをインポートできます。
クライアントコンポーネント:
typescriptimport { useIntlayer } from "next-intlayer"; // クライアントサイドコンポーネントで使用
サーバーコンポーネント:
tsximport { useIntlayer } from "next-intlayer/server"; // サーバーサイドコンポーネントで使用
パラメータ
- key: 取得したいコンテンツの辞書キーを示す文字列識別子。
- locale (オプション): 使用する特定のロケール。省略された場合、フックはクライアントまたはサーバーコンテキストで設定されたロケールをデフォルトとして使用します。
辞書ファイル
すべてのコンテンツキーがコンテンツ宣言ファイル内で定義されていることが重要です。これにより、ランタイムエラーを防ぎ、型安全性を確保できます。このアプローチは、TypeScript統合を容易にし、コンパイル時の検証を可能にします。
コンテンツ宣言ファイルの設定手順についてはこちらをご覧ください。
Next.jsでの使用例
以下は、useIntlayerフックをNext.jsページ内で実装し、アプリケーションの現在のロケールに基づいてローカライズされたコンテンツを動的にロードする方法です。
src/pages/[locale]/index.tsx
import { ClientComponentExample } from "@components/ClientComponentExample";import { ServerComponentExample } from "@components/ServerComponentExample";import { type NextPageIntlayer, IntlayerClientProvider } from "next-intlayer";import { useIntlayer, IntlayerServerProvider } from "next-intlayer/server";const HomePage: NextPageIntlayer = async ({ params }) => { const { locale } = await params; const content = useIntlayer("homepage", locale); return ( <> <p>{content.introduction}</p> <IntlayerClientProvider locale={locale}> <ClientComponentExample /> </IntlayerClientProvider> <IntlayerServerProvider locale={locale}> <ServerComponentExample /> </IntlayerServerProvider> </> );};
src/components/ClientComponentExample.tsx
"use-client";import type { FC } from "react";import { useIntlayer } from "next-intlayer";const ClientComponentExample: FC = () => { const content = useIntlayer("component-content"); return ( <div> <h1>{content.title}</h1> <p>{content.description}</p> </div> );};
src/components/ServerComponentExample.tsx
import type { FC } from "react";import { useIntlayer } from "next-intlayer/server";const ServerComponentExample: FC = () => { const content = useIntlayer("component-content"); return ( <div> <h1>{content.title}</h1> <p>{content.description}</p> </div> );};
属性ローカライゼーションの処理
alt、title、href、aria-labelなどの属性をローカライズするには、コンテンツを正しく参照してください。
tsx
<img src={content.image.src.value} alt={content.image.alt.value} />
詳細情報
- Intlayerビジュアルエディタ: コンテンツ管理を容易にするビジュアルエディタの使用方法についてはこちらをご覧ください。
このドキュメントは、Next.js環境内でのuseIntlayerフックの使用に特化しており、Next.jsアプリケーション全体でローカライゼーションを管理するための堅牢なソリューションを提供します。
このドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンク