我在翻译文件中定义了翻译的属性和模型名称,Modelname.human_attribute_name(...)返回正确翻译的属性名称,但错误消息中的属性名称未翻译。 错误消息中的属性名称需要翻译什么?
答案 0 :(得分:14)
从主题的Guide开始,您需要使用模型名称和属性名称正确设置本地化文件:
en:
activerecord:
models:
user: Dude
attributes:
user:
login: "Handle"
由于这是YAML,请确保所有“标签”实际上都是两个软空格。然后,您可以使用User.human_name
和User.human_attribute_name(:login)
将其删除。
我没有把它当作福音 - 可能有一个错误。我测试了它,它工作正常。我创建了一个名为Model
的模型,其属性为title
。以下是fr.yml
中config/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 />
不显示翻译。