自我介绍:本人是一名前端开发人员,喜欢折腾一些小工具,使用少数派多年,收获不少,现在是时候回馈社区了[doge]。
前言铺垫&个人背景介绍
我之前使用 Craft 写播客,当时 Craft 2.0 的时候支持了插件功能,于是开源了一个 Craft 插件供大家使用(现已不可用);后来 Craft 放弃了插件这条路,于是我转为使用 Notion 写播客,开发了 Notion Flow 这个浏览器插件工具(目前开源): https://notion-flow.xheldon.com,可以让你将 Notion 的内容以自定义的格式发送到 Github 仓库,支持自定义处理 Notion 模块,目前 Chrome 和 Edge 浏览器加起来有上百个用户。
之后我为了自己压缩图片方便,为了隐私和快速,不想使用各种在线压图/压视频/SVGA预览工具,开发了 xPic 客户端工具(目前是手动发码,稳定 Beta 中),地址见: https://xpic.xheldon.com
本人是一个翻译爱好者,一开始是纯人工翻译,工作量巨大,最近一年使用 AI 工具较多,因此对一些之前翻译过的文档重新用 AI 翻译了一遍,如: 可能是最好的 Prosemirror 中文翻译,作者发推推荐: https://prosemirror.xheldon.com (旧的人工翻译花我半年时间,在 https://old-prosemirror.xheldon.com ,Rust 中文教程: https://rust.xheldon.com
再后来我想写一个苹果应用,因为文档不是母语,所以无法快速找到想要的内容,很是头痛,找了市面上的一些工具,都不是很理想,包括:
沉浸式翻译:
优点:
- 支持任意文档翻译。
- 商业化成功的典范,项目持续性有保障。
缺点:
- 沉浸式翻译进入页面翻译需要等待时间,而且他们使用了懒加载,滚动页面快的话会发现部分页面还未翻译完毕。
- 要么需要订阅会员,要么需要自己的 API Token,都是持续性的支出花费,不划算。
- 沉浸式翻译的全文翻译,因为没有像其他插件(如简悦)对大量网页的正文部分进行适配,因此会将一些页面的 footer、header、侧边栏都翻译,甚至导致页面错乱,丑不堪言(这点注重美感的苹果开发者肯定受不了)。
我注意到另一个开源项目,叫 Twine by SwiftGG 光 Chrome 插件就有 900 多个安装,它:
优点:
- 教程部分也翻译了,人工翻译,不会出现 AI 翻译弱智的情况。
- 开源,插件安全有保障。
缺点:
- 只翻译 Swift 相关的部分,对其他文档没有处理。
- 社区项目,纯手工翻译、依赖自建的后端服务,用爱发电+ 持续支出,我赞扬这种精神(我开发 Notion Flow 也开源了),但这不是一个持久的模式。目前看仓库,最近的更新是 4 个月前。
说了这么多其他的项目的缺点,并不是为了拉踩谁,毕竟各自都有优点和缺点,选择适合自己的就可以。
铺垫了这么多,下面进入正文。
ADDT 插件是什么
全称 Dev Docs Translation for Apple,是一款浏览器插件,可以自动翻译苹果开发者文档,同时有一些功能增强阅读时候的体验。
ADDT 插件能做什么
- 苹果文档自动全文翻译(安装插件后需要手动启用),仅翻译正文部分。
- 鼠标悬浮在链接,可以查看链接的概要(使用的是苹果自己的数据,没有额外请求),并自定义样式。
- 可仅翻译,也可双语对照显示,并自定义样式。
ADDT 插件有什么特色
- 使用苹果自己的渲染方式,保持页面简洁。不像沉浸式翻译,每次翻译遍历 DOM 树,把全部层级修改一遍(虽然可以理解是为了适配不同网站和复杂功能而做的取舍)。
- 计划全部模块翻译支持。截止发稿时,已经翻译了 Swift、SwiftUI、Foundation、UIKit 等十个热门模块,目前正在进行的有八个模块,计划中的有九个模块,预计两周一更新。
- 可以免费使用。基本功能足够,对翻译有疑问或者想双语对照的,可以付费解锁(Safari 是付费下载)一次性付费,不用持续消耗自己的 API Token,不用购买订阅会员。
- 使用 AI 多级降级策略,基础翻译模型是 QWen-2.5-14B,如果出现错误,包括翻译中出现大量重复字符、翻译中出现非法字符等,会 fallback 到 QWen-2.5-32B → Grok-2 → Grok-3(感谢马老板每月的 150 刀的额度)。
- 使用 Cloudflare 全球 CDN 分发资源,成本低,见效快,物美价廉。
ADDT 插件支持的浏览器
目前支持市面主流浏览器,包括 Chrome、Firefox、Safari。Edge 截止发稿时,正在审核中(快审核两周了,挺无语的)。
ADDT 插件的技术细节
沉浸式翻译使用了一些脚本注入的技术,为了双语翻译的时候插入到原始DOM的同级节点,这会引起原始页面布局的错乱,同时如果父级节点样式设置了 overflow: hidden ,则翻译的内容会被截断显示不出来。针对这一问题,他们没有针对性适配苹果开发者网站。
另外,沉浸式翻译在 Safari 下的样式会被 CSP 拦截,这其实是一个很容易解决的问题...
ADDT 插件的实现方式是先获取到苹果文档的接口请求数据后(插件仅有访问https://developer.apple.com/documentation 路径的权限,保证安全),通过查询字典的方式,转换为目标语言的版本,因此使用了苹果自带的翻译方式,不对页面有任何干扰。
关于样式,使用了浏览器自身的 injectCSS 进行注入,不会产生额外的 style 样式来影响页面 DOM 树(1.0.7 版本生效)。
未来计划
- 按顺序翻译全部的文档,如果有建议的语言和有限翻译的文档,也可以邮件反馈我会安排优先级。
- 增加评论功能。这一点收到我翻译 Prosemirror 文档的影响,地址见 https://prosemirror.xheldon.com/docs/ref/ ,很多朋友反馈说,在接口下面的 译者注 非常有用,我当时也是在使用的时候添加的备注。因此我在考虑是否要用页面 URL 作为 ID,来记录接口的各个评论数据,这个功能优先级较低。
- 你有什么建议?
其他
目前官网是半价折扣中,持续到 5 月 1 日;Safari 目前 1 元促销中,也持续到 5 月 1 日。Safari 因为我不会写内购代码,所以设置成下载付费,因此只能在 Safari 浏览器中使用,其他浏览器使用激活码方式,通用。
