学習記録

アウトプット用に作りました

i18nによる日本語化対応

i18nとは

Railsではさまざまな言語に対応するために、このgemがデフォルトで導入されています。
gemを導入することで、gem内部の一般的なメッセージについての日本語での国際化設定ファイルを参照するようになります。
なのでconfig/locals/ja.ymlというファイルを作成する必要なありません。

i18n国際化の使い方

config/application.rbに以下のコードを追加します。

config.i18n.default_locale = :ja
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]

私は二つ目のコードを使ったときに、
Please use Rails.root.join('path/to') instead.と言われてしまいました。

config.i18n.load_path += Dir[Rails.root.join('config/locales/**/*.{rb,yml}').to_s]  

これに書き換えたら大丈夫でした。

この設定をすることで、読み込む対象のファイルを増やし、
定義ファイルを分けることができます。


モデルとビューで翻訳ファイルを分けて管理していきます。
Viewの表示のみの内容を記載するconfig/locals/views/ja.ymlと、
モデルに関連する内容のみを記載するconfig/locals/activerecord/ja.ymlというファイルを作成します。

config/locales/views/ja.yml

ja:
 defaults:    # すべてのコントローラーで使用
   login: 'ログイン'
   register: '登録'
   logout: 'ログアウト'
 users:    # ユーザーコントローラで使用  
   new:    
     title: 'ユーザー登録'
     to_login_page: 'ログインページへ'
 user_sessions:    # セッションコントローラで使用
   new:
     title: 'ログイン'
     to_register_page: '登録ページへ'

config/locales/activerecord/ja.yml

ja:
 activerecord:
   models:
     user: 'ユーザー'
   attributes:
     user:
       last_name: '姓'
       first_name: '名'
       email: 'メールアドレス'
       password: 'パスワード'
       password_confirmation: 'パスワード確認'

モデルは全てactiverecordの下から記述します。
これによってUser.model_name.humanで使用することができます。
User.model_name.humanは、t('activerecord.models.user')と同じものを出力します。


ビューやコントローラで出力するときは、
lazy lookupを使用します。<%= t'.title %>や<%= t('.title) %>