28

私のロケールは :de で、これを取得するのが好きです:

Sheet.model_name.human.pluralize # => Belegs

「s」の代わりに「e」を末尾に追加するには

Sheet.model_name.human.pluralize # => Belege

Sheetクラスのみ。config/locales/models/de.yml にどうにかして追加できますか?

4

3 に答える 3

54

まず、使用を停止する必要があります.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
于 2011-05-30T18:40:02.080 に答える
14

この方法で複数形をオーバーライドできます。

config/initializers/inflections.rb

行う:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'Beleg', 'Belege'
end
于 2011-05-30T18:31:49.893 に答える
2

明示的なカウント数 (2 など) が気に入らない場合は、:manyたとえば次のように使用できます。

Sheet.model_name.human(count => :many)

またはハッシュロケットなし (Ruby >= 1.9 の場合):

Sheet.model_name.human(count: :many)
于 2015-03-27T11:17:15.950 に答える