I18n :: InvalidPluralizationData如何跟踪错误?

时间:2015-01-09 00:24:03

标签: ruby-on-rails rails-i18n

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

我的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'

然而,一切都很好。

1 个答案:

答案 0 :(得分:1)

使用密钥名称:many。

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

根据我的理解,lib / i18n / backend / pluralization.rb:35:在`pluralize' 这个方法调用一个定义的proc "宝石/ numbers_and_words-0.10.0 / LIB / numbers_and_words / I18N /复数" 基于不同的语言环境。 如果我们查看fr.rb,我们需要使用它的关键名称。

相关问题