Skip to content

Adding a language

A language comes in two parts, in two repositories, in this order:

  1. Its word list, in lexmem. Which dictionary and frequency list it is built from, how its text is normalised, the hand-written grammar notes and topics, and the checks a build must pass before it is released all live in lexmem’s languages/<code>/. A lexmem release that loads the catalog is what makes the language something you can enrol in.
  2. Its runtime, in langweave. One file, languages/<code>/runtime.ts, says how the language’s words are written for a learner — for Japanese, kana, then kanji with its reading, then kanji — plus a display name on the landing page. Nothing else in langweave names a language.

The steps and the contract a runtime implements are in languages/README.md on GitHub, which points on to lexmem’s for the catalog. They are written for whoever does the work and kept next to the code, so they are not repeated here.