Rails で I18n を使って日本語化

  • 96
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

作っているサービスが日本のみなので、アプリケーション全体の日本語化を企んだ時のメモです。

Rails の I18n を使って日本語化しました。

localeの言語設定変更

config/application.rb を下記に変更する

config.i18n.default_locale = :ja

デフォルトだと、:de でコメントアウトされているので、:jaに変更してアンコメント

辞書ファイルダウンロード

I18n の辞書ファイルを一から全て書き出すと大量になってしまうので、
テンプレートを GitHub から下記コマンドでダウンロードして、プロジェクトのファイルを上書きしておく

辞書ファイル置き場は config/locales/

プロジェクトのトップで下記コマンドを実行

# 英語のテンプレートをDL
wget https://raw.github.com/svenfuchs/rails-i18n/master/rails/locale/en.yml -P config/locales/
# 日本語のテンプレートをDL
wget https://raw.github.com/svenfuchs/rails-i18n/master/rails/locale/ja.yml -P config/locales/

モデル用の辞書ファイルを分割して作成

ダウンロードした辞書ファイルにそのまま書いてもいいんだけど、ファイルが長くなりすぎて管理しづらいので、
モデル用のファイルは別で作成する

ファイル構成例

config/locales
         ├── en.yml
         ├── ja.yml
         └── models
               └── ja.yml

config/locales/models/ja.yml

ja:
  activerecord:
    models:
      user: ユーザー
    attributes:
      user:
        id: ID
        created_at: 登録日時
        updated_at: 更新日時
        birthday: 生年月日
        email: メールアドレス
        salon_id: サロン
        password: パスワード

models: は、モデル名の翻訳で、attributes: は、モデルの attribute の翻訳になります。

ただし、このファイルは自動では読み込まれないので、config/application.rb に下記を追加して、
起動時に読み込まれるようにしておく。

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

これで Rails を起動し直すと、validates とかのエラーメッセージが日本語化されている

今回 API サーバーのため、ほとんど View ないため、View 用の辞書ファイルや呼び出しについては、
ふれてませんので別の機会にでもまとめます。

ネストしたモデルの場合の記載方法もまとめました。
I18n でネストしたモデルの属性名の対応