i18n - 简介
您可以使用自带的国际化(i18n)支持来轻松翻译 Docusaurus 网站。
#
目标了解 Docusaurus i18n 支持背后的设计决策是极为重要的。
#
i18n 目标Docusaurus i18n 系统旨在:
- 简单易懂:将翻译过的文件放在正确的文件系统位置即可。
- 弹性翻译流程:可使用 Git(单仓库、派生或子模块)、SaaS 软件或 FTP
- 弹性部署选项:可部署于单个、多个域名或混合部署
- 模块化:插件可提供 i18n 支持
- 快速运行时:文档多为静态,无需重量级的 JS 库或 Polyfill
- 伸缩构建:允许独立构建及部署本地化内容网站
- 本地化资源:您网站上的图像可被翻译
- 无耦合:不强制使用任何 SaaS,但您可自己集成
- 轻松搭配 Crowdin:多个 Docusaurus v1 站点使用 Crowdin,它们都可迁移至 v2。
- 优秀的 SEO 默认值:我们已为您预先设置有用的 SEO 页眉数据(如
hreflang
) - RTL 支持:支持并轻松实现自右向左阅读的语言(阿拉伯语、以色列语等)
- 默认译文:经典主题的标签已为您翻译成多种语言
#
i18n 非目标我们不支持:
- 自动检测语言:我们认为此功能在服务器上实现最佳。
- SaaS 翻译软件:您完全有责任理解您选择的外部工具。
- 路径转译:技术困难,SEO 价值低。
#
翻译流程#
概览下方是创建翻译版 Docusaurus 站点的工作流程:
- 配置:在
docusaurus.config.js
中声明默认及备选语言 - 翻译:将翻译过的文件放置在正确的文件系统位置即可。
- 部署:使用单域名或多域名策略构建并部署您的站点
#
翻译文件您将处理两种翻译文件。
#
Markdown 文件这是您 Docusaurus 网站的主要内容。
统一翻译 Markdown 及 MDX 文档以保证翻译语境正确,而不要将每个语句分成独立的字符串。
#
JSON 文件JSON 用于翻译:
- 您的 React 代码:使用
<Translate>
组件 - 您的主题:导航栏,页脚
- 您的插件:文档侧边栏类别标签
我们使用的 JSON 格式名为 Chrome i18n:
{ "myTranslationKey1": { "message": "已翻译的信息 1", "description": "myTranslationKey1 用于主页" }, "myTranslationKey2": { "message": "已翻译的信息2", "description": "myTranslationKey2 用于 FAQ 页" }}
这一选择有两个原因:
- 描述属性:帮助译者理解额外语境
- 广泛支持:Chrome 扩展程序、Crowdin、Transifex、Phrase 及 Applanga
#
翻译文件位置翻译文件应该创建在正确的文件系统位置。
每种语言和每个插件均有其自己的 i18n
子文件夹:
website/i18n/<语言>/<插件名称>/...
note
对于多实例插件而言,路径则为 website/i18n/<语言>/<插件名称>-<插件 ID>/...
。
翻译简单的 Docusaurus 网站至简体中文会有如下的网站结构:
website/i18n└── zh-cn ├── code.json │ ├── docusaurus-plugin-content-blog │ └── 2020-01-01-hello.md │ ├── docusaurus-plugin-content-docs │ ├── current # │ │ ├── doc1.md │ │ └── doc2.mdx │ └── current.json │ └── docusaurus-theme-classic ├── footer.json └── navbar.json
The JSON files are initialized with the docusaurus write-translations
CLI command.
code.json
文件则是使用 <Translate>
API 从React 组件中提取。
info
注意,docusaurus-plugin-content-docs
插件有 current
子文件夹和 current.json
文件,这对文档分版功能较为有用。
每个内容插件或主题都不同,您需要定义其自己的翻译文件位置: