为 TED 演讲稿与字幕添加第二语言翻译、双语阅读和点击查词的 Chrome Manifest V3 扩展。
- 优先直接读取 TED 已有的目标语言官方译稿与字幕;仅在官方版本不存在时调用第三方翻译服务或大模型。
- 演讲稿支持“仅译文”和“原文 + 译文”两种模式。
- 根据 TED 演讲稿自带的时间戳显示双语字幕或仅译文字幕。
- 点击演讲稿或扩展字幕中的单词,查询当前目标语言释义。
- 点击演讲稿时间戳跳转到对应播放位置。
- 长演讲按可见区域分批翻译,并在本机缓存结果,减少请求与费用。
- 支持播放器全屏;不含原生
<video>的播放器会回退到监听页面已有字幕。
| 服务 | 配置 |
|---|---|
| MyMemory | 默认可直接使用;可选填写联系邮箱 |
| LibreTranslate | 自定义服务地址,可选 API 密钥 |
| OpenAI 兼容接口 | 自定义地址、模型和 Bearer API 密钥,调用 /chat/completions |
| Anthropic | 自定义地址、模型和 API 密钥,调用 /v1/messages |
自定义服务地址在保存或测试时才会向 Chrome 申请该域名的访问权限。API 密钥保存在本机扩展存储中,并限制内容脚本直接读取;扩展存储并非操作系统级加密保险库,不建议在共享浏览器配置中保存敏感密钥。
- 打开 Chrome,进入
chrome://extensions/。 - 打开右上角“开发者模式”。
- 点击“加载已解压的扩展程序”。
- 选择本项目根目录。
- 打开任意
https://www.ted.com/talks/...页面。
更新代码后,在扩展管理页点击“重新加载”,然后刷新 TED 页面。
- 点击扩展图标,在快捷弹窗中选择目标语言和阅读模式。
- 点击“在当前 TED 页面打开翻译稿”,或点击页面右下角的
T译按钮。 - 需要自定义接口时,进入“翻译服务与全部设置”,填写地址、模型和密钥。
- 点击“测试当前服务”,确认
Hello world能得到译文。 - 播放演讲时,扩展会按当前设置显示字幕;点击字幕或演讲稿中的单词可查词。
+manifest.json
+src/
+├── background/
+│ ├── providers.js # 翻译服务适配器
+│ └── service-worker.js # 请求、缓存、消息和密钥隔离
+├── content/
+│ ├── content-script.js # TED 数据解析、演讲稿、字幕和查词
+│ └── content-style.css
+├── options/ # 完整设置与服务测试
+├── popup/ # 快捷设置与打开演讲稿
+└── shared/config.js # 配置模型和消息常量
+```
+
+## 兼容策略
+
+扩展优先读取 TED 页面内嵌的 transcriptData,其中包含段落、句子和毫秒时间戳。扩展会使用目标语言请求同一演讲的 view=transcript 页面,并核验 TED 实际返回的语言;目标语言官方译稿存在时直接使用,不存在或请求失败时才调用配置的翻译服务。原文仍不可用时,再从已经渲染的演讲稿 DOM 中提取文本。
+
+字幕优先与页面原生 `<video>` 时间同步。对于第三方 iframe 播放器,扩展会尝试观察页面字幕文本;不同 TED 播放器或未来页面改版可能影响字幕同步,但不会影响使用独立翻译演讲稿。