LoginSignup
1
0

More than 3 years have passed since last update.

[Rails]日本語対応のためのGem 'rails-i18n'の使い方

Last updated at Posted at 2020-12-20

目的

Gem 'rails-i18n'を使って、日本語対応させること。
このGemを導入するときに詰まった部分をメモとして残す。

開発環境

・Ruby 2.6.4
・Rails 5.2.3

参考資料

Rails 国際化 (i18n) API

Railsのi18nによる日本語化対応

I18n::InvalidLocaleData ロケールファイルを翻訳できない

導入手順

①gem 'rails-i18n'をインストールする。

Gemfile.
gem 'rails-i18n', '~> 5.1'
$ bundle install

RailsのGemをインストールするときの、いつもの流れです。

②デフォルトの言語を日本語に設定する。そしてi18nの複数ロケールファイルが読み込まれるようpathを通す。

config/application.rb
module App
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 5.2

    # 2行追記:デフォルトのlocaleを日本語(:ja)にする.
    config.i18n.default_locale = :ja
    config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
  end
end

モジュールの中に2行追記してください。この記述がないと、Gemをインストールしても日本語対応してくれないようです。

③localesフォルダの中にja.ymlファイルを作る

・modelの日本語対応

config/locales/activerecord/ja.yml
ja:
    activerecord:
     models:
       user: 'ユーザー'
       board: '掲示板'
     attributes:
       user:
         email: 'メールアドレス'
         password: 'パスワード'
         password_confirmation: 'パスワード確認'
         last_name: '姓'
         first_name: '名'

model全体に対応させるときはmodelsの階層を作り、
カラム名を対応させるときはattributesの階層を作ります。

・view,controllerの日本語対応

config/locales/view/ja.yml
ja:
   users:
     new:
       title: 'ユーザー登録'
       to_login_page: 'ログインページへ'
     create:
      success: 'ユーザー登録が完了しました'
      fail: 'ユーザー登録に失敗しました'

view/ja.ymlに記述することで、controllerにも適応されます。
ただ、インデントをきっちり2つずつにして階層構造を作らないと、日本語適用されないよう。

ja.ymlの書き方については、以下のRailsガイドの記事が参考になります。
探索の「遅延」(lazy lookup)

④viewやcontrollerで、設定した日本語を表示させる

ja:
  books:
    index:
      title: "ほげほげ"

上記のような階層構造になっていれば、以下のようにして、app/views/books/index.html.erbビューテンプレート内部でbooks.index.title値にアクセスできます。

<%= t '.title' %>  または  <%= t ('.title') %>

省略せずに書くと以下になります。

<%= t 'books.index.title' %>

これでGem 'rails-i18n'を使って、日本語対応できるはずです!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0