Infinity Translate 将 Google Chrome 内置的 TranslateKit 翻译组件(从 Chrome 薅出来的 LiteRT/TFLite 本地模型)封装为一个独立的 HTTP 服务。不依赖 Chrome、不调用云端翻译 API,所有推理均在本地(或容器内)完成。
特性
- 36 种语言互译(模型为
en↔X双向组件,非英语对自动走英语 pivot) - 模型按需下载:直接复用 Chrome 的 Omaha 组件更新协议,全程无 Chrome
- 自动语言检测(fastText
lid.176) - 模型常驻内存,支持长句切分与多方向 LRU 缓存
- 一键部署到 Cloudflare Containers,支持启动时自动预下载全部模型
ar bg bn cs da de el es fi fr he hi hr hu id it ja ko lt mr nl pl pt ro ru sk sl sv ta te th tr uk vi zh zh-Hant
| 方法 | 路径 | 说明 |
|---|---|---|
GET |
/health |
健康检查 |
POST |
/api/detectLanguage |
语言检测 |
POST |
/api/translate |
翻译 |
POST |
/api/requestLanguage |
下载语言模型(后台任务) |
GET |
/api/requestLanguage/{task_id} |
查询下载进度 |
GET |
/api/getAvailableLanguages |
已就绪 / 可下载的语言列表 |
curl -X POST http://localhost:8080/api/translate \
-H 'content-type: application/json' \
-d '{"text": "Hello world", "target": "zh"}'{
"translatedText": "你好世界",
"source": "en",
"target": "zh",
"detectedSource": {"language": "en", "confidence": 0.9813}
}source 缺省时自动检测;模型未下载时返回 409,需先调用 requestLanguage。
# 下载中文(en↔zh 双向组件)
curl -X POST http://localhost:8080/api/requestLanguage \
-H 'content-type: application/json' \
-d '{"language": "zh"}'
# 非英语对(如 zh→ja,走 pivot)一次下载两个组件
curl -X POST http://localhost:8080/api/requestLanguage \
-H 'content-type: application/json' \
-d '{"source": "zh", "target": "ja"}'
# 轮询直到 status = done
curl http://localhost:8080/api/requestLanguage/<task_id>设置环境变量 TRANSLATOR_API_KEY 后,除 /health、/docs、/openapi.json 外的所有请求都需要携带请求头:
x-api-key: <your-key>
| 变量 | 说明 |
|---|---|
MODELS_DIR |
模型存储目录(Docker 镜像内默认为 /data/models) |
TRANSLATOR_API_KEY |
API 密钥,留空则不启用鉴权 |
DOWNLOAD_ON_START |
启动时自动下载模型:all/true/1 下载全部,或逗号列表如 zh,ja |
pip install -r requirements.txt
MODELS_DIR=models uvicorn app.main:app --host 127.0.0.1 --port 8080交互式文档:http://localhost:8080/docs
docker build -t infinity-translate .
docker run -p 8080:8080 -v translate-models:/data/models infinity-translate镜像不含翻译模型,运行时通过 /api/requestLanguage 按需下载到挂载卷。
项目自带 Worker 转发层(worker/)与 Wrangler 配置(wrangler.jsonc),容器规格为 standard-2(1 vCPU / 6 GiB / 12 GB)。
cd worker
npm install
npx wrangler deploy --config ../wrangler.jsonc- 所有请求固定路由到单个容器实例,保证运行时下载的模型不串实例
- 默认
DOWNLOAD_ON_START=all,容器启动即预下载全部 36 种语言(首次约需几分钟) - 已通过
onActivityExpired配置为永不休眠,注意 standard-2 全天候运行约 $40/月;如需省钱,删除worker/index.ts中的onActivityExpired覆写即可恢复自动休眠
app/ FastAPI 服务
main.py HTTP 端点
translator.py LiteRT 推理引擎(模型加载、pivot、缓存)
downloader.py Omaha 组件下载器(查询 → crx3 → 校验 → 解压)
detector.py fastText 语言检测
assets/ lid.176.ftz 检测模型
worker/ Cloudflare Worker 转发层
wrangler.jsonc Containers / Durable Objects 配置
Translation models ripped from Google Chrome Translator · Detection by fastText
Made with ❤ by CuzTeam