Skip to main content

Converts a tab-separated dictionary text file into a macOS .dictionary bundle.

Project description

macOS Dictionary Builder

Python script to convert a tabular text file into a macOS .dictionary bundle.

  • Special feature: translations in Spotlight results

Install

pip3 install macos-dictionary-builder

Build your own dictionary

Download your own copy of the Vocabulary Database from dict.cc. Then run this script on the extracted txt file.

Easy-usage script

Choose one, both of these are equivalent:

macos-dictionary-builder de-en.txt
python3 -m macos_dictionary_builder de-en.txt

Python module usage

from macos_dictionary_builder import parser, meta, devkit

# step 1: parse translation entries
with open('sample.txt', 'r') as fp:
    count = parser.makeDictXML(fp, 'data.xml')
    print(count, 'entries')

# step 2: create metadata
plist = meta.makeMetaPlistDict('bundleId', name='...', ...)
meta.writeMetaPlist('meta.plist', plist)

# step 3: create dictionary
devkit.callDevKitScript('Sample.dictionary', xml='data.xml', plist='meta.plist')

or call the individual modules separately:

python3 -m macos_dictionary_builder.parser sample.txt -o data.xml
python3 -m macos_dictionary_builder.meta meta.plist -b uid -n Sample ...
python3 -m macos_dictionary_builder.devkit Sample data.xml meta.plist

About this project

I've been using the pre-compiled dictionary by dict.cc. My workflow: type a word into Spotlight and immediately get a translation for the word. But ever since macOS 10.15 (or so), Spotlight stopped doing that. The Spotlight entry would just show my searched word, but no translation. Till now, I was forced to open the Dictionary app to see the translation.

So, after years of postponing, I finally found time to follow up on this project. Initially, I hoped to rebuild a new dictionary with the old python script by bernie43. However, the script is very old (Python 2) and does not work anymore. I've also seen the new repo by LeChatParle who ported the code to Python 3, but even this repo does not show the translation in Spotlight.

After a few modifications to the old code, I threw away everything and started from scratch. My code is a bit more modular but still restricted to the dict.cc style of formatting (one line per translation). E.g. the beolingus format won't work because each line contains multiple translations and plurals.

Future work: additional parsers for other formats.

Dictionary Development Kit

This project relies on the Dictionary Development Kit by Apple. The bundled version is extracted from Additional Tools for Xcode 12.5 (latest for macOS 10.15). If you want a newer version, download via the link above and place it in:

~/.config/macos_dictionary_builder/Dictionary Development Kit

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

macos_dictionary_builder-0.9.0.tar.gz (169.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

macos_dictionary_builder-0.9.0-py3-none-any.whl (170.8 kB view details)

Uploaded Python 3

File details

Details for the file macos_dictionary_builder-0.9.0.tar.gz.

File metadata

File hashes

Hashes for macos_dictionary_builder-0.9.0.tar.gz
Algorithm Hash digest
SHA256 dbb3f144e8848c5048a6e4dfb136652b18b2613c56aa518a5555cfe5fe4f2cec
MD5 8728d0bb644a7ffc0126fda10b33b0ca
BLAKE2b-256 9b9411aed46aef471c2c606438e46faa98e1ce1394458d4e054785b6ec618674

See more details on using hashes here.

File details

Details for the file macos_dictionary_builder-0.9.0-py3-none-any.whl.

File metadata

File hashes

Hashes for macos_dictionary_builder-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b3e4a80b30623f2e9ba2ce8bfa06b43db113474bbf4c92d78812171e994fb0f0
MD5 1bcc9ea7bd78a5745b83b8a95330d400
BLAKE2b-256 6db2661c1f28c494919149490e19856a2a875f0c66ea83b1e08d5de21d6a3fe9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page