定制化
国际化配置
配置 HackerStart 的多语言支持
HackerStart 的国际化分为两个独立的层面,各自有不同的技术方案:
| 层面 | 技术 | 管理内容 | 配置文件 |
|---|---|---|---|
| 内容层 | fumadocs-mdx defineI18n | 文档、博客、法律条款 | src/config/content/i18n.ts |
| UI 层 | Paraglide JS | 按钮、标题、表单标签 | messages/zh.json、messages/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.json和messages/en.json
路由层
所有内容 URL 都包含语言前缀:
/zh/docs— 中文文档/en/docs— 英文文档/docs— 重定向到/zh/docs
添加新语言
- 在
src/config/content/i18n.ts的languages数组中添加语言代码 - 创建对应的
.xx.mdx内容文件 - 创建对应的
meta.xx.json导航文件 - 在 Paraglide 的
messages/xx.json中添加 UI 翻译