[英]Rails i18n and yml structure for form labels
根据ActionView文档 。 引用:
除非在当前I18n语言环境中找到转换(通过views.labels。<modelname>。<attribute>),否则label的文本将默认为属性名称,或者您明确指定它。
我有一个“用户”模型和一个注册表单。 以下是相关部分的片段:
<% 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”。
这没有发生,所以我一定错过了什么。 任何帮助赞赏。
在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'
我想我在这里找到了另一个解决方案
我的应用程序是版本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
这是因为您调用的label
方法不是来自ActionView::Helpers::FormHelper
的label
方法,而实际上是来自ActionView::Helpers::FormTagHelper
的label_tag
方法。 form_for
方法通过向使用的表单助手添加_tag
来重_tag
定块中的代码。 因此,您没有查看正确方法的文档!
我还没有使用过这种方法,因为有时字段的标签可能与使用相同模型的多个表单不同,所以我编写了自己的帮助器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.