Polyglot for NVDA

Polyglot 是一个面向 NVDA 的全局翻译插件,重点在于快速、多引擎、可扩展。它可以翻译选中文本、剪贴板文本和 NVDA 最近一次朗读的内容,也可以拦截 NVDA 朗读内容并执行自动翻译。

插件的核心是动态引擎架构。每个翻译引擎都声明自己的能力和配置项,设置界面在运行时根据这些配置动态生成,因此核心逻辑保持精简,同时也方便继续接入新的翻译服务。

功能概览

安装

推荐直接通过 NVDA 插件商店安装。也可以手动安装:

  1. Releases 页面 下载最新的 .nvda-addon 安装包。
  2. 打开下载好的文件。
  3. 在 NVDA 中确认安装。
  4. 按提示重启 NVDA。

快速开始

  1. 打开 NVDA 菜单 -> 选项 -> 设置 -> Polyglot
  2. 选择一个翻译引擎,并确认该引擎已启用。
  3. 如果该引擎需要凭据,先完成配置。
  4. 设置源语言和目标语言。
  5. 按需启用自动复制结果和智能语音过滤。
  6. NVDA+Alt+Z 进入命令层,再按下面的功能键执行操作;在命令层中按 H 可显示命令层帮助。

命令层

NVDA+Alt+Z 进入命令层。进入后会有一声短促提示音。在命令层中按 H 可显示命令层帮助。大多数命令执行后会自动退出命令层;切换语言和切换引擎等命令会保持在命令层中,方便连续调整。切换引擎只会在已启用的引擎之间循环。

按键 动作
T 翻译当前选中的文本。
Shift+T 反向翻译当前选中的文本。
B 翻译剪贴板文本。
Shift+B 反向翻译剪贴板文本。
L 翻译 NVDA 最后一次朗读的文本。
Shift+L 反向翻译 NVDA 最后一次朗读的文本。
S 切换到下一个源语言。
Shift+S 切换到上一个源语言。
G 切换到下一个目标语言。
Shift+G 切换到上一个目标语言。
E 切换到下一个已启用的翻译引擎。
Shift+E 切换到上一个已启用的翻译引擎。
W 交换源语言和目标语言。
A 播报当前引擎和语言对。
C 复制最近一次翻译结果。
V 开启或关闭自动翻译。
I 打开交互式翻译窗口。
O 打开 Polyglot 设置面板。
X 清空翻译缓存。
H 打开命令层帮助。

交互式翻译窗口

交互式翻译窗口适合长文本、反复调整参数或需要边改边试的场景。

中文 NVDA 的本地英文单词释义

当 NVDA 界面语言为中文(包括简体和繁体中文)时,Polyglot 会使用离线英汉词典扩展查看光标所在的单词命令:

  1. 按一次 numpad5(台式机键盘布局) 读出查看光标所在的单词。
  2. 连按两次逐字朗读该单词。
  3. 连按三次,如果本地词典命中完整单词,则朗读中文释义。

调用 NVDA speech.spellTextInfo 的插件也会获得相同行为。 如果整行只有一个英文单词,连按三次读出当前行命令也可获得释义。 查询支持一层常见的首末句子标点、安全的拼写变体,以及常见的复数、时态、分词、比较级和最高级形式。精确词条始终优先;如果一个拼写可能对应多个释义,Polyglot 会朗读最多三个候选词条及其首义。两至三个字符的全大写单词如果只命中小写词条,会朗读可能的小写释义,并提示它也可能是缩写。外形合法但未收录的英文单词会明确提示未收录。单字符、多词行和不支持的文本仍保留 NVDA 原有的字符解释。 查询完全在本地完成,不会把单词发送到任何翻译服务。

使用“翻译选中文本”“翻译剪贴板”和“翻译最后朗读内容”时,英译中(源语言为英语或自动检测、目标语言为简体或繁体中文)以及输入为英文单词的中译英请求,命中完整词条后会直接返回本地释义。其他内容仍使用当前翻译引擎。

翻译命令和文本查看分别设有本地词典开关,默认开启;关闭后,对应功能恢复原有行为。

当前词典规模:

设置说明

通用设置

各引擎通用设置

大多数引擎都继承一组公共配置:

如果某个引擎会返回检测到的源语言,还会额外显示:

自动翻译行为

LLM 与 Polyglot 扩展设置

