我的语言环境是:de,我喜欢这样:
Sheet.model_name.human.pluralize # => Belegs
给我添加一个尾随的“e”而不是“s”
Sheet.model_name.human.pluralize # => Belege
仅适用于Sheet级。我可以在我的 config/locales/models/de.yml 中以某种方式添加它吗?
我的语言环境是:de,我喜欢这样:
Sheet.model_name.human.pluralize # => Belegs
给我添加一个尾随的“e”而不是“s”
Sheet.model_name.human.pluralize # => Belege
仅适用于Sheet级。我可以在我的 config/locales/models/de.yml 中以某种方式添加它吗?
首先,您需要停止使用.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
您可以通过这种方式覆盖复数:
在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)