我为什么在 Windows 上做了一个翻译软件:SnapLingo

我是一个开发,写代码的时候或者是阅读英文文档的时候,或者是去看外国的一些新闻的时候,大概都有过这种瞬间:

浏览器里一篇英文文档、终端里一串报错、PDF 里半段看不懂的 API 说明。你真正想做的只有一件事------把这段字翻译出来。结果往往是:先复制,再切窗口,再打开翻译网页,再粘贴。选区没了,上下文也断了,要么就是一些其他的软件也可以,但是有的就是收费之类的,看着就烦躁,要么就是体验不好,总之不是自己想要的效果。

Mac 上有 Bob,这个动作是顺的。Windows 上也有不少划词工具,可我用下来,要么要先 Ctrl+C,要么插件只能在网页里用,要么配置一堆翻译接口,要么把内容丢到云端账号里。我自己日常就是 Windows,于是做了 SnapLingo:选中文字,按一下快捷键,翻译浮窗出来。

以上就是目前实现的一个简易版的翻译了, 没有深入去做,目前也能满足我的需求了, 后续有时间可以再去迭代下。

这篇文章讲三件事:我为什么要做它、它现在能做什么、技术上怎么做的。

为什么要自己做

不是市场上没有翻译软件。是我找不到一个,同时满足这几条:

  1. 真划词。 选中之后按一个键就行,不要先复制,不要再切到别的软件里粘贴。
  2. 截图也能译。 有些字在图片、设计稿、报错弹窗里,选不中,只能框。
  3. 给程序员看的。 函数名、框架名、报错码不要被译成奇怪的中文;看不懂的时候,希望旁边能有一句人话解释。
  4. 数据在自己电脑上。 Key 和历史不要进安装包,也不要默认同步到别人的服务器。
  5. 就是 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.jsonhistory.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 是另一套协议,第一版故意不做。

使用方式

  1. 安装后打开 SnapLingo。
  2. 到设置里填自己的 DeepSeek API Key,保存。
  3. 去任意软件里选中一段字,按 Alt + Q
  4. 遇到选不中的字,按 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

相关推荐
Java后端的Ai之路1 小时前
大模型LLM评估完全指南
开发语言·人工智能·python·llm·评估
志尊宝1 小时前
Vue3 零基础每日笔记(029):插槽 slot 三连——默认、具名、作用域一次讲透
前端·javascript·vue.js·vue·前端开发
别动我齐刘海1 小时前
ROS2 Jazzy + C++ 实战路线——基础学习1
c++·vscode·python·ubuntu·机器学习·自动驾驶·github
aixingpan1 小时前
aixingpan.cn API开发文档:api_docs_bichart_natalvstertiary2接口指南
前端·php
Kapaseker1 小时前
看完 AI 一天做出游戏,我只想问:你愿意掏钱吗?
人工智能
Xuantong_901 小时前
WAIC2026 深度观察:玄同科技 × 润建股份,共建中国东盟 AI 跨境 Token 产业生态,开启数字出海新范式
人工智能·ai·智能体
铁皮饭盒1 小时前
网页端, 40mb离线模型, 自动抠图, 不用 Python,不用服务器,不用 API Key, 不用显卡
前端·javascript·后端
yxlalm1 小时前
零基础快速上手Trae创建Java项目
java·人工智能
a努力。1 小时前
三种Agent架构选型指南:从ReAct到Multi-Agent
人工智能