Railsアプリのエラーメッセージを日本語化する
Railsアプリのエラーメッセージを日本語にする方法をまとめていきます。
やることはざっくり二つです。
- Railsの設定を日本語にする
- localeファイルに直接記述
設定を日本語にする
まずはデフォルトの言語を日本語にするため、config/application.rb
に以下の記述を追加します
config.i18n.default_locale = :ja
次に、rails-i18n
というgemをインストールします。
gem 'rails-i18n'
% bundle install
これで、エラーメッセージの一部が日本語化します。「can't be blank」と表示されていたところが「入力してください」に変わる感じです。
i18nというのはrailsアプリを国際化するためのツールです。そのため日本語以外にも、様々な言語に設定を変更することができます。例えばapplication.rb
のファイルで、:ja
としたところを:de
とすればドイツ語になります。
このgemについてはこちらに。
https://github.com/svenfuchs/rails-i18n
https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml
おまけ i18nの由来
i18nは「InternationalizatioN」という言葉のIとNの間に18文字存在していることから、i18nという名前になったそうです。
localeファイルに記述
i18nはあらかじめ設定された文字列を翻訳するだけなので、それだけではエラーメッセージを完全に日本語にすることはできません。
例えばモデルの属性名など、アプリの製作者が命名したものまでは対応していないので、エラーメッセージには属性名がそのまま表示されます。( 「Nick name を入力してください」のように表示されてしまう。)
そのため、自分でlocaleファイルに記述し設定する必要があります。
config/locale
の中にja.yml
というファイルを作成し、以下のように記述していきます。(詳しい書き方はまたの機会に。)
ja:
activerecord:
attributes:
user:
nick_name: ニックネーム
これで「Nick name」と表示されていたところが、「ニックネーム」と表示されるようになります。
deviseを使ってユーザー管理機能を作った場合
こちらにdevise関連の表示を日本語化する設定をまとめてくれているサイトがあります。
https://github.com/tigrish/devise-i18n/blob/master/rails/locales/ja.yml
config/locale
の中にdevise.ja.yml
というファイルを作成して、このサイトを参考に書いていけばOKです。
まとめ
- application.rbで言語を設定する
- i18nというgemをインストールする
- localeファイルに記述