• 多言語対応とは?

    └rails内で様々な言語に対応できる機能のこと=railsに標準装備

    └railsでは初期段階で先に多言語機能を導入する必要がある。

  • 多言語対応の導入の流れ:

    ①config/application.rb内に下記のコマンドを入力する

    config/application.rb
    
    ①config.i18n.available_locales = %i[ja en]
    ②config.i18n.default_locale = :ja
    ③config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
    

    ②Gemfileに翻訳ファイルが詰め込まれたi18n-railsをインストールする:

    # Gemfile
    gem 'rails-i18n'
    

    ③config/locales配下に2つのファイルを作成する:

    config/locales/views/ja.yml とconfig/locales/activerecord/ja.ymlを作成する

    ④ja.ymlの基本的な使い方:

    ja:
      activerecord:
        models:
          user: 'ユーザー'
        attributes:
          user:
            email: 'メールアドレス'
            password: 'パスワード'
    〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
    
    [ビューファイル内]
    <%= t('activerecord.models.user') %>
    ⏩”ユーザー”と表示される
    
    <%= t('activerecord.attributes.user.email') %>
    ⏩”メールアドレス”と表示される
    

    ※<h>~</h>タグの場合は<h><%= ~~~~~%></h>で中に入れてあげる!!

    ※※form_withの場合はちょっと特殊※※

    上の例に倣うとこのように書くことになるでしょう。

    <%= form_with model: @user, local: true do |f| %>
      <%= f.label :email, t('activerecord.attributes.user.email') %>
      <%= f.email_field :email' %>
    
    

    しかしform_withは優秀なのでmodel: @userという記述から「これはユーザーに関するフォームである」と認識してくれます。なのでこんな風に書くこともできます。

    <%= form_with model: @user, local: true do |f| %>
      <%= f.label :email %>
      <%= f.email_field :email %>