Skip to content

goldendict

GoldenDict是一款开源的桌面端词典检索应用,跨平台,支持多种词典格式。它有十分丰富的可配置项,包括字典组,拼写检查、单词发音、语音合成、在线翻译等等。GoldenDict-ng是基于前者重写的新一代GoldenDict,修复了一些长期累积的问题,目前仍然处于积极开发中,更多地说明见GoldenDict-ng文档

二者操作相近,配置文件几乎可以共用(但不推荐)。GoldenDict-ng采用了更新的技术,而GoldenDict向前兼容了一些像Windows XP之类的老旧系统。这里就主要以配置GoldenDict为例。软件版本为GoldenDict 1.5.1GoldenDict-ng-v24.05.05

配置文件的位置#

同于大多数的软件的安装版,GoldenDict的配置文件也位于C:\Users\<user>\AppData\Roaming<软件名>。如果要保存GoldenDict的配置,可备份此处的config文件。

如果使用Scoop安装,配置文件默认位于C:\Users\<user>\scoop\apps\goldendict\current\portable。我个人的配置文件和其他文件都自行分开存放,再使用环境变量和Link Shell Extension等完成软件配置。所以我没有去处理某些相关的问题,如issue

文章分为「基础篇」和「番外篇」。「番外篇」更多地涉及到「程序」这一功能,有更多的实验性和Bug,如文本翻译等。也并不一定与GoldenDict有很强的相关,如语法检查等。

窗口布局#

主窗口的布局可在菜单栏的「查看」中设置。我个人只保留了「查询面板」。

窗口的大小可以拖动窗口边框调整。对于调整弹窗窗口,参考该issue才操作。

显示风格#

编辑 → 首选项 → 显示风格 → Modern。

对于高级用户,可以在搜索后按F12调出开发者工具,使用搜索功能直接在GoldenDict主窗口,查找CSS元素,编辑它的属性并实时预览效果。调整完成后,在GoldenDict配置文件目录下新建的CSS文件article-style.css,将修改编辑进去即可。例如:

/* 使用本地字体,以Sarasa Term SC Nerd字体为例 */
@font-face {
  font-family: "Sarasa Term SC Nerd";
  src:
    local('Sarasa Term SC Nerd') format('truetype');
  font-weight: normal;
  font-style: normal;
}

body {
  font-family: "Sarasa Term SC Nerd", NotoSans;
  font-zise: 9pt;
}

.gdarticle {
  border-radius: 0;
  background: #fffff8;
}

.gdactivearticle .gddictname {
  font-size: .8em;
  background: #fffff8;
}

.gddictname {
  font-size: .8em;
  border-radius: 0;
}

span.gddicticon {
  display: none;
}

.dsl_m1 {
  padding-left: 0;
}

.programs_plaintext, .programs_html {
  margin-top: 1.8em;
}

.programs_play {
  margin-top: 1.8em;
  margin-left: 0;
}

.voiceengines_play {
  margin-top: 1.85em;
  margin-left: 0;
}

重启GoldenDict。

注意,字体不会覆盖有内置样式的词典(主要是MDX格式),或者ZIM档案。

黑暗主题#

  1. git clone https://github.com/yozhic/GoldenDict-Full-Dark-Theme
  2. 参考Installation段落进行安装
  3. 编辑 → 首选项 → 附加样式 → Dark
  4. 同样,可以修改样式,参考上文,编辑配置文件目录下styles\Dark\article-style.css
@font-face {
  font-family: "Sarasa Term SC Nerd";
  src:
    local('Sarasa Term SC Nerd') format('truetype');
  font-weight: normal;
  font-style: normal;
}

body {
  font-family: "Sarasa Term SC Nerd", NotoSans;
  font-size: 9pt;
}

.gdarticle {
  margin-top: 0;
  margin-bottom: 0.2em;
}

.gddictname {
  font-size: .8em;
  border-radius: 0;
  border: none;
}

.gdarticle .gddictname {
  border-radius: 0;
}

.gdactivearticle .gddictname {
  font-size: .8em;
  margin-bottom: 0;
  border: none;
}

span.gddicticon {
  display: none;
}

.dsl_m1 {
  padding-left: 0;
}

.programs_plaintext, .programs_html {
  margin-top: 1.8em;
}

.programs_play, .voiceengines_play {
  margin-top: 1.8em;
  margin-left: 0;
}

添加词典#

