Docgeni 支持为文档站、配置项和组件文档提供多语言,只需在 .docgenirc.js(或者其他配置文件)配置中声明支持哪些语言,再按约定放置各语言的文件即可。
在配置里设置 locales(语言列表)和 defaultLocale(默认语言):
tsexport default { locales: [ { key: 'zh-cn', name: '中文' }, { key: 'en-us', name: 'English' }, ], defaultLocale: 'zh-cn', };
key:语言标识,会出现在 URL、文件夹名、文件名中,建议用小写加连字符,如 zh-cn、en-usname:语言切换器里显示的名称defaultLocale:未单独提供翻译时使用的语言,须与某个 key 一致若只服务单一语言,可不配置 locales,站点只会生成 defaultLocale 对应的内容。
docs 目录里默认语言的文档直接放在根下,例如 docs/guides/...。其他语言在 docs 下新建与 key 同名的文件夹,目录结构与默认语言保持一致:
docs/ ├── guides/ # 默认语言(如 zh-cn) │ └── intro/ │ └── getting-started.md ├── en-us/ # 英文 │ ├── guides/ │ │ └── intro/ │ │ └── getting-started.md │ └── index.md └── index.md
Docgeni 会按语言分别生成一级导航、类别和页面。某一语言缺少对应文件时,会回退或跳过,具体以构建结果为准。
.docgenirc.ts 里写的 title 等字段属于默认语言。其他语言在同一对象下增加 locales 字段,以 key 为属性名覆盖需要翻译的项:tsexport default { navs: [ null, { title: '组件', path: 'components', lib: 'alib', locales: { 'en-us': { title: 'Components', }, }, }, ], };
适用于 navs、类库 categories 等支持 locales 的配置,写法相同:在默认语言字段旁为每个 key 提供一份覆盖对象。
每个组件目录下,按语言拆分文档和 API 文件:
button/ ├── doc/ │ ├── zh-cn.md # 概览(Markdown) │ └── en-us.md └── api/ ├── zh-cn.ts # API 描述(按 apiMode 可能是 .json、.js 等) └── en-us.ts
文件名必须与 locales 里的 key 一致。category、order 等写在默认语言的 Front Matter 中,全语言共用,无需每种语言各写一份。
| 内容 | 默认语言 | 其他语言 |
|---|---|---|
| Markdown 页面 | docs/... |
docs/{key}/...,目录结构一致 |
| 站点配置(如导航标题) | 配置根字段 | 同对象下的 locales.{key} |
| 组件概览 / API | doc/{defaultLocale}.md 等 |
doc/{key}.md、api/{key}.* |
更完整的配置说明见 全局配置。