专业级中英互译
先忠实后通顺,术语全文一致,格式零损伤。
一、何时使用 / 怎么调用
1.1 怎么触发(不需要命令、不需要参数、不需要装依赖)
本 Skill 靠自然语言触发:请求里同时出现「要译的文本或文件」+「翻译意图」就会命中。以下说法都是真实可用的触发方式,直接照抄即可:
翻译这段:<粘贴文本>帮我翻译一下这个 README把这段翻成中文这段中文翻成地道英文translate this into Chinese翻译这个 .srt 字幕,时间轴别动给我中英对照版本/双语对照把这个网页的正文译成中文把这份代码里的注释译成中文术语保持一致的翻译,别一会儿「限流」一会儿「速率限制」
显式点名(想确保不走别的技能时可选加一句):用 pro-translator 翻译:… 或 按 pro-translator 的规则翻:…。
最小调用:只说「翻译」+ 一段文本就够了——方向默认外文→中文,文体按源文本自动判定,输出默认纯译文。不追问、不空转。
1.2 用户最好提供的 4 个信息(没给就按默认走,并在交付时用一行声明假设)
- 源文本:粘贴文本 / 给文件路径 / 给网址(三者其一)
- 方向:谁→谁(默认外文→中文;中文→外文需要用户明示)
- 文体:技术文档 / 学术 / 法律商务 / 文学口语 / 界面文案(决定用词冷暖与句长)
- 输出形态:纯译文(默认)/ 中英对照 / 写回新文件(
原名.zh.md/原名.en.md)
1.3 交付时长什么样(用户据此确认自己叫对了)
一次标准交付固定包含 4 段,顺序不变:
- 一行假设声明:
方向:EN→ZH | 文体:技术文档 | 形态:纯译文 - 一个 fenced 代码块里的纯译文(一键复制;译文内部含代码块时外层用四个反引号 ```` 包裹)
- 术语表,纯文本行,跟在代码块后面
- 一行自检结果:段落数、占位符 diff、术语抽查是否通过
完整样例见 examples/ 下三个文件,可直接对照。
1.4 什么时候不该叫我(叫了只会白费一轮)
- 数学 / 模型论 / 数理逻辑材料 → 转
model-theory-translation(它内置对齐《初等模型论》的术语表和数学符号保全规则) - 同语言润色、不换语言 → 不是翻译任务,直接改稿
- 图片、扫描 PDF 里的文字 → 先 OCR,再回来翻
- 音视频转写 → 先转写,再回来翻
- 纯代码改写、重构、加功能 → 不是翻译任务
- 用户点名要用别的 skill → 听用户的
二、文件地图(按需加载,不必一次读完)
- 本文件 SKILL.md:默认路径,约 90% 的请求只看这一份就够。
references/carriers.md:载体细则——.md/.txt/.html/.srt/.vtt/网页/代码注释/合同/论文各自怎么处理、分块边界、输出命名、校验方法。要翻文件或字幕时再读。references/recovery.md:失败模式与降级处置手册(读不到 / 编码坏 / 超长 / 术语冲突 / 时间轴错位 / 译文截断 / 格式损坏)。出问题才读。references/faq.md:高频问题 + 常见错误用法(反模式)+ 补救步骤。用户问「格式乱了怎么办」时读。examples/01-tech-doc-en-zh.md:英文技术文档→中文,完整对照 + 术语表 + 手法标注。examples/02-mixed-code-math-zh-en.md:中文混合内容(代码块 / 公式 / 占位符 / URL / 版本号)→英文,完整对照 + 格式保全核对表。examples/03-subtitle-and-comments.md:SRT 字幕 + 代码注释翻译,时间轴与代码零改动。
三、开工前先定三件事
- 方向:源语言→目标语言(没说就默认:外文→中文;中文→外文要用户明示)。
- 文体:技术文档 / 学术 / 法律商务 / 文学口语 / 界面文案。文风跟着文体走——技术文精确冷峻,文学文保留呼吸感,界面文案短促。
- 输出形态:默认纯译文,整体放在一个 fenced 代码块里(一键复制;译文内部本身含代码块时,外层改用四个反引号 ```` 包裹避免嵌套断裂)。用户说"对照/双语"才用段对段格式(原文一段、紧接着译文一段,中间空行)。
关于表格(易踩坑,说清楚):对话里交付译文时不用 Markdown 表格——用户要复制粘贴到别处,表格粘出去是一堆竖线没法用。但原文是 .md 文件且原文本身有表格时,写回文件必须保留原表格结构(表头、对齐行、行列数一个不动)。两者不冲突:前者管交付形态,后者管格式保全。
四、术语一致性(长文与技术文必做)
- 何时建表(明确阈值,不留模糊):源文本 >1500 汉字或>800 英文单词,或出现 ≥3 个专业概念,或用户要求"术语统一" → 必须先建表。低于阈值可省,但表外术语仍需前后一致。
- 建表动作:先通读全文,抽 10~20 个核心术语,然后全文强制复用。术语表用纯文本行(好复制),不用表格:
rate limiting → 限流
race condition → 竞态条件
exponential backoff → 指数退避
- 表外术语在同一文档内也要前后一致——一词多译是翻译稿最刺眼的硬伤。
- 译文末尾附"新增术语表"(原表中没有、本次新定的译名),便于用户复核与下次复用。
- 专名首次出现用"译名(原文)"括注,之后只用译名。
- 术语表一旦冻结,不再中途改名;确需改则全文统一替换并单列"术语变更"一行说明。
五、格式保全(硬规则)
这些元素原样保留、绝不翻译——翻译它们会直接破坏功能:
- 代码块与行内代码、命令、路径、文件名、环境变量
- URL、邮箱、@提及、版本号(v2.3.1)、数字与单位(20GB、45°C)
- 占位符:
{var}、%s、{{name}}、$1 - Markdown 标记结构(标题层级、列表符号、表格线、引用块)、HTML 标签、LaTeX 公式(
$...$、$$...$$内部一个字符都不动) - 字幕文件的时间轴一行都不许动
校验方式(不是"注意一下",是机器可比对):交付前对原文与译文各抽取 4 个集合做 diff——代码块内容、行内代码、占位符、URL/版本号;四个集合必须完全相等,多一个少一个都要回到对应块重译。
六、中英互译手法(消除翻译腔的原因与方法)
- 英文一句 40 词 → 中文拆成 2~3 个短句。长定语从句拆成独立小句,读者不需要一次憋一口气。
- 被动语态转主动:"It was found that..." → "研究发现……"(或直接进入正题)。
- 代词显化:it/this/they 指代不明时译成实际指代物,中文读者没有英文的指代容错。
- 少用"的的地得"连串;"被"字句能省则省;英文名词化动词化(如 implementation → 实现/落地)。
- 增译连接词(因此、不过、具体来说)让逻辑显形,但不增删事实。
- 中译英反向同理:中文四字堆叠与排比要落地成主谓结构;无主语句补出主语;"进行了……的优化"→ 直接动词
optimize。
七、特殊载体(一句话版,细则见 references/carriers.md)
- 文件(.md/.txt/.html/.srt/.vtt):先读结构 → 分块(每块 ≤2000 字)→ 按原结构重组 → 写到新文件(
原名.zh.md/原名.en.md),不覆盖原文件。 - 网页:抓正文,剔除导航/广告/页脚后翻译;用户要"整页"就分节全译。
- 代码注释:只翻注释与 docstring,代码、字符串字面量(除非它是面向用户的文案)零改动;不重排格式。
- 字幕(.srt/.vtt):逐条翻译,序号与时间轴原样,每条译文尽量 ≤ 原文 1.5 倍长度避免超屏。
八、长文策略(分块边界写死)
- 块大小:每块 ≤2000 字(中文字符计),按标题/段落边界切,绝不切在代码块、表格、公式中间。
- 篇幅 ≥3 块时,先给用户一个翻译计划:分几块、各块主题、预计术语表。
- 逐块翻译并自检后拼接。超过 2 万字才启用并行子进程/子代理:每个子代理必须拿到同一份术语表和相同风格指令,最后统一校对衔接处。
- 上下文纪律:每块只带「术语表 + 上一块末段 200 字 + 本块原文」,不把全文塞进每一块,避免越译越漂。
- 分块清单(manifest)落地:块号、源文起止、字符数、状态(todo/done)、校验和——这是断点续译的依据。
九、稳定性保障(可断点、可复现、不靠运气)
纯规则型 Skill 的稳定性来自固定契约,不是来自"再试一次":
- 幂等:同一输入 + 同一术语表 → 输出可复现。重跑不改变已定译名,不覆盖源文件。
- 断点续译:中断后从 manifest 里第一个非
done块继续;已完成块不重译(重译是术语漂移的最大来源)。 - 单块失败只回滚该块:格式损坏/截断时定位到块号,只重译该块并重新校验,绝不整篇推倒重来。
- 无外部依赖:不调用任何外部 API、不联网翻译、无超时与重试语义;唯一的外部动作是读用户给的文件/网页,失败即降级(见下节),不会卡住。
- 可审计:每次交付带假设声明 + 自检结果,用户能一眼看出这一版基于什么假设,便于指出错误后精准重译。
十、失败模式与降级(每条都给用户一句人话)
- 源文件读不到 / 路径不存在 → 不猜内容、不凭空编造。回复:说明尝试的确切路径 + 让用户确认路径或直接粘贴正文。绝不输出"文件内容看起来是……"。
- 编码错误(乱码 / GBK / BOM) → 按 UTF-8 → GB18030 → Big5 依次探测;仍乱码则只译可读部分,并在译文对应位置标注
⚠ 第 X 行原文编码损坏,未译。 - 超长文档超上下文 → 走第八节分块 + manifest;先交前 1~2 块并告知剩余块数与续译方式,不静默截断。
- 术语表冲突(同词两译 / 用户指定与旧表冲突) → 用户指定优先;冲突项单列"术语冲突待确认",全文按一个译名统一替换,并说明改了哪几处。
- SRT 时间轴错位 / 条数与原文不符 → 时间轴零改动,不合并、不拆条;单条译文超长时复制该条时间轴另起一条,并标注"因超屏拆条"。
- 译文被截断 → 从最后完整句续译,与上一段重叠 1 句对齐,不重复开头、不跳句。
- 格式损坏(代码块被译 / 占位符丢失) → 回到 manifest 最近
done状态,只重译受损块,重跑第五节四集合 diff。 - 输入为空 / 只有图片 / 只有音频 → 明确拒绝并说明需要什么(文字、文件或 OCR 后的文本),不假装翻译。
- 方向或语言判定不确定 → 用一行假设声明先给一版(默认外文→中文),并附一句"若方向相反我立刻重译",不反复追问。
细则、判断标准与"不允许的做法"见 references/recovery.md。
十一、交付前自检
- 段落数量与原文一致(无漏段)——数一遍
- 术语表逐词抽查一致;同一术语全文只出现一个译名
- 数字、日期、单位、专有名词与原文零差异
- 代码/公式/占位符 diff 级别无改动(四集合相等)
- 标题层级、列表符号、表格行列数与原文一致
- 通读一遍目标语:有没有"这是典型的翻译腔"句?有就重写那句
- 用户若给了术语表或旧译稿,本次译名与之对齐
十二、边界
数学、模型论、数理逻辑材料 → 交给 model-theory-translation(它有对齐《初等模型论》的术语表和数学符号保全规则)。用户明确指名用哪个 skill 时听用户的。同语言润色、OCR、音视频转写不属于本 Skill 职责,应明确告知而非勉强代劳。