文档
定制化

国际化配置

配置 HackerStart 的多语言支持

HackerStart 的国际化分为两个独立的层面,各自有不同的技术方案:

层面技术管理内容配置文件
内容层fumadocs-mdx defineI18n文档、博客、法律条款src/config/content/i18n.ts
UI 层Paraglide JS按钮、标题、表单标签messages/zh.jsonmessages/en.json
路由层{-$locale} 参数URL 路径中的语言前缀src/config/content/locale.ts

内容层 i18n

默认语言配置

// src/config/content/i18n.ts
import { defineI18n } from 'fumadocs-core/i18n'

export const i18n = defineI18n({
  defaultLanguage: 'zh',
  languages: ['zh', 'en'],
})
  • defaultLanguage: 'zh' — 中文为默认语言
  • languages — 支持的语言列表

双语 MDX 文件

内容文件使用后缀区分语言:

content/docs/
├── index.mdx          # 中文(默认语言,无后缀)
├── index.en.mdx       # 英文
├── getting-started.mdx
├── getting-started.en.mdx
└── meta.json          # 中文导航配置
    meta.en.json       # 英文导航配置

导航配置

每个目录的 meta.json 控制侧边栏导航:

{
  "title": "入门指南",
  "pages": ["quick-start", "environment"]
}

对应的英文版 meta.en.json

{
  "title": "Introduction",
  "pages": ["quick-start", "environment"]
}

UI 层 i18n(Paraglide JS)

🚧 Paraglide JS 集成正在开发中。以下为预期用法。

应用界面的 UI 文字(导航栏、按钮、标签等)将通过 Paraglide JS 管理:

  • 编译时类型安全 — 翻译 key 拼写错误在编译时捕获
  • 零运行时 — 翻译在构建时内联,不增加包体积
  • 消息文件:messages/zh.jsonmessages/en.json

路由层

所有内容 URL 都包含语言前缀:

  • /zh/docs — 中文文档
  • /en/docs — 英文文档
  • /docs — 重定向到 /zh/docs

添加新语言

  1. src/config/content/i18n.tslanguages 数组中添加语言代码
  2. 创建对应的 .xx.mdx 内容文件
  3. 创建对应的 meta.xx.json 导航文件
  4. 在 Paraglide 的 messages/xx.json 中添加 UI 翻译

本页内容