Rails本地化:适用于t()但不适用于ActiveRecord属性

时间:2011-08-30 07:07:16

标签: ruby-on-rails-3 activerecord erb

我的user_info模型的Rails3 ERB表单的本地化适用于“解释”,但不适用于“familyname”:

<%= t("explanation") %>             # Works
<%= form_for(@user_info) do |f| %>
  <%= f.label :familyname %>                 # Does not work, renders: Familyname
  <%= f.text_field :familyname %>
  <%= f.submit t("update") %>
<% end %>

config / locales中的ja.yml:

ja:
  explanation: ここで説明を書く予定です
  activerecord:
    attributes:
      user_info:
        familyname:名字

为什么它适用于t()但不适用于ActiveRecord?我仔细检查了缩进,我很确定我做对了ja→activerecord→attributes→user_info→familyname

我有另一个模型,非常相似,其中ActiveRecord属性本地化没有问题。

2 个答案:

答案 0 :(得分:1)

缩进看起来与i18n Rails doc中给出的略有不同。请检查。

此外,打开rails控制台并尝试以下命令:

I18n.t('activerecord.attributes')

这应该列出所有模型属性翻译的所有键/值对。

答案 1 :(得分:0)

对于模型属性,您可以使用human_attribute_for方法

User.human_attribute_for :familyname