Ruby on Railsメモ|I18n

調べたもののメモです
随時更新

I18n入門的な事

フラッシュメッセージの日本語化(controllerのリテラルを日本語化)

フォルダとファイルを作成
(最初にmodelsフォルダを作って仕分けをしたのでcontrollerも分ける)

HTMLを含めた出力

キーに「_html」を付ける
(もちろんリンク以外でもOK)

モデルの属性名を取得

モデルの属性名を他のリソースのviewから参照したい!


RoRT・8章のログインフォームと見比べて、emailとpasswordが日本語表示に変更できている!
→モデル名.human_attribute_name(属性名)
 指定のモデルの属性名を表示
→モデル名.model_name.human
 指定のモデル名を表示

同一コントローラー内のすべてのアクションから参照させたい

これ、難しく考えなくてもネストの通りにキーを省略しないで指定すればどこからでも呼べるね。
上記のも間違いではなくて、I18nのymlの書き方は思ったより自由(?)臨機応変(?)で良さそう。
そしてtメソッドをオーバーライドして自分で定義することもできるそうだ。
スゴイ。

モデルに追加したバリデーションのエラー文を日本語に

Tutorial本文のこの辺

:pictureは属性名なので普通にする

次にエラー文を日本語にしたい
最初にやったことはこれ↓ これではNoMethodError

うむわからん!となったのでにゅ〜ぶる会で質問

tだけで動かない場合は、I18n.tって省略せずに書こう!

との事でそのようにしてみる
→viewは表示されるようになったけどエラー文が表示されたい部分に「画像translation missing: ja.less_than_5MB」
!!(ピコーン)

できた!

けどこのままでは問題がある!
→現状の指定ではless_than_5mbは属性名として認識されている
 今後less_than_5mbという名前の属性名が出来た時、エラーメッセージがそのまま表示されてしまう!!
エラーメッセージはエラーメッセージとして表示されたい!のでmicropost以下ではないところに移動しよう!

さらに、設定をしておけばerrors.addの第二2引数をシンボルで定義できるということも教えてもらいましたよ!
これはコードもすっきり!!


と、いう事で 最終的にこう!

viewのJSコード内の文章を日本語にしたい

参考ページ
あとで読む