部分引擎会额外暴露高级选项:

Chrome AI 离线翻译

Polyglot 可以使用 Chrome 内置的 Translator API 进行离线翻译。翻译由本机独立的 Chrome 实例完成,文本不会发送到第三方翻译服务。

使用条件

使用方式

在 Polyglot 设置中选择 Chrome AI (Offline),并设置源语言和目标语言。Chrome AI 需要明确指定源语言;此引擎不提供“自动检测”,这样 Polyglot 可以在启动 Chrome 前检查所需模型。

首次翻译时,如果所需模型尚未安装,Polyglot 会弹出询问对话框。选择“是”会使用 Polyglot 模型管理器下载并安装模型;如果你的网络访问 Chrome 模型下载服务较慢、被阻断或不稳定,建议选择此项。选择“否”会让 Chrome 下载模型;选择“取消”会取消本次翻译。模型准备好后,翻译会自动继续。

网络与模型

翻译在本机完成。模型可以由 Polyglot 模型管理器安装,也可以由 Chrome 下载。如果你的网络访问 Chrome 模型下载服务较慢或不可用,可以在询问对话框中选择“是”,也可以从 NVDA 的“工具”菜单打开 Polyglot ChromeAI 模型管理器,提前安装或移除需要的离线模型。

隐私与数据

Polyglot 会为 Chrome AI 使用独立的 Chrome 数据目录,避免影响日常 Chrome 配置。模型、缓存和运行数据会保留,以减少重复下载。

默认位置为:

%LOCALAPPDATA%\Polyglot\ChromeAI

如果系统中没有 LOCALAPPDATA 环境变量,则会回退到 NVDA 配置目录下的 polyglot_chrome_ai 目录。

NVDA 退出时,Polyglot 会关闭由插件启动的 Chrome 实例。

限制

引擎一览

当前仓库中包含以下翻译引擎:

引擎 所需凭据 说明
Baidu Translate 百度 app ID 和 secret 标准厂商 API 接入。
Caiyun 彩云 token 标准厂商 API 接入。
Chrome AI (Offline) 使用 Chrome 内置 Translator API 和本机模型;需要明确指定源语言。
DeepL DeepL API 密钥 标准厂商 API 接入。
Google Translate (key-free) 可选启用镜像接口。
Google Translate (Polyglot) 可配置 API 密钥和端点 URL 代码内带默认接口值,实际可用性取决于服务状态。
Lingva Translate 使用公开 Lingva 接口,不报告检测语言。
Microsoft Translator (key-free) 会自动获取临时访问令牌。
Niutrans 小牛翻译 API 密钥 标准厂商 API 接入。
Ollama 1 Ollama 地址、模型名、可选密钥 第一个独立 Ollama 配置槽。
Ollama 2 Ollama 地址、模型名、可选密钥 第二个独立 Ollama 配置槽。
OpenRouter OpenRouter API 密钥 支持模型预设和可编辑提示词模板。
Tencent Translate 腾讯 secret ID 和 secret key 标准厂商 API 接入。
Tencent Translate (Polyglot) NVDACN 用户名和密码 使用 Polyglot/NVDACN 路由的腾讯翻译。
VIVO Translate NVDACN 用户名和密码 支持语言较少,不支持源语言自动检测。
Volcengine (Polyglot) NVDACN 用户名和密码 使用 Polyglot/NVDACN 路由的火山翻译。
Yandex Translate 使用公开接口风格,不报告检测语言。

参与贡献

欢迎贡献代码、文档、翻译、测试和新的引擎接入。

如果你要新增一个翻译引擎:

  1. addon/globalPlugins/polyglot/services/engines/ 下创建模块。
  2. 实现 TranslationEngine,或者对 HTTP 引擎继承 BaseHttpEngine
  3. 如果引擎需要设置项,在 getConfigSpec() 中返回配置描述。
  4. 使用 views/factory.py 已支持的控件类型:choicetextpasswordcheckboxspinctrl
  5. 确认该引擎能正确出现在动态设置面板中,并在启用后参与命令层切换和交互式翻译窗口。

许可证

版权所有 (C) 2025-2026 cary-rowen。

本项目使用 GNU General Public License 第 3 版或任何后续版本(GPL-3.0-or-later)授权。 许可证正文随插件包提供,也可查看仓库中的 COPYING.txt