# V2 Plural Forms

This document defines plural forms handling for `TODOS.phase-72.72.11.1.6`. The
implementation covers English, Russian, and Arabic because they exercise the
launch-critical plural category shapes:

- English: `one`, `other`
- Russian: `one`, `few`, `many`
- Arabic: `zero`, `one`, `two`, `few`, `many`, `other`

## Data Files

Plural rules live in `V2/ue/Content/Localization/V2/Plural/PluralRules_V2.json`.
Pluralized string forms live in
`V2/ue/Content/Localization/V2/Plural/PluralStrings_V2.json`.

The sample string is `loc.system.inventory.item_count.body`, which uses the
named count variable `{count}`. Every locale form must include `{count}` so the
runtime formatter can substitute the evaluated number consistently.

## Evaluation

`V2/ue/Tools/evaluate-v2-plural-forms.py` evaluates every configured locale
against the tracked counts and writes
`V2/ue/Content/Localization/V2/Plural/PluralFormsEvaluation_V2.json`.

The evaluator uses the following rules:

- English: `1` is `one`; everything else is `other`.
- Russian: integer counts ending in `1` but not `11` are `one`; endings `2` to
  `4` outside `12` to `14` are `few`; all other tracked integers are `many`.
- Arabic: `0` is `zero`, `1` is `one`, `2` is `two`, `3` to `10` are `few`, `11`
  to `99` are `many`, and the remaining tracked counts are `other`.

## Verification

Run this gate after changing rules, plural strings, evaluator logic, generated
evaluation output, docs, or CI wiring:

```bash
python3 V2/ue/Tools/check-v2-plural-forms.py
```

Required release gates:

- `localization-plural-forms-contract`
- `localization-plural-forms-english-two`
- `localization-plural-forms-russian-three`
- `localization-plural-forms-arabic-six`
- `localization-plural-forms-deterministic-output`
- `localization-plural-forms-ci-wired`
