2010-08-18 90 views
25

根据ActionView documentation。报价:除非翻译是在当前区域设置的I18n发现Rails i18n和yml表格标签结构

标签的文本将默认属性名称或显式地指定它(通过views.labels <MODELNAME> <属性>。)。

我有一个“用户”模型和注册表单。以下是相关部分的片段:

<% 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“而不是”用户名“。

这没有发生,所以我一定错过了什么。任何帮助赞赏。

回答

26

我想我在这里找到了另一种解决方案。

我的应用程序是版本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

+0

如果您想拥有“输入您的名字”这样的标签,该怎么办?我不觉得将这个词组的属性设置为像这样干净的词组,可能会在某些特定情况下导致一些问题。请参阅Voldy的回答,了解定制表单标签的正确方法。你甚至可以同时使用这两种方法,但Voldy的意见将覆盖您的窗体上的这一个,它应该 – mizurnix 2017-05-13 15:32:10

1

这是因为您拨打的label方法不是ActionView::Helpers::FormHelper的方法,而实际上是ActionView::Helpers::FormTagHelperlabel_tag方法。 form_for方法通过将_tag添加到使用的表单助手中来重写给定块中的代码。所以你不看正确方法的文档!

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

+0

谢谢,我不知道。 form_for和label方法都在'ActionView :: Helpers :: FormHelper'文档页面上,所以我只是假设他们一起工作。我已经将我的代码更改为:'<%= label:user,:username%>'使用相同的yml文件,但我仍然无法获得翻译。 'label'调用是否在'form_for'块中有意义吗? – rhardih 2010-08-20 13:14:12

+1

说实话,我从来没有这个功能工作。很好奇,我刚刚看了Rails代码,我认为这是一个旧功能,并且文档尚未修复:'content =(text.blank??nil:text.to_s)|| method_name.humanize'在form_helper.rb的第473行 – 2010-08-20 22:31:45

+0

在这种情况下,您应该使用't'方法来指定'.yml'翻译文件中的'scope'。 '<%= t:title,范围:[:helpers,:label,:post]%>'。 – mariowise 2015-05-04 20:40:18

41

在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' 
+3

感谢您。是否有发布说明或我可以查看以了解有关此格式的更多信息? – astjohn 2011-12-13 21:30:55

+1

此格式的说明可在[ActionView :: Helpers :: FormHelper.label](http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-label)文档中找到。 – simonnordberg 2014-05-28 07:33:51

+1

我可以证实,这也适用于我在Rails 4.0中。 – 2015-01-07 22:23:39