i18nを使って日本語対応
i18nとは
ソフトウェアを特定の地域の言語、仕様に縛られることなく、世界各国で共通して利用できるようにすることを意味する。「Internationalization」を省略した表記方法のこと。
Railsのエラーメッセージやコンテンツは英語表記になっているので、英語以外の言語を使いたい場合は、言語ごとに翻訳を追加する必要がある。
1.方法1:gemrails-i18n
をインストールする or
1.方法2:GitHubのi18nリポジトリから翻訳ファイルをダウンロードする
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