Skip to content

Commit

Permalink
Update i18n guide to cover :zero key support in pluralization [ci skip]
Browse files Browse the repository at this point in the history
  • Loading branch information
Anne Johnson committed Feb 26, 2017
1 parent 7888f4f commit acb4b46
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions guides/source/i18n.md
Expand Up @@ -707,6 +707,7 @@ The `:count` interpolation variable has a special role in that it both is interp

```ruby
I18n.backend.store_translations :en, inbox: {
zero: 'no messages', # optional
one: 'one message',
other: '%{count} messages'
}
Expand All @@ -715,15 +716,20 @@ I18n.translate :inbox, count: 2

I18n.translate :inbox, count: 1
# => 'one message'

I18n.translate :inbox, count: 0
# => 'no messages'
```

The algorithm for pluralizations in `:en` is as simple as:

```ruby
entry[count == 1 ? 0 : 1]
lookup_key = :zero if count == 0 && entry.has_key?(:zero)
lookup_key ||= count == 1 ? :one : :other
entry[lookup_key]
```

I.e. the translation denoted as `:one` is regarded as singular, the other is used as plural (including the count being zero).
The translation denoted as `:one` is regarded as singular, and the `:other` is used as plural. If the count is zero, and a `:zero` entry is present, then it will be used instead of `:other`.

If the lookup for the key does not return a Hash suitable for pluralization, an `I18n::InvalidPluralizationData` exception is raised.

Expand Down

0 comments on commit acb4b46

Please sign in to comment.