Repository navigation
[Maintainer] i18n: migrate the cabinet inspectors - #1181
Conversation
Option arrays become lazy descriptors; split sentences, the array title and the compartment summary are whole ICU messages; counts stay ungrouped; the compartment and module icon buttons get names. Preset names are translated at display time and stay English in the presets. New audit surfaces cabinet-module-panel and cabinet-run-panel on a seeded kitchen run.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3628fd1b8a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| tone="neutral" | ||
| iconSrc={`/icons/kitchen/${item.id}.webp`} | ||
| label={item.label} | ||
| label={i18n._(KITCHEN_ITEM_LABELS[item.id])} |
There was a problem hiding this comment.
Include localized labels in kitchen search
Once a non-English preset translation is approved, the picker renders that translated label here, but filtering still calls kitchenItemMatches, whose searchable text contains only the English preset label and English keywords. A user typing the visible translated name—for example the localized word for “Fridge”—therefore gets no results. Include i18n._(KITCHEN_ITEM_LABELS[item.id]) in the searchable text, while retaining the English aliases if desired.
Useful? React with 👍 / 👎.
…et is titled Wall cabinet
- The module summary names every single-compartment type (cooktops, fridges, pull-out pantry, hoods), not the raw id. - The wall-filler plan reads 'Left: 120 mm' in the UI language. - findKitchenItems takes the shown preset name, so Find in this project and the kitchen command palette match and show translated preset names. - The replace dialog's 'kitchen changed' error is translated.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit cc4ff7d. Configure here.
…gister on a locale change kitchenPresetForPlacedModule reads a module's parent the way the panel does, so Find and the command palette name an attached upper as a wall cabinet and match its shown name. The palette's kitchen commands depend on the catalog version, so their labels follow a locale switch.
|
Tooling cross-review at cb975a1: APPROVE No P0/P1/P2.
Findings
Checks run locally (Node 22; core and nodes dist rebuilt at this head, since the new tests import
CI at this SHA: Changed paths, quality, cli-smoke and Cursor Bugbot all succeeded. |
Conflicts in the compiled en and en-XA catalogs are regenerated with i18n:extract and i18n:compile; the literal baseline with i18n:literals update. i18n/pseudo-surfaces.ts keeps both sides' surfaces.
|
Tooling cross-review at b522b2d: APPROVE This is a delta check since cb975a1. No findings.
|

What does this PR do?
Localizes the cabinet inspectors: the module panel, the kitchen run panel, the compartment cards, item options, and the kitchen "Add beside / Replace with" dialog. Part of #621.
main(87ec430, with #1180) is merged in with a normal merge commit. Its conflicts were in the compiled en and en-XA catalogs, the literal baseline andi18n/pseudo-surfaces.ts. The catalogs and baseline were regenerated withi18n:extract,i18n:literals updateandi18n:compile, and the surfaces file keeps both sides. Reviewed entries stay at 85 per locale, andrelease-checkfinds no draft compiled in. Stored scene data is unchanged.formatFixedinstead oftoFixed;cop${y|ies}logic. Its count is written ungrouped, as in [Maintainer] i18n: room-name and count follow-ups #1179;CABINET_PRESETSkeep their English labels, because agents and MCP read them. The kitchen picker, the replace dialog and the module panel title use new display-time descriptors (KITCHEN_ITEM_LABELS,KITCHEN_GROUP_TITLES).labelargument onkitchenItemMatches, so a translated tile name finds its item. The English names and keywords still match. A test covers it.kitchenPresetForModulereads it as a base cabinet, because its parent isn't a wall run, so the title now uses the panel's own wall-cabinet check.cabinet-module-panelandcabinet-run-panelsurfaces on the two-bedroom project with a seeded two-module kitchen run. Module names that presets write ("Base Cabinet", "Sink Base") are scene data and listed asdata.fuzzywithReview: required, so they show English until reviewed. The literal baseline drops by 230, from 1,369 onmainto 1,139.Display changes from
maindrawer,cooktop-gas).How to test
bun run i18n:checkpasses after the merge, with 2,804 entries per locale awaiting review.bun scripts/i18n.ts release-check --base origin/mainpasses too: no reviewed translation regressed, and no draft is compiled in.bun devwith?lang=en-XAand place a kitchen run. Select the run, then a module, then add a wall cabinet above it. The inspectors are bracketed and accented, and the upper cabinet's title is the localized "Wall cabinet".bun run i18n:pseudo-audit -- cabinet-module-panel cabinet-run-panel: both pass. I ran this. The Next app loads@pascal-app/nodesfromdist, so runbunx turbo run build --filter=@pascal-app/nodesfirst.packages/nodes: 5,027 pass, 1 skip.packages/editorbun test src: 2,704 pass.apps/editorbun test lib: 74 pass.bun test scripts/: 131 pass.bun run checkreports no errors.Still English after this PR
Htmland can switch toLocalizedHtml, now onmain, in a follow-up;tool.tsx;Screenshots / screen recording
en-XA, captured byi18n:pseudo-audit(UTC, metric). The images are served from the image-only branchcursor/i18n-audit-screenshots-8160, which is never merged.Cabinet module (Base cabinet):

Kitchen run:

Checklist
bun devbun checkto verify)mainbranchNote
Medium Risk
Broad UI string migration with new preset-resolution and search/command-registration behavior; low data-model risk but many user-facing kitchen flows to regression-test across locales.
Reviewed by Cursor Bugbot for commit b522b2d. Bugbot is set up for automated code reviews on this repo. Configure here.