2009-12-07 26 views
7

试图在config/locales/de.yml中使用我的活动记录翻译。我以为我很聪明用这样的:如何使用Rails I18n.t来翻译ActiveRecord属性?

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

在我看来,这样的:

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

而不是平移值(“Benutzerkennung”)我得到臭名昭著 “翻译缺失:德,积极记录,属性,用户,登录“

有没有人得到这个工作(不使用标签翻译插件(我对可能的副作用警惕)或User.humanize_attribute_name)?我错过了什么? (当我使用“activerecord1”或其他不同于activerecord的时候,它确实有效,所以我的设置似乎很好)

谢谢!

回答

14

好吧,我的坏,它确实工作得很好。我倒在YML格式陷阱:(

为了帮助你前进的道路上调试,使用“脚本/控制台”和下面的语句: - I18n.locale - >应该输出要检查 的语言环境 - I18n.t('activerecord.attributes') - >应该给你所有的翻译键/值对,如果没有,你在你的YML文件中发生了格式错误或者它找不到

And btw - 插件工作得很好http://github.com/iain/i18n_label/ 如果你不喜欢“.human_name”(插件使用的)的结果,只需要回退到I18n.t('你的密钥')

+0

谢谢你,这人指着我对我的语言环境文件中配置/区域设置,而不是配置/区域设置 – TheDeadSerious 2010-03-01 12:50:14

+0

是是的,你可以尝试这种困难的方式,手动将它映射到你的activerecord语言环境。或者,你可以让Rails来照顾它​​。只要您的yml是正确的(不要忘记yml文件末尾的换行符),并且您创建标签时不给出content属性,它将自动搜索翻译。 – 2012-06-14 14:28:46

0

你应该升级Rails的宝石v2.3.11(我试图使用2.3.9,但现在它不可用,所以我建议你2.3.11)!

gem install -v=2.3.11 rails 

您可以在这里找到记录此问题:Rails 2.3.9 Release notes

7

另一种方法:

<%= label_tag :login, User.human_attribute_name(:login) %> 
相关问题