Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion versions/1.2.md
Original file line number Diff line number Diff line change
Expand Up @@ -1595,6 +1595,11 @@ entities:

The set of languages the whole stack supports is a platform concern, never defined per module. The top-level `languages:` only declares which languages this module provides.

A [report](#reports) reads the same data, so it reads it in the same language: a column bound to a translatable property is shown translated, whether the report is rooted at the multilingual entity or reaches it through a relation. A report grouping by a multilingual nomenclature therefore shows the same term as the pages beside it — before this was stated, a status column could read `DRAFT` next to a list reading the translated word, from the same record.

> **Normative.**
> Every read of a translatable property of a `multilingual: true` entity is served in the caller's requested language, and a report column bound to such a property is such a read. What a report **matches** is unaffected: a report's `filter:`, its [`scope`](#lifecycle-scope) and any condition applied to it are evaluated against the stored, untranslated values — so translating content can never change which rows a report returns, only how they read. A property with no translation for the requested language, and a caller who requested none, both read the stored value.

#### UI labels

Generation also emits a per-project translation catalogue for every generated label: entity names (a humanised singular plus a plural form), field labels, form and report names, and report column headers. The default locale is generated for you; a translator adds a sibling locale folder with the same keys. The UI renders through these keys, falling back to the baked default label for any key a locale has not translated.
Expand Down Expand Up @@ -1661,7 +1666,7 @@ One line per construct, linking into the chapters above.
| [`seeds`](#seeds) | initial data, CSV-backed sets, translations |
| [`stage`](#stage--what-a-status-means-to-the-lifecycle) | classify a status: draft / live / cancelled / void |
| [status names](#status-references--name-not-number) | reference a status by its seeded name, not its positional id |
| [`multilingual` / `languages`](#multilingual-data) | translation tables + read-time translation overlay |
| [`multilingual` / `languages`](#multilingual-data) | translation tables + read-time translation overlay, on entity reads and report columns alike |
| [`permissions`](#permissions) | roles |

### Planned — recognised but not yet implemented
Expand Down