override default pluralize for model-name in rails3 override default pluralize for model-name in rails3 ruby-on-rails ruby-on-rails

override default pluralize for model-name in rails3


First of all, you need to stop using .pluralize. It uses the Inflector (which is mainly used for Rails internals, e.g. guessing table names for model Sheet -> sheets).

Sheet.model_name.human # => "Beleg""Beleg".pluralize # => "Belegs"

What you should do is to use the :count option.

Sheet.model_name.human(:count => 2) # => "Belege"

This requires that you have modified your de.yml as such:

de:  ...  activerecord:    ...    models:      sheet:        one: Beleg        other: Belege


You can override pluralizations this way:

In config/initializers/inflections.rb

do:

ActiveSupport::Inflector.inflections do |inflect|  inflect.irregular 'Beleg', 'Belege'end


If you don't like explicit count number (like 2) you could use :many e.g.

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

or without hash rocket (for Ruby >= 1.9):

Sheet.model_name.human(count: :many)