もこたんぺ Learning Note

自分が勉強する上でわからなかったことを理解を深めていくためにまとめていく。

i18nを使って日本語対応

i18nとは

ソフトウェアを特定の地域の言語、仕様に縛られることなく、世界各国で共通して利用できるようにすることを意味する。「Internationalization」を省略した表記方法のこと。
Railsのエラーメッセージやコンテンツは英語表記になっているので、英語以外の言語を使いたい場合は、言語ごとに翻訳を追加する必要がある。

1.方法1:gemrails-i18nをインストールする or

1.方法2:GitHubi18nリポジトリから翻訳ファイルをダウンロードする

curl -s https://raw.githubusercontent.com/svenfuchs/rails-i18n/master/rails/locale/ja.yml -o config/locales/ja.yml


2.デフォルトの言語を日本語にする

config/application.rb

config.i18n.default_locale = :ja


3.i18nロケールファイルが読み込まれる為のパスを通す

config/application.rb

config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]


4.config/locales以下にロケールファイルを配置する

※viewとmodelは絶対分ける 配置は以下の感じ

config
└── locales
    ├── model.ja.yml  # modelは1つのファイルで管理
    └── views         # views関連のファイルはここで管理
        ├── admin
        │   ├── dashboards
        │   │   └── ja.yml
        │   ├── ja.yml
        │   ├── user_sessions
        │   │   └── ja.yml
        │   └── users
        │       └── ja.yml
        ├── boards
        │   └── ja.yml
        ├── dashboards
        │   └── ja.yml
        ├── password_resets
        │   └── ja.yml
        ├── shared
        │   └── ja.yml
        ├── user_sessions
        │   └── ja.yml
        └── users
            └── ja.yml


5.ja.ymlに日本語を設定する

※ビューはビューで格納しているフォルダ名を起点にして、ビュー名毎に記述する。
※インデントに注意!

viewの日本語化設定

config/locales/views/users/ja.yml

ja:
  users:
    new:
      first_name: "名"
      last_name: "姓"
      email: "メール"
      image: "プロフィール画像"
      password: "パスワード"
      password_confirmation: "パスワード確認"
      submit: "登録"
      login: "ログインはこちら"


modelの日本語化設定

※モデルは全てactiverecord以下に記述する
activerecord以下に記述することで、
User.model_name.human / User.human_attribute_name({attr_name})で使用可能になる。


config/locales/model.ja.yml

ja:
  activerecord:
    models:
      user: ユーザー 
      board: 掲示板
    attributes:
        user:
          id: ID
          first_name: 名前
          last_name: 姓
          email: メールアドレス
          file: プロフィール画像
          crypted_password: パスワード
  attributes:
    created_at: 作成日
    updated_at: 更新日


6.設定した日本を表示させる

viewで使用するときは、<%= t.'.title' %>みたいな感じで使える。 modelで使用するときは、<li><%= User.model_name.human %></li>で「ユーザー」が表示される。

参考

Rails 国際化 (i18n) API - Railsガイド
https://github.com/svenfuchs/rails-i18n
I18nとは何? Weblio辞書
[初学者]Railsのi18nによる日本語化対応 - Qiita