在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)