一个自己用的 macOS 翻译小工具:常驻菜单栏,选中文字就地翻译,不打断你手上的事。
基于苹果自带的 离线翻译框架(macOS 15+,不联网、不需要 API key), 也可以填百度翻译的凭据走在线大模型,译文质量更好。
⌥Space ── 任何时候呼出翻译窗口
选中任意文字 ── 就地浮出翻译面板(不需要切窗口)
⌘V 粘贴截图 ── 自动 OCR 识别图中文字并翻译
到 Releases 页面 下载最新版
BianJieFanYi-macOS-3.3.zip(仓库里的 dist/ 目录也放了一份同样的),解压后:
- 双击「安装.command」 —— 自动装到「应用程序」并解除系统拦截(需要输一次密码)
- 或者手动:把
便捷翻译.app拖进「应用程序」,然后在终端跑一次xattr -dr com.apple.quarantine /Applications/便捷翻译.app
为什么需要这一步? 这个 app 没有苹果开发者签名(个人开发者签名要 99 美元/年), 从网上下载的文件会被 macOS 打上
com.apple.quarantine隔离标记并被 Gatekeeper 拦下。 去掉这个标记即可正常使用 —— 这是所有个人开发的小工具的通行做法。
系统要求:macOS 15.0 或更高(离线翻译框架从 15.0 才有)。Intel / Apple Silicon 都支持。
只有一份 Swift 源码,不需要 Xcode 工程文件,装好 Xcode 命令行工具即可:
git clone https://github.com/MrSuuu/BianJieFanYi-ForMac.git
cd BianJieFanYi-ForMac
bash build.sh # 编出来 便捷翻译.app(只编本机架构,最快)
open 便捷翻译.app| 功能 | 说明 |
|---|---|
| 菜单栏常驻 | 无 Dock 图标、无自己的菜单栏(LSUIElement),⌥Space 全局呼出 |
| 自动判方向 | 中文→英文、英文→中文自动切换,不用手选语种;也可指定目标语种 |
| 选区浮窗 | 在 GitHub / Discord / 浏览器 / 邮件里选中一段文字,就地浮出翻译面板,当前软件保持前台 |
| 自动翻译 | 浮窗弹出即翻译,不需要手点。带 0.3s 选区防抖,拖选过程中不会乱跳 |
| 换个译法 | 一键轮换 标准 / 意译 / 口语化 / 学术 / 简洁(走在线大模型时生效) |
| 截图 OCR | ⌘V 或点「粘贴图片」直接识别剪贴板里的截图(苹果 Vision 框架,离线) |
| 贴边胶囊 | 窗口可收成一个贴在屏幕边缘的小胶囊,可拖动换边,点一下展开 |
| 历史记录 | 翻过的内容存本地,可回看、复制 |
| 深浅自适应 | 跟随系统外观,也可手动钉死浅色/深色;四个窗口的通透度都能各自调 |
| 朗读 | 系统语音朗读原文/译文 |
「选区浮窗」需要 辅助功能(Accessibility)权限 —— 系统规定:任何程序想读取 其他程序的选中文字,都必须由用户在系统设置里显式授权。
- 菜单栏「便捷翻译」→ 设置 → 打开「开启选区浮窗」(会自动弹出授权请求)
- 到 系统设置 → 隐私与安全性 → 辅助功能,给「便捷翻译」打勾
- 之后在任意软件里选中文字,旁边就会浮出翻译面板
权限只用于读取选中文字、以及在浮窗上定位。代码全部开源在这,可以自己审。
Sources/main.swift 全部源码(单文件,约 2300 行)
build.sh 本地开发构建(本机架构 + 自签证书签名)
package.sh 发布打包(universal 双架构 + ad-hoc 签名 + zip)
sync.sh 一键同步到 GitHub(类型检查闸门 → commit → push)
.github/workflows/ 打 tag 自动发 Release
AppIcon.icns 图标
Tools/ 生成图标的脚本(iconset + makeicon.swift)
dist/ 发布包
| build.sh | package.sh | |
|---|---|---|
| 架构 | 只编本机(快) | x86_64 + arm64,lipo 合成 universal |
| 签名 | 自签证书 | ad-hoc(通用) |
| 用途 | 自己开发迭代 | 给别人下载 |
为什么本地开发要用自签证书? 踩过的坑,值得记一笔:
macOS 对 ad-hoc 签名的 app,把「辅助功能」授权绑死在二进制哈希(cdhash)上。
你每改一行代码重新编译,cdhash 就变一次 → 系统设置里那个勾还亮着,
但程序内部 AXIsProcessTrusted() 已经返回 false 了,授权静默失效。
开发期反复重建 = 反复重勾,根本没法用。
换成一个稳定的自签证书身份后,TCC 存的要求变成 certificate root = H"..."(绑证书),
重建多少次授权都还在。自签证书放在 .signing/(已 gitignore,不会进仓库)。
打开后什么都没有?
它是菜单栏常驻程序 —— 没有 Dock 图标也没有窗口。看屏幕右上角菜单栏找「便捷翻译」图标,
或者按 ⌥Space 直接呼出窗口。
提示「已损坏」或「无法打开」?
是 Gatekeeper 拦截,执行 xattr -dr com.apple.quarantine /Applications/便捷翻译.app 即可。
开了浮窗但选中文字没反应? 99% 是辅助功能权限没生效。先在设置里把开关关掉再打开(会重新弹授权框), 确认系统设置里「便捷翻译」是勾上的;换过 app 版本(重新编译/下载新版)之后,需要重新授权一次。 另外 Discord / Chrome 这类 Chromium 内核的应用默认不构建无障碍树, 代码里已针对它们做了处理,但要先有权限。
为什么翻译质量一般? 没填百度凭据时走的是苹果的离线引擎 —— 优点是断网能用、不上传文字,代价是质量普通。 设置 →「百度大模型翻译」里填上 APP ID 和 API Key 就会自动切换到在线大模型 (注意:此时文字会发到百度服务器)。
- 个人自用工具,按现状提供,不保证适用于所有场景。
- 不联网、不上传任何数据(除非你主动填了百度凭据走在线引擎)。
- 历史记录、设置都存在本机
~/Library/Preferences/com.zegeyoudaoli.translator.plist。
作者:泽哥有道理 · 包名 com.zegeyoudaoli.translator