我知道你可以使用复数特征在Rails中复数一个单词。
pluralize (3, 'cat')
=> 3 cats
但我想要做的是复数一个需要复数多个单词的句子。
There are <%= Cat.count %> cats
问题是,如果只有一只猫。它会返回
There are 1 cats
哪种格式不合理。
应该说
There are x cats (if x is not 1)
There is 1 cat (if there is only 1)
问题是,我无法弄清楚如何将其复数化,因为我们在这里有两个参数(是和猫)。
任何帮助将不胜感激。
也许是这样的?
if Cat.count == 1
puts "There is 1 cat"
else
puts "There are #{Cat.count} cats"
end
答案 0 :(得分:12)
您可以通过为翻译键定义计数值(即I18n
)来使用config/locales/en.yml
库的pluralization features:
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.