2010-08-18 89 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