我已经在翻译文件中定义了翻译后的属性和模型名称,Modelname.human_attribute_name(...)返回了正确翻译后的属性名称,但属性名称错误消息是未翻译的。 需要翻译错误消息中的属性名称?Rails错误消息中的转换后的属性(Rails 2.3.2,I18N)
回答
从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
非常感谢您的详细解答。我尝试了一个新项目。我使用了现有项目的翻译文件,并添加了一个新模型来测试翻译,翻译立即生效。 我无法访问原始翻译文件,因为字符串不在翻译范围内,因为它位于我的工作场所。我会在星期一看它,看看有什么不同。成功翻译的应用程序在Linux上运行,工作中的应用程序在Windows中运行。 – 2009-05-23 16:16:46
我的翻译文件是正确的。我省略了列名称的“_id”部分,因为它们在视图的错误消息中未显示。我使用“模型”而不是“model_id”。 – 2009-05-25 06:57:07
荣誉伊恩,只是想补充一点,为了在验证失败的情况下突出标签,你需要像这样写:
<%= f.label "title", Model.human_attribute_name("title") %><br />
出于某种原因,写它就像:
<%= f.label "title" %><br />
不显示翻译。
- 1. Rails 2.3.5错误消息中的模型名称转换问题
- 2. Rails I18n错误
- 3. Rails错误消息
- 4. Rails的AJAX错误消息
- 5. Rails的错误消息
- 6. Rails i18n验证输入(而不是错误消息)
- 7. 在rails中的错误消息?
- 8. Rails中的spree错误消息
- 9. 500错误消息rails heroku
- 10. Rails验证消息错误?
- 11. .NET中的I18n错误消息
- 12. Rails验证错误消息,自定义属性名称
- 13. rails -h在rails项目中显示错误的帮助消息
- 14. rails形式的基本错误消息
- 15. Rails 4:在发布消息后更新属性后
- 16. Rails 3客户错误消息
- 17. 在rails中呈现错误消息
- 18. 在Rails中处理错误消息
- 19. 在rails中显示错误消息
- 20. 属性错误消息
- 21. Ruby on Rails中的错误TimeZone转换
- 22. Rails 3.1中嵌套的模型属性本地化错误消息
- 23. Rails JSON转换错误
- 24. 使用rails i18n转换路径
- 25. actionmailer/gmail/rails 2.3.2
- 26. iOS10/Swift 3中的NSFetchedResultsController - 转换后仍出现错误消息
- 27. Rails错误消息和重定向
- 28. Rails 4.2 ActionController:BadRequest自定义错误消息
- 29. Rails:错误消息部分不呈现
- 30. Rails Rake测试返回错误消息
我有类似的问题。但在我的应用翻译不适用于型号名称。 Rails代码中可能存在一个错误。但属性名称已正确翻译。 – 2009-05-22 19:58:59