翻译模型属性rails

zob*_*bel 2 translation ruby-on-rails internationalization pluralize

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

de:
  activerecord:
    models:
      account:
        attributes:
          email:
            one: 'Email'
            other: 'Emails'
Run Code Online (Sandbox Code Playgroud)

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

I18n.t 'activerecord.models.account.attributes.email', count: 1
Run Code Online (Sandbox Code Playgroud)

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

但是如果我转到浏览器并发布表单,则会收到错误

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

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

谢谢

Raf*_*ael 8

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

尝试

activerecord.attributes.account.email
Run Code Online (Sandbox Code Playgroud)

代替

activerecord.models.account.attributes.email
Run Code Online (Sandbox Code Playgroud)

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

另请参阅有关 I18n API 的便捷Rails 指南。

哈!