GuardVocabulary
The complete set of word lists the standard guards read from, bundled so a whole language can be swapped in one object.
Every guard already takes its markers as a constructor parameter, so adapting kmemo to another language was always possible — this makes it one line. MatchGuards.standard takes a GuardVocabulary, and dev.kmemo.guard.Vocabularies ships curated ones for the highest-traffic languages. Build your own from a language's traffic when a shipped pack does not fit; the same conservative rule applies as for English — a marker earns its place only if it will not reject a genuine paraphrase.
Parameters
function words removed before comparison; read by most guards.
words that may open a sentence without naming anything (the entity guard).
words capitalized by grammar, not reference (the entity guard).
words that negate (the negation guard).
symmetric pairs that flip an answer (the antonym guard).
absolute time references (the temporal guard).
words describing the shape of the answer — format, length, depth (the scope guard).
cues that make argument order significant — comparisons, conversions (the direction guard).
unit and currency tokens mapped to a canonical MeasurementUnit (the unit & substitution guards).
words that begin a clause narrowing a question rather than framing it (the sub-span guard). Empty by default, and empty is a working answer: with no openers the guard never fires, which is the safe direction for a language whose markers nobody has measured. Only the English pack fills it, because it is the only one with a corpus behind it. Fill it from a language's real traffic, not from a dictionary.