Rails错误消息中的翻译属性(Rails 2.3.2,I18N)

时间:2009-05-22 16:27:33

标签: ruby-on-rails internationalization

我在翻译文件中定义了翻译的属性和模型名称,Modelname.human_attribute_name(...)返回正确翻译的属性名称,但错误消息中的属性名称未翻译。 错误消息中的属性名称需要翻译什么?

2 个答案:

答案 0 :(得分:14)

从主题的Guide开始,您需要使用模型名称和属性名称正确设置本地化文件:

en: 
  activerecord: 
    models: 
      user: Dude 
    attributes: 
      user: 
        login: "Handle"

由于这是YAML,请确保所有“标签”实际上都是两个软空格。然后,您可以使用User.human_nameUser.human_attribute_name(:login)将其删除。

我没有把它当作福音 - 可能有一个错误。我测试了它,它工作正常。我创建了一个名为Model的模型,其属性为title。以下是fr.ymlconfig/locales文件的摘要:

fr:
  activerecord:
    models:
      model: "Sumfink"
    attributes:
      model:
        title: "Tiltile"

以下是相关的观看代码:

<h1>New <%= Model.human_name %></h1>
<% form_for(@model) do |f| %>
  <%= f.error_messages %>
  <%= Model.human_attribute_name("title") %><br />
  <%= f.text_field :title %>
  <%= f.error_message_on :title %>
...

正确翻译输出的屏幕截图:http://screencast.com/t/et5FhVe1Gp

答案 1 :(得分:1)

感谢Ian,只是想补充一下,为了在验证失败的情况下突出显示标签,你需要像这样写:

  <%= f.label "title", Model.human_attribute_name("title") %><br />

出于某种原因,写作就像:

  <%= f.label "title" %><br />

不显示翻译。