Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Icelandic-Nordic Dictionary Builder

Compiles the ISLEX dataset (Icelandic ↔ Danish / Norwegian Bokmål / Norwegian Nynorsk / Swedish / Faroese / Finnish) into local dictionary bundles, so lookup works system-wide.

It builds two forms from the same generated XML:

  • macOS.dictionary plugins for the native Dictionary app and the system-wide "Look Up" feature.
  • Linux & Windows — a StarDict build for GoldenDict-ng, whose Scan Popup gives the same select-a-word-and-look-it-up workflow. See docs/GOLDENDICT.md.

v1.0.0 — Linux and Windows support via StarDict/GoldenDict-ng: all 14 editions, from the same XML as the macOS bundles, with every BÍN-indexed inflected form intact. That path needs nothing but Python 3 — no Dictionary Development Kit and none of the DTD-fetch flakiness the make install route hits — so it is markedly faster and more reliable. The version scheme moves off the ISLEX data version (v2026.02) to semantic versioning now that the repo ships two platforms and the version describes the build rather than the data; the underlying ISLEX release is unchanged. The project also dropped its -mac suffix, which stopped being accurate with this release; GitHub redirects the old URLs.

Important License Context

This project builds from the ISLEX 2026-02 release, distributed under CC BY-SA 4.0 (Attribution, ShareAlike) by Stofnun Árna Magnússonar í íslenskum fræðum via CLARIN Iceland. That means:

  • Redistribution — including compiled .dictionary bundles — is allowed, provided you keep attribution and license any redistributed derivative under the same CC BY-SA 4.0 terms.
  • Commercial use is allowed (CC BY-SA has no NonCommercial clause).
  • Always keep attribution — see CREDITS.md for exactly who to credit.

This is a change from earlier versions of this project, which built from the 2023-12 release (CC BY-NC-ND 4.0 — no redistribution, non-commercial only).

The Icelandic-headword bundles additionally embed morphology derived from BÍN, also CC BY-SA 4.0, which requires this credit line be reproduced verbatim wherever the data travels:

Beygingarlýsing íslensks nútímamáls. Stofnun Árna Magnússonar í íslenskum fræðum. Höfundur og ritstjóri Kristín Bjarnadóttir.

Both licenses are CC BY-SA 4.0, so there is no conflict — but both sources must be credited, not just ISLEX.

Because ShareAlike propagates to adaptations, the compiled .dictionary bundles and generated dictionary XML this project produces and publishes are themselves licensed under CC BY-SA 4.0 — this is stated explicitly as this repository's own license grant in LICENSE, not just described as something the upstream license "allows." The build tooling itself (scripts, Makefile, CSS, plist templates) is separately licensed under MIT — see LICENSE for the full split.

Read LICENSE for the full summary and links.

Just want the dictionaries? Download them

You don't need to build anything yourself. Compiled bundles for all 14 editions are on the Releases page — download the .dictionary.zip for the language pair(s) you want, unzip, and drop the resulting NAME.dictionary folder into ~/Library/Dictionaries/.

On Linux or Windows? Grab IcelandicNordic-GoldenDict-<version>.zip from the same page instead — all 14 editions as StarDict, for GoldenDict-ng. See docs/GOLDENDICT.md.

What gets built

ISLEX itself is Icelandic-headword only (Icelandic → 6 target languages, no reverse index in the source data). This project builds 14 bundles: one Icelandic-headword and one reverse target-language-headword dictionary for each of the 6 target languages, plus 2 combined "all Nordic languages at once" editions.

Language Icelandic → Language Language → Icelandic
Danish IcelandicDanish DanishIcelandic
Norwegian Bokmål IcelandicNorwegianBokmål NorwegianBokmålIcelandic
Norwegian Nynorsk IcelandicNorwegianNynorsk NorwegianNynorskIcelandic
Swedish IcelandicSwedish SwedishIcelandic
Faroese IcelandicFaroese FaroeseIcelandic
Finnish IcelandicFinnish FinnishIcelandic
All 6 combined IcelandicNordic NordicIcelandic

IcelandicNordic keys entries by Icelandic headword and groups the translations from all 6 target languages together under one entry (e.g. looking up "hestur" shows Danish/Norwegian/Swedish/Faroese/Finnish side by side, plus its BÍN declension table). NordicIcelandic merges the reverse index across all 6 target languages into one lookup — e.g. "hus" shows every Icelandic word it could mean, each tagged with which source language(s) contributed it ([Danish, Norwegian Bokmål, Swedish]). Because it merges six languages' worth of written forms, NordicIcelandic is the largest bundle by far (~400K entries, ~320MB compiled) — expect it to take noticeably longer to compile than the others.

