本地化

Pre-release

从单个源发布多语言文档

以 Markdown 格式查看

Fern 让你从一套源文件发布多语言文档。读者可以从标题栏的下拉菜单切换语言,搜索功能限定在当前语言范围内,每个语言环境都有独立的 URL,便于搜索引擎分别索引。

你像往常一样维护默认语言页面。当你运行 fern generate --docs 时,Fern 会在构建过程中自动将它们翻译为每个配置的语言,因此你的站点每次重建时都会更新翻译。

i18n 示例站点 查看实际效果 (源码)。

本地化功能正在积极开发中。自动翻译、Ask Fern、fern check 错误和 API 参考页面仍在开发中。

如果你有兴趣为你的文档实施本地化功能,请联系我们

早期访问设置

下面的手动设置目前可以使用。一旦本地化功能正式发布,大部分步骤将自动处理。

1

升级 Fern CLI

本地化功能需要最新版本的 CLI。

$fern upgrade
2

docs.yml 中声明语言

在你的 docs.yml 中添加 translations 键,列出每种支持的语言。将其中一种语言标记为默认语言。

docs.yml
1translations:
2 - lang: en
3 default: true
4 - lang: ja
5 - lang: zh

Fern 支持两字母 ISO 639-1 代码(如 enjazh)和完整的 BCP 47 区域标签(如 ja-JPpt-BRzh-Hans-CN)。

3

添加翻译文件夹

在你的 fern 目录中创建一个 translations 文件夹。在 docs.yml 中声明的每种语言都需要一个与其区域代码匹配的子文件夹。该文件夹包含翻译内容和导航覆盖设置。

fern
fern.config.json
docs.yml
products
docs
translations
ja
fern
docs.yml
products
products
4

翻译导航

对于你拥有的每个基础配置 YAML 文件——docs.yml、产品文件、版本文件——在 fern/translations/{locale}/ 下相同的相对路径创建匹配的文件并复制其结构。

在条目中,只包含你想要翻译的字段(display-namesubtitlesectionpage);任何你省略的内容都会回退到基础文件。当页面名称是英语术语如 markdownapi-catalog 时,添加 slug: 来固定基础 URL。示例 PR

fern/translations/ja/fern/docs.yml
1products:
2 - display-name: ホーム
3 path: ./products/home/home.yml
4 subtitle: 開発者体験を向上させる製品
5
6 - slug: sdks
7 display-name: SDK
8 path: ./products/sdks/sdks.yml
9 subtitle: 複数の言語でクライアントライブラリを生成
10
11 - slug: docs
12 display-name: ドキュメント
13 path: ./products/docs/docs.yml
14 subtitle: 美しいインタラクティブなドキュメントサイトを生成

字段级回退仅适用于条目内。如果某个页面在基础导航中但在本地化 YAML 中缺失,本地化 URL 将提供默认语言页面——即使存在翻译的 .mdx 文件。在这里也要注册每个你翻译的页面。

5

翻译页面内容

fern/translations/{locale}/products/ 中放置翻译的 .mdx 文件,保持与原始文件结构一致。使用 sidebar-title 前置元数据字段为每种语言覆盖侧边栏条目:

fern/translations/ja/products/docs/pages/getting-started/overview.mdx
1---
2sidebar-title: 概要
3---
4
5Fernドキュメントへようこそ。

你只需翻译你想要本地化的文件。任何在本地化导航中注册但没有匹配 .mdx 文件的页面会自动回退到默认语言文件。

仅添加翻译的 .mdx 文件不足以本地化页面——该页面还必须在本地化导航 YAML 中有条目。没有本地化导航条目,即使存在翻译文件,页面也会回退到默认语言。

6

生成你的文档

$fern generate --docs

Fern 会获取翻译,在标题栏中渲染语言切换器,并为每个语言环境生成站点地图条目。你也可以使用 fern docs dev 在本地预览翻译。