基本的な流れ(自分用に)
gem 'rails-i18n'をインストールする
gem 'rails-i18n'
Gemfileに「rails-i18n」を導入する。
bundle install
「rails-i18n」をインストール
デフォルトの言語を日本語に設定する、i18nの複数のlocalesファイルが読み込まれるようにする
module RunteqNormal
class Application < Rails::Application
config.load_defaults 5.2
config.generators.system_tests = nil
config.generators do |g|
g.skip_routes true
g.assets false
g.helper false
g.test_framework false
end
#ここから追記
#↓でデフォルトの言語を日本語に設定する。
config.i18n.default_locale = :ja
#↓でi18nの複数のlocalesファイルが読み込まれるようになる
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
#ここまで
end
end
#views/model用のlocalesファイルをconfig/locales下に作成する
画面表(HTML)を担当するViewとDB関連の処理を担当するModelでは、ファイルを分けておく必要がある。
今回は、View用の「config/locales/view/ja.yml」とModel用の「config/locales/activerecorder/ja.yml」を作成。
#それぞれのja.ymlファイルに日本語の設定をする
ja:
defaults:
login: 'ログイン'
register: '登録'
logout: 'ログアウト'
users: # controller/usersに対応
new: # newアクションに対応
title: 'ユーザー登録'
to_login_page: 'ログインページへ'
user_sessions:
new:
title: 'ログイン'
to_register_page: '登録ページへ'
password_forget: 'パスワードをお忘れの方はこちら'
boards:
index:
title: '掲示板一覧'
new:
title: '掲示板作成'
bookmarks:
title: 'ブックマーク一覧'
profiles:
show:
title: 'プロフィール'
# モデルは全て activerecord 下に記述することで、「User.model_name.human」、「User.human_attribute_name({attr_name})」で使用可能になる。
ja:
activerecord:
models:
user: 'ユーザー'
board: '掲示板'
attributes:
user:
email: 'メールアドレス'
password: 'パスワード'
password_confirmation: 'パスワード確認'
last_name: '姓'
first_name: '名'
#基本的な使い方
###Viewの場合
<%= t 'users.new.title' %>
→「config/locales/views/ja.yml」に、「users: new: title: ’ユーザー登録’」と記述してあるので「ユーザー登録」と表示される
・対応するビューの中ではツリーを省略できるので、「users.new」の部分は省略して書くことができる。
#ja.ymlファイルの
# users:
# new:
# の部分を自動で読み込んでいる状態
<%= t ‘.title’ %>
→同じく「ユーザー登録と表示される」
・「users/index.html.erb」に記述されているので、「ja.yml」ファイルの「users: new:」の部分を自動的に読み込んでいる。
###Modelの場合
<%= t('activerecord.models.user') %>
→「onfig/locales/activerecorder/ja.yml」に「activerecord: models: user: ‘ユーザー’」と記述してあるので「ユーザー」と表示される
<%= t('activerecord.attributes.user.email') %>
→「メールアドレス」と表示される
####「User.model_name.human」、「User.human_attribute_name({attr_name})」を使う
#<%= t('activerecord.models.user') %> を書き換える
<li><%= User.model_name.human %></li>
→「ユーザー」と表示される
#<%= t('activerecord.attributes.user.email') %> を書き換える
<li><%= User.human_attribute_name(:email) %></li>
→「メールアドレス」と表示される
#実際の記述例
<%= form_with model: @user, local: true do |f| %>
<div class="form-group">
<%= f.label :email, User.human_attribute_name(:email) %>
<%= f.text_field :email, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :password, User.human_attribute_name(:password) %>
<%= f.password_field :password, class: 'form-control' %>
</div>
#参考