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

juw*_*ter 7 label ruby-on-rails internationalization

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

de:
  activerecord: 
    attributes:
      user:
        login: "Benutzerkennung"
        comment: "Bemerkungen"
Run Code Online (Sandbox Code Playgroud)

在我看来这个:

<%= label_tag :login, t('activerecord.attributes.user.login') %> 
Run Code Online (Sandbox Code Playgroud)

但不是翻译价值("Benutzerkennung"),我得到臭名昭着的"翻译缺失:de,activerecord,属性,用户,登录"

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

谢谢!

juw*_*ter 15

好吧,我的坏,它确实工作得很好.我陷入了YML格式陷阱:(

为了帮助您一路调试,请使用"script/console"和以下语句: - I18n.locale - >应该输出您要检查的语言环境 - I18n.t('activerecord.attributes') - >应该给出您翻译的所有键/值对,如果没有,您在YML文件中出现了格式错误,或者找不到它

顺便说一句 - 如果您不喜欢".human_name"(插件使用的)的结果,该插件可以很好地运行http://github.com/iain/i18n_label/,只需回到I18n.t('你的键')


Din*_*tih 8

另一种方法:

<%= label_tag :login, User.human_attribute_name(:login) %>
Run Code Online (Sandbox Code Playgroud)