Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EN2ZH 中英互译助手 — Edge 浏览器插件 + 私有翻译代理

一个 Manifest V3 插件,配套一个自建翻译中转代理。扩展端不含任何真实 API 密钥,密钥只保存在自己的服务器上。

功能

  • 网页悬浮入口:可选“自动显示”或“点击工具栏后显示”;可拖动并按域名记忆位置。悬浮标不自动翻译,点击展开面板后才读取选区,点击「翻译」后才请求服务。
  • 侧边栏工作台:支持长文本翻译、复制、整页双语翻译、OCR 与翻译历史。
  • 整页双语翻译:正文按批翻译,以原文 + 译文形式插入,可一键还原。
  • 图片 OCR 翻译:上传图片或右键网页图片,识别后翻译文字。
  • 外观设置:浅色、深色、跟随系统三种 Apple 风格毛玻璃主题。
  • 桌面端(Tauri):主窗口完整工作台 + 始终置顶的快捷悬浮窗;复制文字后按 Alt+Shift+T 预填,仍需点击「翻译」才请求服务。快捷键、主题和代理配置均可本地修改。

架构

Edge 扩展(无真实 API 密钥,只有代理地址 + 访问令牌)
  ├─ 网页悬浮入口 / 侧边栏工作台
  └─ HTTPS
       ▼
https://kkpg.duckdns.org
       ▼
Caddy ── 127.0.0.1:8080 ── FastAPI 翻译代理
  ├─ 访问令牌校验
  ├─ Redis 缓存与限流
  └─ 火山方舟 doubao-seed-translation

文件说明

文件 作用
manifest.json MV3 清单;自动加载无副作用的悬浮入口,不会自动翻译页面
background.js Service worker:转发翻译请求、按需注入整页翻译脚本
floating.js 网页内悬浮入口:拖动、选区预填、快捷翻译、主题和显示方式设置
sidepanel.html / sidepanel.js 侧边栏完整工作台
content.js 整页双语翻译脚本,只会在用户点击「翻译整页」时按需注入
content-ocr.js 网页图片 OCR 遮罩
content-utils.js 可共享的纯文本处理工具函数
desktop-main.html / src/main.ts Tauri 桌面主窗口工作台
float.html / src/float.ts 可拖动、始终置顶的桌面快捷悬浮窗
src-tauri/src/main.rs Tauri 原生命令、全局快捷键、托盘、剪贴板和代理请求
server/main.py FastAPI 翻译代理(密钥、缓存、限流与批量翻译)

加载与使用

  1. 打开 edge://extensions,开启开发人员模式。
  2. 选择“加载解压缩的扩展”,选中本文件夹。
  3. 默认“手动显示”:点击浏览器工具栏扩展图标,当前标签页会显示悬浮入口并打开侧边栏。
  4. 悬浮入口设置中可切换“自动显示”;不会自动读取、提取或翻译网页文本。
  5. 选中文字后点击悬浮标,选区会预填入面板;点击「翻译」才发送请求。

桌面端开发与安装

桌面端不随系统启动。关闭主窗口会退出应用;悬浮窗只会在托盘点击或快捷键触发后出现。

  1. 安装 Rust 工具链和 Windows C++ Build Tools:
    winget install Rustlang.Rustup
    完成后关闭并重新打开终端,确认:
    rustc --version
    cargo --version
    Windows 11 通常已自带 WebView2 Runtime;其他系统请先安装 WebView2 Evergreen Runtime。
  2. 安装前端依赖:
    npm install
  3. 本地调试桌面端:
    npm run tauri:dev
  4. 打包本地安装程序:
    npm run tauri:build
    安装包会生成在 src-tauri/target/release/bundle/

桌面快捷键默认 Alt+Shift+T。它只在快捷键按下时读取一次系统剪贴板,预填悬浮窗,不会持续监听剪贴板或自动发送翻译请求。

后端部署

  1. 上传服务端文件到 VPS:
    scp server\main.py server\requirements.txt server\deploy-vps.sh <别名>:/opt/translate-proxy/
  2. 部署 Redis、venv 和 systemd:
    ssh <别名> "bash /opt/translate-proxy/deploy-vps.sh"
  3. 配置 Caddy 与 DuckDNS HTTPS:
    ssh <别名> "bash /opt/translate-proxy/setup-caddy.sh <你的域名>.duckdns.org <DuckDNS令牌>"

排障

  • 后端健康检查:https://kkpg.duckdns.org/healthz
  • 代理日志:ssh <别名> "journalctl -u translate-proxy -n 80 --no-pager"
  • 前端测试:npm test
  • 桌面前端构建:npm run build
  • Rust/Tauri 编译检查:cargo check --manifest-path src-tauri/Cargo.toml
  • 服务端测试:ssh <别名> "cd /opt/translate-proxy && ./venv/bin/python -m pytest test_main.py -v"

安全边界

  • 真实 API Key 仅存在服务器 .env
  • 悬浮入口不会监听键盘输入、不会持续读取剪贴板、不会在用户点击翻译前向服务器发送网页文字。
  • 桌面端只在用户按下全局快捷键时读取一次剪贴板;预填文本不会自动上传或翻译。
  • 个人分发扩展仍会暴露代理访问令牌;公开分发前应改为每人独立令牌。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages