What
showcase_account and showcase_task declare seven and one author-written
validations[].message respectively, and none of them is on the #14253 translation
channel. On a zh-CN session those refusals arrive in English while the platform's own
built-in refusals (which have shipped zh-CN since #3957) arrive in Chinese — two
languages inside one error envelope.
This is the same defect #14311 fixed for showcase_project. That card's scope was the
New Project wizard, so only showcase_project's four rules were put on the channel
(PR #14517). The remaining eight were found while doing it and are recorded here rather
than widened into that PR.
Where
Untranslated authored rule messages, none of which has a
objects.OBJECT._validations.RULE.message entry in
examples/app-showcase/src/system/translations/index.ts:
examples/app-showcase/src/data/objects/account.object.ts — account_lifecycle,
tax_id_format, billing_email_format, support_config_shape,
churn_reason_consistency and its two nested conditional branches
(churn_reason_present, churn_reason_absent).examples/app-showcase/src/data/objects/task.object.ts — task_status_flow.
examples/app-crm has no _validations block at all, so every authored message in that
app is in the same position; whether the CRM demo is meant to be localised at all is a
separate question and is not assumed here.
Note that a nested conditional branch carries its own name and is addressed by that
name — the wrapping rule's message never reaches a user — so the two churn_reason_*
branches each need their own entry.
Why it is worth doing
The showcase is the app people read to learn what a correct ObjectStack app looks like.
An authored message with no bundle entry is the one way a refusal escapes the caller's
language, and the channel to fix it already exists and is already demonstrated on
showcase_project.
Suggested shape
Mirror what PR #14517 did for showcase_project: add en + zh-CN_validations
entries for each rule, and extend the pin in
examples/app-showcase/test/new-project-wizard-initial-status.test.ts (which today
asserts the invariant for showcase_project's whole rule set) to cover these objects
too — or lift it into a bundle-wide check so a newly declared rule without a translation
fails rather than rots.
Found while implementing #14311.
Generated by Claude Code
What
showcase_accountandshowcase_taskdeclare seven and one author-writtenvalidations[].messagerespectively, and none of them is on the #14253 translationchannel. On a
zh-CNsession those refusals arrive in English while the platform's ownbuilt-in refusals (which have shipped
zh-CNsince #3957) arrive in Chinese — twolanguages inside one error envelope.
This is the same defect #14311 fixed for
showcase_project. That card's scope was theNew Project wizard, so only
showcase_project's four rules were put on the channel(PR #14517). The remaining eight were found while doing it and are recorded here rather
than widened into that PR.
Where
Untranslated authored rule messages, none of which has a
objects.OBJECT._validations.RULE.messageentry inexamples/app-showcase/src/system/translations/index.ts:examples/app-showcase/src/data/objects/account.object.ts—account_lifecycle,tax_id_format,billing_email_format,support_config_shape,churn_reason_consistencyand its two nested conditional branches(
churn_reason_present,churn_reason_absent).examples/app-showcase/src/data/objects/task.object.ts—task_status_flow.examples/app-crmhas no_validationsblock at all, so every authored message in thatapp is in the same position; whether the CRM demo is meant to be localised at all is a
separate question and is not assumed here.
Note that a nested
conditionalbranch carries its ownnameand is addressed by thatname — the wrapping rule's message never reaches a user — so the two
churn_reason_*branches each need their own entry.
Why it is worth doing
The showcase is the app people read to learn what a correct ObjectStack app looks like.
An authored message with no bundle entry is the one way a refusal escapes the caller's
language, and the channel to fix it already exists and is already demonstrated on
showcase_project.Suggested shape
Mirror what PR #14517 did for
showcase_project: adden+zh-CN_validationsentries for each rule, and extend the pin in
examples/app-showcase/test/new-project-wizard-initial-status.test.ts(which todayasserts the invariant for
showcase_project's whole rule set) to cover these objectstoo — or lift it into a bundle-wide check so a newly declared rule without a translation
fails rather than rots.
Found while implementing #14311.
Generated by Claude Code