Programming Journal

学習したことの整理用です。

【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を導入する。

GitHub - svenfuchs/rails-i18n: Repository for collecting Locale data for Ruby on Rails I18n as well as other interesting, Rails related I18n stuff

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>

こんな感じ。

以下のリンクに翻訳ファイルがある。これを適用してくれる

rails-i18n/ja.yml at master · svenfuchs/rails-i18n · GitHub