Skip to content

finding(i18n): appDesigner.fieldDesigner.formula is now a dead key — 10 locale packs plus the designer defaults map, zero call sites #6310

Description

@os-support-ai

Observational finding, created by #6043 and deliberately left behind there rather than smuggled into that PR. Filing it so the leftover is tracked instead of relying on a report-only script nobody reads.

What is dead

#6043 retired the Field Designer's formula-expression textarea, which was the only call site of appDesigner.fieldDesigner.formula:

packages/plugin-designer/src/FieldDesigner.tsx:312   ← removed by #6043
  { name: 'formula', label: t('appDesigner.fieldDesigner.formula'), … }

The value survives in 11 places with nothing asking for it:

  • packages/plugin-designer/src/hooks/useDesignerTranslation.tsDESIGNER_DEFAULT_TRANSLATIONS
  • packages/i18n/src/locales/{en,de,es,fr,pt,ru,ja,ko,zh,ar}.ts — nested under appDesigner.fieldDesigner.formula (en: 'Formula', zh: '公式', ru: 'Формула', …)

⚠️ Do not confuse it with designer.field.formula ('Formula (CEL)'), which is a different, live key belonging to metadata-admin's ObjectFieldInspector — the surface that still authors formula expressions. Only the appDesigner.fieldDesigner.* spelling is dead.

Why #6043 left it

Stated plainly rather than implied:

  1. No gate fails. check:i18n-dead-keys is the reverse sweep that would name it, and its own header declares it report-only by default (exit 0 whatever it finds) and wired into no CI workflow — deliberately, because a reverse sweep over dynamic key construction can produce false positives. check:i18n-keys runs the call-site→pack direction only, so deleting a call site can never red it.
  2. Removing it is an 11-file diff across all ten packs plus the defaults map, and DESIGNER_DEFAULT_TRANSLATIONS is asserted to mirror the en pack by packages/app-shell/src/__tests__/defaults-maps-mirror-en-pack.test.tsx — so map and packs have to move together or that gate reds. That is a translation-hygiene change with its own blast radius, not part of a card about a save-blocking 422.

Suggested resolution

Drop the row from the defaults map and from all ten packs in one commit, keeping them in step so the mirror test stays green. Worth confirming first, by running node scripts/check-i18n-dead-keys.mjs --strict, whether this key is the only one or one of a batch — if there is a backlog, sweeping them together is cheaper than eleven files for one string.

Refs: #6043 (what removed the call site) · #4658 (the reverse sweep and why it is report-only) · #4401 (the defaults-map mirror gate)

Metadata

Metadata

Assignees

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:dispatched

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions