2012-11-05 41 views
7

我想用i18n系統翻譯rails表單。Rails - 在表單動作中翻譯模型名稱

我的模型屬性已被正確翻譯,但是當我想翻譯提交操作時,模型名稱未翻譯。

這裏是我的fr.yml區域文件

fr: 
    activerecord: 
    model: 
     character: 
     one: "Personnage" 
     other: "Personnages" 
    attributes: 
     character: 
     name: "Nom" 
     title: "Titre" 
     biography: "Biographie" 
    helpers: 
    submit: 
     update: "Mise à jour %{model}" 

我_form.html.erb是

<%= form_for(@character) do |f| %> 
    <% if @character.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@character.errors.count, "error") %> prohibited this character from being saved:</h2> 

     <ul> 
     <% @character.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :title %><br /> 
    <%= f.text_field :title %> 
    </div> 
    <div class="field"> 
    <%= f.label :biography %><br /> 
    <%= f.text_area :biography, :rows => 8%> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

在我的形式,我期待更新按鈕是「瀨à怨婦Personnage「,但我仍然有」Miseàjour Character「。

感謝您的幫助!

回答

10

看起來你有一個model你應該有models

更改fr.yml看起來像這樣:

fr: 
    activerecord: 
    models: 
     character: 
     one: "Personnage" 
     other: "Personnages" 
    ... 

見導軌國際化文檔部分的Translations for Active Record Models瞭解詳情。

+1

這就是它!非常感謝您的幫助 ! –

+1

非常歡迎!我以前自己犯過這個錯誤。 –

+1

因爲我遇到了這個問題:如果你的模型直接使用「ActiveModel」而不是「ActiveRecord」(可能是因爲你使用了數據映射器),請使用'activemodel.models.character'來代替。 –

1

這是的form_for標籤使用時提交按鈕的默認行爲...它會顯示更新字,而不是「更新#{} Model.name」 ......