I18n::InvalidPluralizationData 如何跟踪错误?

I18n::InvalidPluralizationData how to track error?

我看过类似的帖子,但我仍然无法弄清楚我的错误是从哪里来的

我的 I18n 每次需要用法语复数时都会失败。每次 :count

都会出现类似的错误

示例:translation data {:one=>"est trop court (au moins un caractère)", :other=>"est trop court (au moins %{count} caractères)"} can not be used with :count => 2

像这些这样的翻译会出现其他错误(总是在尝试复数时出现)

datetime:
  distance_in_words:
    x_days:
      one:   "1 jour"
      other: "%{count} jours"

我有 /locale/fr.yml from this github.

我的一部分踪迹

i18n (0.7.0) lib/i18n/backend/pluralization.rb:35:in `pluralize'
i18n (0.7.0) lib/i18n/backend/base.rb:40:in `translate'
i18n (0.7.0) lib/i18n.rb:158:in `block in translate'
i18n (0.7.0) lib/i18n.rb:154:in `catch'
i18n (0.7.0) lib/i18n.rb:154:in `translate'
i18n (0.7.0) lib/i18n/backend/base.rb:118:in `block in resolve'
i18n (0.7.0) lib/i18n/backend/base.rb:115:in `catch'
i18n (0.7.0) lib/i18n/backend/base.rb:115:in `resolve'
i18n (0.7.0) lib/i18n/backend/base.rb:102:in `block in default'
i18n (0.7.0) lib/i18n/backend/base.rb:101:in `each'
i18n (0.7.0) lib/i18n/backend/base.rb:101:in `default'
i18n (0.7.0) lib/i18n/backend/base.rb:34:in `translate'
i18n (0.7.0) lib/i18n.rb:158:in `block in translate'
i18n (0.7.0) lib/i18n.rb:154:in `catch'
i18n (0.7.0) lib/i18n.rb:154:in `translate'
activemodel (4.1.1) lib/active_model/errors.rb:435:in `generate_message'
activemodel (4.1.1) lib/active_model/errors.rb:442:in `normalize_message'
activemodel (4.1.1) lib/active_model/errors.rb:293:in `add'
activemodel (4.1.1) lib/active_model/validations/length.rb:57:in `block in validate_each'
activemodel (4.1.1) lib/active_model/validations/length.rb:45:in `each'
activemodel (4.1.1) lib/active_model/validations/length.rb:45:in `validate_each'
mongoid (4.0.0) lib/mongoid/validatable/localizable.rb:25:in `validate_each'
activemodel (4.1.1) lib/active_model/validator.rb:167:in `block in validate'
activemodel (4.1.1) lib/active_model/validator.rb:164:in `each'
activemodel (4.1.1) lib/active_model/validator.rb:164:in `validate'
activesupport (4.1.1) lib/active_support/callbacks.rb:447:in `public_send'
activesupport (4.1.1) lib/active_support/callbacks.rb:447:in `block in make_lambda'
activesupport (4.1.1) lib/active_support/callbacks.rb:184:in `call'
activesupport (4.1.1) lib/active_support/callbacks.rb:184:in `block in simple'
activesupport (4.1.1) lib/active_support/callbacks.rb:185:in `call'
activesupport (4.1.1) lib/active_support/callbacks.rb:185:in `block in simple'
activesupport (4.1.1) lib/active_support/callbacks.rb:185:in `call'
activesupport (4.1.1) lib/active_support/callbacks.rb:185:in `block in simple'
activesupport (4.1.1) lib/active_support/callbacks.rb:185:in `call'
activesupport (4.1.1) lib/active_support/callbacks.rb:185:in `block in simple'
activesupport (4.1.1) lib/active_support/callbacks.rb:185:in `call'
activesupport (4.1.1) lib/active_support/callbacks.rb:185:in `block in simple'
activesupport (4.1.1) lib/active_support/callbacks.rb:185:in `call'
activesupport (4.1.1) lib/active_support/callbacks.rb:185:in `block in simple'
activesupport (4.1.1) lib/active_support/callbacks.rb:86:in `call'
activesupport (4.1.1) lib/active_support/callbacks.rb:86:in `run_callbacks'
mongoid (4.0.0) lib/mongoid/interceptable.rb:138:in `run_callbacks'

但是用英语一切都很好。

使用键名作为 :many。

datetime:
  distance_in_words:
    x_days:
      one:   "1 jour"
      many: "%{count} jours"

根据我的理解 lib/i18n/backend/pluralization.rb:35:in `pluralize' 此方法调用定义在 "gems/numbers_and_words-0.10.0/lib/numbers_and_words/i18n/plurals" 基于不同的语言环境。 如果我们查看 fr.rb 我们需要使用的键名。