Repository navigation
[Maintainer] i18n: migrate the vent, fence and MEP inspectors - #1185
Conversation
Box, ridge, turbine and eyebrow vents and the cupola; fence path, surface and pattern editors and the gate/opening inspector; run hangers, downspouts, and the MEP tool HUDs. Split sentences, the fence path summary, the hanger and downspout names and the mount label are whole ICU messages; the path length uses formatFixed and counts stay ungrouped. Segmented control labels may break inside a word, so a long translation wraps in its segment instead of spilling into the next. New audit surfaces for the five vents and the fence.
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: 153edb3ffc
ℹ️ 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".
| { | ||
| key: 'leafType', | ||
| label: 'Leaves', | ||
| label: i18n._({ id: 'node.fenceFeature.inspector.leaves', message: 'Leaves' }), |
There was a problem hiding this comment.
Translate the gate option values
When the gate inspector is rendered in a non-English locale, the field labels now use the catalog but the corresponding option arrays still contain raw English values (Single gate, Double gate, Left, Right, Inward, Outward, None, Diagonal, and Cross). This leaves the migrated inspector partially untranslated and also bypasses the pseudo-locale audit; pass these option labels through i18n._ as well.
Useful? React with 👍 / 👎.
| setError( | ||
| i18n._({ | ||
| id: 'node.fenceFeature.inspector.keepTheOpeningInsideTheFence', | ||
| message: 'Keep the opening inside the fence and clear of other gates or passages.', | ||
| }), | ||
| ) |
There was a problem hiding this comment.
Derive the validation message from the current locale
If this validation error is visible while the editor locale changes at runtime, usePascalI18n rerenders the component but error retains the already-formatted string from the old locale, so the message remains stale until another edit clears or recreates it. Store an error state/key and call i18n._ while rendering the status instead.
Useful? React with 👍 / 👎.
… render time The gate's leaf, hinge, swing and bracing options are messages, and the blocked-opening warning is a flag translated while rendering, so it follows a locale switch.
|
Tooling cross-review at 31f92e9: APPROVE No P0/P1/P2.
Findings
Checks run locally (Node 22; core and nodes dist rebuilt at this head):
CI at this SHA: Changed paths, quality, cli-smoke and Cursor Bugbot all succeeded. |
Conflicts in the compiled en and en-XA catalogs and the literal baseline are regenerated with i18n:extract, i18n:literals update and i18n:compile. i18n/pseudo-surfaces.ts merged cleanly and keeps every surface once.
|
Tooling cross-review at 728ebbf: APPROVE Delta review since the 31f92e9 approval:
No findings. |
What does this PR do?
Localizes the last of the inspectors still in English: the five roof vents, fences and gates, and the MEP panels and tool HUDs. Part of #621.
main(20d6497, with #1180–#1183, #1186 and #1187) is merged in with a normal merge commit. The compiled en and en-XA catalogs and the literal baseline were regenerated withi18n:extract,i18n:literals updateandi18n:compile.i18n/pseudo-surfaces.tskeeps all 46 surfaces once, and its three imports from../packages/core/src/schemaare now one (Tooling's nit, as a separate commit). Reviewed entries stay at 85 per locale, andrelease-checkfinds no draft compiled in. Stored scene data is unchanged.formatFixed.SegmentedControllabels may now break inside a word ([overflow-wrap:anywhere]). Before, a long one-word translation in a six-option control, such as the fence styles, spilled into the next segment. The en-XA screenshot below shows the fix.box-vent-panel,ridge-vent-panel,turbine-vent-panel,eyebrow-vent-panel,cupola-panelandfence-panel. They run on the furnished project with the five vents on its roof segment and a fence on the ground floor. The turbine's "rad/s" unit is listed asdata.fuzzywithReview: required, so they show English until reviewed. The literal baseline drops by 186, from 858 onmainto 672.Display changes from
mainsanitary-tee. They use the shared inspector option names, and other fitting types read the same way (for example "End cap").How to test
bun run i18n:checkpasses after the merge, with 3,289 entries per locale awaiting review.bun scripts/i18n.ts release-check --base origin/mainpasses too.bun devwith?lang=en-XA. Select each vent, a fence, and a gate on it: the inspectors, including the gate's option values, are bracketed and accented, and the fence style segments wrap inside their own boxes.bunx turbo run build --filter=@pascal-app/nodes(the app loads nodes fromdist), thenbun run i18n:pseudo-audit -- box-vent-panel ridge-vent-panel turbine-vent-panel eyebrow-vent-panel cupola-panel fence-panel: all six pass. I ran this.packages/nodes: 5,028 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
fence/feature-tool.tsx). This is tool copy for the toasts and errors pass.Htmlin these packages. They can switch to [Maintainer] i18n: editor-side inspector panels and 3D overlay scope #1180'sLocalizedHtml, now onmain, in a follow-up.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.Fence (style segments wrap in their own boxes):

Box vent:

Ridge vent:

Turbine vent:

Eyebrow vent:

Cupola:

Checklist
bun devbun checkto verify)mainbranchNote
Low Risk
Copy and catalog changes with a small CSS wrap fix; no auth, persistence, or core logic changes. Residual risk is missing or incorrect ICU/plural strings in non-English locales until review clears fuzzy entries.
Reviewed by Cursor Bugbot for commit 728ebbf. Bugbot is set up for automated code reviews on this repo. Configure here.