GoldenDict支持StarDict、Babylon、Lingvo、Dictd等多种格式。需注意,.dict格式和StarDict词典应用都是开源。而.mdx属于专有软件MDict的词典格式,更多信息见fileformat

我目前使用的(附StarDict文件):

  • FreeDict & WikDictshare_freedict
    社区驱动的双语字典,支持超过45种语言。人工编纂的项目公开在Github上,其他的字典则是通过工具导入,它提供eng-zho就实际上来自于WikDict。我额外下载了所有的*-eng字典,由英语作中继,来查询陌生语种。
  • CC-CEDICTshare_cc-cedict
    英汉词典,且能进行部分汉英查询。适合快速查询。不含详细释义、语法、例句。
  • GCIDE(GNU版国际协作英语词典) (share_gcide
    英英定义词典,提供详细释义、词源信息、文学例句。适合了解词义概念,尤其是专业词汇等。可能缺少现代、当代的词汇、释义、日常用法,或者已经过时、弃用。
  • Online Etymology Dictionaryshare_etymonline
    英语词源词典。
  • WordNetshare_wordnet
    非传统形式词典,实际上是英语词汇数据库、词汇网络。核心为同义词集,也含“反义词”等关系集。适合用于扩展词汇、理解。
  • 汉语大词典share_hanyudacidian
    “大型的、历史性的汉语语文辞典”,详细见《前言》

不推荐的:

主要理由是我浏览了几个帖子:汉语大词典从没经过转码的文本(自动转码谬种流传)【结项】汉语大词典2.0源数据等几个帖子。具体理由也还有别的,举一个来说,wordmeaning这两个词,来自字典格式转换工具pyglossary定义的数据库格式字典文件,里面的数据表的关键字。对于这本字典,如果要进行繁简转换,对于meaning(释义)部分,需要排除其中的引用、专用词句部分,对于word(词条)部分,可能需要有一个替换表,等等。

繁简字相关的问题应考虑使用GoldenDict内置的繁简转写工具。

  1. 词典 → 词典来源 → 转写 → 中文转换 → 勾选简体转繁体繁体转简体
  2. 词典 → 群组 → 将转写工具放在对应字典的前面。例如,《汉语大词典》包含了繁体(原文)内容,可将简体转繁体放在字典前:

其他的:

编辑 → 词典 → 词典来源 → 文件 → 添加 → 字典所在文件夹 → 递归搜索 (On) → 应用

添加词典群组#

  1. 词典 → 群组 → 添加群组 → <group> → 将词典拖入群组 → 应用
  2. GoldenDict的主界面 → 查找于 → <group>

你可以在群组内拖动字典来调整顺序,如:

拼写词库
单词音频库
英汉词典
英英词典
英汉汉英词典
...

添加拼写词库#

通常称为「Hunspell Dictionary」,包含了所需的.aff.dic文件。GoldenDict已内置了部分拼写词库,这里勾选所需即可:

编辑 → 词典 → 词典来源 → 构词法规则库

如果你添加了较新版本的词库,例如English Spell Checker Dictionaries上的「en_US」、LibreOffice Hunspell dictionaries里的en\en_US.*

构词法规则库 → 变更 → .aff.dic文件所在目录 → 勾选库中条目 → 应用

添加单词音频库#

pronunciations是一个英语语音资料仓库,但在v1分支里,它似乎已经清理了旧分支里的约2GB的音频文件,而使用generate.sh脚本来创建。这里假设你有了单词的音频文件:

词典 → 词典来源 → 音频文件目录 → 添加 → pronunciations/所在 → 应用

这里,如果使用的是便携版GoldenDict,可以将所有音频文件如:

a.mp3
a'.mp3
A'asia.mp3
a's.mp3
a-.mp3
...
B.mp3
b'hoy.mp3
b's.mp3
B-.mp3
B-axes.mp3
...

压缩到pronunciations-en.zips,压缩包里不要有文件夹路径,然后作为一本词典导入即可。参考issue

对于Forvo的多语言资料,可使用qBittorrent一类的工具,从该帖下载,参考帖子内容:

  1. .opus格式的体积更小,音质同.mp3也十分相近,所以下载时只勾选Forvo_pronunciations/export/opus。约24GB大小,下载完成后不需要解压
  2. 某个成员提到了GoldenDict的「音频文件目录」功能:不方便也不可靠,建议使用.dsl文件。类似目录文件,指出音频文件的位置
  3. MEGA分享链接下载新版本的.dsl文件,下载后解压ForvoDSL-20220513.7z到同名文件夹
  4. ForvoDSL-20220513里的.dsl文件,需要同Forvo_pronunciations/export/opus里的.zip,放入同一个文件夹,例如Forvo_pron/。这里,也可以使用mklink创建系统链接完成,如mklink <path_to>\Forvo_pron\ForvoEnglish.dsl.files.zip <path_to>\en.zip
  5. 修改.zip文件的文件名,一一对应。例如将en.zip重命名为ForvoEnglish.dsl.files.zip,对应ForvoEnglish.dsl
  6. 词典 → 词典来源 → 文件 → 添加 → Forvo_pron/所在 → 应用

因为这些压缩档案包含了大量的小文件,移动、复制、解压上都非常慢。所以这里参考ForvoDSL-20220513/00README.txt的内容,使用Windows批处理脚本mklink_forvo_pron.bat(或者Bash脚本mklink_forvo_pron.sh)进行批量操作。运行前,需编辑脚本4-8行,参考我的目录设置,填写你的实际的目录位置。

在Windows上运行时:

命令提示符 → <path_to>\mklink_forvo_pron.batEnter

最后:

词典 → 词典来源 → 文件 → 添加 → Forvo_pron/所在 → 应用

添加语音引擎#

在Windows 10上:

  1. 设置 → 时间和语言 → 语音 → 管理语音 → 添加语音
  2. 词典 → 词典来源 → 语音合成 → 预览 → 可用语音引擎 → Microsoft David Desktop - English (United States) → 添加 → 应用

效果较差。推荐使用edge-tts,见番外篇

添加离线维基#

Kiwix是一个跨平台的离线的维基阅读器,也可自部署服务端。可阅读的内容不限Wiki,也适用于如StackExchange(Stack Overflow)、Project Gutenberg等等,来提供高速、稳定的档案访问服务。它支持高度压缩的.zim格式,该格式可包含元数据、HTML、图像等资源。配置步骤:

  1. ZIM Ebook Library选择档案,例如「wikipedia (English)」,当鼠标移到档案上时,或者点击档案在线阅读时,在浏览的左下角或者地址栏会提示档案全名。「all maxi」这个型号包含了除音频、视频等大型媒体文件外的所有内容。关于各型号的详细说明,见issue1issue2
  2. 点击Download - xx GB。对于大型档案,选择Torrent file,之后在BT下载器中打开该文件并下载
  3. GoldenDict → 编辑 → 词典 → 词典来源 → 文件 → 添加 → .zim所在目录
  4. 等待GoldenDict创建索引

对于大型档案,无论是搜索条目,还是「全文搜索」,其速度称得上「很快」。例如,如果检索「古腾堡计划」的电子书库中提到某个词的段落:

GoldenDict → 搜索 → 全文搜索 → <word> → 搜索 → 单击条目

不过我目前使用的是Kiwix Server,在浏览器里预览ZIM档案,见kiwix-server.md

设置鼠标取词#

GoldenDictOCR是一个AutoHotKey脚本,在它的「鼠标选择取词」模式下,可通过「双击选词、划词」来查词。需要配合GoldenDict的默认查词快捷键Ctrl+c+c来使用。

git clone https://github.com/VimWei/GoldenDictOCR
cd GoldenDictOCR

编辑IncludeAHK/GdOcrTool.ahk,填写GoldenDict.exe所在的正确位置:

Global GoldenDictFileName := "<path_to>\GoldenDict.exe"

运行GoldenDictOCR.ahk后,按Alt+i即可开关「鼠标选择取词」。

如果需要修改键位,例如:

  1. 编辑 → 首选项 → 热键 → 使用下列热键翻译剪切板中的单词 → Alt+z
  2. 编辑GoldenDict.ahk,修改两处:
    • 118行附近,此处的Send ^{c 2},即Ctrl+c+c,改为Send !z,即Alt+z
    • 37行附近,此处的!i::,即Alt+i,改为^!g::,即Ctrl+Alt+g

这个脚本也能和Text GrabYomiNinja等工具很好的配合。

一些实用键位#

所有的快捷键在:

帮助 → GoldenDict帮助 → Shortcuts

常用的有:

  • Ctrl+l 聚焦到输入框
  • Alt+Left/Right 前个/后个查询记录