Automatic text discovery
Advanced reference for Linguana contributors and beta evaluators.
The Vite plugin parses JSX and TSX, transforms eligible content into runtime lookups, and writes source metadata to .linguana/manifest.json. It never writes back to input files.
Eligible copy
export function Checkout() {
return <button title="Complete purchase">Pay securely</button>;
}Literal JSX children are extracted. Literal title, placeholder, aria-label, alt, label, and button value attributes are allowed. Every record includes repository-relative location, source, normalized text, placeholders, context, content hash, confidence, and stable ID.
Whitespace-only formatting changes preserve identity. Changing semantic context or an explicit ID can produce a new identity.
Build and inspect
bun run build
bunx biome format .linguana/manifest.jsonVerify source integrity
Use the repository’s guarded check around a build:
bun run source:before
bun run build
bun run source:afterCommon failures
If expected copy is absent, confirm it is literal, visible, inside included files, and not in an excluded subtree. Dynamic or rich content should use dynamic text and links; do not weaken exclusions globally.
Next
Read Keep product text and code separate, then use the compiler reference.
Learn which JSX text and attributes become stable manifest messages during a build.
Last updated October 3, 2026
Did this page get you to a working result?