本文介绍了在 macOS 上将 MDX 词典文件转换并导入为本地词典的方法。主要步骤包括:使用 Python 虚拟环境安装 pyglossary 工具,将其转换为 AppleDict 格式;处理紧凑型 MDX 文件中的特殊格式;通过 mdict-utils 工具解包并还原字典条目;修改样式和配置文件;使用 Dictionary Development Kit 编译安装词典。整个流程适用于需要在 macOS 系统中使用自定义 MDX 词典的用户。

1. 建立并激活 Python 虚拟环境

1
2
python -m venv pyenv
source pyenv/bin/activate

2. 安装 pyglossary

1
pip install lxml beautifulsoup4 html5lib pyglossary

3. 使用 pyglossary 转换 mdx 文件为MacOS词典格式

1
pyglossary ~/Documents/漢語大詞典2018/漢語大詞典.mdx ~/Documents/漢語大詞典 --read-format=OctopusMdict --write-format=AppleDict

这步会在~/Documents/漢語大詞典目录下生成名为漢語大詞典.xml的文件(还有Makefile、css等文件)。

4. 紧凑型 MDX 文件的处理

如果从 MDX 转过来的 XML文件包含很多反引号,类似

`1``2⺬13``12qí13``14ㄑㄧˊ15`\undefined`10111神祇。亦專指地神。

这种就是MDict特有的紧凑型html格式(Compat Html),得特殊处理:

(1)格式化 pyglossary 生成的xml文件

1
2
perl -pi -e 's/\`\`/\`\n\`/g' ~/Documents/漢語大詞典/漢語大詞典.xml
perl -pi -e 's/\`(\d+)\`/\n\`$1\`/g' $1 ~/Documents/漢語大詞典/漢語大詞典.xml

(2)使用 mdict-utils 解包 mdx 文件

1
2
pip install mdict-utils
mdict -x ~/Documents/漢語大詞典2018/漢語大詞典.mdx -d . --convert-chtml

这样当前路径会有一个名为漢語大詞典.mdx.stylesheet的文件,也就是mdict的记号文件,格式为:

第一行: 记号的名称(只能用数字,必须大于0,最大不超过255)

第二行: 开始字符串(可以为空)

第三行: 结束字符串(可以为空)

(3)修改漢語大詞典.mdx.stylesheet,保证替换后所有html tag标签是完全闭合的

(4)去掉漢語大詞典.mdx.stylesheet文件中的\r符号

1
sed -i '' 's/\r$//' 漢語大詞典.mdx.stylesheet

(5)转换漢語大詞典.mdx.stylesheet文件

1
perl -pe 's/^(\d+)$/XXX$1|/g' 漢語大詞典.mdx.stylesheet |perl -pe 's/^/|/g'|perl -pe 's/\n//g;g'|perl -pe 's/\|XXX/\n/g'|perl -pe 's/\|\|/|/g' > 漢語大詞典_edited.mdx.stylesheet

这一步的目的,是把mdict记号文件合并成一行,以|作为分隔符

(6)还原正确的字典条目,脚本如下:

1
2
3
4
5
6
7
8
#!/bin/bash
while read line; do
echo $n
n=$(echo "$line" | awk -F'|' '{print $1}'|perl -pe 's/[\r|\n]//g')
a=$(echo "$line" | awk -F'|' '{print $2}'|perl -pe 's/\//\\\//g'|perl -pe 's/[\r|\n]//g')
b=$(echo "$line" | awk -F'|' '{print $3}'|perl -pe 's/\//\\\//g'|perl -pe 's/[\r|\n]//g')
perl -pi -e"s/\`$n\`(.*)$/$1$a\$1$b/g" 漢語大詞典.xml # 词典xml路径
done < 漢語大詞典_edited.mdx.stylesheet # 第5步生成的漢語大詞典_edited.mdx.stylesheet

5. 安装Dictionary Development Kit

先安装Command Line Tools for Xcode:

1
xcode-select --install

developer.apple.com下载Additional Tools for Xcode,然后将Dictionary Development Kit复制到Documents目录下

6. 修改第三步生成的Makefile文件,指定Dictionary Development Kit的路径

1
DICT_BUILD_TOOL_DIR	=	"~/Documents/Dictionary Development Kit"

7. 复制样式文件及词典名称的修改

复制词典原来附随的css样式,粘贴到漢語大詞典.css文件中。在漢語大詞典.plist文件更改的CFBundleDisplayName值,这将会词典app显示的名字。

8. 安装

1
make && make install

词典将会安装到/Library/Dictionaries目录

9. 重启词典app,在词典的设置里,启用该词典