GuideMar 27, 20265 min read

One car, two cars: plural rules in app screenshots

English has two plural forms. Russian has four. Arabic has six. CLDR's six categories explain why hardcoded copy breaks abroad.

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: .stringsdict files. Per-key rules with the CLDR categories, fed to NSLocalizedString via localizedStringWithFormat.
  • Android: plurals.xml resource type, quantity attributes zero through other, consumed by getQuantityString.
  • 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.

Y

Written by Yassine

Indie dev. Built lokal because translating App Store screenshots by hand was eating my launches. Reach out at hi@lokall.app.

Try lokal on your screenshots.

Translate into every language in seconds.