LogoPDFuck
LogoPDFuck
国际化
2025/03/15

国际化

在您的文档中支持多种语言

开始之前

Fumadocs 不是一个功能齐全的 i18n 库,它只管理自己的组件和工具。

您可以使用其他库,如 next-intl,用于应用程序的其余部分。 阅读 Next.js 文档,了解更多关于在 Next.js 中实现 I18n 的信息。

手动设置

在一个文件中定义 i18n 配置,我们将在本指南中使用

@/ilb/i18n
导入它。

将其传递给源加载器。

import { i18n } from '@/lib/i18n'; import { loader } from 'fumadocs-core/source'; export const source = loader({ i18n, // other options });

并更新 Fumadocs UI 布局选项。

import { i18n } from '@/lib/i18n'; import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared'; export function baseOptions(locale: string): BaseLayoutProps { return { i18n, // different props based on `locale` }; }

中间件

创建一个将用户重定向到适当语言环境的中间件。

{ "file": "../../examples/i18n/middleware.ts", "codeblock": { "lang": "ts", "meta": "title=\"middleware.ts\"" } }

查看中间件了解可自定义选项。

请注意,这是可选的,您也可以使用自己的中间件或 i18n 库提供的中间件。

路由

创建一个

/app/[lang]
文件夹,并将所有文件(例如
page.tsx
、
layout.tsx
)从
/app
移动到该文件夹。

将根提供程序包装在

I18nProvider
中,并向其提供可用语言和翻译。 请注意,默认情况下只提供英文翻译。

import { RootProvider } from 'fumadocs-ui/provider'; import { I18nProvider, type Translations } from 'fumadocs-ui/i18n'; const cn: Partial<Translations> = { search: 'Translated Content', // other translations }; // available languages that will be displayed on UI // make sure `locale` is consistent with your i18n config const locales = [ { name: 'English', locale: 'en', }, { name: 'Chinese', locale: 'cn', }, ]; export default async function RootLayout({ params, children, }: { params: Promise<{ lang: string }>; children: React.ReactNode; }) { const lang = (await params).lang; return ( <html lang={lang}> <body> <I18nProvider locale={lang} locales={locales} translations={{ cn }[lang]} > <RootProvider>{children}</RootProvider> </I18nProvider> </body> </html> ); }

传递区域设置

在您的页面和布局中将区域设置传递给 Fumadocs。

搜索

在您的搜索解决方案上配置 i18n。

  • 内置搜索 (Orama): 对于支持的语言,无需进一步更改。

    否则,需要额外配置(例如中文和日语)。请参阅特殊语言。

  • 云解决方案(例如 Algolia): 它们通常官方支持多语言。

编写文档

导航

Fumadocs 只处理其自己的布局(例如侧边栏)的导航。 对于其他地方,您可以使用

useParams
钩子从 url 获取区域设置,并将其添加到
href
。

import Link from 'next/link'; import { useParams } from 'next/navigation'; const { lang } = useParams(); return <Link href={`/${lang}/another-page`}>This is a link</Link>;

另外,

fumadocs-core/dynamic-link
组件支持动态 hrefs,您可以使用它来添加区域设置前缀。 这对于 Markdown/MDX 内容很有用。

import { DynamicLink } from 'fumadocs-core/dynamic-link'; <DynamicLink href="/[lang]/another-page">This is a link</DynamicLink>
全部文章

作者

avatar for MkSaaS模板
MkSaaS模板

分类

  • 公司
  • 产品
手动设置中间件路由传递区域设置搜索编写文档导航

更多文章

测试专用付费文章
产品

测试专用付费文章

这是一篇测试专用付费文章。

avatar for Fox
Fox
2025/08/30
Markdown
公司新闻

Markdown

如何撰写文档

avatar for Mkdirs模板
Mkdirs模板
2025/03/05
搜索
公司新闻

搜索

在您的文档中实现文档搜索

avatar for MkSaaS模板
MkSaaS模板
2025/02/15
LogoPDFuck

免费浏览器端 PDF 工具 - 100% 私密安全

整理
  • 合并PDF
  • 分割PDF
  • 旋转PDF
  • 页面重排
  • 提取页面
  • 删除页面
  • 反转PDF
  • 复制页面
转换
  • PDF转PNG + 长图
  • PDF转JPG + 长图
  • PDF转WebP + 长图
  • PNG转PDF
  • JPG转PDF
  • WebP转PDF
  • PDF转文本
  • BMP转PDF
  • GIF转PDF
  • SVG转PDF
  • PDF转Word
  • PDF转Excel
  • PDF转PPTX
  • Word转PDF
  • Excel转PDF
  • PPTX转PDF
编辑
  • 压缩PDF
  • 添加水印
  • 添加页码
  • 编辑元数据
  • 裁剪PDF
  • 扁平化PDF
  • 页眉页脚
  • 调整页面大小
安全
  • 签名PDF
  • 解锁PDF
  • 保护PDF
  • 比较PDF
  • 编校PDF
  • PDF OCR识别
  • 清理PDF
  • 验证PDF
© 2026 PDFuck All Rights Reserved.