##手順
①gem 'rails-i18n'をインストール
②デフォルトの言語を日本語に設定
③複数のロケールファイルが読み込まれるようpathを通す
④新しいファイルを作成
####①gem 'rails-i18n'をインストール
#Gemfile
gem 'rails-i18n', '入れたいバージョン'
→ bundle install
####②デフォルトの言語を日本語に設定
config/application.rbに
config.i18n.default_locale = :ja
を追加。
class Application < Rails::Application
#以下の記述を追記する
#デフォルトのlocaleを日本語(:ja)にする
config.i18n.default_locale = :ja
end
####③複数のロケールファイルが読み込まれるようpathを通す
先程の②と同様にconfig/application.rbに
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
を追加。
class Application < Rails::Application
config.i18n.default_locale = :ja
# 以下の記述を追記する(設定必須)
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
end
####④新しいファイルを作成
config/localesに2つのファイルを作成。
・activerecord/ja.yml
→ modelの日本語化対応のymlファイル
・views/ja.yml
→ view,controllerの日本語対応のymlファイル
##ja.yml内の書き方
activerecord/ja.yml
model全体に対応させるときはmodelsの階層を作り、
カラム名を対応させるときはattributesの階層を作って日本語化にする文字を記入。
※追記※
モデルの日本語を設定した場合、viewでわざわざコードを変更する必要は無い。(勝手に反映される)
ja:
activerecord:
models:
user: 'ユーザー'
board: '掲示板'
attributes:
user:
email: 'メールアドレス'
password: 'パスワード'
password_confirmation: 'パスワード確認'
last_name: '姓'
first_name: '名'
views/ja.yml
以下の書き方でapp/views/users/new.html.erbビューテンプレート内部でnew.index.title値にアクセスできる。
ja:
users:
new:
title: 'ユーザー登録'
to_login_page: 'ログインページへ'
##ビューファイル内での書き方
<%= t '.title' %> または <%= t ('.title') %>
省略せずに書くと → <%= t 'posts.index.title' %>
記入例
<h1>ログイン</h1> → <h1><%= t '.title' %></h1>
<%= f.submit '登録', class: 'btn btn-primary' %>
→ <%= f.submit (t 'defaults.register'), class: 'btn btn-primary' %>
※form_withの場合は注意※
<%= form_with model: @user, local: true do |f| %>
<%= f.label :name, t('activerecord.attributes.user.name') %>
<%= f.email_field :name %>
上記のようなform_with文があった場合、ビューファイル内での書き方によるとt('activerecord.attributes.user.name')
になるが、
form_withはmodel: @user
という記述から「これはユーザーに関するフォームである」と認識してくれるので、以下の書き方でOK。
<%= form_with model: @user, local: true do |f| %>
<%= f.label :name%>
<%= f.email_field :name %>
##参考記事
[初学者]Railsのi18nによる日本語化対応
[Rails]日本語対応のためのGem 'rails-i18n'の使い方