intlayer-next-js について
intlayer-next-jsは、Next.jsプロジェクトでIntlayerを使う開発者向けのガイドスキルです。利用するコンポーネントの近くに辞書を宣言する方針を示し、Server ComponentsとClient Componentsの導入方法を説明します。
主な機能
- 01コンポーネント近くで翻訳を宣言
- 02t()による辞書定義
- 03Server Componentsでの利用方法
- 04Client Componentsでの利用方法
- 05Next.js 14と15に対応
活用シーン
- 01Next.jsコンポーネントの翻訳内容作成
- 02サーバーコンポーネントでローカライズ内容を参照
- 03クライアントコンポーネントでuseIntlayerを利用
- 04Next.jsプロジェクトにIntlayerを設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ aymericzip/ intlayer-skills --skill intlayer-next-jsインストール後、Claude Code で/intlayer-next-jsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENCE.mdreferences/environment_nextjs_14.mdenvironment_nextjs_15.mdenvironment_nextjs_next-with-page-router.mdenvironment_nextjs_no-locale-path.mdenvironment_nextjs.mdpackages_intlayer_exports.mdpackages_next-intlayer_exports.mdpackages_next-intlayer_intlayerMiddleware.mdpackages_next-intlayer_t.mdpackages_next-intlayer_useDictionary.mdpackages_next-intlayer_useIntlayer.mdpackages_next-intlayer_useLocale.md詳細
Intlayer Next.js の使い方
中核となる理念
Intlayer は コンポーネントレベルのコンテンツ宣言を推進します。大規模なグローバル翻訳ファイルを使うのではなく、コンテンツは、それを使用する Next.js コンポーネントの近くにある *.content.ts ファイルで宣言します。
ワークフロー
翻訳されたコンポーネントを作成するには、2 つのファイルが必要です。
- 宣言: 辞書を定義するコンテンツファイル(例:
myComponent.content.ts)。 - 実装:
useIntlayerフックを使用する Next.js コンポーネント(サーバーまたはクライアント)。
1. コンテンツを宣言する
翻訳には t() を使用して、コンテンツファイルを作成します。
ファイル: src/components/MyComponent/myComponent.content.ts
import { t, type Dictionary } from "intlayer";
const content = {
// The 'key' must be unique and matches what you pass to useIntlayer()
key: "my-component",
content: {
text: t({
en: "Welcome",
fr: "Bienvenue",
es: "Hola",
}),
},
} satisfies Dictionary;
export default content;
セットアップ
サーバーコンポーネント
サーバーコンポーネントで Intlayer を使用するには、IntlayerServerProvider でロケールを提供し、next-intlayer/server の useIntlayer を使用します。
import { IntlayerServerProvider, useIntlayer } from "next-intlayer/server";
const MyServerComponent = () => {
const content = useIntlayer("my-component");
return (
<div>
<h1>{content.text}</h1>
</div>
);
};
const Page = async ({ params }) => {
const { locale } = await params;
return (
<IntlayerServerProvider locale={locale}>
<MyServerComponent />
</IntlayerServerProvider>
);
};
export default Page;
クライアントコンポーネント
クライアントコンポーネントでは、"use client" ディレクティブを追加し、next-intlayer の useIntlayer を使用します。コンポーネントが IntlayerClientProvider でラップされていることを確認してください。
"use client";
import { useIntlayer } from "next-intlayer";
export const MyClientComponent = () => {
const content = useIntlayer("my-component");
return (
<div>
<h1>{content.text}</h1>
</div>
);
};
参考資料
環境
パッケージ
コメント
Markdown 対応