English has two plural forms: "1 car" and "2 cars". Russian has four. Arabic has six. If your screenshot says "5 messages" and you string-replace the number, the translation collapses on contact with most non-English locales.
The CLDR categories
Unicode CLDR — and the ICU library that implements it — defines six plural categories:
zero— for 0 in some languages.one— singular.two— dual, used in Welsh and Slovenian.few— small numbers, used in Slavic languages.many— large numbers, used in Russian, Polish, Arabic.other— the catch-all. Mandatory in every rule set.
How many forms each language uses
- English, German, Spanish: 2 (one, other).
- French: 2, but the rule for "one" includes 0 ("0 voiture").
- Russian, Polish, Ukrainian: 4 (one, few, many, other).
- Arabic: 6. All categories.
- Welsh: 6. Different rules than Arabic.
- Japanese, Chinese, Korean: 1. There is no plural inflection.
The screenshot trap
A hero that says "1,200 stocks tracked" works in English. In Russian, the form depends on whether the number ends in 1, in 2-4, or in 5-9, with a separate rule for 11-19. Hand-translating "1,200 stocks" without a plural-aware tool gives a sentence that reads "amateur" to any native Russian speaker.
iOS and Android tooling
- iOS:
.stringsdictfiles. Per-key rules with the CLDR categories, fed toNSLocalizedStringvialocalizedStringWithFormat. - Android:
plurals.xmlresource type, quantity attributeszerothroughother, consumed bygetQuantityString. - Web: ICU MessageFormat, parsed by libraries like formatjs or i18next.
Shortcut for screenshots
If a screenshot only shows a single specific number ("12,000 photos"), the translator can write the right Russian form by hand. The plural problem is real for dynamic in-app strings, not for hand-tuned hero copy. So: for the screenshot itself, just translate the exact phrase. For the in-app text behind it, use a real plural format.