繁体   English   中英

用于表单标签的Rails i18n和yml结构

[英]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::FormHelperlabel方法,而实际上是来自ActionView::Helpers::FormTagHelperlabel_tag方法。 form_for方法通过向使用的表单助手添加_tag来重_tag定块中的代码。 因此,您没有查看正确方法的文档!

我还没有使用过这种方法,因为有时字段的标签可能与使用相同模型的多个表单不同,所以我编写了自己的帮助器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM