28

我的语言环境是:de,我喜欢这样:

Sheet.model_name.human.pluralize # => Belegs

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

Sheet.model_name.human.pluralize # => Belege

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

4

3 回答 3

54

首先,您需要停止使用.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
于 2011-05-30T18:40:02.080 回答
14

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

config/initializers/inflections.rb

做:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'Beleg', 'Belege'
end
于 2011-05-30T18:31:49.893 回答
2

如果您不喜欢明确的计数(如 2),您可以使用:many例如

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

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

Sheet.model_name.human(count: :many)
于 2015-03-27T11:17:15.950 回答