cd /news/machine-learning/show-hn-gemmatrans-on-device-transla… · home topics machine-learning article
[ARTICLE · art-41903] src=github.com ↗ pub= topic=machine-learning verified=true sentiment=↑ positive

Show HN: GemmaTrans – On-device translation for macOS, built with MLX

Developer Rand01ph released GemmaTrans, an on-device translation app for macOS built with MLX-Swift, supporting Google Gemma 4 and Tencent Hy-MT2 models fully offline. The app provides a local HTTP API, menu bar integration, and global hotkeys for text selection translation, with automatic language detection and model download from HuggingFace or ModelScope.

read2 min views1 publishedJun 27, 2026
Show HN: GemmaTrans – On-device translation for macOS, built with MLX
Image: source

macOS 本地大模型划词翻译。基于 MLX-Swift(Apple Silicon 原生加速),支持多个本地翻译模型(Google Gemma 4 / 腾讯混元 Hy-MT2),完全离线运行:

本地 HTTP API127.0.0.1:8765

):极简/translate

接口 + 兼容/v1/chat/completions

请求格式,PopClip、Bob、Raycast 等工具直连menu bar app:全局热键划词翻译,浮窗流式显示译文智能双向:自动检测语言——中文 → 英文,其他语言 → 中文(目标语言可配置)多模型可选:内置 Gemma 4(E4B/E2B,4-bit)与腾讯混元** Hy-MT2**(1.8B 翻译专用,4/8-bit);设置页可下载、切换、删除模型,支持后台下载(边用边下)性能可视:翻译后显示每秒 token 速率(按模型分别记录),随时观察各模型快慢模型下载:首次启动按内存自动选 Gemma 档拉取(E4B≈4.9GB / E2B≈3.6GB),双源(HuggingFace / 国内 ModelScope)+ 断点续传

git clone https://github.com/Rand01ph/gemma-trans && cd gemma-trans
xcodebuild -scheme gemma-trans-cli -destination 'platform=macOS' -skipMacroValidation -derivedDataPath .build-cli build
.build-cli/Build/Products/Debug/gemma-trans-cli serve

国内网络可用镜像:启动前 export HF_ENDPOINT=https://hf-mirror.com

gemma-trans-cli spike

跑一次最小验证。

curl -s http://127.0.0.1:8765/health

curl -s -X POST http://127.0.0.1:8765/translate -H 'Content-Type: application/json' \
  -d '{"text": "The quick brown fox jumps over the lazy dog."}'

curl -s -N -X POST http://127.0.0.1:8765/translate -H 'Content-Type: application/json' \
  -d '{"text": "今天天气真好", "stream": true}'

curl -s -X POST http://127.0.0.1:8765/v1/chat/completions -H 'Content-Type: application/json' \
  -d '{"messages": [{"role": "user", "content": "Hello world"}]}'
  • 保持 gemma-trans-cli serve

(或 app)运行;用 app 时在菜单栏确认"本地 API"开启(默认已开) - 在 Finder 中双击 popclip/GemmaTrans.popclipext

目录,PopClip 会提示安装 - 任意 app 选中文字 → 点击 PopClip 弹条中的 GemmaTrans 图标 → 顶部显示译文

PopClip 也可以用任何接受 /v1/chat/completions

的扩展指向 http://127.0.0.1:8765/v1

(API key 随意填)。

字段 类型 说明
text
string 必填,待翻译文本(超长截断;上限随机器自动调优,16GB 机器默认 1500 字符,可在设置中手动覆盖)
target
string? 目标语言 BCP-47 码(如 enzh-Hans );缺省走智能双向
stream
bool? true 时返回 SSE 流

响应:{"translation": "...", "detected": "en", "target": "zh-Hans", "truncated": false}

SSE 流格式:若干 data: {"delta": "..."}

→ 一条 data: {"translation": 全文, ...}

data: [DONE]

兼容 /v1/chat/completions

请求格式(含 stream: true

SSE),方便接受该格式的工具直连本地引擎。取最后一条 user

消息按智能双向翻译;model

字段与 system 消息被忽略——这是翻译器,不是通用聊天,且全程本地,不连任何外部服务。

{"status": "ready"}

(200)或 {"status": ""}

(503)。

错误码:400(空文本/无效 JSON)、503(模型未加载 / 引擎忙超时 30s)、500(引擎错误,error

字段含详情,常见于系统内存压力过高时 GPU 分配失败)。

引擎与服务日志:~/Library/Logs/GemmaTrans/gemmatrans.log

(GUI app 无 stderr,排障看这里)。

API 可在菜单栏/设置中即时开关,无需重启。关闭后划词翻译不受影响——划词是进程内调用,不走端口。端口被其他程序占用时菜单会显示"API 失败",划词照常可用;若占用者是另一个 GemmaTrans 实例(如 CLI serve),app 会拒绝启动以避免加载两份模型。

brew install xcodegen   # 首次
cd App && xcodegen generate
xcodebuild -project GemmaTrans.xcodeproj -scheme GemmaTrans -configuration Debug -derivedDataPath build build
open build/Build/Products/Debug/GemmaTrans.app
  • 启动后弹出主窗口(含模型下载进度),同时 menu bar 出现 💬 图标;模型加载完成(约 15s)后图标变实心,并在 127.0.0.1:8765

提供 API(app 与 CLI serve 二者跑一个即可,同时跑会端口冲突) 三种译法(均无需任何系统权限):- 主窗口里粘贴/输入文字 → 点「翻译」流式显示译文

  • 任意 app 选中文字 → 按 ⌥⌘T

一键翻译选中内容,无需先复制;也可从「服务」菜单点「Translate with GemmaTrans」- 这是 macOS「服务」快捷键,默认 ⌥⌘T

。macOS 不一定会自动启用声明的默认值——若按了没反应,去 系统设置 › 键盘 › 键盘快捷键 › 服务 › 文本,勾选并确认 Translate with GemmaTrans 的快捷键(一次性,之后长期生效;也可在这里改键)

  • 这是 macOS「服务」快捷键,默认
  • 复制文字后按 ⌥D

→ 翻译剪贴板内容(鼠标旁浮窗流式显示,Esc 关闭,可一键复制)

  • 菜单"设置…"可改目标语言、API 端口和剪贴板热键
  • 设置"性能"区默认按机器内存自动配置 KV cache 与输入上限(加载时还会按当前可用内存降档),也可手动覆盖
GemmaTransKit     核心库:MLX-Swift 引擎封装、语言检测(NaturalLanguage)、提示词、按内存自动调优
GemmaTransServer  HTTP 层:FlyingFox,/translate + /v1/chat/completions + SSE
gemma-trans-cli   命令行:spike / serve
── more in #machine-learning 4 stories · sorted by recency
── more on @rand01ph 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/show-hn-gemmatrans-o…] indexed:0 read:2min 2026-06-27 ·