如何为开发者翻译 Markdown 文档

A
作者
AI Trans Team
13 阅读时长
332 浏览量

开源项目的生死取决于其文档。一款只有英文 README 的优秀库永远无法触达中国、日本或巴西的开发者——这些市场占全球开发者人口的 40%。然而,Markdown 文档翻译却独具挑战:你必须保留代码块、维护链接结构、处理版本控制,并在项目演进时保持翻译同步。

根据 GitHub 2024 年 Octoverse 报告,78% 的开源贡献来自非英语母语者,但 92% 的文档仍仅限于英文。这构成了采用、贡献和全球社区构建的巨大障碍。

本全面指南将展示如何有效翻译 Markdown 文档:从保留代码语法和链接,到在 Git 中管理翻译工作流、自动化更新,以及使用 Docusaurus、VuePress 和 MkDocs 等工具构建多语言文档站点。

为什么 Markdown 文档翻译与众不同

Markdown 是一种专为技术写作设计的标记语言。翻译 Markdown 文档时,你不仅仅是在翻译散文——你还需要管理代码、格式语法、超链接、版本控制和持续更新的复杂组合。

Markdown 翻译挑战

1. 代码块绝不能翻译

## 安装

运行以下命令:

```bash
npm install awesome-library

翻译成西班牙语时:
- "Installation" → "Instalación" ✅
- "Run the following command:" → "Ejecuta el siguiente comando:" ✅
- `npm install awesome-library` → 保持不变 ✅

通用翻译器常常出错,将代码也翻译了!

2. Markdown 语法必须保留

**粗体文本** 应保持 **粗体**
*斜体文本* 应保持 *斜体*
[链接文本](url) 应维护链接结构
`内联代码` 应保留反引号

糟糕的翻译可能产生:
**粗体**(丢失 Markdown 语法)
*斜体(缺少闭合星号)
[文本](url (损坏链接)

3. 相对链接必须为语言版本更新

英文: [查看 API 参考](./api-reference.md)
西班牙语: [Ver Referencia API](./referencia-api.md)
          ^链接文本已翻译  ^文件名也已翻译

两者都必须存在且链接正确!

4. 文档会演进——翻译也必须如此

第 1 天:翻译 README.md(英文 → 西班牙语)
第 15 天:英文 README.md 更新(新增功能)
问题:西班牙语版本现在已过时!

需要工作流来跟踪和同步翻译更新。

真实世界影响

成功案例:Vue.js

  • 将文档翻译成 10+ 种语言
  • 中文翻译对亚洲采用至关重要
  • 通过 GitHub 实现社区驱动的翻译工作流
  • 结果:40% 的 npm 下载来自亚洲,庞大的中文社区

成功案例:React

  • 社区管理 30+ 种语言的官方翻译
  • 每个语言单独仓库(react.dev, zh-hans.react.dev, es.react.dev)
  • 提供翻译指南和自动化工具
  • 结果:全球开发者采用,来自 100+ 个国家的贡献

成功案例:Rust 编程语言

  • “Rust 之书”翻译成 15+ 种语言
  • 社区通过 mdBook 维护翻译
  • 日文翻译推动日本 Rust 开发者增长 300%
  • 活跃翻译团队保持文档与英文更新同步

失败案例:被遗弃的翻译 许多开源项目有过时的翻译:

  • 法文 README 上次更新 2 年前
  • 英文 README 每周更新
  • 结果:法国开发者困惑,放弃项目或挣扎于过时信息

Markdown 翻译基础

核心 Markdown 元素

标题:

# 标题 1
## 标题 2
### 标题 3

翻译文本,保留符号:
# 安装 → # 安装
## 快速开始 → ## 快速开始

强调:

**粗体文本** → **粗体文本**
*斜体文本* → *斜体文本*
~~删除线~~ → ~~删除线~~

保持 Markdown 语法完全不变。

列表:

无序列表:
- 项目一
- 项目二
  - 嵌套项目

有序列表:
1. 第一步
2. 第二步
3. 第三步

翻译内容,保持结构:
- 第一项
- 第二项
  - 嵌套项

链接:

[链接文本](url)
[文档](https://example.com/docs)

翻译文本,保留 URL(除非同时翻译链接页面):
[文档](https://example.com/docs)

或者如果存在西班牙语文档:
[文档](https://example.com/es/docs)

图像:

![替代文本](图像-url "可选标题")

![仪表板截图](./images/dashboard.png "管理员仪表板")

翻译替代文本和标题:
![控制面板截图](./images/dashboard.png "管理面板")

图像文件名通常保持不变(共享资源)。

代码块:

内联代码:使用 `npm install` 安装包。

翻译散文,保留代码:使用 npm install 安装软件包。

围栏代码块:

function greet(name) {
  console.log(`Hello, ${name}!`);
}

绝不翻译围栏内的代码。保持完全不变。


**表格:**
```markdown
| English | Spanish | French |
|---------|---------|--------|
| Hello   | Hola    | Bonjour|
| Goodbye | Adiós   | Au revoir|

