Skip to content

[Maintainer] i18n: migrate the column, chimney and elevator inspectors - #1182

Merged
Aymericr merged 5 commits into
mainfrom
cursor/i18n-structure-inspectors-8160
Oct 27, 2026
Merged

Aymericr merged 5 commits into
mainfrom
cursor/i18n-structure-inspectors-8160

Conversation

@Aymericr

@Aymericr Aymericr commented Oct 27, 2026 •

Copy link
Copy Markdown
Member

What does this PR do?

Localizes the column, chimney and elevator inspectors. Part of #621. main (4772056, with #1180 and #1181) is merged in with a normal merge commit. The compiled en and en-XA catalogs and the literal baseline were regenerated with i18n:extract, i18n:literals update and i18n:compile. i18n/pseudo-surfaces.ts keeps both sides' scenes and surfaces, without duplicates. Reviewed entries stay at 85 per locale, and release-check finds no draft compiled in. Stored scene data is unchanged.

  • Option arrays become lazy descriptors, translated where they render:
    • column proportions and support styles;
    • chimney types;
    • elevator door, door panel and shaft styles.
  • Overflow. The column, chimney and other option cards wrap their labels instead of truncating them.
  • Preset names are translated at display time: the chimney style presets (Brick, Modern, Round) and the column preset dropdown (Straight Round, Square Block…). Core's COLUMN_PRESETS and CHIMNEY_PRESET_LABELS stay English.
  • Elevator copy is converted: "Stop {stopOrder}", access and service, door timing, and shaft and cab dimensions.
  • Audit. New column-panel and chimney-panel surfaces. They run on the furnished project with a seeded column and a chimney on the roof segment. The elevator has no surface: elevators belong to the building, the layers panel doesn't list them, and they can only be selected in the viewport.
  • Catalogs. 185 new messages. zh-CN, fr, es and ja drafts are fuzzy with Review: required, so they show English until reviewed. The literal baseline drops by 188, from 1,139 on main to 951.

Dormer, skylight and solar panel are in #1183, to keep each PR reviewable.

How to test

  1. bun run i18n:check passes after the merge, with 2,989 entries per locale awaiting review. bun scripts/i18n.ts release-check --base origin/main passes too.
  2. Run bun dev with ?lang=en-XA. Select a column, a chimney and an elevator: every inspector is bracketed and accented, the option cards wrap, and the column preset dropdown's choices are localized.
  3. Run bunx turbo run build --filter=@pascal-app/nodes (the app loads nodes from dist), then bun run i18n:pseudo-audit -- column-panel chimney-panel: both pass. I ran this. The audit doesn't open the native preset <select>.
  4. Tests I ran after the merge, with core and nodes rebuilt first:
    • packages/nodes: 5,027 pass, 1 skip.
    • packages/editor bun test src: 2,704 pass.
    • apps/editor bun test lib: 74 pass.
    • bun test scripts/: 131 pass.
    • The editor, nodes and app type checks are clean, and bun run check reports no errors.

Still English after this PR

Screenshots / screen recording

en-XA, captured by i18n:pseudo-audit (UTC, metric). The images are served from the image-only branch cursor/i18n-audit-screenshots-8160, which is never merged.

Column (support styles wrap rather than truncate):
Column panel en-XA

Chimney:
Chimney panel en-XA

Checklist

  • I've tested this locally with bun dev
  • My code follows the existing code style (run bun check to verify)
  • I've updated relevant documentation (if applicable)
  • This PR targets the main branch
Open in Web Open in Cursor 

Note

Low Risk
Display-only i18n wiring and catalog updates; scene data and preset keys are unchanged, with regression coverage via pseudo-audit for column and chimney.

Reviewed by Cursor Bugbot for commit 09e91b8. Bugbot is set up for automated code reviews on this repo. Configure here.

Option arrays become lazy descriptors and the option cards wrap instead of
truncating; chimney preset names are translated at display time. New audit
surfaces column-panel and chimney-panel.
@Aymericr Aymericr added the bot:maintainer label Oct 27, 2026 — with Cursor
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-27T16:44:25.140337Z 1d6d704 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1d6d7046ee

ℹ️ 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".

Comment on lines +395 to +397
<option value="">
{i18n._({ id: 'node.column.panel.applyPreset', message: 'Apply preset...' })}
</option>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Localize the actual column preset choices

When the editor uses a non-English locale and the user opens this dropdown, only the new “Apply preset…” placeholder is localized; each choice below still renders option.label directly from the English-only COLUMN_PRESETS data (Straight Round, Square Block, etc.). Define UI-language descriptors for those preset names, as this change already does for chimney presets, and translate them with i18n._ when rendering the options.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Member Author

Tooling cross-review at 87050df: APPROVE

No P0/P1/P2.

  • Stored data: column presets are translated only at display through COLUMN_PRESET_LABELS. presetUpdates still strips label, so nothing translated is written. I checked all 15 English messages against COLUMN_PRESETS[*].label and they match exactly. Proportion and support-style options keep their values, and only the labels are messages. Chimney and elevator are display only.
  • Numbers: no # plurals, no , number formats and no toFixed changes.
  • Catalogs: +185 entries per locale, all fuzzy with Review: required. Reviewed stays at 85 per locale and drafts are 2711 for each locale.
  • No Security areas are touched.

Findings

Checks run locally (Node 22; core and nodes dist rebuilt at this head):

  • Tests: editor 2704 pass; nodes 5026 run, 0 fail; scripts/i18n*.test.ts 56 pass.
  • tsc clean for editor and nodes. Biome clean.
  • i18n:check PASS, catalogs in sync. release-check --base origin/main shows no reviewed regression and no draft compiled in. i18n-literals check reports no new literals.

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 keeps both sides: the kitchen and structures scenes
and every surface, without duplicates.

Copy link
Copy Markdown
Member Author

Tooling cross-review at 09e91b8: APPROVE

This is a delta check since 87050df. No findings.

  • The head is a single merge commit with parents 87050df and 4772056 (the [Maintainer] i18n: migrate the cabinet inspectors #1181 squash).
  • Compared with a clean git merge-tree of the two parents, only the four conflicted files differ:
    • en messages.ts and en-XA messages.ts: regenerated.
    • i18n/pseudo-surfaces.ts: both sides kept (the cabinet imports, scene and surfaces plus the column/chimney ones), 38 surfaces with no duplicates.
    • i18n/literal-baseline.json: regenerated.
  • The .po files are the clean auto-merge. A fresh i18n:extract plus i18n-literals update leaves git status clean.
  • Literal baseline 1139 → 951 is real:
    • 951 = 1139 minus this PR's own 188 removals, all in the chimney, column and elevator panels.
    • The head baseline exactly equals main's minus those 188, with nothing added and nothing removed elsewhere.
    • literal-allowlist.json, scripts/ and .github/ are unchanged against main, and the PR adds no i18n-ignore.
    • i18n-literals check reports no new literals.
  • i18n:check passes, with 2989 drafts for each locale. Reviewed stays at 85 per locale. release-check --base origin/main shows no reviewed regression and no draft compiled in.
  • Local checks (Node 22; core and nodes rebuilt at this head):
    • Tests: nodes 5028 run, 0 fail; editor 2704 pass.
    • tsc clean for editor, nodes and apps/editor.
  • CI at this SHA: Changed paths, quality, cli-smoke and Cursor Bugbot all succeeded.
  • Main has since moved to 410069d (core: author_scene revisions leave a derived surface's holes to the reconciler #1187, author_scene in core only). That merges cleanly with this head.

@Aymericr
Aymericr merged commit b41339b into main Oct 27, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants