我是一个开发,写代码的时候或者是阅读英文文档的时候,或者是去看外国的一些新闻的时候,大概都有过这种瞬间:
浏览器里一篇英文文档、终端里一串报错、PDF 里半段看不懂的 API 说明。你真正想做的只有一件事------把这段字翻译出来。结果往往是:先复制,再切窗口,再打开翻译网页,再粘贴。选区没了,上下文也断了,要么就是一些其他的软件也可以,但是有的就是收费之类的,看着就烦躁,要么就是体验不好,总之不是自己想要的效果。
Mac 上有 Bob,这个动作是顺的。Windows 上也有不少划词工具,可我用下来,要么要先 Ctrl+C,要么插件只能在网页里用,要么配置一堆翻译接口,要么把内容丢到云端账号里。我自己日常就是 Windows,于是做了 SnapLingo:选中文字,按一下快捷键,翻译浮窗出来。





以上就是目前实现的一个简易版的翻译了, 没有深入去做,目前也能满足我的需求了, 后续有时间可以再去迭代下。
这篇文章讲三件事:我为什么要做它、它现在能做什么、技术上怎么做的。
为什么要自己做
不是市场上没有翻译软件。是我找不到一个,同时满足这几条:
- 真划词。 选中之后按一个键就行,不要先复制,不要再切到别的软件里粘贴。
- 截图也能译。 有些字在图片、设计稿、报错弹窗里,选不中,只能框。
- 给程序员看的。 函数名、框架名、报错码不要被译成奇怪的中文;看不懂的时候,希望旁边能有一句人话解释。
- 数据在自己电脑上。 Key 和历史不要进安装包,也不要默认同步到别人的服务器。
- 就是 Windows 桌面软件。 关掉窗口还在托盘,开机可以自启,用起来像普通工具,而不是开着一个开发服务器。
浏览器插件解决不了终端和桌面软件里的字。网页翻译解决不了「手还停留在原文上」这件事。于是我按自己的工作流,把这个工具做小、做具体。
第一版只做一件事:让 Windows 上的划词、截图翻译好用。模型先只接 DeepSeek,别的以后再说。
SnapLingo 现在能做什么
打开之后是一个很普通的桌面窗口:首页可以手动贴一段文字试译,旁边是历史和设置。真正常用的不是这个窗口,是快捷键。
| 动作 | 默认快捷键 |
|---|---|
| 划词翻译 | Alt + Q |
| 截图翻译 | Alt + X |
划词:在浏览器、编辑器、PDF、终端里选中文字,按 Alt + Q,右下角附近会弹出翻译卡片。不用先 Ctrl+C。
截图:按 Alt + X,拖一个框。识别用的是 Windows 自带 OCR(Windows.Media.Ocr),图片留在本机,不会上传。识别出的文字再拿去翻译。
卡片里除了译文,还可以对技术内容点「解释」:这段报错是什么、常见原因是什么,用短中文说完,不写论文。
设置里需要自己填 DeepSeek API Key。Key、快捷键、翻译历史都写在:
text
%AppData%\com.snaplingo.app
也就是 settings.json 和 history.json。换电脑不会自动带走,重装、升级默认也不会清掉。这是有意的:安装包只负责程序,不夹带任何人的密钥。
关闭主窗口后程序还在托盘。要退出,用托盘菜单里的「退出」。
我是怎么实现的
桌面壳是 Tauri 2 + Rust ,界面是 Vue 3 + Vuetify。选 Tauri 而不是 Electron,主要是体积和内存:翻译工具应该轻,不该再塞一个完整 Chrome。
几件实现上比较在意的事:
划词要在快捷键松开后再取字。 如果按下去的瞬间就模拟复制,Alt 还按着,复制会变成别的组合键,选区也可能被焦点抢走。现在的逻辑是:等修饰键松开,再向当前窗口发复制,读剪贴板,然后尽量把剪贴板还原。
截图走系统 OCR,不附带 Python / Paddle 运行时。 安装包可以保持很小,离线环境也能识别英文和中文界面上的字。翻译这一步才出网,打 DeepSeek。
前端是普通 Vue 单页,路由用 hash。 主窗口、翻译浮窗、截图遮罩是三个 Tauri 窗口,浮窗无边框、置顶、不进任务栏。主窗口关了可以藏到托盘,浮窗关了只是藏起来,下次划词还在。
配置用 Tauri Store,不写进仓库。 网页预览时会退回到 localStorage,正式客户端走本机 json。
目前翻译协议按 DeepSeek 的 Chat Completions 来。OpenAI、Kimi、智谱这些以后可以做成「兼容地址」,Claude 是另一套协议,第一版故意不做。
使用方式
- 安装后打开 SnapLingo。
- 到设置里填自己的 DeepSeek API Key,保存。
- 去任意软件里选中一段字,按
Alt + Q。 - 遇到选不中的字,按
Alt + X框一下。
Windows 如果提示「未经安全发布的应用」,是因为第一版还没有代码签名,选仍要运行即可。不需要管理员权限,装在当前用户下。
我刻意没做的
- 没有做成开源仓库当下载页。发出去的是安装包,源码可以留在私有仓库。
- 没有把我的 API Key 打进安装包。谁用谁填自己的 Key,账单也是自己的。
- 没有第一版就上账号系统、云同步、十家模型。那些会让「划一下就能译」这件事变重。
这些不是做不到,是我不想第一版就跑偏。
写在后面
SnapLingo 的目标很窄:在 Windows 上,把「看见一段字 → 看懂」中间的步骤砍到一次按键。
它现在是 0.1.0,能划词、能截图、能解释、能记历史。后面才会考虑更多模型、更稳的安装体验、以及一个真正的下载页。
如果你也是每天泡在英文文档和报错里的人,希望这个思路对你有用。就算不用我这个实现,把「先复制再翻译」这件事从工作流里拿掉,一天也会安静很多。
项目: SnapLingo,Windows 划词 / 截图翻译
版本: 0.1.0
技术: Tauri 2、Rust、Vue 3、Vuetify、DeepSeek、Windows OCR
数据: 仅本机 %AppData%\com.snaplingo.app