Skip to content

F182 B6b: i18n sweep — Help glossary + final sweep audit (sweep complete) - #252

Merged
mforce merged 2 commits into
mainfrom
f182-i18n-b6b-help-glossary
Jul 28, 2026
Merged

mforce merged 2 commits into
mainfrom
f182-i18n-b6b-help-glossary

Conversation

@mforce

@mforce mforce commented Jul 28, 2026

Copy link
Copy Markdown
Owner

B6b — Help page: glossary + final sweep audit. The final PR of the #182 SPA i18n string sweep. Externalizes the in-app Glossary table (the last hardcoded copy in the app), then closes the sweep with a catalog-wide audit.

Base main. i18n:scan on src/routes+src/components: 81 → 3 (the 3 are pre-existing scanner false positives, see below). HelpPage.tsx now scans 0.

What's in this PR

Glossary table → help ns (translated inline)

The <h3 id="glossary"> + its 37 term/definition rows + the closing repo-note, externalized into the existing help namespace (76 keys, mirrored en/es/tl):

  • Definitions externalized byte-faithful (HTML entities &apos;/&quot; → real characters; not rewritten).
  • id="glossary" kept byte-identical (scroll-spy rail target).
  • Closing note uses <Trans> keeping <code>specs/product/GLOSSARY.md</code> literal (path not translated) in all three languages.
  • es/tl machine-drafted, under the existing // machine-drafted (#182) — pending native review marker.

Final sweep audit (Task 34)

  • Scan across all web/src + index.html: zero real hardcoded user-facing strings remain. The 3 residual i18n:scan hits are scanner false positives (a boolean chain in DailyEntryPage, a CSS width + "%" in StockPage, a return statement in ErrorBoundary); index.html <title>Cluckwork</title> is the intentional brand string.
  • Comment cleanup: corrected 21 now-stale "English-only / not in TRANSLATED_NAMESPACES / deferred to native pass" comment blocks in en.ts + 1 in enums.ts (comments-only — 110/110 balanced, no key/value/code changed). Every namespace is translated now, so those notes were false.
  • GLOSSARY.md unchanged — the sweep introduced no new user-facing terms (the in-app glossary stays a curated, byte-faithful subset of the canonical termbase).
  • test:coverage above floors (stmts 86.95 / br 76.85 / fn 80.64 / ln 90.31); build clean.

The sweep is now code-complete

Every client-authored SPA string is in the catalog, and — under the translate-now switch — es/tl are shipped inline for all 29 namespaces (machine-drafted, pending native review). npm run test 1122 green (incl. catalogParity); npm run typecheck clean; npm run build succeeds.

Reviews: Task 33 (glossary) per-task review — READY; whole-branch review (opus comprehensive) — READY, zero findings (glossary parity re-derived, comment-cleanup confirmed comments-only, no regression).

Stays open on #182 (not this PR)

mforce added 2 commits July 27, 2026 22:17
Task 33 (B6b): the 37-row term/definition table plus its closing
repo-note, en+es+tl. Extends the help namespace PR 6a created for the
rest of HelpPage; the id="glossary" scroll-spy anchor stays
byte-identical. English values are unchanged from the prior hardcoded
copy (Task 34 handles GLOSSARY.md reconciliation separately); es/tl
are machine-drafted pending native review, matching this pack's
existing loanword precedent.
Final-audit cleanup for the #182 string sweep: correct per-namespace
comments in en.ts/enums.ts that still claimed a namespace was
English-only / deliberately not in TRANSLATED_NAMESPACES / deferred
to a native-speaker pass. All 29 namespaces now ship machine-drafted
es/tl and are listed in TRANSLATED_NAMESPACES, so those assertions
were false. Comments only — no keys, values, or behavior changed.
@mforce
mforce merged commit 26cca5a into main Jul 28, 2026
7 checks passed
@mforce
mforce deleted the f182-i18n-b6b-help-glossary branch July 28, 2026 06:12
@mforce mforce mentioned this pull request Jul 28, 2026
90 tasks done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant