版本 v1.00.2 | 适用于 Microsoft Edge(Chromium 内核)与 Google Chrome 及所有 Chromium 系浏览器
一款浏览器翻译扩展:不替换、不覆盖原文,而是把译文插入到每一段文字的下方,方便逐段对照阅读——交互形式参考了「沉浸式翻译」的行内译文设计,本扩展为完全独立的实现。
同时支持两类翻译服务:
- 翻译网站 API:Google 翻译(免费)、DeepL、百度翻译、有道翻译(智云),设置页内附申请链接
- AI 大模型 API:OpenAI 兼容接口(OpenAI / DeepSeek / Moonshot Kimi / 智谱 GLM / Ollama 本地部署等)与 Anthropic Claude
- 段落级行内译文:译文显示在原文段落下方,原文完整保留
- 布局感知嵌入:译文位置随原文空间分布自适应,不破坏原网页布局——
- 段落状 → 译文直接嵌入为下方独立段落,与原文风格统一
- 横向排列(菜单 / 标签 / 分栏等)→ 译文位于每个单词 / 项的下方,横排保持不变
- 行内元素 → 译文以行内块跟在原文右侧
- 右键菜单:在网页空白处右键,可直接「翻译此页」「隐藏 / 显示译文」「移除译文」
- 多服务可选:免费 Google 翻译开箱即用,或接入 DeepL / 百度 / 有道 / 各类 AI 大模型
- 智能段落识别:自动跳过按钮、代码块、过短文本、悬浮层、已是目标语言的段落;外层容器优先,避免父子段落重复翻译
- 批量请求 + 缓存:大段文本按字符数分批请求(可配置),相同文本不重复请求
- 进度与取消:翻译过程中右上角实时显示进度,可随时取消
- 一键隐藏 / 移除:译文可整体隐藏或移除,页面瞬间还原
- 单段复制:译文悬停可见「译」角标,点击复制该段译文
- 快捷键:
Alt+Q快速翻译当前页(可在edge://extensions/shortcuts修改) - 深浅色页面通用:译文跟随原文颜色与字号(略淡),无需专门适配
- 将本项目文件夹下载 / 解压到本地(保持目录结构完整)
- Edge 地址栏输入
edge://extensions并回车 - 打开页面左下角的 「开发人员模式」
- 点击 「加载解压缩的扩展」,选择本扩展所在文件夹(
inline-translate) - 点击工具栏上的拼图图标,把「行内翻译」固定到工具栏
Chrome 用户:进入
chrome://extensions,同样开启「开发者模式」后加载即可。
- 打开任意网页(如一篇英文文章)
- 点击工具栏的「行内翻译」图标 → 「翻译此页」(或直接按
Alt+Q,或在页面空白处右键 → 「翻译此页(行内翻译)」) - 段落译文直接嵌入原文下方,与原文风格统一;横向排列的菜单、标签等,译文显示在每个单词下方,横排保持不变
- 需要时可用弹窗(或右键菜单)中的「隐藏译文 / 移除译文」一键还原
默认使用 免费 Google 翻译,无需任何配置即可使用。要接入其它服务,见下文。
| 服务 | 类型 | 是否需要申请 | 申请链接 | 说明 |
|---|---|---|---|---|
| Google 翻译 | 翻译网站 API | ❌ 无需 | — | 免费、开箱即用,适合日常阅读 |
| DeepL | 翻译网站 API | ✅ | deepl.com/pro-api | 专业级翻译质量;免费版 50 万字符/月 |
| 百度翻译 | 翻译网站 API | ✅ | fanyi-api.baidu.com | 通用文本翻译;免费 100 万字符/月(需实名认证) |
| 有道翻译(智云) | 翻译网站 API | ✅ | ai.youdao.com | 注册赠送体验额度 |
| AI 大模型 · OpenAI 兼容 | AI API | ✅ | platform.openai.com/api-keys | 可接入 OpenAI / DeepSeek / Moonshot / 智谱 / Ollama 等 |
| AI 大模型 · Anthropic Claude | AI API | ✅ | console.anthropic.com/settings/keys | Claude 系列模型,翻译质量高 |
在扩展的「设置」页面选择服务、填写密钥(均附申请链接),点「保存设置」即可;「测试连接」可立即验证是否配置成功。
设置页内置常用服务预设,一键填入 Base URL 与模型:
| 服务 | Base URL | 推荐模型 | 申请 / 安装 |
|---|---|---|---|
| OpenAI | https://api.openai.com/v1 |
gpt-4o-mini |
platform.openai.com/api-keys |
| DeepSeek | https://api.deepseek.com |
deepseek-chat |
platform.deepseek.com/api_keys |
| Moonshot Kimi | https://api.moonshot.cn/v1 |
kimi-latest |
platform.moonshot.cn |
| 智谱 GLM | https://open.bigmodel.cn/api/paas/v4 |
glm-4-flash |
open.bigmodel.cn |
| Ollama 本地 | http://localhost:11434/v1 |
llama3.1 等 |
本地 ollama pull llama3.1 即可 |
任何兼容 OpenAI /chat/completions 接口的服务都可选择「手动填写」接入自定义 Base URL。
不支持
response_format: json_object的服务(如部分 Ollama 模型)会自动降级重试,无需手动干预。
选择「AI 大模型 · Anthropic Claude」,填入 API Key,默认模型 claude-haiku-4-5-20251001(速度快、成本低),也可切换 claude-sonnet-5 等更高阶模型。
每批段落会被编码为 JSON 数组发送给模型,并要求原样返回 {"translations": [...]},以保证数量与顺序对齐;若返回数量与请求不一致,会给出提示,此时在设置中调小「每批最大字符数」(默认 1200)重试即可。
<all_urls>:需要读取页面正文,以及向自定义 AI 接口(任意 Base URL,含本地 Ollama)发送请求storage:保存设置与翻译缓存(仅存于浏览器本地,不同步到云端)
翻译文本只发送给当前选中的翻译服务;API Key 仅保存在浏览器本地(storage.local),仅在请求对应服务时随请求发送,不会上传到任何其它服务器。
- 段落提取(内容脚本):按启发式规则扫描
p / li / blockquote / 标题 / 表格单元格 / 段落型 div等元素——跳过按钮、代码、输入框、悬浮层(position: fixed)、过短(< 4 字符)、超长(> 3000 字符)、纯数字、已是目标语言的文本;父级容器已选中时子元素跳过,避免重复 - 分批翻译(background):按「每批最大字符数」分批(百度按 UTF-8 字节数限 6000 字节);相同文本去重并命中本地缓存时直接复用
- 布局感知嵌入(内容脚本):检测每个元素的布局上下文后确定译文位置——
- 父容器为 flex / grid,或元素为 float / inline-block / 表格单元格(横向项)→ 译文嵌入元素内部末尾,位于单词下方,横向排列不被插入的块级节点打断
- 纯行内元素 → 译文以行内块紧跟原文右侧
- 其余块级段落 → 译文作为独立段落插入原文下方
- 进度 / 取消 / 隐藏:分批嵌入实时更新进度;取消会中止后续批次;隐藏 / 移除一键还原页面
inline-translate/
├── manifest.json # 扩展清单(MV3,版本 1.00.1)
├── background.js # 后台脚本:各翻译 API 调用、分批、缓存、测试连接、快捷键
├── content.js # 内容脚本:段落提取、译文块插入、进度 UI
├── content.css # 译文块与页面内 UI 样式
├── providers.js # 共享配置:服务元信息(含申请链接)、语言映射、默认设置
├── crypto-utils.js # MD5(百度签名)与 SHA-256(有道签名)工具
├── popup.html / popup.js / popup.css # 工具栏弹窗
├── options.html / options.js / options.css # 设置页
├── icons/ # 扩展图标(16/32/48/128)
├── tools/gen_icons.py # 图标生成脚本(纯 Python 标准库)
├── README.md
└── LICENSE
- 修复布局破坏:横向排列的菜单 / 标签(flex / grid / float / inline-block 布局)翻译后不再被打成上下排列——译文改为嵌入每一项内部下方,横排保持不变
- 新增右键菜单:页面空白处右键可「翻译此页」「隐藏 / 显示译文」「移除译文」
- 译文样式重做:去掉粗边框与色块背景,译文直接嵌入、与原文风格统一(跟随原文颜色 / 字号 / 对齐,略淡区分);「译」角标改为悬停显示
- 跳过悬浮层(
position: fixed)元素,避免破坏其定位
- 优化段落识别:跳过导航 / 菜单 / 代码 / 过短文本,外层容器优先,避免父子段落重复翻译
- 深色页面下译文样式适配(半透明背景,浅色 / 深色页面均可正常阅读)
- 译文块支持一键复制单段译文
- 翻译过程实时进度显示 + 取消功能
- DeepL 免费 / 专业端点自动识别(Key 以
:fx结尾自动走免费端点)
- 首个可用版本:行内段落翻译(译文显示在原文下方)、6 类翻译服务接入、弹窗与设置页、翻译缓存、快捷键
Q:为什么有些段落没有翻译? A:以下情况会被有意跳过:字符数 < 4、纯数字 / 符号、超过 3000 字符、位于导航 / 菜单 / 代码块中、原文已是目标语言(如目标为中文时跳过中文段落)。AI 模式下如遇模型返回异常,可在设置中调小「每批最大字符数」后重试。
Q:翻译结果顺序错乱或数量不对? A:AI 模型偶发返回数量与请求不一致时会明确报错;请调小「每批最大字符数」重试。免费 Google 接口偶发限流,稍等片刻重试即可。
Q:API Key 安全吗?
A:密钥保存在浏览器本地 storage.local(不会跨设备同步),仅在请求对应服务时随请求发送。建议不要在公共电脑上保存密钥。
Q:百度翻译的免费额度是多少? A:通用文本翻译 API 免费额度为 100 万字符/月,需要实名认证后生效。
Q:为什么申请了 <all_urls> 权限?
A:翻译需要读取页面正文;同时自定义 AI 接口的域名无法预先枚举(含本地 Ollama),因此申请全域名权限。
Q:页面内容动态加载(SPA)时不生效? A:v1.00.1 翻译的是点击「翻译此页」时页面已存在的段落。页面新增内容后,再次点击翻译即可;重新翻译不会产生重复译文(原地更新)。
Q:如何修改快捷键?
A:Edge 在 edge://extensions/shortcuts,Chrome 在 chrome://extensions/shortcuts。
Q:与「沉浸式翻译」是什么关系? A:行内译文(译文显示在原文下方)的交互形式参考了「沉浸式翻译」,本扩展为完全独立的实现,无任何代码或资产复用,也与其无关联。