The reverse (Language → Icelandic) bundles are built by inverting the Icelandic-sourced data: every writtenForm in the target language becomes a lookup entry pointing back to the Icelandic lemma(s) that translate to it. Since ISLEX wasn't authored in that direction, coverage/granularity there is necessarily coarser than the forward direction — this is documented and not a limitation of the build script.

Every Icelandic-headword (is2x) entry that's a noun, verb, or adjective is additionally enriched with a full BÍN inflection table (declensions for nouns/adjectives, principal parts for verbs), and every inflected form is indexed — so looking up e.g. "hestinum" resolves straight to "hestur". This reuses the same islenska/BÍN approach as the companion icelandic-dictionary project. Reverse-direction (x2is) entries don't get paradigm tables, since the headword there is a Danish/Swedish/etc. word, not Icelandic.

Project Structure

  • scripts/parse_islex.py: Parses the ISLEX LMF-XML into a flat structure (lemma, part of speech, gender, equivalents per language, idioms, examples).
  • scripts/bin_morphology.py: BÍN-powered inflection table renderer (ported from icelandic-dictionary) — verb principal parts, noun declensions, adjective declensions.
  • scripts/build_dict.py: Generates Apple Dictionary XML + plist for one or all (language, direction) combinations; enriches Icelandic-headword entries with BÍN paradigms unless --no-morphology is passed.
  • scripts/install_dictionary.sh: One-command build + install for new users.
  • scripts/build_stardict.py: Apple XML → StarDict, for GoldenDict on Linux/Windows.
  • scripts/verify_stardict.py: Independent reader that checks a built StarDict set (sort order, offsets, UTF-8, inflected-form lookup).
  • scripts/dictzip.py: Random-access gzip for the StarDict body.
  • scripts/package_goldendict.sh: One-command GoldenDict release bundle for all 14 editions.
  • data/ISLEX_2026-02.xml: Source data you download (gitignored).
  • data/islex_parsed.json: Cached parse output (gitignored, regenerate any time by deleting it).
  • data/bin_paradigms_cache.json: Cached BÍN lookups keyed by lemma+POS (gitignored) — avoids re-querying BÍN for the same Icelandic word across multiple target-language builds.
  • src/shared/Nordic.css: Shared stylesheet used by every bundle.
  • src/shared/GoldenDictArticle.css: The same, for the GoldenDict build.
  • docs/GOLDENDICT.md: Linux/Windows install guide.
  • src/generated/: Build output — per-bundle XML + plist (gitignored).
  • src/objects/: Compiled .dictionary bundles (gitignored).
  • Makefile: Builds/installs every bundle listed in src/generated/bundles.txt.

Prerequisites

  1. macOS with Xcode Additional Tools installed.
  2. DictionaryDevelopmentKit available at: /Applications/XcodeAdditionalTools/Utilities/DictionaryDevelopmentKit
  3. Python 3 with the islenska package (for BÍN morphology):
    python3 -m venv .venv
    source .venv/bin/activate
    pip install islenska
    Not required if you build with --no-morphology.

Important: Remove Spaces From The Xcode Tools Folder Name

sudo mv "/Applications/Additional Tools for Xcode" "/Applications/XcodeAdditionalTools"

Getting the source data

  1. Download ISLEX_2026-02.zip from CLARIN Iceland: https://repository.clarin.is/repository/xmlui/handle/20.500.12537/376
  2. Unzip it so that data/ISLEX_2026-02.xml exists in this repo. (This directory is gitignored — the file stays local to your machine.)

Build

Build everything (all 6 per-language bundles + the 2 combined editions, 14 total):

python3 scripts/build_dict.py --all

Or build a single pair, e.g. just Icelandic→Danish:

python3 scripts/build_dict.py --lang dan --direction is2x

Or just the combined edition:

python3 scripts/build_dict.py --lang all --direction is2x   # IcelandicNordic
python3 scripts/build_dict.py --lang all --direction x2is   # NordicIcelandic

--direction is2x = Icelandic headword; --direction x2is = target-language headword.

Install into Dictionary.app

Beginner one-command path (builds + installs all 14):

./scripts/install_dictionary.sh

Manual path:

python3 scripts/build_dict.py --all
make install

This compiles and copies every .dictionary bundle listed in src/generated/bundles.txt into ~/Library/Dictionaries/.

Then:

  1. Open Dictionary.app.
  2. Open Settings.
  3. Enable whichever language pairs you want.
  4. Restart Dictionary.app if it was already open.

Troubleshooting: "unable to parse objects/dict.plist" mid-build

Apple's build_dict.sh fetches PropertyList-1.0.dtd from apple.com on every invocation. A transient network hiccup during a long make install run (14 bundles, one of them ~400K entries) can truncate that fetch and abort the build partway through with a DTD parse error — it's not a problem with this project's plist files. Just re-run make install; it doesn't track partial progress, so it rebuilds all 14 bundles again from scratch, which is safe but takes the full time again.

