Skip to content

Commit afecd20

Browse files
docs(skills): objectstack-i18n names the action-entry keys os validate judges
The `_actions.{action_name}` row lists param options, `outcomeMessages`, the `resultDialog` leaves and `resultDialog.fields.{path}`, and says the same keys hold under `globalActions`; the `globalActions` line says a key naming a bound action is an error whose message names the `objects.{owner}._actions.{action_name}` key; the `translation-target-unknown` paragraph names the three action-entry error shapes and the shared option warning. Mirrors content/docs/protocol/kernel/i18n-standard.mdx; no second vocabulary. Claude-Session: https://claude.ai/code/session_01CB6W87z22K2yjUCDyVrJRk Co-authored-by: Claude <noreply@anthropic.com>
1 parent 759dbe9 commit afecd20

1 file changed

Lines changed: 14 additions & 7 deletions

File tree

‎skills/objectstack-i18n/SKILL.md‎

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -161,16 +161,17 @@ All translatable content for a single object is aggregated under
161161
| `label` / `pluralLabel` / `description` | Object-level text (every key optional) |
162162
| `fields.{field_name}` | `label`, `help`, `placeholder`, `options` (option value → label) per field |
163163
| `_views.{view_name}` | `label`, `description`, `emptyState.title` / `emptyState.message`, `bulkActions.{def_name}` (`label`, `confirmText`, `confirmLabel`, `params`) |
164-
| `_actions.{action_name}` | `label`, `description`, `confirmText`, `successMessage`, `params.{param_name}`, `resultDialog` |
164+
| `_actions.{action_name}` | `label`, `description`, `confirmText`, `successMessage`, `params.{param_name}` (and `.options.{value}` beneath it — an option's stored `value` in that param's inline `options`), `outcomeMessages.{outcome}` (an outcome the action's own `outcomeMessages` declares), `resultDialog.title` / `.description` / `.acknowledge` (only under an action that declares a `resultDialog`), `resultDialog.fields.{path}` (the literal `path` of a field in `resultDialog.fields[]`, dots included — `client.secret` is one key); the same keys hold under `globalActions.{action_name}` |
165165
| `_sections.{section_name}` | Form section `label`, `description` |
166166
| `_tabs.{tab_name}` | Filter-preset tab `label` (`ViewTabSchema.name`) |
167167
| `_validations.{rule_name}` | `message` only — the sentence a rejected write returns (replaces the retired `validationMessages`) |
168168

169169
Top-level groups alongside `objects`: `apps` (label, description, navigation),
170-
`messages`, `globalActions` (object-less actions), `dashboards`, `datasets`, `pages`,
171-
`flows`, `metadataForms`, `settingsCommon`. `settings` is **platform-only** — it is
172-
keyed by a settings manifest's namespace and only the platform declares one, so an
173-
app bundle carrying it is refused by name.
170+
`messages`, `globalActions` (actions with no `objectName` — a key naming a bound action is
171+
an **error** whose message names the `objects.{owner}._actions.{action_name}` key to write
172+
instead), `dashboards`, `datasets`, `pages`, `flows`, `metadataForms`, `settingsCommon`.
173+
`settings` is **platform-only** — it is keyed by a settings manifest's namespace and only
174+
the platform declares one, so an app bundle carrying it is refused by name.
174175

175176
For the exact Zod shape (and any field that may have been added since), read
176177
`node_modules/@objectstack/spec/src/system/translation.zod.ts` —
@@ -199,8 +200,14 @@ parse, ship, and resolve to nothing.
199200
is an **error** and fails the run; `translation-option-key-unknown` is a warning.
200201
A key naming an object, field, view, tab, action, param, section, validation rule, app,
201202
nav item, dashboard, widget or flow screen that does not exist is listed alongside the names
202-
that do. A bundle keyed to something since renamed still parses — the label just renders
203-
silently in its source locale while every neighbouring one resolves.
203+
that do. Three more shapes under an action entry are the error: an outcome the action does
204+
not declare in `outcomeMessages`; a `resultDialog.fields` path it does not declare; and
205+
`resultDialog` `title` / `description` / `acknowledge` under an action that declares no
206+
`resultDialog` — a bundle translates a dialog the action declares and cannot add one. A
207+
param's inline option keys share the option warning with a field's `options`; a param that
208+
references a `field` and declares no inline `options` is not judged. A bundle keyed to
209+
something since renamed still parses — the label just renders silently in its source locale
210+
while every neighbouring one resolves.
204211

205212
---
206213

0 commit comments

Comments
 (0)