Переопределить значение по умолчанию для имени модели в 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)