diff --git a/docs/adr/0019-friendly-error-layer-and-i18n.md b/docs/adr/0019-friendly-error-layer-and-i18n.md index e76abd7..762153e 100644 --- a/docs/adr/0019-friendly-error-layer-and-i18n.md +++ b/docs/adr/0019-friendly-error-layer-and-i18n.md @@ -369,19 +369,28 @@ up the value in the supplied keyword arguments, and inserts it. Unknown placeholders → translation error (caught at test time when the catalog is exercised). -#### 8.5 Pluralisation — `(s)` suffix for now +#### 8.5 Pluralisation — translator's choice, not a system feature The existing codebase uses the `"{count} row(s) inserted"` style. The catalog continues this. -Real plural-form rules per locale (Fluent / ICU MessageFormat -have zero / one / few / many / two / other tagged forms, -language-specific) are explicitly **deferred**. Adding them is -a meaningful design lift, not a drop-in upgrade, and the H1 -scope here is already wide enough. -A future "advanced i18n" ADR would address pluralisation, -gendered forms, ordinals, and date/number formatting hooks. -This ADR documents that the limitation is known and intentional. +Pluralisation is **a translator concern, not a system +concern**. Placeholders only carry values (§8.4); the wording +around them is fully under the translator's control. Languages +that have an equivalent of the `(s)` shorthand can use it; +languages that don't can rephrase to avoid the question +entirely (`"applied to {count} row(s)"` → +`"applied to {count} rows in total"` works for every count). +For a teaching tool with a narrow output surface this is +sufficient. + +Real plural-form rules per locale (Fluent / ICU MessageFormat, +with zero / one / few / many / two / other tagged forms) are +**explicitly not a goal of this project**. They would let a +template supply separate singular and plural strings indexed +by the same count, which is technically nicer but not +materially better for the kind of output this app produces. +We are not going to add them. #### 8.6 Validation @@ -518,7 +527,9 @@ These are deliberately deferred to keep H1 shippable: ADR-0002. Today's H1 does not handle this path. 3. **Settings persistence for the `messages` command.** Lives in a future settings ADR. -4. **Plural-form rules per locale.** §8.5. +4. **Plural-form rules per locale.** §8.5 — explicitly not a + goal, not just deferred. Translations handle pluralisation + in their wording (`(s)` shorthand or rephrased). 5. **Runtime locale selection.** §8.2. 6. **Locale-aware value formatting.** §8.7 — explicitly rejected, not just deferred.