meatballovsky23 downloadsA minimal and rapid translation assistant for seamless reading in Obsidian.
身经百战的文献伴读助手。在 Obsidian 阅读视图原文下方就地对照,绝不碰你的一字一句。
看似 Simple,实则深厚,比同类工具跑得都快。
Naiyi Translate adds translations beneath the original text in Reading View without changing your Markdown files. A single frog button toggles the translation layer. Translations load as you scroll; switching notes turns the layer off. Supports Google, Microsoft Edge, and OpenAI-compatible cloud or local models.
Requires Obsidian 1.8.7 or later. While community-directory review is pending, install with BRAT by adding Meatballovsky/obsidian-naiyi-translator, then enable Naiyi Translate under Community plugins.
For manual installation, download main.js, manifest.json, and styles.css from the latest release. Copy them into <vault>/.obsidian/plugins/naiyi-translate/, reload the app, and enable the plugin under Community plugins.
The frog has no secondary menu or selection-translation action. Notes remain unchanged on disk. Online engines send text to their providers; a locally hosted model keeps translation requests on your own machine.
本项目的底层思路与设计灵感源自 Chrome 上优秀的沉浸式翻译插件 read-frog (陪读蛙)。
PDF、学术论文、抓取网页与 DOCX 经过清洗后,常以 Markdown 存入知识库——Markdown 本身承载着高频、严肃的长篇阅读需求。 阅读外文时,我们希望直接对照译文,同时保留源文件,避免为了伴读而改写笔记或管理额外的翻译副本。奈译屋围绕这个需求,提供轻量的阅读视图翻译,并同时支持免费在线接口与本地大模型。
得益于 Obsidian 基于 Electron 的架构特性,我们决定轻量移植并彻底重塑一个桌面端的轻量化「陪读蛙」。我们剥离了所有非必要的重型外语学习功能,只死磕最核心的阅读心流:在阅读视图(Reading View)中实现原位即时对照渲染,且绝不碰源文件的一字一句。 同时原生集成 OpenAI 兼容协议,无论云端 API 还是本地 Ollama / vLLM 离线模型,皆可即插即用。
浏览器里的蛙能伴读,那在沉淀人类严肃知识的 Obsidian 知识库里呢?既然一脉同源,便有了**「奈译屋 (Naiyi Translate)」**。
中文语境下的“奈译”,表面是一座静谧严谨、学贯中西的书斋;实则是对“看似简单(Naive)、实则深谙世理、谈笑风生”的致敬。我们褪去了过于跳脱的年轻气(too young),保留了学者泰斗的硬核底色——知识涉猎多、响应速度快、阅历深厚且处变不惊。 这个插件无需花哨包装,只有一个朴素的工程追求:在全世界任何一台电脑上,它比别的西方同类工具跑得都快。
.md 文件译文只用于伴读,无需写入笔记或加入版本控制。
文献阅读的核心是心流,任何打断(切窗口、复制粘贴、等待卡顿)都是灾难。
requestUrl 发出,不受阅读视图渲染进程的 CORS 与私有网络预检限制。127.0.0.1 即可直接通讯,无需将端口暴露至局域网,使用本机模型端点时,待译内容留在本机;选择 Google、Microsoft 或云端 AI 时,待译内容会发送至对应服务。默认“文字底纹”样式使用浅色模式的微灰/奶白底纹、深色模式的柔和灰底纹,底纹随文字换行,不再使用整块卡片。译文沿用对应原文块的字体、字号、字重、行距、颜色和对齐方式;Markdown 输出中的加粗、链接等仍正常渲染。悬浮球使用 assets 中去掉外圈文字的灰度青蛙看书 SVG。以上仅在阅读视图显示,编辑与实时预览模式暂不显示译文。
| 引擎 | 特性与适用场景 | 工程实现细节 |
|---|---|---|
| 免费、免配置、即开即用(默认) | 所用免费端点会重新切分句子,无法可靠保持批量段落 1:1 对齐,采用受控并发逐段流水线请求。 | |
| Microsoft Edge | 免费、免配置、支持批量请求 | 支持安全批量翻译,以字符串数组发送请求,并严格校验返回数组长度。 |
| 自定义 AI | 本地 Ollama / OMLX / OpenAI 兼容端点 | 兼容本地与云端模型(如 Qwen2.5 / DeepSeek 等)。默认发送关闭思考的参数(是否生效取决于服务端),可单独配置 AI 请求总超时,以适应本地模型加载。 |
调用免费翻译端点可能遭遇 Rate Limit。奈译屋继承并重构了自适应退避熔断协议:
HTTP 429 立即冻结整个请求管线(基础 5s 起步,指数翻倍,上限 5 分钟),杜绝滚雪球式全线报错;Retry-After 时严格听从服务端指示;解冻窗口期仅派出单个探测请求,成功后再恢复并发 capacity;maxRetries)解耦计算,限流不挤占常规重试预算;Meatballovsky/obsidian-naiyi-translator 并确认。main.js、manifest.json、styles.css。<YourVault>/.obsidian/plugins/naiyi-translate/。Ctrl/Cmd + P):Toggle translation layer:开关当前笔记的译文层Clear injected translations:一键清除当前及所有后台标签页注入的译文Cycle translation engine:快速轮换翻译引擎全局作用域清除:清除译文(Clear)会同步清理由插件创建的所有 DOM 节点;插件 Unload/Disable 时同样执行无残留自毁。
重复开关与切换笔记:关闭翻译层或切换笔记会结束当前会话并移除译文,不留下空占位节点。再次开启会按视口重新加载;已有缓存可直接复用。
本地源码编译安装(适用于贡献者与本地调试):
npm ci
npm test
npm run build
# 将 main.js、manifest.json、styles.css 复制到
# <YourVault>/.obsidian/plugins/naiyi-translate/