0

我的 rails 应用程序出现以下问题:我想翻译一些这样的模型属性,以便它们正确显示在验证错误消息中。

de:
  activerecord:
    models:
      account:
        attributes:
          email:
            one: 'Email'
            other: 'Emails'

现在在rails控制台中我可以检查

I18n.t 'activerecord.models.account.attributes.email', count: 1

返回“电子邮件”,一切似乎都很好。

但是如果我去浏览器并发布一个表格,我会得到错误

I18n::InvalidPluralizationData in AccountsController#create
translation data {:attributes=>{:email=>{:one=>"Email", :other=>"Emails"}}} can not be used with :count => 1

我该如何解决这个问题?rails 期望获得哪些翻译数据?

谢谢

4

2 回答 2

4

模型名称和属性名称都有自己的 i18n 范围。

尝试

activerecord.attributes.account.email

代替

activerecord.models.account.attributes.email

(并相应地调整您的 yaml 文件)。

另请参阅I18n API 上方便的 Rails 指南

于 2015-04-23T13:18:29.730 回答
0

使用 Rails 辅助方法:

Model.human_attribute_name(attribute)

你的翻译 yaml 看起来像这样:

activerecord:
  models:
    model_name:
      attributes:
        attribute: attribute name
于 2022-01-07T15:27:29.183 回答