ruby-on-railslocalizationpluralize

override default pluralize for model-name in rails3


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"

Sheet.model_name.human.pluralize # => Belege

just for the Sheet-class. Can I add it somehow in my config/locales/models/de.yml ?


Solution

  • 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