質問

Rails では複数化機能を使用して単語を複数形にできることは知っています。

pluralize (3, 'cat')
=> 3 cats

しかし、私がやろうとしているのは、複数の単語を複数形にする必要がある文を複数形にすることです。

There are <%= Cat.count %> cats

問題は、猫が1匹しかいない場合です。それは戻ってくるだろう

There are 1 cats

それは文法的に意味がありません。

それは言うべきです

There are x cats (if x is not 1)

There is 1 cat (if there is only 1)

問題は、ここには 2 つの引数 (is と cat) があるため、これを複数形にする方法がわからないことです。

助けていただければ幸いです。

たぶんこんな感じでしょうか?

if Cat.count == 1
  puts "There is 1 cat"
else
  puts "There are #{Cat.count} cats"
end
役に立ちましたか?

解決

を利用できます。 複数化機能I18n 翻訳キーにカウント値を定義することでライブラリを作成します(つまり、 config/locales/en.yml):

en:
  cats:
    one: 'There is one cat.'
    other: 'There are %{count} cats.'

次に、コード内 (またはビュー、または他の場所) I18n 世界中で利用可能です)

3.times{|i|
  puts I18n.t('cats', count: i)
}

出力します

There are 0 cats.
There is one cat.
There are 2 cats.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top