アプリケーションを色々な国に展開する場合やメッセージを日本語化する際にI18nを使用すると思います。
下記のようなパターンではuser_name
をtranslateに渡すと、"太郎"
が返ってきます。
config/locales/ja.yml
ja:
user_name: "太郎"
> I18n.t(:user_name)
=> "太郎"
しかし、user
が、太郎
だけであればこれでも良いのですが、複数いる場合がたいていのパターンだと思います。
これを少し拡張させて、どのuserでも対応できるようにしていきます。
config/locales/ja.yml
ja:
user_name: "%{name}"
> I18n.t(:user_name, name: "太郎")
=> "太郎"
> I18n.t(:user_name, name: "次郎")
=> "次郎"
上記のように変更すると、引数に名前を渡せば、どんな名前でも表示できるようになりました。
これで使いやすくなりました。
さらにtranslateではこのようなこともできます。
config/locales/ja.yml
ja:
user_name_html: <span class="user">"%{name}"</span>
このように最後に_html
をつけることで、htmlごと(今回はspanタグごと)返すこともできます。
view自体が複雑でごちゃごちゃしている場合,こうゆうパターンで書くのも一つの手かもしれません。
translateは調べるといろんなことができるので、色々試してやってみましょう!!
案外今やりたいことと合致するかもしれません