Rails の I18n で単数と複数時に文言を切り替える

単数形と複数形で変化する言語の単語を I18n で出し分ける方法です。

en.yml

単数時 (one) とそれ以外を例えば下記のように定義します。

en:
  apple:
    zero: no apple
    one: apple
    other: apples

呼び出す時は、下記のようにして count として数字を渡します。

<%= t('apple', count: 0) %> -> no apple
<%= t('apple', count: 1) %> -> apple
<%= t('apple', count: 5) %> -> apples

日本語は数によらず同じ文言にしたい場合は、 ja.ymlapple キーに直接文言を指定します。

ja:
  apple: りんご

出力時は、 count は無視されて常に「りんご」が表示されます。

<%= t('apple', count: 0) %> -> りんご
<%= t('apple', count: 1) %> -> りんご
<%= t('apple', count: 5) %> -> りんご