search
LoginSignup
198
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Rails で I18n を使って日本語化

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

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 でネストしたモデルの属性名の対応

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
198
Help us understand the problem. What are the problem?