読者です 読者をやめる 読者になる 読者になる

ちーくんのブログ

プログラミング備忘録

Ruby on Railsのエラーメッセージを日本語化する方法

こんにちは。本日はRailsで日本語に対応させる方法です。

Railsはデフォルトが英語なので、Rails側で日本語にする必要があります。

と言ってもRailsには簡単に国際化ができる方法があるので見ていきましょう。

バージョン

Ruby '2.2.1'
Rails '4.2.1'


application.rbの編集

まずconfig/application.rbでコメントアウトされている「# config.i18n.default_locale = :de」をコメントアウトしてロケールを「:ja」に変えて日本語に対応させます。

#config/application.rb

require File.expand_path('../boot', __FILE__)

require 'rails/all'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module Sample
  class Application < Rails::Application
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
    # config.time_zone = 'Central Time (US & Canada)'

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]

    以下をコメントアウトし、jaに対応
    config.i18n.default_locale = :ja

    # Do not swallow errors in after_commit/after_rollback callbacks.
    config.active_record.raise_in_transactional_callbacks = true
  end
end

rails-i18nのインストール

rails-i18n」という各言語に対応させる便利なGemがあります。
このGemで各メッセージや日付などを日本語にできます。

まずGemファイルにrails-i18nをインストール。

#Gemfile
gem 'rails-i18n'

忘れずにbundle install。

bundle install

一度サーバーを落としてもう一度再起動すると...

f:id:chi_kun:20160417015933p:plain

エラー箇所の部分が日本語になっていますね。
これで基本的には日本語に対応できました。

詳しい日本語のロケールテキストは以下のリンクに載ってます。

github.com


modelの日本語化

「〜を入力してください。」などの日本語には対応できましたが、「title」や「content」の部分はまだ日本語に対応できていません。

これらはModelで定義したものなので自分で日本語に対応させる必要があります。

まずconfig/localesに新たに「ja.yml」というファイルを作成してください。

作成したらそれぞれのModelにあった日本語をロケールテキストに書き込みます。

#config/locales/ja.yml
ja:
  activerecord:
    models:
      post: 投稿
    attributes:
      post:
        title: タイトル
        content: 内容

もう一度サーバーを落として再起動します。

f:id:chi_kun:20160417022840p:plain

すると先ほどとは違い、「title」や「content」の部分が日本語になってます。



本日は以上です。