基于 Manifest V3 的原生 Chrome / Edge 浏览器扩展。无需刷新页面、无需跳转,点击图标一键将当前网页全文翻译为目标语言;再次点击即可完全还原原文。
- 无损替换与无刷新还原:
- 绝不使用
innerHTML替换文本,仅修改 DOM 的textNode.nodeValue。 - 完整保护页面上既有的事件监听(onClick 等)、表单输入数据、React / Vue 虚拟 DOM 响应式状态。
- 记录所有文本节点与原文引用,再次点击即刻精准还原。
- 绝不使用
- 支持本地直连(免起后端服务)与代理双模式:
- 本地直连模式(推荐):已在本地内置纯 JS 兼容的 MD5 签名计算模块,并在本地保存了您的 Key
sf8A_dajc3ala6ej63pqh8o3g,在浏览器插件后台直接请求百度翻译官方接口,无需启动任何外部 Node.js 进程。 - 代理服务模式:支持企业或服务器转发需求,提供完整的 Node.js Express 代理示例。
- 本地直连模式(推荐):已在本地内置纯 JS 兼容的 MD5 签名计算模块,并在本地保存了您的 Key
- QPS 频控队列与字符安全分片:
- Service Worker 内部维护串行任务调度队列,严格控制请求间隔满足百度标准版 QPS <= 1 的要求。
- 单次请求字符控制在安全限制(< 4500 字符),多段落文本按行合并,并具备返回行数不一致时的自动逐项降级容错机制。
- 智能 DOM 扫描与遍历:
- 自动排除
<script>、<style>、<noscript>、<template>、textarea、input、contenteditable区域。 - 默认忽略代码标签
<pre>、<code>、<kbd>、<samp>、<var>,保证技术文档代码不被翻译污染。 - 过滤纯数字、纯标点、URL、邮箱地址、CSS 命名式文本。
- 递归支持 Shadow DOM 遍历以及同源 iframe 文档翻译。
- 自动排除
- 本地缓存与 Badge 状态反馈:
- 使用
chrome.storage.local缓存from|to|原文翻译结果,再次浏览相同内容秒级呈现,无需重复消耗 API 配额。 - 扩展图标实时展示 Badge 状态:
...(翻译中)、译(已完成)、ERR(异常提示)。
- 使用
浏览器翻译插件/
├── manifest.json # Manifest V3 扩展配置文件
├── background.js # 后台 Service Worker (内置直连MD5签名、QPS控制、队列调度)
├── content.js # 内容脚本 (DOM 遍历、Shadow DOM 递归、无损替换、原文还原)
├── content.css # 翻译辅助样式表
├── options.html # 扩展配置设置页
├── options.js # 配置页逻辑 (直连模式/代理模式切换、APPID配置、测试翻译)
├── server/
│ └── proxy-example.js # Node.js + Express 百度翻译后端代理服务
└── README.md # 项目说明文档
本插件已内置将密钥 sf8A_dajc3ala6ej63pqh8o3g 写入本地。百度翻译接口还需要一个配对的 APP ID(通常是 17 位纯数字)。
- 打开浏览器扩展管理页面:
- Chrome:在地址栏输入
chrome://extensions/ - Edge:在地址栏输入
edge://extensions/
- Chrome:在地址栏输入
- 开启右上角的 “开发者模式” (Developer mode)。
- 点击 “加载已解压的扩展程序” (Load unpacked)。
- 选择当前目录:
C:\Users\WS\Desktop\浏览器翻译插件。
- 在扩展列表里找到“一键全文翻译”,点击 “详细信息” -> “扩展程序选项”(或直接右键点击浏览器右上角的翻译扩展图标 -> 选择 “选项”)。
- 在选项页面中:
- 运行模式默认保持为 “本地直接调用”。
- 百度翻译 APP ID:输入您在百度翻译开放平台控制台查看的 APP ID(通常为 17 位纯数字,如
2020xxxxxxxxxxxxx)。 - 密钥 Key:已默认填充为
sf8A_dajc3ala6ej63pqh8o3g。
- 点击 “测试翻译连接”,看到提示“测试成功!'Hello world' => '你好世界'”即代表配置成功!
- 点击 “保存设置”。
- 打开任意英文或外文网页(例如 GitHub、维基百科等)。
- 点击右上角扩展图标,即可一键将网页全文翻译为中文,图标显示
译。 - 再次点击扩展图标,网页即刻无损还原为原文!