在rails3中覆盖model-name的默认复数forms

我的语言环境是:de和我喜欢这个:

Sheet.model_name.human.pluralize # => Belegs 

给我添加一个尾随“e”而不是“s”

 Sheet.model_name.human.pluralize # => Belege 

仅适用于Sheet-class。 我可以在config / locales / models / de.yml中以某种方式添加它吗?

首先,您需要停止使用.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 

您可以通过以下方式覆盖复数:

config/initializers/inflections.rb

做:

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

如果您不喜欢显式计数(如2),您可以使用:many例如

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

或没有哈希火箭(对于Ruby> = 1.9):

 Sheet.model_name.human(count: :many)