goldendict ex
词典脚本和服务#
DICT.org#
DICT.org是一个多语言、多词典在线词典平台。
GoldenDict → 编辑 → 词典 → 词典来源 → 词典服务器 → 添加:
dictd.service#
参考dictd.md部署自用dictd
服务,笔记中使用的是运行Ubuntu Server for ARM 22.04的树莓派4(CM4)。dictd
需要.dz
等格式文件,推荐两种方法:
- 使用PyGlossary转换
StarDict (.ifo)
格式到DICT.org file format (.index)
格式。StarDict的.ifo
文件里最好不要有中文。 - 参考dict-ecdict.md来制作,这里使用到了dictzip或者dictzip for Windows 10 (x64)。
词典 → 词典来源 → 词典服务器 → 添加:
Cambridge-Dictionary#
Once you search for the word and gets the meaning, it saves it into a local database from which it retrieves them if you search for the same word again in the future instead of fetching it from the server. This makes it quick, run even when there’s no internet connection (assuming that your local database is of substantial size) and prevents making too many queries to the server.
“一旦您搜索该单词并获得其含义,它就会将其保存到本地数据库中,如果您将来再次搜索同一单词,而不是从服务器获取它,它就会从该数据库中检索它们。这使得它快速运行,即使没有互联网连接(假设您的本地数据库规模很大),并防止向服务器进行太多查询。”
git clone --depth=1 https://github.com/spignelon/cambridge-dictionary
cd cambridge-dictionary
python -m venv venv
venv\Scripts\activate.bat
pip install requests bs4
词典 → 词典来源 → 程序 → 添加:
已启用 On
类型 纯文本
名称 `Cambridge-Dictionary`
命令行 `<path_to>\cambridge-dictionary\venv\Scripts\python.exe <path_to>\cambridge-dictionary\cambridge.py "%GDWORD%"`
翻译脚本和服务#
deep-translator#
deep-translator是一个支持了多引擎的翻译脚本工具。如何申请或创建API请看各翻译器的官网介绍。我一般使用腾讯云机翻API,写文时,需要从源码安装这个工具,才能使用这个翻译器:
git clone --depth=1 https://github.com/nidhaloff/deep-translator
cd deep-translator
pip install -e .
设置系统环境变量,可以使用环境变量编辑器Rapid Environment Editor:
- RapidEE → 用户变量 → 右键 → 添加环境变量 → 变量名称
TENCENT_SECRET_ID
→ 填写你的SecretId
- 添加环境变量 → 变量名称
TENCENT_SECRET_KEY
→ 填写你的SecretKey
有些翻译器,支持检查源语言
,然后都需要指明目标语言
。但我需要「中英文互译」,有一个可行的方法是:在GoldenDict中添加两条脚本设置,其中一条的输入语言为en
,目标语言为zh
。
词典 → 词典来源 → 程序 → 添加:
类型 纯文本
名称 `deep-translator en2zh`
命令行 `deep-translator --translator tencent --source "en" --target "zh" --text "%GDWORD%"`
另一条则将两者互换:
名称 `deep-translator zh2en`
命令行 `deep-translator --translator tencent --target "zh" --source "en" --text "%GDWORD%"`
TencentTrans_22.py#
这是我常用的一个脚本,主要用于将多语言(主要是英语)翻译到中文,中文翻译到英文。脚本由tencent-translate-for-goldendict修改而来,即「用于Goldendict的腾讯云翻译」,后者的翻译API支持多门外语,文本翻译一项上,每月有500万字符免费额度,重度使用也完全够用。我在字幕机翻、沉浸式翻译、Translate Shell里也都使用过这个API。
mkdir tencenttrans_2zh_zh2en
cd tencenttrans_2zh_zh2en
python -m venv venv
venv\Scripts\activate.bat
下载tencenttrans_2zh_zh2en.py并编辑,填写你的翻译API的SecretId
和SecretKey
。
GoldenDict → 字典 → 程序 → 添加:
类型 纯文本
名称 `tencenttrans_2zh_zh2en`
命令行 `<path_to>\tencenttrans_2zh_zh2en\venv\Scripts\python.exe <path_to>\tencenttrans_2zh_zh2en\tencenttrans_2zh_zh2en.py "%GDWORD%"`
虽然有不少不足,如:
- 输出的文本没有段落,因为GoldenDict会删除换行符
- 未知的Bug,例如在GoldenDict里输出某些语言时,翻译文字前面会显示一串报错
截止文章写成,我已使用了近一年。这之前,我使用的是沙拉查词。
LibreTranslate#
LibreTranslate是一个开源、有离线功能的机器翻译API。它被设计用于本地托管,允许用户在不依赖其他外部服务的情况下进行翻译,安装简单,高效经济。可作为一种备用。
可参考libretranslate.md部署到家用服务器,并参考libretrans.md来使用。它在Windows版的GoldenDict里有一些字符问题,但能在Linux版本里正常使用。
分词、断句脚本#
gd-mecab(仅gd-ng)#
GoldenDict tools是一套GoldenDict-ng的增强脚本集,主要用于日语学习。它的gd-marisa、gd-mecab脚本,可以置顶句子、分词、断句。似乎也能用于中文,但并没有实际的「中文分词」的功能,可以用「划词再右键」来代替。
参考issue #18下载gd-tools_windows.zip
,解压后运行安装包。出于一个好习惯,当安装文件(非便携的)没有从Github(虽然有时候文件也会报毒)、SourceForge等可信网站提供时,建议上传到VirusTotal,进行Hash检查。虽然这个安装包有几个红色警告,但应该(或许)可以忽略,或者在类似于HiBit Uninstaller的「安装监视程序」模式下,进行安装。
程序 → 添加:
类型 Html
名称 `gd-marisa`
命令行 `<path_to>\Ajatt-tools\gd-tools\gd-tools.exe marisa --word %GDWORD% --sentence %GDSEARCH% --path-to-dic <path_to>\Ajatt-tools\gd-tools\marisa_words.dic`
Sentences#
This command line utility will convert a blob of text into a list of sentences.
“此命令行实用程序将文本块转换为句子列表。”
pnpm add -g echo-cli
# Test on go1.20.1
go get github.com/neurosnap/sentences
go install github.com/neurosnap/sentences/cmd/sentences@latest
程序 → 添加:
类型 纯文本
名称 `Sentences`
命令行 `C:\Users\User\AppData\Roaming\pnpm\echo-cli.CMD "%GDWORD%" | sentences.exe`
语法检查脚本#
LanguageTool#
LanguageTool是一个开源的多语言的拼写、语法、风格检查工具。在它的浏览器插件里,可切换服务源,从「云服务」切换到「本地服务」。作为服务应用,Java有很好的兼容性,但效能可能不是特别出色。
参考languagetool.md来部署LanguageTool
服务。
pyLanguagetool#
还会有一些不在浏览器里编辑或者划句的情况。我尝试了在GoldenDict里对句子做语法检查。但这种方法不是很直观,而且在Windows的GoldenDict里去使用一些命令行工具,可能会遇到字符相关问题。
pyLanguagetool是一个Python库和命令行工具,使用LanguageTool的JSON API。
uv venv .pyLanguagetool
.pyLanguagetool\Scripts\activate.bat
uv pip install --upgrade setuptools beautifulsoup4 pyLanguagetool
echo "This are a exampl" | pylanguagetool --lang en-US
echo "This are a exampl" | pylanguagetool --api-url http://<your_host>:8040/v2/ --input-type html --no-color --lang en-US
目前,我使用的是一个check.bat
脚本:
@echo off
C:\Users\User\Usr\Script\.pyLanguagetool\Scripts\pylanguagetool.exe --api-url http://<your_host>:8040/v2/ --input-type html --lang en-US -c
pause
和一个开机启动的AutoHotkey脚本user.ahk
:
当我复制一段文本后按下Ctrl+Shift+Alt+c
, 就会运行语法检查。
其他脚本#
添加到「程序」里即可:
ety-python#
ety-python是一个Python工具,能够打印词源的各历史时期的树状信息图,数据来自Etymological Wordnet项目,大部分信息是从Wiktionary挖掘来。
将输出:
在Windows 10的GoldenDict里使用ety-python
时,我遇到了一些问题(见issue #1678, blog)。虽然未解决,但是勉强能够使用。修改部分见31a8be9。
git clone --depth=1 https://github.com/scillidan/ety-python
cd ety-python
python -m venv venv
venv\Scripts\activate.bat
pip install -e .
程序 → 添加:
类型 纯文本
名称 `ety-python`
命令行 `<path_to>\ety-python\venv\Scripts\python.exe <path_to>\ety-python\ety\__main__.py -r -t "%GDWORD%"`
Mark两个相关的Web应用:etytree、jsetymology。
其他#
另一种联动OCR取词#
也是使用GoldenDictOCR。在它「OCR取词」模式下,按Ctrl+右键单击
可识别鼠标附近字符,按Ctrl+反引号
可进行框选。
- 安装OCR工具Capture2Text
- 默认OCR语言为英语,可参考Installing Additional OCR Languages添加语言
- 进入
GoldenDictOCR\IncludeAHK\
- 编辑
GdOcrTool.ahk
。补全Capture2Text.exe
的完整路径 - 按
Ctrl+Alt+O
开关一次「OCR取词」 - 打开配置文件示例
Capture2Text.ini
,复制从[BubbleCapture]
到[Hotkey]
的内容 - 编辑
C:\Users\User\AppData\Roaming\Capture2Text\Capture2Text.ini
,在文件末尾,粘贴复制的内容 - 编辑以下两处,用于设置3个快捷键,来切换到对应的识别语言,如:
[Hotkey]
Lang1=Shift+Alt+1
Lang2=Shift+Alt+2
Lang3=Shift+Alt+3
...
[OCR]
QuickAccessLang1=English
QuickAccessLang2=...
QuickAccessLang3=...
用来识别印刷体的单个英文词时,识别率还可以,稳定性略差。