有人转过词典格式么

准备将 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. 的解读

  1. 下载词典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 文件
  1. 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 # 转换

  1. 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
  1. 测试
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 文件

1 个赞

Stardict 用这个就挺好:

谢谢,这篇我也读过了,在你的贴子后面说用上了简化版用的就是这个 :slightly_smiling_face:

因为对词典格式不熟悉,本来想直接用 dictconv 转换下就能用来着

谢谢,我学习下如何用