根据ActionView documentation。引用:
除非在当前的I18n语言环境中找到翻译(通过views.labels。< modelname>。< attribute>),否则标签文本将默认为属性名称,或者您明确指定它。
我有一个“用户”模型和一个注册表单。以下是相关部分的片段:
<% form_for(@user) do |f| %>
...
<p>
<%= f.label :username %>
<%= f.text_field :username, :class => 'full_width' %>
</p>
...
<% end %>
点隐藏不重要的代码。
据我了解文档,如果我在我的语言环境文件中提供翻译,在这种情况下:dk,我的dk.yml看起来像这样:
dk:
views:
labels:
user:
username:
"blahblah"
Rails应该翻译标签文本并插入“blahblah”而不是“Username”。
这种情况没有发生,所以我一定错过了什么。任何帮助表示赞赏。
答案 0 :(得分:42)
在Rails 3.1中有点改变。
<% form_for @post do |f| %>
<%= f.label :title %>
<%= f.text_field :title %>
<%= f.submit %>
<% end %>
en:
helpers:
label:
post:
title: 'Customized title'
答案 1 :(得分:29)
我想我在这里找到了另一种解决方案。
我的应用是版本2.3.5。我现在已将其更改为2.3.8,<%= f.label :username %>
现在使用以下翻译:
dk:
activerecord:
attributes:
user:
username:
我在这张票中找到了提示:
https://rails.lighthouseapp.com/projects/8994/tickets/745-form-label-should-use-i18n
答案 2 :(得分:1)
这是因为您调用的label
方法不是来自ActionView::Helpers::FormHelper
的方法,而是来自label_tag
的{{1}}方法。 ActionView::Helpers::FormTagHelper
方法通过向使用的表单助手添加form_for
来重写给定块中的代码。所以你不是在寻找正确方法的文档!
我还没有使用过这种方法,因为有时字段的标签可能与使用相同模型的多个表单不同,所以我编写了自己的帮助器。