Skip to main content
shipi18n logo|Documentation

plural-forms: plural forms lost in translation

error — fails the build

A pipe-separated plural string ("1 item|{{count}} items") came back from translation with fewer forms than the source. The plural rules of the target language stop working — usually every quantity renders the same form.

What triggers it

// en.json
{ "items": "1 item|{{count}} items" }

// ru.json
{ "items": "{{count}} элементов" }   // collapsed to one form

Fixed

// ru.json
{ "items": "1 элемент|{{count}} элемента|{{count}} элементов" }

Why it matters

Plural collapse is easy to miss because the string still reads fluently — for one of the quantities. Languages like Russian, Arabic and Polish need more forms than English, not fewer.

How to fix it

Restore every form the target language needs, separated by |. Retranslation via the engine preserves plural structure.

How to silence it

--ignore-keys 'path.to.key' if the collapse is deliberate for that key.

Check for this in CI

npx @shipi18n/cli check ./locales -s en
# SARIF for inline PR annotations:
npx @shipi18n/cli check ./locales -s en -r sarif -o shipi18n.sarif

The structural checks need no API key. Findings of this rule link back to this page from the SARIF helpUri.

Related rules