【Rails】【 i18n】日本語化する
初期設定
config/application.rb モジュール内に以下を記入。 ※私は誤ってモジュール外に記入し、rails sエラー「undefined method 'config'」となって数十分溶かしました。
config.i18n.default_locale = :ja ##デフォルトの言語設定
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s] ##言語ファイルを階層ごとに設定するためのもの
i18nを導入する。
Gemfileに以下を追記して、bundle install
gem 'rails-i18n'
yamlファイルに日本語訳を記入していく。
view用とactiverecord用で分ける。
ja:
defaults: ##どこでも使えるもの
login: 'ログイン'
register: '登録'
logout: 'ログアウト'
users: ##usersコントローラーの
new: ##newアクション(view)
title: 'ユーザー登録' ## titleって箇所
to_login_page: 'ログインページへ' ## to_login_pagesって箇所
user_sessions:
new:
title: 'ログイン'
to_register_page: '登録ページへ'
password_forget: 'パスワードをお忘れの方はこちら'
ja:
activerecord:
models:
user: 'ユーザー'
attributes:
user:
email: 'メールアドレス'
password: 'パスワード'
last_name: '姓'
first_name: '名'
password_confirmation: 'パスワード確認'
view側のファイルが翻訳を読み込めるようコードを書き換える。
※User登録用ページはモデルオブジェクトに紐付いているため、記載不要! ※ログインページはモデルと関連がないので(session)ラベルに対してi18nを記入していく。
<h1><%= t('.title') %></h1> #ここ
<%= form_with(url:login_path, local: true) do |f| %>
<div class="form-group">
<%= f.label :email, User.human_attribute_name(:email) %> #ここ
<%= f.email_field :email, class: 'form-control' %>
<div class="form-group">
<%= f.label :password, User.human_attribute_name(:password) %> #ここ
<%= f.password_field :password, class: 'form-control' %>
<div class="actions">
<%= f.submit t('defaults.login'), class: 'btn btn-primary' %> #ここ
</div>
<% end %>
<div class='text-center'>
<%= link_to t('.to_register_page'), new_user_path %> #ここ
<a href="#"><%= t '.password_forget' %></a>
</div>
こんな感じ。
以下のリンクに翻訳ファイルがある。これを適用してくれる