关于 intlayer-next-js
intlayer-next-js 是面向 Next.js 项目的 Intlayer 使用指南技能,适用于实现多语言内容的开发者。它强调将内容字典放在使用它的组件旁,并分别说明 Server Components 与 Client Components 的接入方式。
主要功能
- 01组件旁声明翻译内容
- 02通过 t() 定义字典
- 03Server Components 接入方式
- 04Client Components 接入方式
- 05覆盖 Next.js 14 与 15
适用场景
- 01为 Next.js 组件创建翻译内容
- 02在服务端组件中读取本地化内容
- 03在客户端组件中使用 useIntlayer
- 04为 Next.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 文件中。
工作流
要创建已翻译的组件,需要两个文件:
- **声明:**内容文件(例如
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