Praktische woordenboek-gids

Je eigen woordenboek importeren in Lectern

Lectern heeft een volledige Engelse WordNet-database aan boord voor opzoeken met ingedrukt houden. Wil je een ánder woordenboek — een historisch, een vakwoordenlijst, of een taal die Lectern niet meelevert — dan zet je het om naar één JSON-bestand en importeer je het. Alles blijft op je toestel.

Kort antwoord

Maak een JSON-bestand zoals het voorbeeld hieronder, zet het ergens op je telefoon en open dan Instellingen → Woordenboek & catalogi → Woordenboek-bestand importeren. Woorden die jouw bestand kent worden getoond in plaats van de ingebouwde definitie; woorden die het niet kent vallen nog steeds terug op WordNet.

Wat er standaard al in zit

Houd een woord ingedrukt tijdens het lezen en Lectern toont een definitie zonder de pagina te verlaten of online te gaan. Voor Engels gebruikt hij Open English WordNet, meegeleverd in de app: zo'n 152 000 woorden, met betekenissen, voorbeelden en synoniemen. Dat dekt gewoon lezen prima, dus importeer een woordenboek wanneer je iets wilt wat WordNet niet kan geven:

  • Een historisch woordenboek waarvan de definities bij de tijd van je boeken passen.
  • Een vakwoordenlijst — juridisch, medisch, nautisch, een fandom-wiki.
  • Een woordenboek in een andere taal, of een tweetalig woordenboek dat naar jouw taal vertaalt.

Het bestandsformaat

Eén JSON-bestand, lectern-dict-v1 genaamd. Dit is het hele formaat:

{
  "format": "lectern-dict-v1",
  "language": "en",
  "name": "Webster's 1913",
  "entries": {
    "abate": { "pos": "verb", "def": "Become less intense or widespread." },
    "aberration": { "pos": "noun", "def": "A departure from the norm." }
  }
}
VeldVerplichtWat het doet
formatNeeMoet met lectern-dict beginnen als het aanwezig is. Al het andere wordt geweigerd.
languageAanbevolenDe basistaalcode (en, nl, de…) waarvoor dit woordenboek geldt. Dit bepaalt welke boeken het gebruiken. Ontbreekt het of klopt het niet, dan valt hij terug op en.
nameNeeStaat onder het aantal woorden in Instellingen, zodat je ziet welk bestand geladen is.
entriesJaWoord → { pos, def }. Een lege entries wordt geweigerd.

Zet je sleutels in kleine letters. Het woord dat je ingedrukt houdt gaat naar kleine letters vóór het opzoeken, maar de sleutels in jouw bestand worden precies zo gebruikt als ze er staan. Een sleutel "Aberration" wordt dus nooit gevonden. Onbekende velden bovenaan worden genegeerd, dus een licence- of version-veld uit je bron mag rustig blijven staan.

Waar je een echt woordenboek haalt

BronOmvangLicentie
Webster's 1913~102 000 ingangen, elk één lange definitiePubliek domein
Wiktionary-exports (kaikki.org)Honderdduizenden, de meeste talenCC BY-SA
Je eigen woordenlijstZoveel als je zelf schrijftVan jou

Het makkelijkste beginpunt is het publieke-domein Webster's 1913, gepubliceerd als één woord → definitie JSON-bestand in de repository matthewreagan/WebstersEnglishDictionary.

Omzetten met één commando

Sla dit op als convert.py. Het zet elke platte { "woord": "definitie" }-JSON om naar het Lectern-formaat, met kleine letters voor de sleutels en witruimte netjes samengevouwen.

import json, sys, re

src = json.load(open(sys.argv[1]))
out = {
    "format": "lectern-dict-v1",
    "language": "en",
    "name": "Webster's 1913",
    "entries": {
        w.strip().lower(): {"pos": "", "def": re.sub(r"\s+", " ", d).strip()}
        for w, d in src.items() if d.strip()
    },
}
json.dump(out, open(sys.argv[2], "w"), ensure_ascii=False, separators=(",", ":"))

Draai het daarna en kopieer het resultaat naar je telefoon:

python3 convert.py webster.json lectern-en-webster.json

Dat levert een bestand van 24 MB met 102 217 ingangen. Lectern leest het in een paar seconden en houdt het in geheugen, dus deze omvang is comfortabel. Veel grotere bestanden werken ook, maar kosten meer geheugen op oudere telefoons — heeft je bron honderdduizenden ingangen, filter dan eerst.