Linux and Windows (GoldenDict-ng)

The same generated XML also builds as StarDict, which GoldenDict-ng reads on Linux, Windows and macOS — all 14 editions and every BÍN-indexed inflected form. GoldenDict's Scan Popup is the direct analogue of macOS Look Up: select a word anywhere on screen and get the entry.

python3 scripts/build_dict.py --all
./scripts/package_goldendict.sh v1.0.0

That writes dist/goldendict/ and zips it. It needs nothing but Python 3 — no Dictionary Development Kit, no macOS, and none of the DTD-fetch flakiness described above, so it is also markedly faster and more reliable than the make install path.

See docs/GOLDENDICT.md for the full setup — adding the folder, installing the stylesheet (StarDict has no stylesheet slot, so it ships separately), grouping fourteen dictionaries so results stay readable, enabling Scan Popup, and the Wayland caveat.

Update Workflow

When source data changes, delete the cache and rebuild (the BÍN paradigm cache is keyed by lemma+POS and safe to keep — it's independent of which ISLEX release you're using, and reuses cached lookups for unchanged words):

rm data/islex_parsed.json
python3 scripts/build_dict.py --all
make install

Scope Notes

  • BÍN inflection tables only cover the Icelandic-headword (is2x) direction. Reverse (x2is) entries show translations only, no paradigm — the headword there isn't Icelandic, so BÍN doesn't apply.
  • English is intentionally out of scope for this project — see the separate effort to build Icelandic↔English from Wiktionary/Kaikki data instead of ND-licensed sources.

Attribution

ISLEX — Icelandic-Scandinavian multilingual dictionary (2026-02), CC BY-SA 4.0:

  • Editors of record: Þórdís Úlfarsdóttir, Halldóra Jónsdóttir

  • Publisher: Stofnun Árna Magnússonar í íslenskum fræðum (The Árni Magnússon Institute for Icelandic Studies), Reykjavík

  • Participating institutions, one per target language:

    Country Institution
    Iceland Stofnun Árna Magnússonar í íslenskum fræðum (source language + system)
    Denmark Det Danske Sprog- og Litteraturselskab, Copenhagen
    Sweden Institutionen för svenska språket, Göteborgs universitet
    Norway Institutt for lingvistiske, litterære og estetiske studier, Universitetet i Bergen
    Faroe Islands Fróðskaparsetur Føroya, Tórshavn
    Finland Háskólinn í Helsinki
  • Also documented as ISLEX contributors in the project's own published literature: Jón Hilmar Jónsson (editor on the prior 2023-12 release), Aldís Sigurðardóttir, Anna Hannesdóttir, Håkan Jansson, Lars Trap-Jensen, Margunn Rauset, and Kristín Bjarnadóttir (led the predecessor project).

  • Build/integration tooling in this repository: Jónatan Sólon and contributors.

Source: https://repository.clarin.is/repository/xmlui/handle/20.500.12537/376

BÍN — Beygingarlýsing íslensks nútímamáls (Database of Icelandic Morphology), CC BY-SA 4.0, source of the inflection tables and inflected-form indexes in every Icelandic-headword bundle. Required credit line, reproduced verbatim:

Beygingarlýsing íslensks nútímamáls. Stofnun Árna Magnússonar í íslenskum fræðum. Höfundur og ritstjóri Kristín Bjarnadóttir.

Accessed through the islenska (BinPackage) package, Copyright © Miðeind ehf., original author Vilhjálmur Þorsteinsson. Neither Miðeind ehf. nor this project claims any endorsement or official status granted by the BÍN copyright holder. Terms: https://bin.arnastofnun.is/DMII/LTdata/conditions/

See CREDITS.md for the full citation, sourcing for each name above, and the complete data-version history.

Release Assets Policy

Compiled .dictionary bundles for all 14 editions are published as zipped assets on the GitHub Releases page, starting with v2026.02 (matching the ISLEX data version). This is possible because CC BY-SA 4.0 permits redistribution — see the License Context above. If you download and further redistribute one of these bundles, you must keep attribution and keep it under CC BY-SA 4.0 in turn (see LICENSE and CREDITS.md).

The same applies to IcelandicNordic-GoldenDict-<version>.zip, the StarDict build for Linux and Windows: it carries all 14 editions, it is publishable on exactly the same terms, and it is covered by the same share-alike obligation.

About

Build .dictionary bundles for Look Up and the Dictionary app on Mac from ISLEX — íslensk orðabók covering Danish, Norwegian (bokmål/nynorsk), Swedish, Faroese and Finnish. For private use.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages