ADR-0019: pluralisation is a translator concern, not deferred work
Per follow-up review: §8.5's framing read as "we'll do this properly later". Reword to make it explicit that real plural-form rules per locale (Fluent / ICU) are NOT a goal of this project. Translators handle pluralisation in their wording (`(s)` shorthand or rephrased templates) — sufficient for a teaching tool's output surface, and we're not planning to revisit it. Matching Out-of-Scope entry tightened the same way.
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user