如何使用Rails I18n.t翻译ActiveRecord属性?

时间:2009-12-07 23:01:28

标签: ruby-on-rails internationalization label

尝试在我的视图中使用config / locales / de.yml中的活动记录翻译。我以为我很聪明地使用它:

de:
  activerecord: 
    attributes:
      user:
        login: "Benutzerkennung"
        comment: "Bemerkungen"

在我看来:

<%= label_tag :login, t('activerecord.attributes.user.login') %> 

但我没有翻译价值(“Benutzerkennung”),而是臭名昭着 “翻译缺失:de,activerecord,attributes,user,login”

有没有人有这个工作(不使用标签翻译插件(我担心潜在的副作用),或者User.humanize_attribute_name)?我错过了什么? (当我使用“activerecord1”或者其他东西而不是activerecord时它确实有效,所以我的设置似乎很好)

谢谢!

3 个答案:

答案 0 :(得分:15)

好的,我的坏,它确实很好用。我陷入了YML格式陷阱:(

为了帮助您一路调试,请使用“script / console”和以下语句: - I18n.locale - &gt;应输出您要检查的区域设置 - I18n.t('activerecord.attributes') - &gt;应该为你的翻译提供所有的键/值对,如果没有,你在YML文件中出现格式错误或者找不到它

顺便说一句 - 这个插件效果很好http://github.com/iain/i18n_label/ 如果你不喜欢“.human_name”(插件使用的)的结果,那就回到I18n.t('你的钥匙')

答案 1 :(得分:8)

另一种方法:

<%= label_tag :login, User.human_attribute_name(:login) %>

答案 2 :(得分:0)

你应该将Rails gem升级到v2.3.11(我试过使用2.3.9,但是现在它不可用,所以我建议你使用2.3.11)!

gem install -v=2.3.11 rails

您可以在此处找到此问题:Rails 2.3.9 Release notes