2009-05-22 16 views
6

翻訳ファイルに翻訳された属性とモデル名が定義されていますが、Modelname.human_attribute_name(...)は正しく翻訳された属性名を返します。エラーメッセージは変換されません。 エラーメッセージの属性名が変換されるために必要なものは何ですか?件名にGuideからRailsエラーメッセージ(Rails 2.3.2、I18N)で翻訳された属性

+0

私にも同様の問題があります。しかし、私のアプリ翻訳では、モデル名のために動作しません。おそらくRailsコードのバグは何でしょうか。ただし、属性名は正しく変換されます。 –

答えて

13

、あなたのモデル名で正しくローカライズファイルを設定する必要があり、属性名になります。

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

これはYAMLであるので、すべてのあなたの「タブ」が実際にあることを確認してください2つのソフトスペース。その後、User.human_nameUser.human_attribute_name(:login)でそれらを得ることができます。

私は福音のためにそれを取っていませんでした - バグがあったかもしれません。私はそれをテストし、それは正常に動作します。私はtitleという属性を持つModelというモデルを作った。

<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 %> 
... 

し、適切に翻訳された出力のスクリーンショット:

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

ここでは、関連するビューコードです:イアンへhttp://screencast.com/t/et5FhVe1Gp

+0

詳細な回答ありがとうございました。私は新しいプロジェクトでそれを試しました。私は既存のプロジェクトの翻訳ファイルを使用し、新しいモデルを追加して翻訳をテストし、翻訳はすぐに機能しました。 文字列が翻訳に使用されていない元の翻訳ファイルにアクセスできません。なぜなら、それは私の職場にあるからです。私は何が違うかを見るために月曜日にそれを見るでしょう。翻訳に成功したアプリケーションはLinux上で動作していたため、Windows上で動作していました。 –

+0

翻訳ファイルが正しいです。ビューのエラーメッセージに表示されないので、列名の "_id"部分を省略しました。私は "model_id"の代わりに "model"を使用しました。 –

+0

スクリーンショットへのリンクが壊れています。あなたが供給できる別のものがありますか?ありがとうございます – mkelley33

1

賞賛だけで、ここconfig/localesの私fr.ymlファイルの抜粋ですこれを追加して、検証に失敗した場合にラベルを強調表示するには、次のように記述する必要があります。

何らかの理由

は、同じようにそれを書く:

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

して翻訳を表示しません。

+2

どのバージョンのRailsを使用していますか?このラベルのバグは2.3.6で修正されました:https://rails.lighthouseapp.com/projects/8994/tickets/745-form-label-should-use-i18n – giraff

関連する問題