my locale is :de and I like to get this:
Sheet.model_name.human.pluralize # => Belegs
to add me a trailing \"e\" instead of \"s\"
<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)
You can override pluralizations this way:
In config/initializers/inflections.rb
do:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'Beleg', 'Belege'
end
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