Sublime Text无稳定划词或全文翻译插件,唯一可行方案是trans命令行工具+Build System;需配置${selected_text}、-brief、-e google、selector:"comment",Windows须用WSL。

Sublime Text 没有真正可用的全文翻译功能,也不存在稳定可靠的划词翻译插件——所有依赖 on_selection_modified 或同步 HTTP 请求的插件(如 SublimeText-Translate)在 ST4 下必然卡顿、乱码、空响应或触发 429 Too Many Requests。别浪费时间试插件,直接用 trans 命令行工具 + Build System 是唯一快、稳、不阻塞的方案。
为什么全文翻译不能靠插件实现?
全文翻译不是“多选几段”的问题,而是涉及文本边界识别、编码一致性、API 限流和结果粘贴格式控制四大硬伤:
-
view.sel()只返回当前选区,没有“全文”语义;插件若强行view.substr(sublime.Region(0, view.size()))读全文,会把代码、字符串、注释全吞进去,翻译结果不可用 - 中英文混合、emoji、BOM、全角标点一出现,
urllib.request就抛UnicodeDecodeError - Google/Bing 接口对单次请求长度有限制(通常 ≤ 5000 字符),超长文本需分块+重试+合并,插件几乎没人做容错
- 翻译结果带音标、词性、例句(不加
-brief),直接粘贴会污染代码格式
如何用 Build System 实现“伪全文翻译”?
所谓“全文”,实际是手动选中目标区域(比如一段注释块或文档字符串),再用 Build System 调 trans。关键不是自动,而是可控、不误翻:
-
shell_cmd必须用${selected_text},不能写死路径或变量名;没选中就按Ctrl+B,命令静默失败 - 必须加
-brief:否则返回带换行、音标、词性的长文本,粘贴后破坏注释结构 - 必须显式指定
-e google:Bing/DeepL 接口已失效或 fallback 不稳定,缺了就返回空 -
selector设为"comment":确保Ctrl+B只在//或/* */区域生效,避免把if (x > 0) {当文本发出去
配置文件 Translate.sublime-build 内容应严格为:
{"shell_cmd":"trans -brief -e google -s auto -t zh : '${selected_text}'","selector":"comment","file_regex":"^.*$"}Windows 用户跑 trans 必须用 WSL
原生 cmd 或 Powershell 对 UTF-8 换行、BOM、中文空格处理极差,trans 输出必丢字或变问号:
- 装 WSL2(推荐 Ubuntu 22.04+),运行
sudo apt install translate-shell -
shell_cmd改为 WSL 路径:"shell_cmd":"wsl trans -brief -e google -s auto -t zh : '${selected_text}'" - 确认 WSL locale 是
zh_CN.UTF-8:locale -a | grep zh_CN,否则trans解析中文输入失败
中英文混合文本怎么避免“整块乱翻”?
view.word() 对 "init初始化" 这种串返回整个区域,但你要的只是“初始化”。得手动分块再定位:
- 用正则
r'[a-zA-Z]+|[\u4e00-\u9fff]+|\d+'把选区粗分为语言块,例如["init", "初始化"] - 结合
view.sel()[0].begin()光标位置,反向找起始位置最接近的一块 - 若选区首字符是 ASCII 字母、末字符是中文(如
"funcName中文说明"),大概率是跨语言误选,应自动截取首个连续中文段
这步没法靠插件自动完成,必须自己选准再按 Ctrl+B —— 所谓“智能划词”,本质是人眼判断 + 工具执行。


















