You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implements ADR-0002 (#50): casket consumes standards/lol as a service via the liblol C ABI — never embedding the corpus.
Depends on:ADR-0001 (#42) typed a2ml/Djot content model — locale-keys hang off it, so this is post-core. Building the binding before the content model lands means retrofitting.
Render pipeline: lol_init(LOL_DATA_DIR) once per build; per localizable field lol_translate(handle, locale, key); counts via lol_translate_plural; <html lang/dir> via lol_resolve_locale; surface LOL_KEY_NOT_FOUND loudly (mirrors (:MISSING:key)).
Remove the four locales/*.txt stubs (the embedding the rule forbids).
Build packaging: liblol.so as a Guix/Nix input; corpus pinned via LOL_DATA_DIR.
Tests: golden localized output, fallback-chain behaviour, missing-key surfacing.
Estate rule: claude-memory lol-i18n-linkage.md — call LOL as a service, never embed.
Payoff
Inherits LOL's Idris2-proven i18n guarantees (BCP-47/key validity, store-lookup, fallback, plural bounds); correct per-locale lang/dir ⇒ WCAG 3.1.1/3.1.2; keeps casket lean (no corpus embedded). Same FFI-seam posture as the boj cartridge and the Djot core.
Implements ADR-0002 (#50): casket consumes
standards/lolas a service via the liblol C ABI — never embedding the corpus.Depends on: ADR-0001 (#42) typed a2ml/Djot content model — locale-keys hang off it, so this is post-core. Building the binding before the content model lands means retrofitting.
Done (in #50)
lol-linkage,no-embedded-locales,i18n-invariants)To do
Gnosis.I18nmodule —foreign import ccallbindings againstlol.h:lol_init,lol_translate,lol_translate_plural,lol_resolve_locale,lol_translation_text,lol_free_*,lol_last_error; wrapped in safetranslate/translatePlural/resolveLang.lol_init(LOL_DATA_DIR)once per build; per localizable fieldlol_translate(handle, locale, key); counts vialol_translate_plural;<html lang/dir>vialol_resolve_locale; surfaceLOL_KEY_NOT_FOUNDloudly (mirrors(:MISSING:key)).locales/*.txtstubs (the embedding the rule forbids).liblol.soas a Guix/Nix input; corpus pinned viaLOL_DATA_DIR.Interface
standards/lol/generated/abi/lol.h(C ABI),standards/lol/ABI-FFI-README.md(the Idris2-ABI / Zig-FFI / Zig-gateway triple).lol-i18n-linkage.md— call LOL as a service, never embed.Payoff
Inherits LOL's Idris2-proven i18n guarantees (BCP-47/key validity, store-lookup, fallback, plural bounds); correct per-locale
lang/dir⇒ WCAG 3.1.1/3.1.2; keeps casket lean (no corpus embedded). Same FFI-seam posture as the boj cartridge and the Djot core.