Migrates the eleven remaining files that `i18next/no-literal-string` flagged
outside `app/office`, `app/demo` and the task-create surfaces owned by #2326:
the session prepare panel, the onboarding agents step, the host system-metrics
readout, the system-health issues dialog, the shared panel search bar, the
mermaid diagram block, the settings agent card, both release-notes surfaces,
and the shared data-table pair.
Findings drop 884 -> 826 (-58) and the guard allowlist grows 442 -> 453, file
by file rather than by directory since every one of these directories still
holds un-migrated files.
Defects repaired beyond the codemod's output:
- `data-table-pagination.tsx` rendered `{count} results` as a bare JSX
fragment, invisible to both plural gates. It is now one interpolated key
with `_one`/`_other`, as are the health-dialog issue count and the
release-notes "N new releases" helper.
- Two mixed literal+expression blocks were half-converted, rendering
identically in English while being structurally untranslatable. Both were
rebuilt as a single message.
- The codemod re-sorted `settings.json` into `localeCompare` order and
re-encoded every non-ASCII character to `\uXXXX` under a comment claiming it
matched the existing files. No catalog is stored escaped and only `common`
is in that order, so both halves were reverted; all four catalogs are
additions-only.
- Copy in default parameters and plain helpers is invisible to the lint rule,
so `Search…`, the six prepare-panel header labels, the setup-script step name
and error, the metric labels, `lastUpdatedText` and `buildDescription` were
migrated by hand.
`task:preparingEnvironment` was already taken by #2326 holding "Preparing
environment" without the ellipsis this surface renders, so the prepare panel
uses `preparingEnvironmentEllipsis` rather than silently changing its copy.
Units, wire ids, the `{workspaceId}` URL token, the `"ellipsis"` page sentinel
and every mermaid theme/CSS value stay English as protocol.
Settings > General > Notifications held all of its copy as literals, so the page
stayed English under a locale switch. Every string now resolves through t() /
<Trans> at render, and the page is on the i18nGuardFiles allowlist so it cannot
drift back.
Event titles, sound preset names and the permission button label resolve from
maps of catalog keys rather than module-scope t(), so they follow a locale
switch. The Apprise install notice is a single <Trans> message so the link stays
inside the sentence. SCREENS in the pseudo-locale oracle gains a per-screen
allow list for text the frontend must not translate (backend-owned provider
names).
Route the terminal settings page's copy through i18next: the shell card, the font/font-size/link cards, and the section headings. Shell paths, font family names, and every select value stay untranslated — they are data compared with `===`.
The font-category label and badge tables are module scope, so they hold catalog keys resolved at render rather than copy.
Adds the three paths to `i18nGuardFiles` and the screen to the pseudo-coverage `SCREENS` list.
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>