IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    从.mdx(Mdict)制作macOS原生词典

    ern发表于 2022-03-17 01:54:40
    love 0

    好久以前写过一篇文章,也是制作自己的macOS字典。作为原生应用,确实在全屏取词方面是有很大优势的。但当时是从Stardict转换的,现在活下来并持续有生命力的还是Mdict类型。所以花了点时间研究,下面是成果。

    安装环境

    • 说明:
      为操作方便,统一建立了~/Developer/ConvertDict/路径,把需要的软件统一放到该路径下
      cd ~/Developer/ConvertDict/
    1. Homebrew安装Python 3
      这在网上有大量教程,就不赘述了。我用的是比较新的Python 3.9.7. 安装Homebrew过程中应该完整安装了Command Line Tools for Xcode。
    2. 安装python依赖包
      pip3 install lxml beautifulsoup4 html5lib
      
      brew install lzo
      export C_INCLUDE_PATH=/opt/homebrew/Cellar/lzo/2.10/include/lzo:/opt/homebrew/Cellar/lzo/2.10/include/
      export LIBRARY_PATH=/opt/homebrew/lib
      pip3 install python-lzo
      

      上面安装python-lzo的时候需要分步,否则编译时会提示丢失头文件lzo/lzo1x.h。
      指定的环境变量路径是按照Apple Silicon机型环境,如果是Intel芯片,则将/opt/homebrew/改为/usr/local/

    3. 下载安装Dictionary Development Kit

      git clone https://github.com/SebastianSzturo/Dictionary-Development-Kit
      

      虽然多年前的版本,但使用上是没有问题的。

    4. 下载关键工具pyglossary
      git clone https://github.com/ilius/pyglossary

    转换

    cd Mdict字典下载文件夹
    python3 ~/Developer/ConvertDict/pyglossary/main.py --write-format=AppleDict "朗文当代高级英语辞典(英英·英汉双解 第6版).mdx" "朗文当代高级英语辞典(英英·英汉双解 第6版)"
    

    最后一个参数是生成文件的路径名,为了方便,你也可以把相应文件都改成英文命名,避免带上那么多引号。下面是可以修改实际显示名称的。

    编译安装

    进入上面生成的文件夹,修改Makefile,将DICT_BUILD_TOOL_DIR改为正确的Dictionary-Development-Kit路径("/Users/用户名/Developer/ConvertDict/Dictionary-Development-Kit",注意不能用相对路径名,必须是完整的)。

    cd "朗文当代高级英语辞典(英英·英汉双解 第6版)"
    make
    

    生成的字典在objects文件夹里

    • 修改配套格式
      用原来mdict文件夹中.css文件的覆盖掉DefaultStyle.css
    • 设置在原生词典中显示的名字
      Xcode(或者其他plist编辑器)打开info.plist,可以修改其中的几个字段
      Bundle name对应的是界面上的字典名缩写,一般建议简略一些,比如“朗文当代高级6ed”
      Bundle display name对应的是设置界面里的名称,一般建议可以放全称,比如“朗文当代高级英语辞典(英英·英汉双解 第6版)”

    make install
    

    字典安装路径是~/Library/Dictionaries,进去打开可以看到结构和上面编译以后的几乎一样,所以你也可以只在这里的.plist文件里修改显示的名称。

    安装效果

    补充说明

    1. 字典里面可能包含语音,我转换出来已经是mp3(也可能是mdict文件自带的格式就是mp3),所以不需要额外调整,已经可以点击朗读。如果你的字典里不是mp3或wav格式,请参考pyglossary官方文档或这里一篇教程批量转换
    2. 如果CSS文件里定制了字体等,可能也需要根据这一篇教程调整,我没遇到相关问题,直接把mdict下的CSS覆盖过去就完美了。

    综上,其实找到一个好的字典源可以省掉很多事情。我自己是在某宝买的,就不多说了。

    • 其他参考材料:
      Mdict转Mac词典小记
      Mdict词典文件转换为macOS原生词典


沪ICP备19023445号-2号
友情链接