например

зык: де, и мне нравится получать это:

Sheet.model_name.human.pluralize # => Belegs

добавить меня в конце "е" вместо "с"

Sheet.model_name.human.pluralize # => Belege

только для листового класса. Могу ли я добавить его как-нибудь в мой config / locales / models / de.yml?

 Lucio21 июн. 2015 г., 22:12

Ответы на вопрос(3)

Вconfig/initializers/inflections.rb

делать:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'Beleg', 'Belege'
end
 thedanielhanke23 нояб. 2012 г., 17:06
очень полезно, спасибо! :)
Решение Вопроса

вам необходимо прекратить использование.pluralize, Он использует Inflector (который в основном используется для внутренних компонентов Rails, например, угадывает имена таблиц для модели Sheet -> sheet).

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
 Marcel Jackwerth29 сент. 2011 г., 13:34
@Shawn На самом деле вы можете использовать100000 или что угодно. С помощью:count => "foo" будет искатьother перевод также. Текущая реализация только проверяет:zero if count == 0 а такжеcount == 1 ? :one : :other, Здесьполный код.
 Jari Jokinen28 авг. 2011 г., 12:58
Название модели в файле локали должно быть в единственном числе, а не во множественном числе («лист», а не «листы»).
 toy31 мая 2011 г., 22:23
выглядит хорошо, я пытался, но, кажется, не работает для имен классов моделей.
 Marcel Jackwerth01 июн. 2011 г., 12:57
Я добавил объяснение, почему вы не можете использовать множественное число. Инфлектор не предназначен для решения проблем.
 Shawn29 сент. 2011 г., 05:20
@Marcel Jackwerth: Просто любопытно. В файле YAML вы используете «один» и «другой». Есть ли эквивалент «другого» вhuman функция (например,Sheet.model_name.human(:count => lots)? Это просто странно, если поставить 2 там, если могут быть сотни записей ..

2), вы можете использовать:many например

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

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

Sheet.model_name.human(count: :many)
 jmarceli04 авг. 2015 г., 18:26
Я этого не знал. Благодарю.
 Alex24 нояб. 2015 г., 21:29
Чтобы быть ясным,:many не особенный Это всегда будет выбирать:other если вы не пройдете1 напримерSheet.model_name.human(count: :awesome)
 Sebastian vom Meer03 авг. 2015 г., 16:07
Хеш-нотация не связана с Rails. Новый синтаксис пришел с Ruby 1.9.

Ваш ответ на вопрос