[开发者自荐] BergaRust - 基于 Firefox 离线翻译引擎的轻量级翻译服务,兼容沉浸式翻译等插件

大家好,我是安来 Aalivexy

最近用 Rust 写了个小项目 BergaRust,想和大家分享一下。

项目地址

Docker 镜像Package translation-service · GitHub (国内加速见下文)

起因

之前看到 MTranServer 这个项目,用了 Firefox 的离线翻译模型,还兼容沉浸式翻译 API ,感觉很不错,但项目没开源。找了一圈发现 Mozilla 官方有个 C++ 的 translation-service,但很久没更新了,API 也不兼容。我对 C++ 不熟,干脆就用 Rust 基于 Mozilla 的 Bergamot 翻译引擎重写了一个。

BergaRust 是什么?

一个轻量级的、自托管的多语言翻译服务。核心是 Rust + Bergamot 翻译引擎 (Firefox 同款)。

主要特点

  • :rocket: 高性能 & 低资源占用:Rust 编写,内存占用相对较低 (自带英中模型的镜像启动后单 worker 大约 300MB+ 内存)。
  • :brain: 离线翻译:基于 Firefox 的 Bergamot 引擎和模型,完全在本地运行,保护隐私。
  • :electric_plug: 强大的兼容性:支持多种翻译插件 API:
    • 沉浸式翻译 (Immersive Translate)
    • 简约翻译 (Kiss Translator)
    • 划词翻译 (HCFY)
  • :magnifying_glass_tilted_left: 内置语言检测:可自动识别源语言(不过只推荐长文本使用,短文本准确率还是问题)
  • :locked_with_key: API 密钥保护:可选,保护你的服务不被滥用。
  • :spouting_whale: Docker 部署:推荐方式,简单快捷。

技术栈

  • Web 框架: Axum
  • 翻译引擎: Bergamot Translator
  • 翻译模型: Firefox Translations Models
  • 语言检测: Whichlang

快速部署 (推荐国内镜像)

如果你只需要 英译中,可以直接用下面这个预置了模型的镜像 (镜像约 70MB):

docker run -d --name translation-service \
  -p 3000:3000 \
  docker.cnb.cool/aalivexy/translation-service:latest

Docker Compose 部署 (带健康检查和可选 API Key)

services:
  translation-service:
    # 国内用户推荐用 cnb.cool 加速镜像
    image: docker.cnb.cool/aalivexy/translation-service:latest
    # 或者用官方 GitHub 镜像 (需要自己挂载模型)
    # image: ghcr.io/aalivexy/translation-service:main
    # 如果使用 ghcr.io 镜像,需要取消下面 volumes 的注释并准备好模型文件
    # volumes:
    #  - ./models:/app/models
    ports:
      - "3000:3000" # 左边的 3000 可以改成你想要的外部端口
    environment:
      API_KEY: "" # 设置你的 API 密钥,留空则不启用密码保护
      # NUM_WORKERS: "1" # 可以调整翻译工作线程数,默认为 1
      # RUST_LOG: "info" # 日志级别
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "/bin/sh", "-c", "echo -e 'GET /health HTTP/1.1\r\nHost: localhost:3000\r\n\r\n' | timeout 5 bash -c 'cat > /dev/tcp/localhost/3000' && echo 'Health check passed'"]
      interval: 30s
      timeout: 10s
      retries: 3

保存为 compose.yaml,然后 docker compose up -d 启动。

如何使用?

部署后,你就可以在沉浸式翻译、简约翻译、划词翻译等插件的设置里,选择自定义 API ,填入你的服务地址 (例如 http://your-server-ip:3000) 和对应的 API 路径 (/imme, /kiss, /hcfy),如果设置了 API_KEY 环境变量,记得在插件设置或请求中带上。

添加其他语言模型

可以从 Firefox Translations Models 下载模型文件,放到挂载的 models 目录下,服务会自动加载。具体目录结构请参考 GitHub README 。

为什么分享?

如果你像我一样:

  • 注重翻译隐私,不想把数据发送给第三方。
  • 需要一个可以自托管、资源占用合理的翻译方案。
  • 希望兼容常用的浏览器翻译插件,获得无缝体验。

那么 BergaRust 可能是一个不错的选择。

项目基于 AGPL-3.0 许可证开源。

欢迎大家试用、反馈、或者去 GitHub 点个 Star 支持一下!

不行呀,片子标题翻不了。

浏览器控制台有报错么?是api返回的错误,还是翻译内容出错了?

非常感谢作者,写了一个本软件的pot-app的翻译插件pot-app-translate-plugin-bergarust

2 个赞

本地小模型有这个质量算可以的了,看网页够用,正经翻译还是得上大模型