は単純です:「複数のオブジェクト/オブジェクトがありますか」を複数化する方法は?単一の単語を複数形
pluralize(@total_users, "user")
しかし、私は "は/ Nユーザー/ユーザーがあるさ" 印刷する場合:
あり0ユーザー
があります。 1人のユーザー
2人のユーザー
があり、すなわち、方法文を複数形にする?
は単純です:「複数のオブジェクト/オブジェクトがありますか」を複数化する方法は?単一の単語を複数形
pluralize(@total_users, "user")
しかし、私は "は/ Nユーザー/ユーザーがあるさ" 印刷する場合:
あり0ユーザー
があります。 1人のユーザー
2人のユーザー
があり、すなわち、方法文を複数形にする?
カスタムの屈曲を追加できます。デフォルトでは、Railsはinflections.rb
をconfig/initializers
に追加します。そこには、追加することができます:あなたは、ユーザー/ユーザーと同じルールを使用している/されて返すようにpluralize(@total_users, "is")
を使用することができます
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular "is", "are"
end
。
EDIT:文を複数形にする方法の問題を明確にしました。これは一般的に行うのがはるかに難しいですが、それをしたい場合はdive into NLPにする必要があります。
def pluralize_sentence(count, i18n_id, plural_i18n_id = nil)
if count == 1
I18n.t(i18n_id, :count => count)
else
I18n.t(plural_i18n_id || (i18n_id + "_plural"), :count => count)
end
end
pluralize_sentence(@total_users, "user_count")
そしてconfig/locales/en.yml
中:
en:
user_count: "There is %{count} user."
user_count_plural: "There are %{count} users."
コメントはあなただけのいくつかの文章でそれをしたい場合、あなたはあなたがこのような何かを構築することができ、国際化で何かができる通り
私はマーティンゴードンの答えの最初の部分はかなり良いと思います。
また、それは一種の厄介だが、あなたはいつもちょうどロジックを自分で書くことができます。
"There #{@users.size == 1 ? 'is' : 'are'} #{@users.size} user#{'s' unless @users.size == 1}."
これは、おそらく最高のRailsのi18n複数化機能によって覆われています。実際http://guides.rubyonrails.org/i18n.html#pluralization
I18n.backend.store_translations :en, :user_msg => {
:one => 'There is 1 user',
:other => 'There are %{count} users'
}
I18n.translate :user_msg, :count => 2
# => 'There are 2 users'
から適応、私は質問には、例えば国際化とpluralisationのミックスのようになります。つまり、何かをユーザーの数を補間する方法についての詳細だと思います''複数形(@total_users、 "$ 1 user") '...明らかに惨めに失敗するでしょう:) – Pierre
[Agile Development with Rails、第4版](http://pragprog.com/book/rails4/agile- web-development-with-rails)(217ページ)では、エラーメッセージを複数にするためにYAMLファイルに 'one'と' other'を使います。これはページエラーを表示するための特別なコードなしで使用されるので、 't()'で直接動作するはずです。 – l0b0
私がこのソリューションでヒットした1つの問題は、あなたのモデルがすべて「あなたのコードでブレークする」(私のケースではExtendedCare)で終わる場合です – Doug