国际化

Docgeni 支持为文档站、配置项和组件文档提供多语言,只需在 .docgenirc.js(或者其他配置文件)配置中声明支持哪些语言,再按约定放置各语言的文件即可。

在配置里设置 locales(语言列表)和 defaultLocale(默认语言):

ts

export default { locales: [ { key: 'zh-cn', name: '中文' }, { key: 'en-us', name: 'English' }, ], defaultLocale: 'zh-cn', };
  • key:语言标识,会出现在 URL、文件夹名、文件名中,建议用小写加连字符,如 zh-cn、en-us
  • name:语言切换器里显示的名称
  • 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 为属性名覆盖需要翻译的项:
ts

export 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 中,全语言共用,无需每种语言各写一份。

更多类库与 API 配置见 类库配置 和 组件文档。

内容 默认语言 其他语言
Markdown 页面 docs/... docs/{key}/...,目录结构一致
站点配置(如导航标题) 配置根字段 同对象下的 locales.{key}
组件概览 / API doc/{defaultLocale}.md 等 doc/{key}.md、api/{key}.*

更完整的配置说明见 全局配置。

Open-source MIT Licensed | Copyright © 2020-present Powered by PingCode