Working with Pluralization

About pluralization

In the english language there are only one singular and one plural form for a string, e.g. “1 hotel” and “2 hotels”. Other languages (Russian, Arabic and many more) have very different grammars that contain additional plural forms.

Translators should pay attention to the pluralization rules of the locale they are supposed to translate and only fill out the forms they actually need.

How PhraseApp handles pluralization

PhraseApp knows about the pluralization rules of each language. Whenever you add a locale to your project and enter its ISO code, PhraseApp can support you with the pluralization process by only displaying the correct input fields for that language.

How to disable/enable pluralization

Pluralization can be enabled on a per-key basis. To mark a key as having pluralized translations, just edit the key settings and mark it as pluralized. Make sure to enter a pluralized name as well if required by the format you’re using (e.g. when using Gettext).

Since i18n/YAML allows the zero key for all locales, PhraseApp displays the input fields for zero for every key as well although only some languages require the zero explicitely.

Using pluralization with YAML/Ruby i18n

The Ruby i18n gem uses named categories to identify the different pluralizations of a message. These categories are stored as subkeys of the message key itself and are named accordingly:

  • zero
  • one
  • two
  • few
  • many
  • other

For a key named inbox.messages.notification the following pluralizations will be available:

Key Translation You have no new messages You have one new message
inbox.messages.notification.other You have %{count} new messages

When uploading a YAML file, PhraseApp will identify pluralized keys and mark them accordingly. It will also store the already given pluralized translations as well. During the download process, PhraseApp will reconstruct the YAML document and put all pluralizations under their appropriate key.

Using pluralization with Gettext

The Gettext format has a tight connection to the pluralization rules of the locale it contains. The concept basically contains of two aspects:

Header definition: nplurals

By selecting the correct language name for your locale within PhraseApp, the correct nplurals-definition can be fetched and will automatically be added to the file when you download it.

Plural forms

PhraseApp automatically limits the pluralization categories in the exported files to the forms that are required for the selected locale. This ensures you will always receive valid Gettext files that provide proper pluralized translations. PhraseApp will map the correct forms automatically for you.

More resources