Thread LocaleContext into the engine label renderers buildStructureElement() and the MetaField block renderers currently emit labels as literals and have no access to config — they receive only (entry, name, modifierValues, icons). This is the previously-unstated prerequisite for localizing Zone 1. Thread the narrow LocaleContext (Decision D6) through, matching the engine's existing convention of passing explicit slices.
high moderate
refrakt i18n extract command (+ --check + MCP) Auto-derived keys (Decision D1) are only usable if authors and translators can discover them, so this command is the load-bearing mitigation, not a convenience. It emits the full derivable key set with English defaults as a JSON dictionary — the same shape as translation files (Decision D3), so extract → translate → commit <locale>.json round-trips.
high moderate
Localize behavior strings (Zone 5) — inline delivery The ~45 client-side strings across packages/behaviors/src/behaviors/ and .../elements/. Behaviors have no server config, so translations are delivered inline (Decision D4): no fetched endpoint.
medium moderate
Plugin translation bundles + mergePlugins() wiring Give plugins a slot to ship their own translations and wire it into the merge so a configured locale resolves plugin-scoped keys. This is the mechanism first-party and community plugins both use.
medium moderate
knownSections canonicalSlug + i18nAliases — stable-slug follow-up knownSections shipped (WORK-024, via SPEC-037) but without the localization shape SPEC-035 called for. slugify() still derives the section wrapper's data-name from raw heading text, so a non-English heading (## Akzeptanzkriterien) produces a different slug than ## Acceptance Criteria, breaking CSS selectors and cross-locale anchors. This item closes that gap. The canonicalSlug half can proceed independently (the framework already exists); the i18nAliases half layers on locale resolution.
low moderate
First-party translation bundles (phased, demand-driven) Ship refrakt's own translations for the universal chrome so a site owner sets locale and gets a localized UI with zero dictionary authoring. Phased after the mechanism; the initial language tier is demand-driven (Decision D7/D8).
low moderate