准备将 stardict 格式的 EDICT 转换成 dictd 可用的格式以便在 emacs 里用
https://github.com/skywind3000/ECDICT/releases/download/1.0.28/ecdict-stardict-28.zip
但是运行转换命令时报如下错:
dictconv -o stardict-ecdict-2.4.2.index stardict-ecdict-2.4.2.ifo
段错误 (核心已转储)
请问如何解决
参考资料1:找到的一篇比较清楚的写如何转换的文章 dictd | SunNing's Blog
参考资料2:GitHub - tuberry/dict-ecdict: A port of Ultimate ECDICT database for Dictd. 这是AUR上的一个包,所以理论上是有人转换成功过了
以下基本上就是对你提到的 GitHub - tuberry/dict-ecdict: A port of Ultimate ECDICT database for Dictd. 的解读
- 下载词典csv源文件
GitHub - skywind3000/ECDICT: Free English to Chinese Dictionary Database
最新版数据太大,我已经把数据库压缩成 stardict.7z 了,外面默认的 ecdict.csv 算是一个基础版本(76 万词条)。
git clone --depth=1 --single-branch -b master [email protected]:skywind3000/ECDICT.git
cd ./ECDICT
7z x ./stardict.7z # 解压缩 stardict.7z文件, 产生一个 stardict.csv 文件
- 用
dict-ecdict
仓库提供的的工具将 EDICT csv字典 转化成 Jargon File 格式
cd ..
git clone --depth=1 --single-branch -b master [email protected]:tuberry/dict-ecdict.git
cd ./ECDICT
../dict-ecdict/cli/gen-ecdict.py --help # 帮助信息
../dict-ecdict/cli/gen-ecdict.py -i ./stardict.csv -o stardict.txt --no-mini # 转换
- 将
Jargon File
格式文件转化成 DICT
文件, 以及添加字典
参考 https://www.wikiwand.com/en/DICT#Dict_file_format
# 最终转换
dictfmt --utf8 --allchars -s "ecdict" -j ecdict < ./stardict.txt
dictzip ecdict.dict # 压缩字典文件,得到 ecdict.dict.dz 文件
# 移动字典文件到 dictd 目录
sudo mv ecdict.dict.dz ecdict.index /usr/share/dictd/
在 /etc/dict/dictd.conf
最后一行添加我们的词典
database ecdict {
data /usr/share/dictd/ecdict.dict.dz
index /usr/share/dictd/ecdict.index
}
重启 dictd
服务
sudo systemctl restart dictd.service
- 测试
dict -D # 列出所有词典
dict -d ecdict emacs
#From ecdict [ecdict]:
#
# EMACS
#
# [T] EMACS,即 Editor MACroS(编辑器宏)的缩写,最初由 Richard Stallman(理查德·马修·斯托曼)于
# 1975年在 MIT协同Guy Steele共同完成,被公认为是最受专业程序员喜爱的代码编辑器之一,另外一个vim。
补充:
如果要更改结果的格式, 需要修改 https://github.com/tuberry/dict-ecdict/blob/master/cli/gen-ecdict.py 文件
2 个赞
谢谢,这篇我也读过了,在你的贴子后面说用上了简化版用的就是这个
因为对词典格式不熟悉,本来想直接用 dictconv 转换下就能用来着