要让 HellGPT 在翻译时完整保留 Markdown,最稳妥的做法是先把文档解析成结构节点或用占位符保护代码、表格、链接与行内格式,仅把需要翻译的纯文本片段交给模型,配合清晰的系统提示、术语表与回写校验,翻译后再把结构复原回 Markdown。这样可以把语法当成“不可译”的骨架,避免被误改或丢失。

先说为什么会坏:Markdown 为什么容易被翻译工具破坏
简单来讲,翻译模型把输入当普通文本处理,而 Markdown 本身既是文本又是“标记语言”。当模型没被告知哪些是语义内容、哪些是语法标记时,它就可能会:
- 把行内代码(`code`)或代码块里的内容翻译掉,导致程序示例失效;
- 翻译链接中的 URL 或保留文字从而破坏链接格式;
- 错误拆分或合并列表、表格的管道(|)和缩进,造成渲染出错;
- 把 Markdown 的特殊标记(如 加粗、_斜体_、表头)当普通符号处理,位置错乱。
遵循的核心原则(费曼式理解)
想象把 Markdown 当成“房子的骨架”,里面的可翻译文本是家具。你的任务不是拆骨架,而是把家具替换成目标语言版本,然后把家具放回去。基于这个比喻,核心原则如下:
- 分离结构与内容:先把结构识别出来(AST),只对内容节点做翻译;
- 保护不可译区域:代码块、行内代码、URL、YAML front-matter、LaTeX 数学式等当作不可译的占位符;
- 有限上下文翻译:按段或按块翻译以保留上下文,避免把语法标记带入译文;
- 校验与回写:翻译完成后进行语法校验(render 测试、lint),确保 Markdown 可渲染且语义正确。
针对 HellGPT 的实操步骤(从最简单到最稳妥)
步骤一:快速提示法(适合不改代码的轻量需求)
如果你直接在 HellGPT 的界面或 API 里工作,先尝试给模型一个明晰的系统提示,像是:
- “你是 Markdown-aware 翻译助手。请保留所有 Markdown 语法(包括三反引号代码块、行内代码、链接、图片语法、表格、列表、标题、注脚和 YAML front-matter)。只翻译文本内容,不改动任何 Markdown 标记或 URL。”
- 把源文本整体输入并要求输出同样的 Markdown。这个方法简单,但遇到复杂嵌套或多语种专有名词时可能不够稳健。
步骤二:占位符保护法(通用且可靠)
如果要更保险,先把不可译或易错的片段替换成占位符,然后让 HellGPT 翻译剩余文本,最后把占位符还原。
- 识别并提取代码块(“`…“`)、行内代码(`…`)、HTML 标签、YAML front-matter、数学公式($…$、$$…$$)、URL 和图片链接。
- 用占位符替换,例如 __CODE_BLOCK_1__、__INLINE_CODE_3__、__IMG_2__ 等,记录映射表。
- 把带占位符的文本交给 HellGPT 翻译,模型只翻译自然语言部分,占位符保持不变。
- 把译文中的占位符用映射表还回原始片段,必要时为所还回的文字做细微调整以保证语法一致(如换行或空格)。
步骤三:AST / Parser 驱动法(工程化与可扩展)
这是最标准、最工程化的方式,适合批量文档或需要高准确性的场景。
- 用 Markdown 解析器(如 remark / unified、markdown-it、Python 的 mistune、markdown)把 Markdown 转成 AST(抽象语法树)。
- 遍历 AST,只收集需要翻译的文本节点(段落文本、标题文本、表格单元格、列表项等),保持节点类型与位置不变。
- 把这些文本块批量或逐条发送给 HellGPT(或翻译引擎),并在请求里附上“保留原 Markdown 语法”的说明以避免模型在内容层面插入新标记。
- 把译文回写回对应的 AST 节点,再把 AST 渲染回 Markdown(或直接输出 HTML)。最后做渲染和语法校验。
提示:关于表格、链接和图片该怎么处理
- 表格(| 列表):只翻译单元格内容,保留列分隔符。注意单元格内的 Markdown(如加粗)也应分别处理。
- 链接:通常只翻译链接文本([text](url) 中的 text),不要翻译 URL。图片同理,翻译 alt text,但保留文件名与地址。
- YAML front-matter:多数情况下不翻译键名(如 title、tags),只翻译需要的值;但这依赖你的发布流程和 CMS。
在 HellGPT 的提示工程(Prompt)上要注意的细节
提示需要既明确又简短,避免模型“天马行空”。下面是一个可以直接用的模板思路(把它放到系统提示或请求里):
- 说明角色:”你是一个只做翻译的 Markdown 助手,不要构造新段落,不要改变 Markdown 语法,不要翻译任何占位符或 URL。”
- 列出不可译项:”三反引号代码块、行内反引号、URL、HTML 标签、YAML front-matter、LaTeX 数学式均不可翻译并应原样保留。”
- 指出可译项:”标题、段落、表格单元格、列表项、链接的显示文本、图片的 alt/title 可以翻译。”
- 给出格式要求:”输出必须是有效的 Markdown,保持与输入相同的结构(头部注释除外)。”
小技巧与实用工具(让流程更顺畅)
- 批量替换占位符:使用正则或解析器自动替换,避免手工造成漏删或错位。
- 术语表 / 忽略词:把专有名词、函数名、品牌名加入术语表并作为不可译或固定译法传给 HellGPT。
- 后处理校验:用 Markdown-lint 或直接渲染一次(本地或 CI)检查渲染错误。
- 分段翻译与上下文:如果段落之间有关联,保留临近句子作为上下文,以免丢失指代信息。
- 速度 vs 准确度:占位符+AST 方法慢但稳,直接提示法快但有风险,按需求选。
示例流程表(快速参考)
| 步骤 | 工具/方法 | 输出 |
| 解析 | remark / mistune / regex(小文件) | AST 或列表化文本块 + 元数据 |
| 保护 | 占位符替换(代码、URL、公式) | 短文本待翻译文件 |
| 翻译 | HellGPT(带 Markdown-aware 系统提示) | 译文(含占位符) |
| 回写 | 把译文写回 AST | 新的 Markdown 文档 |
| 校验 | 渲染 + lint | 可渲染的 Markdown |
常见疑问与解法
- Q:代码注释也要翻译吗?
A:通常不建议自动翻译代码注释(容易引入语义错误),如果确需翻译,先用术语表约束变量与 API 名称。 - Q:如何处理多语句翻译一致性?
A:使用术语表和翻译记忆(TM),或把整个文档作为上下文传入,保证术语一致。 - Q:能否完全自动化?
A:可以,但在发布前建议人工或自动化渲染检查,尤其是技术文档与有代码的文档。
一些实战建议(说人话的那种)
- 开始时先在一个小样本上试验:选几页包含代码、表格和链接的 Markdown,跑一遍流程,看哪些地方会出错。
- 把典型错误做成测试用例(比如“链接文本丢失”“表格列对不齐”),每次改流程都用这些用例回归。
- 长期项目建议把术语表与占位符策略纳入版本控制,模型提示也可以作为工程配置的一部分。
说到底,这事儿没有神奇的一键法则:想让 HellGPT 保留 Markdown,就得把“语法”和“可译内容”分清楚(拆开、保护、译回)。实操中占位符和 AST 两招最稳,术语表和校验是防漏网的关键。做到这些,你的 Markdown 翻译就像把家具换语言――骨架不动,功能不坏,读起来也舒服。