文档 Next.js

Next.js

使用 next-intl 或直接使用 i1n SDK 将 i1n 集成到 Next.js 中。

设置

在您的 Next.js 项目中运行 i1n init。CLI 会自动检测是否存在 next-intl,并在您的 locales/ 目录中配置嵌套的 JSON 格式。

i1n 可与 App Router 和 Pages Router 配合使用。您可以独立使用 i1n SDK,或通过 Bridge Mode 连接到 next-intl。

独立模式

从 i1n 导入 init 和 t,加载您的翻译资源,并在组件中直接使用 t()。自动生成的 i1n.d.ts 文件提供完整的类型安全和 IDE 自动补全。

这种方法完全取代了 next-intl。使用 init() 加载资源,使用 setLocale() 切换语言。不需要额外的 i18n 库。

Bridge Mode with next-intl

如果您的项目已在使用 next-intl,只需添加一行代码即可将其连接到 i1n:registerI1n((key, params) => nextIntlT(key, params))。这将在保留现有 next-intl 设置的同时,添加 i1n 的类型安全自动补全功能。

i1n 管理翻译文件、AI 翻译和类型生成。next-intl 继续处理运行时加载、服务器组件和路由。您可以获得两个系统的优势,且无需迁移成本。

部署

在构建步骤或 CI/CD 管道中添加 i1n pull,以确保在部署前翻译始终保持同步。

Next.js 的静态生成 (SSG) 和服务器端渲染 (SSR) 都可与 i1n 管理的翻译文件无缝协作。

app/[locale]/page.tsx
import { t } from 'i1n'

export default function HomePage() {
  return (
    <main>
      <h1>{t('home.title')}</h1>
      <p>{t('home.subtitle')}</p>
    </main>
  )
}
Bridge Mode — src/i18n.ts
import { registerI1n } from 'i1n'
import { useTranslations } from 'next-intl'

const t = useTranslations()
registerI1n((key, params) => t(key, params))

相关