Translation schema — System Protocol reference Translation schemas of the ObjectStack System Protocol — each property with its type, default and a TypeScript example.
Source: packages/spec/src/system/translation.zod.ts
import { ActionResultDialogTranslationSchema, CoverageBreakdownEntrySchema, FieldTranslationSchema, LocaleSchema, ObjectTranslationDataSchema, PlatformTranslationBundleSchema, PlatformTranslationDataSchema, TranslationBundleSchema, TranslationConfigSchema, TranslationCoverageResultSchema, TranslationDataSchema, TranslationDiffItemSchema, TranslationDiffStatusSchema, TranslationItemSchema } from '@objectstack/spec/system' ;
import type { ActionResultDialogTranslation, CoverageBreakdownEntry, FieldTranslation, Locale, ObjectTranslationData, PlatformTranslationBundle, PlatformTranslationData, TranslationBundle, TranslationConfig, TranslationCoverageResult, TranslationData, TranslationDiffItem, TranslationDiffStatus, TranslationItem } from '@objectstack/spec/system' ;
// Validate data
const result = ActionResultDialogTranslationSchema. parse (data);
Translations for an action result dialog
Property Type Required Description title stringoptional Translated result dialog title description stringoptional Translated result dialog description acknowledge stringoptional Translated acknowledge button label fields Record<string, string>optional Result field labels keyed by the literal field path declared in the action metadata (keys may contain dots)
Coverage breakdown for a single translation group
Property Type Required Description group string✅ Translation group category totalKeys integer✅ Total keys in this group translatedKeys integer✅ Translated keys in this group coveragePercent number✅ Coverage percentage for this group
Translation data for a single field
Property Type Required Description label stringoptional Translated field label help stringoptional Translated help text placeholder stringoptional Translated placeholder text for form inputs options Record<string, string>optional Option value to translated label map
BCP-47 Language Tag (e.g. en-US, zh-CN)
Type: string
Translation data for a single object
Property Type Required Description label stringoptional Translated singular label pluralLabel stringoptional Translated plural label description stringoptional Translated object description fields Record<string, { label?: string; help?: string; placeholder?: string; options?: Record<string, string> }>optional Field-level translations _views Record<string, { label?: string; description?: string; emptyState?: object; bulkActions?: Record<string, object> }>optional View translations keyed by view name _actions Record<string, { label?: string; description?: string; confirmText?: string; successMessage?: string; … }>optional Action translations keyed by action name _sections Record<string, { label?: string; description?: string }>optional Section translations keyed by section name _tabs Record<string, { label?: string }>optional Filter-preset tab translations keyed by tab name _validations Record<string, { message?: string }>optional Custom validation-rule messages keyed by rule name (ValidationRuleSchema.name)
Translation data for a single field
Property Type Required Description label stringoptional Translated field label help stringoptional Translated help text placeholder stringoptional Translated placeholder text for form inputs options Record<string, string>optional Option value to translated label map
Property Type Required Description label stringoptional Translated view label description stringoptional Translated view description emptyState { title?: string; message?: string }optional Translated empty-state copy shown when the view has no rows bulkActions Record<string, { label?: string; confirmText?: string; confirmLabel?: string; params?: Record<string, object> }>optional Selection-bar translations keyed by bulk-action def name (BulkActionDefSchema.name)
Property Type Required Description label stringoptional Translated action label description stringoptional Translated action description — the explanatory line under the title in the action's param dialog confirmText stringoptional Translated confirmation prompt successMessage stringoptional Translated success toast/message outcomeMessages Record<string, string>optional Translated success copy per handler outcome, keyed by the snake_case outcome name the action's outcomeMessages declares params Record<string, { label?: string; helpText?: string; placeholder?: string; options?: Record<string, string> }>optional Action parameter translations keyed by parameter name resultDialog { title?: string; description?: string; acknowledge?: string; fields?: Record<string, string> }optional Translations for the action result dialog
Property Type Required Description label stringoptional Translated section label description stringoptional Translated section description
Property Type Required Description label stringoptional Translated tab label
Property Type Required Description message stringoptional Translated rejection message — overlays the rule's authored message on every rejected write
Map of locale codes to platform translation data
Type: Record<string, { objects?: Record<string, object>; picklists?: Record<string, object>; apps?: Record<string, object>; messages?: Record<string, string>; … }>
Platform translation data — the per-app groups plus the platform-only settings
Property Type Required Description objects Record<string, { label?: string; pluralLabel?: string; description?: string; fields?: Record<string, object>; … }>optional Object translations keyed by object name picklists Record<string, { label?: string; options: Record<string, string> }>optional Picklist translations keyed by picklist name apps Record<string, { label: string; description?: string; navigation?: Record<string, object> }>optional App translations keyed by app name messages Record<string, string>optional UI message translations keyed by message ID globalActions Record<string, { label?: string; description?: string; confirmText?: string; successMessage?: string; … }>optional Global action translations keyed by action name dashboards Record<string, { label?: string; description?: string; actions?: Record<string, object>; widgets?: Record<string, object>; … }>optional Dashboard translations keyed by dashboard name datasets Record<string, { label?: string; description?: string; dimensions?: Record<string, object>; measures?: Record<string, object> }>optional Analytics dataset translations keyed by dataset name pages Record<string, { label?: string; description?: string; title?: string; subtitle?: string; … }>optional Page translations keyed by page name flows Record<string, { label?: string; successMessage?: string; errorMessage?: string; screens?: Record<string, object>; … }>optional Screen-flow translations keyed by flow name metadataForms Record<string, { label?: string; description?: string; sections?: Record<string, object>; fields?: Record<string, object> }>optional Translations for metadata-type configuration forms keyed by metadata type settingsCommon { sourceLabels?: object }optional Cross-namespace Settings UI strings settings Record<string, { title?: string; description?: string; groups?: Record<string, object>; keys?: Record<string, object>; … }>optional Settings manifest translations keyed by namespace
Translation data for a single object
Property Type Required Description label stringoptional Translated singular label pluralLabel stringoptional Translated plural label description stringoptional Translated object description fields Record<string, { label?: string; help?: string; placeholder?: string; options?: Record<string, string> }>optional Field-level translations _views Record<string, { label?: string; description?: string; emptyState?: object; bulkActions?: Record<string, object> }>optional View translations keyed by view name _actions Record<string, { label?: string; description?: string; confirmText?: string; successMessage?: string; … }>optional Action translations keyed by action name _sections Record<string, { label?: string; description?: string }>optional Section translations keyed by section name _tabs Record<string, { label?: string }>optional Filter-preset tab translations keyed by tab name _validations Record<string, { message?: string }>optional Custom validation-rule messages keyed by rule name (ValidationRuleSchema.name)
Property Type Required Description label stringoptional Translated picklist label options Record<string, string>✅ Option value to translated label map — inherited by every field that references the picklist
Property Type Required Description label string✅ Translated app label description stringoptional Translated app description navigation Record<string, { label: string }>optional Navigation group translations keyed by group ID
Property Type Required Description label stringoptional Translated action label description stringoptional Translated action description — the explanatory line under the title in the action's param dialog confirmText stringoptional Translated confirmation prompt successMessage stringoptional Translated success toast/message outcomeMessages Record<string, string>optional Translated success copy per handler outcome, keyed by the snake_case outcome name the action's outcomeMessages declares params Record<string, { label?: string; helpText?: string; placeholder?: string; options?: Record<string, string> }>optional Action parameter translations keyed by parameter name resultDialog { title?: string; description?: string; acknowledge?: string; fields?: Record<string, string> }optional Translations for the action result dialog
Property Type Required Description label stringoptional Translated dashboard title description stringoptional Translated dashboard description actions Record<string, { label?: string }>optional Header action label translations keyed by action url/key widgets Record<string, { title?: string; description?: string }>optional Widget translations keyed by widget id globalFilters Record<string, { label?: string; options?: Record<string, string> }>optional Global-filter translations keyed by the filter name (a filter that authors no name is keyed by its field)
Property Type Required Description label stringoptional Translated dataset label description stringoptional Translated dataset description dimensions Record<string, { label?: string }>optional Dimension translations keyed by dimension name (DatasetDimensionSchema.name) measures Record<string, { label?: string }>optional Measure translations keyed by measure name (DatasetMeasureSchema.name)
Property Type Required Description label stringoptional Translated page label (nav / breadcrumb) description stringoptional Translated page description title stringoptional Translated page:header title. When omitted the header keeps its authored title; label stands in only where the header authors no title or its title restates the page label subtitle stringoptional Translated page:header subtitle components Record<string, { title?: string; description?: string; label?: string; placeholder?: string; … }>optional Per-component copy keyed by component id (PageComponentSchema.id)
Property Type Required Description label stringoptional Translated flow label successMessage stringoptional Translated completion toast — overlays the flow's own successMessage, a plain string the engine carries verbatim on the terminal result; only a flow that authors one is translated errorMessage stringoptional Translated failure toast — overlays the flow's own errorMessage, a plain string the engine carries verbatim on the terminal result; only a flow that authors one is translated screens Record<string, { title?: string; description?: string; fields?: Record<string, object> }>optional Screen translations keyed by screen node id (FlowNode.id, the client's ScreenSpec.nodeId) refusals Record<string, { message?: string }>optional Refusal translations keyed by the node id (FlowNode.id) of an end node declaring outcome: 'refused'
Property Type Required Description label stringoptional Translated metadata-type display label (overrides registry label) description stringoptional Translated metadata-type description sections Record<string, { label?: string; description?: string }>optional Section translations keyed by section.name fields Record<string, { label?: string; helpText?: string; placeholder?: string }>optional Field translations keyed by field path (dot-notation for nested fields)
Property Type Required Description sourceLabels { env?: string; global?: string; tenant?: string; user?: string; … }optional Source badge labels by resolution layer
Property Type Required Description title stringoptional Translated settings manifest title description stringoptional Translated settings manifest description groups Record<string, { title?: string; description?: string }>optional Group translations keyed by group key keys Record<string, { label?: string; help?: string; placeholder?: string; options?: Record<string, string> }>optional Per-setting field translations keyed by setting key actions Record<string, { label?: string; confirmText?: string; successMessage?: string }>optional Action button translations keyed by action id
Map of locale codes to per-app translation data
Type: Record<string, { objects?: Record<string, object>; picklists?: Record<string, object>; apps?: Record<string, object>; messages?: Record<string, string>; … }>
Internationalization configuration
Property Type Required Description defaultLocale string✅ Default locale (e.g., "en") supportedLocales string[]✅ Supported BCP-47 locale codes fallbackLocale stringoptional Fallback locale code
Aggregated translation coverage result
Property Type Required Description locale string✅ BCP-47 locale code objectName stringoptional Object name scope (omit for full bundle) totalKeys integer✅ Total translatable keys from metadata translatedKeys integer✅ Number of translated keys missingKeys integer✅ Number of missing translations redundantKeys integer✅ Number of redundant translations staleKeys integer✅ Number of stale translations coveragePercent number✅ Translation coverage percentage items { key: string; status: Enum<'missing' | 'redundant' | 'stale'>; objectName?: string; locale: string; … }[]✅ Detailed diff items breakdown { group: string; totalKeys: integer; translatedKeys: integer; coveragePercent: number }[]optional Per-group coverage breakdown
A single translation diff item
Property Type Required Description key string✅ Dot-path translation key status Enum<'missing' | 'redundant' | 'stale'>✅ Diff status of this translation key objectName stringoptional Associated object name (snake_case) locale string✅ BCP-47 locale code sourceHash stringoptional Hash of source metadata for precise stale detection aiSuggested stringoptional AI-suggested translation for this key aiConfidence numberoptional AI suggestion confidence score (0–1)
Coverage breakdown for a single translation group
Property Type Required Description group string✅ Translation group category totalKeys integer✅ Total keys in this group translatedKeys integer✅ Translated keys in this group coveragePercent number✅ Coverage percentage for this group
Per-app translation data for objects, apps, and UI messages
Property Type Required Description objects Record<string, { label?: string; pluralLabel?: string; description?: string; fields?: Record<string, object>; … }>optional Object translations keyed by object name picklists Record<string, { label?: string; options: Record<string, string> }>optional Picklist translations keyed by picklist name apps Record<string, { label: string; description?: string; navigation?: Record<string, object> }>optional App translations keyed by app name messages Record<string, string>optional UI message translations keyed by message ID globalActions Record<string, { label?: string; description?: string; confirmText?: string; successMessage?: string; … }>optional Global action translations keyed by action name dashboards Record<string, { label?: string; description?: string; actions?: Record<string, object>; widgets?: Record<string, object>; … }>optional Dashboard translations keyed by dashboard name datasets Record<string, { label?: string; description?: string; dimensions?: Record<string, object>; measures?: Record<string, object> }>optional Analytics dataset translations keyed by dataset name pages Record<string, { label?: string; description?: string; title?: string; subtitle?: string; … }>optional Page translations keyed by page name flows Record<string, { label?: string; successMessage?: string; errorMessage?: string; screens?: Record<string, object>; … }>optional Screen-flow translations keyed by flow name metadataForms Record<string, { label?: string; description?: string; sections?: Record<string, object>; fields?: Record<string, object> }>optional Translations for metadata-type configuration forms keyed by metadata type settingsCommon { sourceLabels?: object }optional Cross-namespace Settings UI strings
Translation data for a single object
Property Type Required Description label stringoptional Translated singular label pluralLabel stringoptional Translated plural label description stringoptional Translated object description fields Record<string, { label?: string; help?: string; placeholder?: string; options?: Record<string, string> }>optional Field-level translations _views Record<string, { label?: string; description?: string; emptyState?: object; bulkActions?: Record<string, object> }>optional View translations keyed by view name _actions Record<string, { label?: string; description?: string; confirmText?: string; successMessage?: string; … }>optional Action translations keyed by action name _sections Record<string, { label?: string; description?: string }>optional Section translations keyed by section name _tabs Record<string, { label?: string }>optional Filter-preset tab translations keyed by tab name _validations Record<string, { message?: string }>optional Custom validation-rule messages keyed by rule name (ValidationRuleSchema.name)
Property Type Required Description label stringoptional Translated picklist label options Record<string, string>✅ Option value to translated label map — inherited by every field that references the picklist
Property Type Required Description label string✅ Translated app label description stringoptional Translated app description navigation Record<string, { label: string }>optional Navigation group translations keyed by group ID
Property Type Required Description label stringoptional Translated action label description stringoptional Translated action description — the explanatory line under the title in the action's param dialog confirmText stringoptional Translated confirmation prompt successMessage stringoptional Translated success toast/message outcomeMessages Record<string, string>optional Translated success copy per handler outcome, keyed by the snake_case outcome name the action's outcomeMessages declares params Record<string, { label?: string; helpText?: string; placeholder?: string; options?: Record<string, string> }>optional Action parameter translations keyed by parameter name resultDialog { title?: string; description?: string; acknowledge?: string; fields?: Record<string, string> }optional Translations for the action result dialog
Property Type Required Description label stringoptional Translated dashboard title description stringoptional Translated dashboard description actions Record<string, { label?: string }>optional Header action label translations keyed by action url/key widgets Record<string, { title?: string; description?: string }>optional Widget translations keyed by widget id globalFilters Record<string, { label?: string; options?: Record<string, string> }>optional Global-filter translations keyed by the filter name (a filter that authors no name is keyed by its field)
Property Type Required Description label stringoptional Translated dataset label description stringoptional Translated dataset description dimensions Record<string, { label?: string }>optional Dimension translations keyed by dimension name (DatasetDimensionSchema.name) measures Record<string, { label?: string }>optional Measure translations keyed by measure name (DatasetMeasureSchema.name)
Property Type Required Description label stringoptional Translated page label (nav / breadcrumb) description stringoptional Translated page description title stringoptional Translated page:header title. When omitted the header keeps its authored title; label stands in only where the header authors no title or its title restates the page label subtitle stringoptional Translated page:header subtitle components Record<string, { title?: string; description?: string; label?: string; placeholder?: string; … }>optional Per-component copy keyed by component id (PageComponentSchema.id)
Property Type Required Description label stringoptional Translated flow label successMessage stringoptional Translated completion toast — overlays the flow's own successMessage, a plain string the engine carries verbatim on the terminal result; only a flow that authors one is translated errorMessage stringoptional Translated failure toast — overlays the flow's own errorMessage, a plain string the engine carries verbatim on the terminal result; only a flow that authors one is translated screens Record<string, { title?: string; description?: string; fields?: Record<string, object> }>optional Screen translations keyed by screen node id (FlowNode.id, the client's ScreenSpec.nodeId) refusals Record<string, { message?: string }>optional Refusal translations keyed by the node id (FlowNode.id) of an end node declaring outcome: 'refused'
Property Type Required Description label stringoptional Translated metadata-type display label (overrides registry label) description stringoptional Translated metadata-type description sections Record<string, { label?: string; description?: string }>optional Section translations keyed by section.name fields Record<string, { label?: string; helpText?: string; placeholder?: string }>optional Field translations keyed by field path (dot-notation for nested fields)
Property Type Required Description sourceLabels { env?: string; global?: string; tenant?: string; user?: string; … }optional Source badge labels by resolution layer
A single translation diff item
Property Type Required Description key string✅ Dot-path translation key status Enum<'missing' | 'redundant' | 'stale'>✅ Diff status of this translation key objectName stringoptional Associated object name (snake_case) locale string✅ BCP-47 locale code sourceHash stringoptional Hash of source metadata for precise stale detection aiSuggested stringoptional AI-suggested translation for this key aiConfidence numberoptional AI suggestion confidence score (0–1)
Translation diff status: missing from bundle, redundant (no matching metadata), or stale (metadata changed)
One locale of translations — the translation metadata type
Property Type Required Description objects Record<string, { label?: string; pluralLabel?: string; description?: string; fields?: Record<string, object>; … }>optional Object translations keyed by object name picklists Record<string, { label?: string; options: Record<string, string> }>optional Picklist translations keyed by picklist name apps Record<string, { label: string; description?: string; navigation?: Record<string, object> }>optional App translations keyed by app name messages Record<string, string>optional UI message translations keyed by message ID globalActions Record<string, { label?: string; description?: string; confirmText?: string; successMessage?: string; … }>optional Global action translations keyed by action name dashboards Record<string, { label?: string; description?: string; actions?: Record<string, object>; widgets?: Record<string, object>; … }>optional Dashboard translations keyed by dashboard name datasets Record<string, { label?: string; description?: string; dimensions?: Record<string, object>; measures?: Record<string, object> }>optional Analytics dataset translations keyed by dataset name pages Record<string, { label?: string; description?: string; title?: string; subtitle?: string; … }>optional Page translations keyed by page name flows Record<string, { label?: string; successMessage?: string; errorMessage?: string; screens?: Record<string, object>; … }>optional Screen-flow translations keyed by flow name metadataForms Record<string, { label?: string; description?: string; sections?: Record<string, object>; fields?: Record<string, object> }>optional Translations for metadata-type configuration forms keyed by metadata type settingsCommon { sourceLabels?: object }optional Cross-namespace Settings UI strings locale string✅ BCP-47 locale this item translates (e.g. "zh-CN") name stringoptional Item name — conventionally the locale code (zh-CN); the runtime sync falls back to it when locale is absent label stringoptional Human-readable label shown in metadata lists _lock Enum<'none' | 'no-overlay' | 'no-delete' | 'full'>optional Item-level lock — controls overlay & delete (ADR-0010). _lockReason stringoptional Human-readable reason shown when a write is refused by _lock. _lockSource Enum<'artifact' | 'package' | 'env-forced'>optional Layer that set _lock (artifact | package | env-forced). _provenance Enum<'package' | 'org' | 'env-forced'>optional Origin of the item (package | org | env-forced). _packageId stringoptional Owning package machine id. _packageVersion stringoptional Owning package version. _lockDocsUrl stringoptional Optional documentation link surfaced next to _lockReason.
Translation data for a single object
Property Type Required Description label stringoptional Translated singular label pluralLabel stringoptional Translated plural label description stringoptional Translated object description fields Record<string, { label?: string; help?: string; placeholder?: string; options?: Record<string, string> }>optional Field-level translations _views Record<string, { label?: string; description?: string; emptyState?: object; bulkActions?: Record<string, object> }>optional View translations keyed by view name _actions Record<string, { label?: string; description?: string; confirmText?: string; successMessage?: string; … }>optional Action translations keyed by action name _sections Record<string, { label?: string; description?: string }>optional Section translations keyed by section name _tabs Record<string, { label?: string }>optional Filter-preset tab translations keyed by tab name _validations Record<string, { message?: string }>optional Custom validation-rule messages keyed by rule name (ValidationRuleSchema.name)
Property Type Required Description label stringoptional Translated picklist label options Record<string, string>✅ Option value to translated label map — inherited by every field that references the picklist
Property Type Required Description label string✅ Translated app label description stringoptional Translated app description navigation Record<string, { label: string }>optional Navigation group translations keyed by group ID
Property Type Required Description label stringoptional Translated action label description stringoptional Translated action description — the explanatory line under the title in the action's param dialog confirmText stringoptional Translated confirmation prompt successMessage stringoptional Translated success toast/message outcomeMessages Record<string, string>optional Translated success copy per handler outcome, keyed by the snake_case outcome name the action's outcomeMessages declares params Record<string, { label?: string; helpText?: string; placeholder?: string; options?: Record<string, string> }>optional Action parameter translations keyed by parameter name resultDialog { title?: string; description?: string; acknowledge?: string; fields?: Record<string, string> }optional Translations for the action result dialog
Property Type Required Description label stringoptional Translated dashboard title description stringoptional Translated dashboard description actions Record<string, { label?: string }>optional Header action label translations keyed by action url/key widgets Record<string, { title?: string; description?: string }>optional Widget translations keyed by widget id globalFilters Record<string, { label?: string; options?: Record<string, string> }>optional Global-filter translations keyed by the filter name (a filter that authors no name is keyed by its field)
Property Type Required Description label stringoptional Translated dataset label description stringoptional Translated dataset description dimensions Record<string, { label?: string }>optional Dimension translations keyed by dimension name (DatasetDimensionSchema.name) measures Record<string, { label?: string }>optional Measure translations keyed by measure name (DatasetMeasureSchema.name)
Property Type Required Description label stringoptional Translated page label (nav / breadcrumb) description stringoptional Translated page description title stringoptional Translated page:header title. When omitted the header keeps its authored title; label stands in only where the header authors no title or its title restates the page label subtitle stringoptional Translated page:header subtitle components Record<string, { title?: string; description?: string; label?: string; placeholder?: string; … }>optional Per-component copy keyed by component id (PageComponentSchema.id)
Property Type Required Description label stringoptional Translated flow label successMessage stringoptional Translated completion toast — overlays the flow's own successMessage, a plain string the engine carries verbatim on the terminal result; only a flow that authors one is translated errorMessage stringoptional Translated failure toast — overlays the flow's own errorMessage, a plain string the engine carries verbatim on the terminal result; only a flow that authors one is translated screens Record<string, { title?: string; description?: string; fields?: Record<string, object> }>optional Screen translations keyed by screen node id (FlowNode.id, the client's ScreenSpec.nodeId) refusals Record<string, { message?: string }>optional Refusal translations keyed by the node id (FlowNode.id) of an end node declaring outcome: 'refused'
Property Type Required Description label stringoptional Translated metadata-type display label (overrides registry label) description stringoptional Translated metadata-type description sections Record<string, { label?: string; description?: string }>optional Section translations keyed by section.name fields Record<string, { label?: string; helpText?: string; placeholder?: string }>optional Field translations keyed by field path (dot-notation for nested fields)
Property Type Required Description sourceLabels { env?: string; global?: string; tenant?: string; user?: string; … }optional Source badge labels by resolution layer