Переопределить значение по умолчанию для имени модели в rails3

моя локаль: de и мне нравится это делать:

Sheet.model_name.human.pluralize # => Belegs

чтобы добавить меня задним "e" вместо "s"

Sheet.model_name.human.pluralize # => Belege

только для класса "Лист". Могу ли я добавить его каким-либо образом в мою конфигурацию/locales/models/de.yml?

Ответ 1

Прежде всего, вам нужно прекратить использование .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

Ответ 2

Вы можете переопределить плюрализацию следующим образом:

В config/initializers/inflections.rb

делать:

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

Ответ 3

Если вам не нравится явное количество счетчиков (например, 2), вы можете использовать :many, например.

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

или без хеш-ракеты (для Ruby >= 1.9):

Sheet.model_name.human(count: :many)