メッセージを分かりやすくするために、言語設定のGemであるi18nを使用して日本語化を行います。このGemは、今回の場合デフォルトでインストールされているのでインストール作業は必要ありません。さっそく使用してみましょう。
まず、アプリのデフォルト言語を設定します。config/initializersの中にi18n.rbを作成して、以下を追加して下さい。
# config/initializers/i18n.rb
Rails.application.config.i18n.default_locale = :ja
これでデフォルト言語が日本語になりましたが、これだけだとメッセージは英語のままです。メッセージの日本語化には、英語メッセージの翻訳が記載されたファイルを用意する必要があります。
次に、ja.ymlというファイルを作成します。これはロケールファイルと呼ばれるもので、メッセージの翻訳などを書く為のファイルです。では、config/localesの中にja.ymlを作成して下さい。
次に、既存の英語メッセージの翻訳をja.ymlに追加します。以下サイトのファイルの中身をコピペで追加しましょう。
https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml
「rails i18n ja」と検索するとこういったサイトを見つける事が出来ます。
Deviseのメッセージも日本語化していきましょう。config/localesの中にdevise.ja.ymlを作成して下さい。ファイルの中身は以下サイトからコピペで追加します。
https://github.com/tigrish/devise-i18n/blob/master/rails/locales/ja.yml
「devise i18n ja」と検索するとこういったサイトを見つける事が出来ます。
ja.ymlの内容を見ると分かるかと思いますが、各モデルレコードの作成・変更・削除後のメッセージの翻訳がありません。ですので、これらのメッセージの翻訳を追加していきたいと思います。ja.ymlを開いて、以下のように追加して下さい。
# ja.yml
ja:
opinion_thanks: "オピニオンありがとうございました。"
次にコントローラを、追加したメッセージを表示するよう変更します。notice:の次に作成したopinion_thanksを指定してください。以下のように記述します。
notice: t('opinion_thanks')
createアクションすべてのコードも載せておきます。
# opinions_controller.rb
def create
@clip = Clip.find(params[:clip_id])
@opinion_params = opinion_params.merge(clip: @clip)
@opinion = current_user.opinions.build(@opinion_params)
@opinion.clip = @clip
respond_to do |format|
if @opinion.save
# 以下の部分を変更
format.html { redirect_to @clip, notice: t('opinion_thanks') }
else
render 'clips/show'
end
end
end
ja.ymlにメッセージを作成して、ユーザークリップやアーティクルのメッセージを日本語にしましょう。※反映させるにはサーバーの再起動が必要です。
無料ビデオ講座のお知らせ
Skillhub [スキルハブ]では無料の動画講座を多数公開しています。他校だと数万円するような講座が無料で受講できます。