i18nの利用

何がしたいか

例えばenumを使うときにはキーとなる文字列をviewで表示したいけど、そのままでは英語表記になってしまう。その場で変換するコードを書いたんではenumの意味がない。そういうときに予め辞書ファイルを作っておいて変換できれば便利。i18nは本来アプリの国際化の対応のための仕組みだと思うけど、今回はプログラム→UIの対応のために利用。

辞書ファイル

my_app/config/locales/ja.yml

のようにja.ymlファイルを作成。

ja:
  school:
    category: 
      general: '普通'
      agricultural: '農業'
      industrial: '工業'
      commercial: '商業'
      fishery: '水産'
      home_economy: '家庭科'
      nursing: '看護'
      information: '情報通信'
      welfare: '福祉'
      other: 'その他'

アプリの設定

下記のファイルを編集

my_app/config/application.rb

このファイルはサーバーを起動するときにしか読まれないようなので、書き換えたら再起動しないと反映されない。

module My_app
  class Application < Rails::Application
    ~略~
    config.i18n.default_locale = :ja
    ~略~      
  end
end

viewでの活用

<%= t'school.category.general' %>

上のようにすれば 「普通」が描画される。

辞書ファイルはヘルパーメソッド t から呼び出すことができる。

<%= t("school.category.#{@school.category}") %>

上のようにすれば動的に辞書を利用することができる。