Fighting Game · Guides & deep dives

V2 Plural Forms

Plural rules live in V2/ue/Content/Localization/V2/Plural/PluralRules_V2.json.

3sections1 minread

On this page

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