Importeren in Lectern

  1. Zet het bestand op je telefoon. Downloads, Drive, een usb-kabel — overal waar de Android-bestandskiezer bij kan.
  2. Open Instellingen. Tik onderin op Instellingen en open dan het onderdeel Woordenboek & catalogi.
  3. Tik op “Woordenboek-bestand importeren”. Kies je JSON in de bestandskiezer. Tijdens het inlezen staat er “Woordenboek inlezen…”.
  4. Controleer de statusregel. Daar hoort iets te staan als “102217 woorden geladen · geïmporteerd bestand”, met je name-veld eronder.
  5. Open een boek en houd een woord ingedrukt. De popup toont nu jouw definitie, met het label Geïmporteerd woordenboek.
Lectern-instellingen met 102217 woorden geladen uit een geïmporteerd bestand genaamd Webster's 1913
De statusregel vertelt precies welk woordenboek actief is en hoeveel woorden erin zitten.
Lectern-lezer met een popup die de Webster's 1913-definitie van het woord dusk toont
Houd een woord ingedrukt: de definitie komt uit jouw bestand, en Lectern zegt dat er ook bij.

Terug naar de standaard? Tik op Gebruik ingebouwd. Dat verwijdert élk geïmporteerd woordenboek en zet de meegeleverde terug.

Woordenboeken voor andere talen

Er is maar één importknop, en die werkt voor elke taal. Het veld language in je JSON bepaalt waar het bestand terechtkomt, dus een Nederlands woordenboek heeft "language": "nl" nodig. Lectern gebruikt het dan bij boeken die hij als Nederlands herkent en laat je Engelse opzoekingen met rust. Je kunt per taal één geïmporteerd woordenboek bewaren.

De taal wordt op de basiscode gematcht, dus een boek met en-GB of en-US — gebruikelijk bij Project Gutenberg en Standard Ebooks — gebruikt gewoon je en-woordenboek.

De bekende problemen oplossen

“Kon het bestand niet lezen”

Het bestand is geen geldige JSON, de format is geen lectern-dict-waarde, of entries is leeg. Controleer eerst de JSON; een converter die op een tekenset-fout stuit schrijft vaak een half bestand.

De import lukte, maar woorden worden niet gevonden

Bijna altijd hoofdletters: je sleutels moeten in kleine letters staan. Kijk in een teksteditor of er "abate" staat en niet "Abate".

Mijn woordenboek wordt in één boek genegeerd

Lectern kiest het woordenboek op basis van de taal van het boek. Open het detailscherm van het boek om te zien welke taal hij herkend heeft, en zet het language-veld van je woordenboek daarop.

De definities zijn enorm

Historische woordenboeken proppen vaak alle betekenissen in één alinea. De popup scrollt, maar wil je liever korte ingangen, kort def dan in de converter af voordat je het bestand schrijft.

Vragen over woordenboek-import

Gaat er iets online bij het importeren van een woordenboek?

Nee. Het bestand wordt naar Lecterns eigen opslag op je toestel gekopieerd en daar vandaan gelezen. Lecterns leesfuncties werken volledig offline.

Vervangt mijn woordenboek WordNet helemaal?

Nee. Jouw bestand wint voor elk woord dat erin staat. Woorden die er niet in staan vallen terug op de ingebouwde WordNet, dus importeren kan de dekking alleen groter maken.

Kan ik meerdere woordenboeken tegelijk importeren?

Eén per taal. Een tweede Engels woordenboek vervangt het eerste; een Nederlands woordenboek staat gewoon naast je Engelse.

Hoe groot mag het bestand zijn?

Een bestand van 24 MB met zo'n 100 000 ingangen importeert in seconden en draait prima. Daarboven is het geheugengebruik op oudere toestellen de grens, niet een harde limiet.

Kan ik een StarDict- of DSL-woordenboek gebruiken?

Niet rechtstreeks — Lectern leest alleen lectern-dict-v1-JSON. De meeste formaten laten zich met een kort script omzetten, en de converter hierboven is een werkend beginpunt.

Jouw woorden, jouw woordenboek

Eén keer importeren, daarna elk woord opzoeken zonder de pagina te verlaten of online te gaan.

Nu opGoogle Play