2009-05-22 74 views
6

我已經在翻譯文件中定義了翻譯後的屬性和模型名稱,Modelname.human_attribute_name(...)返回了正確翻譯後的屬性名稱,但屬性名稱錯誤消息是未翻譯的。 需要翻譯錯誤消息中的屬性名稱?Rails錯誤消息中的轉換後的屬性(Rails 2.3.2,I18N)

+0

我有類似的問題。但在我的應用翻譯不適用於型號名稱。 Rails代碼中可能存在一個錯誤。但屬性名稱已正確翻譯。 – 2009-05-22 19:58:59

回答

13

Guide關於這個問題,你就需要設置本地化文件中正確使用你的模型名和屬性名:

en: 
    activerecord: 
    models: 
     user: Dude 
    attributes: 
     user: 
     login: "Handle" 

由於這是YAML,請確保您所有的「標籤」實際上兩個軟空間。然後你可以用User.human_nameUser.human_attribute_name(:login)將它們取出。

我沒有接受福音 - 那可能是一個錯誤。我測試了它,它工作正常。我製作了一個名爲Model的模型,其屬性爲title。這裏是我的fr.yml文件的config/locales一個片段:

fr: 
    activerecord: 
    models: 
     model: "Sumfink" 
    attributes: 
     model: 
     title: "Tiltile" 

下面是相關的視圖代碼:

<h1>New <%= Model.human_name %></h1> 
<% form_for(@model) do |f| %> 
    <%= f.error_messages %> 
    <%= Model.human_attribute_name("title") %><br /> 
    <%= f.text_field :title %> 
    <%= f.error_message_on :title %> 
... 

而且正確地轉換輸出的截圖:http://screencast.com/t/et5FhVe1Gp

+0

非常感謝您的詳細解答。我嘗試了一個新項目。我使用了現有項目的翻譯文件,並添加了一個新模型來測試翻譯,翻譯立即生效。 我無法訪問原始翻譯文件,因爲字符串不在翻譯範圍內,因爲它位於我的工作場所。我會在星期一看它,看看有什麼不同。成功翻譯的應用程序在Linux上運行,工作中的應用程序在Windows中運行。 – 2009-05-23 16:16:46

+0

我的翻譯文件是正確的。我省略了列名稱的「_id」部分,因爲它們在視圖的錯誤消息中未顯示。我使用「模型」而不是「model_id」。 – 2009-05-25 06:57:07

1

榮譽伊恩,只是想補充一點,爲了在驗證失敗的情況下突出標籤,你需要像這樣寫:

<%= f.label "title", Model.human_attribute_name("title") %><br /> 

出於某種原因,寫它就像:

<%= f.label "title" %><br /> 

不顯示翻譯。