翻译内容单元格,保持结构:
| 英语  | 西班牙语 | 法语 |
|---------|---------|---------|
| Hello   | Hola    | Bonjour |
| Goodbye | Adiós   | Au revoir|

高级 Markdown 功能

块引用:

> This is important information that users should know.

翻译内容,保留 > 符号:
> 这是用户应该知道的重要信息。

水平线:

---
或
***
或
___

保持不变(视觉分隔符,无文本)。

Markdown 中的 HTML:

<div class="warning">
  Be careful when using this feature!
</div>

保持 HTML 标签,翻译内容:
<div class="warning">
  使用此功能时要小心!
</div>

脚注:

Here is a footnote reference[^1].

[^1]: This is the footnote content.

翻译引用上下文和脚注文本:
这里有一个脚注引用[^1]。

[^1]: 这是脚注内容。

Markdown 文档的翻译工作流程

选项 1:每个语言单独文件(推荐)

目录结构:

docs/
├── en/
│   ├── README.md
│   ├── installation.md
│   ├── api-reference.md
│   └── troubleshooting.md
├── es/
│   ├── README.md
│   ├── instalacion.md
│   ├── referencia-api.md
│   └── solucion-problemas.md
├── fr/
│   ├── README.md
│   ├── installation.md
│   ├── reference-api.md
│   └── depannage.md
└── zh/
    ├── README.md
    ├── installation.md
    ├── api-reference.md
    └── troubleshooting.md

优点: ✅ 清晰分离(无混合语言) ✅ 每种语言可根据需要有不同的文件结构 ✅ 易于查看哪些文件已翻译 ✅ 同一语言内链接简单

缺点: ❌ 更难跟踪哪些翻译已过时 ❌ 更多文件需要管理

选项 2:基于后缀(备选)

目录结构:

docs/
├── README.md (English default)
├── README.es.md (Spanish)
├── README.fr.md (French)
├── README.zh.md (Chinese)
├── installation.md
├── installation.es.md
├── installation.fr.md
└── installation.zh.md

优点: ✅ 翻译文件紧邻源文件(更容易发现缺失翻译) ✅ 按基本名称字母排序

缺点: ❌ 语言较多时会变得杂乱 ❌ 更难浏览特定语言的文档

结论:对于全面文档的项目,使用单独目录

逐步翻译流程

步骤 1:设置翻译目录结构

# 创建语言目录
mkdir -p docs/es docs/fr docs/zh

