본문으로 건너뛰기

Tsuzuri

An offline Korean↔Japanese translation writing drill for the Pomera — it points things out instead of grading

  • Screen render, home — a numbered menu in the style of Korean dial-up BBSes: start drill, review, export, settings, fetch packs, collect corrections, with Korean-to-Japanese and Japanese-to-Korean packs listed on the right
  • Screen render, prompt — a Korean sentence with a Japanese answer being typed beneath it
  • Screen render, analysis — the answer beside the reference translation, flagging two missing expressions, a na-adjective conjugation error and a polite/plain register mismatch. Real output from the analysis engine
  • Screen render, analysis — when the answer matches and there is nothing to flag, it shows only check marks and moves on quietly. Real output from the analysis engine
  • Screen render, correction — answer, correction and reference on three lines, separating errors (✗) from nuance (·). The correction text is sample data to show the screen

A two-way Korean↔Japanese translation writing drill that runs offline in the Debian mode of the King Jim Pomera DM250. A prompt appears in one language, you write it in the other, and you get feedback on what you wrote. Released under the MIT license.

The screens above are renders: the real binary’s output from a virtual terminal, laid out at the Pomera’s 1024×600 resolution. They are not photos of the device, and the device’s font and column count haven’t been confirmed on hardware yet. The two analysis screens are real engine output; the correction text is sample data.

What it does

  • Offline drills — once a problem pack is downloaded, prompting, writing and analysis all run without a network. The only online moments are fetching packs and collecting corrections
  • Pointing things out with morphological analysis — it checks whether key expressions are missing, whether a form isn’t in the dictionary (typos, bad conjugation), and whether registers are mixed (Japanese polite and plain forms, Korean polite and plain endings), comparing down to dictionary forms
  • A correction queue — correction requests pile up offline and come back together when Wi-Fi connects
  • Review notes — exported as plain text files that the Pomera’s stock mode can read

Judgment calls

The device ruled out most of the options. A 32-bit ARM chip with 1 GB of RAM puts offline translation engines outside their supported architectures, and a local LLM runs but nowhere near usable speed. So on the device it only does what rules can do, and corrections that need judgment wait for a connection.

Go was chosen for one library: the morphological analyser. kagome is pure Go, so a 32-bit ARM binary builds in one step with no C dependencies. The dictionaries are embedded too, so installing means copying one file to the SD card.

It doesn’t give scores. A translation has many right answers but only one reference. Mark people down for differing from it and you teach them that correct answers are wrong. So the ✗ and ⚠ on screen are requests to double-check, not wrong-answer marks — and the data model has no score field at all.

No full-screen TUI. Reading keys one at a time risks breaking the path the Japanese input method (mozc) uses, and if you can’t type Japanese the app has no reason to exist. Input stays line-based, and navigation follows the layout of Korean dial-up BBSes like Hitel, where you move by typing a number — the same constraint produced the same answer.