核心概念
国际化
使用 Docus 内置 i18n 支持创建多语言文档。
Docus 基于 @nuxtjs/i18n 模块提供原生国际化支持,让你可以通过自动路由和内容管理创建多语言文档。
功能
- 内置 i18n 模块:原生集成
@nuxtjs/i18n - 动态 locale 路由:自动为 URL 添加语言代码前缀(
/en/docs、/zh-cn/docs) - 按 locale 分离内容 collection:每种语言拥有独立的内容管理
- 语言切换器:内置用于切换 locale 的组件
- 单语言配置:单语言站点可以通过
app.config.ts配置 locale
单语言配置
如果你正在构建单语言文档(不使用完整的 @nuxtjs/i18n 模块),可以通过 app.config.ts 配置 locale。这适用于设置 UI 组件语言和本地化内置字符串。
app.config.ts
export default defineAppConfig({
docus: {
locale: 'zh-cn', // 设置 locale(默认:'en')
}
})
多语言设置
对于多语言文档,请使用下面介绍的完整 @nuxtjs/i18n 集成。
设置现有项目
要在 Docus 项目中启用 i18n,请将 @nuxtjs/i18n 模块添加到 nuxt.config.ts,并定义 locales:
nuxt.config.ts
export default defineNuxtConfig({
modules: ['@nuxtjs/i18n'],
i18n: {
defaultLocale: 'en',
locales: [
{ code: 'en', name: 'English' },
{ code: 'zh-cn', name: '简体中文' },
],
}
})
Docus 会把
@nuxtjs/i18n 的 strategy 覆盖为 prefix。使用 i18n 模板创建新项目
创建新项目时,你可以选择预配置国际化能力的 i18n 模板:
Terminal
npx create-docus my-docs -t i18n
目录结构
启用 i18n 后,请在 content/ 目录中按 locale 组织内容:
content/
├── en/ # 英文内容
│ ├── index.md # 英文首页
│ ├── getting-started/
│ │ ├── installation.md
│ │ └── configuration.md
│ └── guide/
│ └── advanced.md
└── zh-cn/ # 简体中文内容
├── index.md # 简体中文首页
├── getting-started/
│ ├── installation.md
│ └── configuration.md
└── guide/
└── advanced.md
每个 locale 都应保持相同的目录结构,以便在不同语言之间维持一致导航。
Locale fallback
如果某个 locale 不存在于你的 content/ 目录中,Docus 会发出警告并跳过该 locale。缺失的 locale 不会被注册。
当你扩展 Docus 并为站点其他部分使用
@nuxtjs/i18n,但只想让文档支持部分语言时,这会很有用。Docus 会从 Nuxt 配置中检测 locales:
nuxt.config.ts
export default defineNuxtConfig({
modules: ['@nuxtjs/i18n'],
i18n: {
locales: ['en', 'zh-cn', 'ja'],
defaultLocale: 'en'
}
})
但只会根据 content/ 文件夹结构注册实际存在的 locale:
content/
├─ en/ # 已注册 ✅
├─ zh-cn/ # 已注册 ✅(如果存在)
└─ ja/ # 已跳过 🚫(如果缺失)
如果用户请求缺失的文档 locale,Docus 会重定向到默认 locale。
你必须在 i18n 配置中设置
defaultLocale,并确保它存在于 content/<defaultLocale> 下。