Rails I18n:缩短翻译调用(至少在视图中)

时间:2011-07-24 20:55:41

标签: ruby-on-rails-3 internationalization method-call abbreviation

翻译某些字段的DRY方式是什么?

在我的RESTful视图中,我有一些重复的片段,就像在show-view中一样:

...
<dt><%= t("activerecord.attributes.user.firstname") %></dt>
<dd><%= @user.firstname %></dd>
...

现在,我不是一遍又一遍地写t("activerecord.attributes.user.attr_name"),而是只想写t(:attr_name)(类似于表格视图中的f.label :firstname)。

基本上,这应该不是问题(至少对于RESTful视图而言),因为I18n模块可以查询controller方法来推断模型名称,然后猜测正确的翻译字符串。

我的问题:有没有人有这种方法的实践经验?甚至还有RubyGem吗?或者:有没有陷阱,我没想到?

2 个答案:

答案 0 :(得分:6)

我似乎,ActiveModel::Translation#human_attribute_name可以解决问题(例如<%= User.human_attribute_name :firstname %>)。

答案 1 :(得分:2)

建议的方法是将其置于部分(例如app/views/user/_form.html.erb或甚至app/views/user/_user.html.erb),然后在名称前加一个前导点,这样:

<dt><%= t(".firstname") %></dt>
<dd><%= user.firstname %></dd>

更多信息:examples(来自Agile Web Development with Rails); Rails documentation