【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>
こんな感じ。
以下のリンクに翻訳ファイルがある。これを適用してくれる