全局属性本地化

时间:2012-03-26 10:30:18

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我正在使用遗留数据库模式,该模式使用camelCase作为其属性,Rails不能很好地转换为人类可读的形式。对于一个模型,我可以定义例如。

en:
  active_record:
    attributes:
      user:
        createDate: "Create date"

但这仅适用于User模型。有没有办法定义“全局属性翻译”?像

这样的东西
en:
  activerecord:
    attributes:
      global: 
        createDate: "Create date"

谢谢你。

1 个答案:

答案 0 :(得分:6)

Rails将在以下位置查找属性的翻译(如果您的属性名称未命名空间):

  • activerecord.attributes。{MODEL_NAME}。{属性名称}
  • 属性。{属性名称}

(请查看human_attribute_name

的ruby文档

为了实现您正在寻找的目标,您应该使用以下内容:

en:
  attributes:
    createDate: "Create date"

您仍然可以通过添加翻译来覆盖这些“默认”属性名称,例如您的第一个例子。

en:
  active_record:
    attributes:
      user:
        createDate: "User creation date"

将导致:

User.human_attribute_name(:createDate) => "User creation date"
Topic.human_attribute_name(:createDate) => "Create date"
SomeOtherModelClass.human_attribute_name(:createDate) => "Create date"