私のロケールは :de で、これを取得するのが好きです:
Sheet.model_name.human.pluralize # => Belegs
「s」の代わりに「e」を末尾に追加するには
Sheet.model_name.human.pluralize # => Belege
Sheetクラスのみ。config/locales/models/de.yml にどうにかして追加できますか?
私のロケールは :de で、これを取得するのが好きです:
Sheet.model_name.human.pluralize # => Belegs
「s」の代わりに「e」を末尾に追加するには
Sheet.model_name.human.pluralize # => Belege
Sheetクラスのみ。config/locales/models/de.yml にどうにかして追加できますか?
まず、使用を停止する必要があります.pluralize
。これは Inflector を使用します (これは主に Rails の内部で使用されます。たとえば、モデル シート -> シートのテーブル名を推測します)。
Sheet.model_name.human # => "Beleg"
"Beleg".pluralize # => "Belegs"
あなたがすべきことは、:count
オプションを使用することです。
Sheet.model_name.human(:count => 2) # => "Belege"
これには、次のように変更する必要がありますde.yml
。
de:
...
activerecord:
...
models:
sheet:
one: Beleg
other: Belege
この方法で複数形をオーバーライドできます。
のconfig/initializers/inflections.rb
行う:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'Beleg', 'Belege'
end
明示的なカウント数 (2 など) が気に入らない場合は、:many
たとえば次のように使用できます。
Sheet.model_name.human(count => :many)
またはハッシュロケットなし (Ruby >= 1.9 の場合):
Sheet.model_name.human(count: :many)