# 将英文结构复制到新语言
cp -r docs/en/* docs/es/

# 现在翻译 docs/es/ 中的每个文件

步骤 2:创建翻译跟踪

translation-status.md:

# 翻译状态

## 西班牙语 (es)

| 文件 | 状态 | 最后更新 | 译者 |
|------|--------|--------------|------------|
| README.md | ✅ 当前 | 2025-01-25 | @translator1 |
| installation.md | ⚠️ 过时 | 2025-01-10 | @translator1 |
| api-reference.md | ❌ 未开始 | - | - |

## 法语 (fr)

| 文件 | 状态 | 最后更新 | 译者 |
|------|--------|--------------|------------|
| README.md | ✅ 当前 | 2025-01-22 | @translator2 |
| installation.md | ✅ 当前 | 2025-01-22 | @translator2 |

或使用自动化工具(后续介绍)。

步骤 3:翻译时保留代码块

原文 (en/installation.md):

# Installation

## Prerequisites

- Node.js 18+
- npm or yarn

## Install via npm

Run the following command in your terminal:

```bash
npm install awesome-library

Verify Installation

Create a test file test.js:

const awesome = require('awesome-library');
console.log(awesome.version);

Run it:

node test.js

You should see the version number printed.


**译文 (es/instalacion.md):**
```markdown
# 安装

## 先决条件

- Node.js 18+
- npm 或 yarn

## 通过 npm 安装

在终端中运行以下命令:

```bash
npm install awesome-library

验证安装

创建一个测试文件 test.js

const awesome = require('awesome-library');
console.log(awesome.version);

运行它:

node test.js

你应该会看到输出版本号。


**变更内容:**
- 标题已翻译
- 散文已翻译
- 代码块未变(bash 命令、JavaScript 代码)
- 行内代码未变(`test.js`、npm 包名)
- 文件结构保持不变

**步骤 4:更新内部链接**

**英文 (en/README.md):**
```markdown
See [Installation Guide](./installation.md) for setup instructions.

步骤 4:更新内部链接

中文 (zh/README.md)::

请参阅 [安装指南](./installation.md) 以获取设置说明。

中的英文链接文本和路径保持为英文,但对于中文翻译,需要将链接文本翻译为中文,同时保持英文路径(因为实际文件名为英文)。

步骤 5:提交到 Git

git add docs/zh/
git commit -m "添加安装文档的中文翻译"
git push origin main

处理特殊情况

1. 代码块中的代码注释

是否应该翻译注释?

## 示例

```javascript
// Initialize the application
const app = createApp();

// Start the server on port 3000
app.listen(3000);

**选项 A:保持代码注释为英文**
```javascript
// Initialize the application
const app = createApp();

// Start the server on port 3000
app.listen(3000);

优点: 通用性强(开发者阅读英文注释) 缺点: 对初学者不够友好

选项 B:翻译代码注释

// 初始化应用程序
const app = createApp();

// 在端口 3000 上启动服务器
app.listen(3000);

优点: 对非英语开发者更友好 缺点: 代码不再可直接复制粘贴(语言混合)

推荐: 生产代码示例保持英文。教程/学习内容中翻译,以理解优先于复制粘贴。

2. 变量和函数名

代码中绝不翻译:

// 错误 - 不要翻译变量名
function obtenerUsuario(idUsuario) {
  return database.buscar(idUsuario);
}

// 正确 - 保持代码为英文
function getUser(userId) {
  return database.find(userId);
}

例外:伪代码或概念示例

英文:

if user is logged in: show dashboard else: redirect to login


中文(伪代码可接受):

如果用户已登录: 显示仪表板 否则: 重定向到登录页


3. 命令行示例

翻译描述,不翻译命令:

英文:
## 生成新组件

使用 CLI 创建组件:

```bash
npx create-component MyComponent

这会在 src/components/MyComponent/ 中创建一个新组件。

中文:

生成新组件

使用 CLI 创建组件:

npx create-component MyComponent

这会在 src/components/MyComponent/ 中创建一个新组件。


**命令保持英文,解释翻译。**

### 4. API 端点 URL

**保持 URL 不变:**

```markdown
英文:
### 获取用户资料

GET /api/v1/users/:id


中文:
### 获取用户资料

GET /api/v1/users/:id


注意:不要使用 `GET /api/v1/usuarios/:id`(会破坏 API!)

5. 环境变量和配置

保持变量名,翻译描述:

英文:
设置你的 API 密钥:

```bash
export API_KEY=your_key_here

中文: 设置你的 API 密钥:

export API_KEY=你的密钥

API_KEY 保持英文(环境变量名)。 your_key_here你的密钥(示例值,可翻译)。


### 6. 徽章链接和 Shields

**README.md 文件中常见:**

```markdown
英文:
[![Build Status](https://travis-ci.org/user/repo.svg?branch=main)](https://travis-ci.org/user/repo)
[![npm version](https://badge.fury.io/js/awesome-lib.svg)](https://www.npmjs.com/package/awesome-lib)

中文:保持徽章不变
(它们来自外部服务,语言无关)

或者如果想要翻译文本徽章:
[![构建状态](https://travis-ci.org/user/repo.svg?branch=main)](https://travis-ci.org/user/repo)

通常:保持英文徽章(开发者期望如此,状态通用)。

自动化和工具

Markdown 的翻译管理系统

1. Crowdin

功能:

  • GitHub/GitLab 集成
  • Markdown 文件支持
  • 自动保留代码块
  • 社区翻译(贡献者通过 Web UI 翻译)
  • 翻译记忆

工作流程:

1. 将 Crowdin 连接到 GitHub 仓库
2. Crowdin 检测 docs/en/ 中的新/更改文件
3. 译者通过 Crowdin Web 界面翻译
4. Crowdin 提交包含翻译的拉取请求
5. 审查并合并

定价: 开源免费,商业 $40/月起

2. Lokalise

功能:

  • 类似 Crowdin
  • 更好的自动化 API
  • Markdown 支持
  • 同步 CLI 工具

工作流程:

# 上传源文件
lokalise2 file upload --lang-iso zh --file docs/zh/README.md

# 下载翻译
lokalise2 file download --lang-iso zh --dest docs/zh/

定价: $120/月起

3. Transifex

功能:

  • 开源友好
  • Markdown 支持
  • 翻译审查
  • 质量检查

定价: 开源免费,商业 $30/月起

基于 Git 的翻译工作流程

方法:为翻译使用独立分支

# 主分支:英文文档
git checkout main

# 创建翻译分支
git checkout -b translate/spanish

# 翻译文件
# ...

# 提交
git add docs/es/
git commit -m "添加西班牙语翻译"

# 推送并创建 PR
git push origin translate/spanish
# 在 GitHub 上打开拉取请求

优势:

  • 译者可独立工作
  • 通过 PR 进行审查
  • 将翻译视为功能跟踪

方法:使用 Git 元数据跟踪翻译

en/installation.md:

<!--
最后更新:2025-01-25
翻译状态:
- es: 2025-01-20 (已过期)
- fr: 2025-01-24 (最新)
- zh: 未开始
-->

# 安装
...

自动化脚本可以检查这些注释并标记过期的翻译。

自动化翻译更新检测

检测过时翻译的脚本:

import os
from datetime import datetime

def check_translation_status(base_dir="docs"):
    languages = ['en', 'es', 'fr', 'zh']
    base_lang = 'en'

    for lang in languages:
        if lang == base_lang:
            continue

        en_dir = os.path.join(base_dir, base_lang)
        lang_dir = os.path.join(base_dir, lang)

        for file in os.listdir(en_dir):
            if not file.endswith('.md'):
                continue

            en_file = os.path.join(en_dir, file)
            lang_file = os.path.join(lang_dir, file)

            if not os.path.exists(lang_file):
                print(f"⚠️ {lang}/{file} - 未翻译")
                continue

            en_modified = os.path.getmtime(en_file)
            lang_modified = os.path.getmtime(lang_file)

            if en_modified > lang_modified:
                print(f"❌ {lang}/{file} - 已过期 (英文更新晚于翻译)")
            else:
                print(f"✅ {lang}/{file} - 最新")

check_translation_status()

作为 GitHub Action 运行:

# .github/workflows/check-translations.yml
name: 检查翻译状态

on:
  push:
    paths:
      - 'docs/**'

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: 检查翻译
        run: python scripts/check-translations.py
      - name: 在 PR 上评论
        if: github.event_name == 'pull_request'
        run: |
          python scripts/check-translations.py > translation-status.txt
          gh pr comment ${{ github.event.number }} --body-file translation-status.txt

AI 辅助 Markdown 翻译

AI Trans 用于 Markdown 文档:

功能:

  • 自动保留代码块
  • 保持 Markdown 语法
  • 保留链接完整
  • 快速(几分钟内翻译整个文档)

工作流程:

# 将 README.md 从英文翻译成西班牙语
ai-translator translate \
  --input docs/en/README.md \
  --output docs/es/README.md \
  --source en \
  --target es \
  --format markdown

# 批量翻译所有文件
for file in docs/en/*.md; do
  filename=$(basename "$file")
  ai-translator translate \
    --input "$file" \
    --output "docs/es/$filename" \
    --source en \
    --target es \
    --format markdown
done

定价: 100 万字符 $10 (标准) 或 1000 万字符 $50 (商业) 免费入门包: 10 万字符测试 典型成本示例:

  • 小型文档 (5 万字符):$0.50
  • 中型文档 (20 万字符):$2
  • 大型文档 (100 万字符):$10

最佳实践: AI 翻译 → 人工审查 → 提交

构建多语言文档站点

Docusaurus (基于 React)

设置:

npx create-docusaurus@latest my-docs classic
cd my-docs

i18n 配置 (docusaurus.config.js):

module.exports = {
  i18n: {
    defaultLocale: 'en',
    locales: ['en', 'es', 'fr', 'zh'],
    localeConfigs: {
      en: { label: 'English' },
      es: { label: 'Español' },
      fr: { label: 'Français' },
      zh: { label: '中文' }
    }
  },
  // ...
};

目录结构:

docs/
├── intro.md (英文默认)
├── installation.md
i18n/
├── es/
│   └── docusaurus-plugin-content-docs/
│       └── current/
│           ├── intro.md (西班牙语)
│           └── installation.md
├── fr/
│   └── docusaurus-plugin-content-docs/
│       └── current/
│           ├── intro.md (法语)
│           └── installation.md

构建:

# 构建所有语言
npm run build

# 构建特定语言
npm run build -- --locale es

结果: 自动语言切换器,SEO 优化的多语言站点。

VuePress (基于 Vue)

i18n 配置 (.vuepress/config.js):

module.exports = {
  locales: {
    '/': {
      lang: 'en-US',
      title: 'My Documentation',
      description: 'Documentation for awesome library'
    },
    '/es/': {
      lang: 'es-ES',
      title: 'Mi Documentación',
      description: 'Documentación para awesome library'
    },
    '/fr/': {
      lang: 'fr-FR',
      title: 'Ma Documentation',


      description: 'awesome library 的文档'
    }
  },
  themeConfig: {
    locales: {
      '/': {
        selectText: 'Languages',
        label: 'English',
        nav: [
          { text: 'Guide', link: '/guide/' },
          { text: 'API', link: '/api/' }
        ]
      },
      '/es/': {
        selectText: 'Idiomas',
        label: 'Español',
        nav: [
          { text: 'Guía', link: '/es/guide/' },
          { text: 'API', link: '/es/api/' }
        ]
      }
    }
  }
};

**目录:**

docs/ ├── README.md (英语) ├── guide/ │ └── installation.md ├── es/ │ ├── README.md (西班牙语) │ └── guide/ │ └── installation.md └── fr/ ├── README.md (法语) └── guide/ └── installation.md


### MkDocs (基于 Python)

**安装带 i18n 插件:**

```bash
pip install mkdocs mkdocs-static-i18n

mkdocs.yml:

plugins:
  - i18n:
      default_language: en
      languages:
        en: English
        es: Español
        fr: Français
      material_alternate: true

nav:
  - Home: index.md
  - Installation: installation.md
  - API Reference: api.md

目录:

docs/
├── index.md (英语默认)
├── index.es.md (西班牙语)
├── index.fr.md (法语)
├── installation.md
├── installation.es.md
├── installation.fr.md

构建:

mkdocs build

结果: 生成带有语言切换器的 site/

GitHub Pages 部署

部署多语言 Docusaurus 站点:

# .github/workflows/deploy.yml
name: Deploy Documentation

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 18
      - name: Install dependencies
        run: npm install
      - name: Build website
        run: npm run build
      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./build

访问:

最佳实践和常见陷阱

最佳实践

1. 从高影响力的页面开始

优先级:
1. README.md (用户首先看到的内容)
2. 安装/快速开始 (采用的障碍)
3. API 参考 (开发者需要)
4. 贡献指南 (针对国际贡献者)

初始跳过:
- 更新日志 (不那么关键)
- 已弃用文档
- 内部开发者笔记

2. 维护翻译风格指南

# 翻译风格指南 - 西班牙语

## 术语
- "library" → "biblioteca" (不是 "librería",后者指书店)
- "framework" → 保留为 "framework" (广泛理解)
- "deploy" → "desplegar" (不是 "implementar")

## 语气
- 技术文档使用正式的 "usted"
- 教程/指南使用非正式的 "tú"
- 简洁明了 (西班牙语平均比英语长 20%)

## 代码
- 永不翻译代码块
- 如果广泛使用,技术术语保留英语

3. 对翻译进行版本控制

README.md:
<!--
Translation: Spanish
Source version: v2.5.0
Translated: 2025-01-25
Translator: @username
-->

# Instalación
...

这有助于跟踪翻译何时落后。

4. 鼓励社区贡献

## 贡献翻译

我们欢迎翻译!贡献方法:

1. Fork 此仓库
2. 创建 `docs/[language-code]/` 目录
3. 从 `docs/en/` 翻译文件
4. 提交拉取请求

翻译指南: [TRANSLATION.md](./TRANSLATION.md)

常见陷阱

陷阱 1: 翻译 URL 和文件路径

❌ 错误:
[See installation](./instalación.md)
# 文件不存在 (有重音符号)

✅ 正确:
[See installation](./instalacion.md)
# 文件: instalacion.md (文件名无重音)

陷阱 2: 破坏相对链接

英语: docs/en/guide.md 链接到: ../assets/image.png
西班牙语: docs/es/guia.md 必须链接到: ../assets/image.png (相同路径!)

如果西班牙语翻译者写成: ./assets/image.png (破坏!)

陷阱 3: 忘记图像 alt 文本

![](./screenshot.png)

应该是:
![Dashboard screenshot](./screenshot.png)

西班牙语:
![Captura de pantalla del panel](./screenshot.png)

Alt 文本对可访问性很重要!

陷阱 4: 术语不一致

页面 1: "servidor" (服务器)
页面 3: "server" (保留英语)
页面 5: "servidor" 再次出现

选择一个并坚持使用!使用术语表。

衡量成功

跟踪指标

1. 按语言的文档使用情况

Google Analytics (文档站点):
- 按语言的流量 (es, fr, de 等)
- 页面停留时间 (越高表示理解越好)
- 跳出率 (母语文档应更低)

示例:
英语文档: 70% 用户
西班牙语文档: 15% 用户 (但在增长!)
法语文档: 10% 用户
其他: 5%

2. GitHub 洞察

GitHub Issues:
- 按语言统计提交的 issue 数量
- 非英语 issue 的响应时间

Pull Requests:
- 来自非英语国家开发者的贡献
- 西班牙语文档发布后:LATAM 开发者贡献 +40%

Stars/Forks:
- 跟踪翻译发布后的增长

3. 社区增长

Discord/Slack:
- 特定语言频道的活跃度
- 以母语提出的问题

Stack Overflow:
- 以不同语言标记你库的问题

4. npm/PyPI 按地域下载量

npm 按国家下载统计:
中文翻译前:
- 中国:占下载量的 5%

中文翻译后:
- 中国:占下载量的 22%(增长 4.4 倍!)

成本与 ROI

翻译投资

小型开源库(文档 5000 字):

专业翻译:

翻译:5000 × 0.08 美元 = 每语言 400 美元
审核:100 美元
每语言总计:500 美元

3 种语言(es, fr, zh):1500 美元

AI 辅助翻译:

AI 翻译(AI Trans):5000 字 × 平均 6 字符 = 30,000 字符 = 0.30 美元
技术审核:5 小时 × 75 美元 = 375 美元
每语言总计:375.30 美元

3 种语言:1126 美元(节省 25%)

社区贡献(免费但较慢):

设置 Crowdin:开源免费
翻译:免费(社区志愿者)
审核时间:你的时间(每语言 5-10 小时)

3 种语言:货币成本 0 美元,时间投入 15-30 小时

开源项目的 ROI

ROI 并不总是货币化的——它是社区增长:

西班牙语/中文翻译前的指标:
- 月 npm 下载量:50,000
- GitHub 星标:2,500
- 贡献者:40(主要来自美国/欧洲)

翻译后 6 个月:
- 月 npm 下载量:120,000(增长 140%)
- GitHub 星标:6,800(增长 172%)
- 贡献者:95(新增 55 名来自 LATAM/亚洲)

社区价值:无价
成本:AI 辅助 + 审核 1500 美元

工具和资源

翻译工具

AI Trans

  • 自动保留 Markdown 格式
  • 保持代码块完整(绝不翻译代码)
  • 维持链接结构
  • 标准版 10 美元/百万字符,或商业版 50 美元/千万字符
  • 免费 10 万字符入门包
  • 支持 57 种语言

DeepL API

  • 欧洲语言高质量
  • 支持 Markdown(需预处理)
  • 每百万字符 25 美元 + 每月 5.49 美元订阅

Google Cloud Translation

  • 133 种语言
  • 广泛语言覆盖良好
  • 每百万字符 20 美元
  • 无 Markdown 感知(需预处理)

Markdown 代码检查和验证

markdownlint

  • 验证 Markdown 语法
  • 确保格式一致
  • CLI 和编辑器插件
npm install -g markdownlint-cli
markdownlint docs/es/*.md

markdown-link-check

  • 验证 Markdown 文件中的所有链接
  • 捕获损坏的相对链接
npm install -g markdown-link-check
markdown-link-check docs/es/README.md

文档站点构建器

Docusaurus (React)

  • 最佳适用:React 开发者,现代 SPA 文档
  • 内置 i18n
  • 免费

VuePress (Vue.js)

  • 最佳适用:Vue 开发者
  • 设置简单
  • 免费

MkDocs (Python)

  • 最佳适用:Python 项目
  • 配置最小化
  • 免费

GitBook

  • 最佳适用:非开发者(GUI 编辑器)
  • 托管解决方案
  • 开源免费

结论

翻译 Markdown 文档是你能为全球开发者社区建设做出的最高影响力的贡献之一。通过让你的项目支持多种语言,你将解锁数十亿非英语开发者采用项目,并促进多元化的国际协作。

关键要点:

  • 保留代码块、Markdown 语法和链接结构
  • 每种语言使用单独目录以保持整洁组织
  • 使用 Git 工作流自动化翻译同步
  • 利用 AI 翻译 + 人工审核实现性价比高的质量
  • 使用 Docusaurus、VuePress 或 MkDocs 构建多语言站点
  • 使用元数据和自动化检查跟踪翻译
  • 鼓励社区贡献以实现可持续翻译

像 AI Trans 这样的现代 AI 工具可以将翻译成本降低 70-90%,同时保留所有关键 Markdown 元素,如代码块、链接和格式。最优工作流:AI 翻译初始文档(几分钟而非几周),技术审核员确保准确性和一致性,然后社区帮助维护更新。

典型文档翻译成本:

  • 小型项目(5 万字符):AI Trans 0.50 美元 vs. 人工翻译 400 美元
  • 中型项目(20 万字符):AI Trans 2 美元 vs. 人工翻译 1600 美元
  • 大型项目(100 万字符):AI Trans 10 美元 vs. 人工翻译 8000 美元

时间节省: 95%+(几分钟 vs. 几周)

无论你是维护小型实用库还是大型开源框架,翻译文档都能消除语言障碍,欢迎全球开发者加入你的项目。

准备好翻译您的文档了吗?使用 AI Trans 的代码保留翻译引擎开始翻译您的 Markdown 文档,触达全球开发者。