Skip to content

goldendict ex

日期:2024-01-06
更新:2024-09-24

在线词典#

DICT.org#

DICT.org是一个多语言、多词典在线词典平台。

GoldenDict → 编辑 → 词典 → 词典来源 → 词典服务器 → 添加:

已启用 On
名称 `dict.org`
地址 `dict://dict.org`
数据库 `*` # 启用所有的词典
策略 `*`

dictd.service#

以运行Ubuntu Server for ARM 22.04的树莓派4(CM4)为例:

  1. 参考bin.md#dict-ecdict制作dictd使用的.dz等文件
  2. 参考server.md#dictd部署dictd服务

词典 → 词典来源 → 词典服务器 → 添加:

已启用 On
名称 `dictd`
地址 `dict://<YourHost>:2628`
数据库 `*`
策略 `*`

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`
命令行 `cambridge-dictionary\venv\Scripts\python.exe 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

  1. RapidEE → 用户变量 → 右键 → 添加环境变量 → 变量名称 TENCENT_SECRET_ID → 填写你的SecretId
  2. 添加环境变量 → 变量名称 TENCENT_SECRET_KEY → 填写你的SecretKey
deep-translator --translator tencent --source "en" --target "zh" --text "Golden Apple"

有些翻译器,支持检查源语言,然后都需要指明目标语言。但我需要「中英文互译」,有一个可行的方法是:在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的腾讯云翻译」。支持多门外语,文本翻译一项上,每月有500万字符免费额度,重度使用也完全够用。我在字幕组机翻小助手沉浸式翻译Translate Shell里也都使用这个API。

  1. 参考申请翻译API,以及官方介绍去获得API
  2. git clone https://gist.github.com/scillidan/e95773454d79dc047aeed016fb00daef tencenttrans_2zh_zh2en
  3. cd tencenttrans_2zh_zh2en
  4. 参考脚本里的注释:
    1. pip install tencentcloud-sdk-python langid
    2. 需要填写API的SecretIdSecretKey
  5. 程序 → 添加:
类型 纯文本
名称 `tencenttrans_2zh_zh2en`
命令行 `python tencenttrans_2zh_zh2en.py %GDWORD%`

对于未打包成pip包的Python脚本,也因为python.exe在GoldenDict里运行时出现过一些奇怪的问题,所以我后来都使用虚拟环境:

cd tencenttrans_2zh_zh2en
python -m venv venv
venv\Scripts\activate.bat

在「命令行」那一栏,补全文件路径,如:

tencenttrans_2zh_zh2en\venv\Scripts\python.exe tencenttrans_2zh_zh2en\tencenttrans_2zh_zh2en.py "%GDWORD%"`

虽然有不少不足,如:

  • 输出的文本没有段落,因为GoldenDict会删除换行符
  • 未知的Bug,例如在GoldenDict里输出某些语言时,翻译文字前面会显示一串报错

截止文章写成,我已使用了近一年。这之前,我使用的是沙拉查词

分词断句脚本#

gd-mecab(仅gd-ng)#

GoldenDict tools是一套GoldenDict-ng的增强脚本集,主要用于日语学习。它的gd-marisagd-mecab脚本,可以置顶句子、分词、断句。似乎也能用于中文,但并没有实际的「中文分词」的功能,可以用「划词再右键」来代替。

参考issue #18下载gd-tools_windows.zip,解压后运行安装包。出于一个好习惯,当安装文件没有从Github(虽然有时候文件也会报毒)、SourceForge等可信网站提供时,建议上传到VirusTotal,进行Hash检查。虽然这个安装包有几个红色警告,但应该可以忽略,或者在类似于HiBit Uninstaller的「安装监视程序」模式下,进行安装。

程序 → 添加:

类型 Html
名称 `gd-marisa`
命令行 `Ajatt-tools\gd-tools\gd-tools.exe marisa --word %GDWORD% --sentence %GDSEARCH% --path-to-dic 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
go install github.com/neurosnap/sentences/cmd/sentences@latest

或者从Sentences - Releases下载并解压sentences_windows-amd64.tar.gz,重命名sentencessentences.exe

程序 → 添加:

类型 纯文本
名称 `sentences`
命令行 `C:\Users\<User>\AppData\Roaming\pnpm\echo-cli.CMD "%GDWORD%" | sentences.exe`

语法检查脚本#

自托管LanguageTool#

LanguageTool是一个开源的多语言的拼写、语法、风格检查工具。在它的浏览器插件里,可切换服务源,从「云服务」切换到「本地服务」。作为服务应用,Java有很好的兼容性,但效能可能不是特别出色。

参考service.md#languagetool来部署LanguageTool服务。

pyLanguagetool#

我使用了跟以前不同的服务配置,运行pyLanguagetool时遇到了Bug,这里就仅留一些旧笔记作为参考。

需要等宽字体才能对齐「字母」和「波浪线」。

Gramformer#

Gramformer是一个Python库,可以用于检查句子的拼写、标点符号、语法或用词错误。曾经计划支持64个字符(包括空格和标点符号)以上长度的句子。虽然可以使用GPU模式,但是我总觉得有些慢。

仅作参考,gramformer_cli_demo.py

程序 → 添加:

类型 纯文本
名称 `gramformer`
命令行 `Gramformer\venv\Scripts\python Gramformer\gramformer_cli_demo.py %GDWORD%`

其他脚本#

添加到「程序」里即可,并不会报错:

ety-python#

ety-python是一个Python工具,能够打印词源的各历史时期的树状信息图,数据来自Etymological Wordnet项目,大部分信息是从Wiktionary挖掘来。

pip install ety
ety -r -t apple

将输出:

apple (English)
└── appel (Middle English (1100-1500))
    └── æppel (Old English (ca. 450-1100))

在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`
命令行 `ety-python\venv\Scripts\python.exe ety-python\ety\__main__.py -r -t "%GDWORD%"`

另外推荐两个相关的Web应用:etytreejsetymology

其他#

另一种联动OCR取词#

也是使用GoldenDictOCR。在它「OCR取词」模式下,按Ctrl+右键单击可识别鼠标附近字符,按Ctrl+反引号可进行框选。

  1. 安装OCR工具Capture2Text
  2. 默认OCR语言为英语,可参考Installing Additional OCR Languages添加语言
  3. 进入GoldenDictOCR\IncludeAHK\
  4. 编辑GdOcrTool.ahk。补全Capture2Text.exe的完整路径
  5. Ctrl+Alt+O开关一次「OCR取词」
  6. 打开配置文件示例Capture2Text.ini,复制从[BubbleCapture][Hotkey]的内容
  7. 编辑C:\Users\<user>\AppData\Roaming\Capture2Text\Capture2Text.ini,在文件末尾,粘贴复制的内容
  8. 编辑以下两处,用于设置3个快捷键,来切换到对应的识别语言,如:
[Hotkey]
Lang1=Shift+Alt+1
Lang2=Shift+Alt+2
Lang3=Shift+Alt+3
...
[OCR]
QuickAccessLang1=English
QuickAccessLang2=...
QuickAccessLang3=...

用来识别印刷体的单个英文词时,识别率还可以,稳定性略差。