スポンサーリンク
エラーメッセージを日本語にする
前回、バリデーションエラー時にエラーメッセージを表示するようにしましたが、このエラーメッセージを簡単に日本語化する方法があります。
/config/application.rbを開いて、以下の一文を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | require_relative 'boot' require 'rails/all' # Require the gems listed in Gemfile, including any gems # you've limited to :test, :development, or :production. Bundler.require(*Rails.groups) module PhoneBook class Application < Rails::Application # Settings in config/environments/* take precedence over those specified here. # Application configuration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded. config.i18n.default_locale = :ja end end |
この一文によってどういう処理が行われているのか詳しいことはよく分かりませんが、デフォルト言語を日本語に設定しているようです。
それともう一つ。
rails-i18nというのをインストールします。
/Gemfileを開いて、以下のように、gem ‘rails-i18n’と追記してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 | source 'https://rubygems.org' #日本語化 gem 'rails-i18n' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 5.0.0', '>= 5.0.0.1' # Use sqlite3 as the database for Active Record gem 'sqlite3' # Use Puma as the app server gem 'puma', '~> 3.0' #以下省略 |
正しく書けたらファイルを保存してから、コンソールにて、
1 | $ bundle install |
というコマンドを打ってインストールします。
これでサーバーを立ち上げなおしてからアクセスすると、エラーメッセージが日本語になっているはずです。
コンソールにカーソルを合わせた状態で、control + cと打つことで、サーバーを一旦落とすことができます。
それから再度、サーバーを立ち上げるコマンドを打ってください。
1 | $ rails s -b $IP -p $PORT |
スポンサーリンク
翻訳ルールを定義する
ただ、これだとフィールド名がまだ英語のままです。
フィールド名も日本語にするには、/config/localesディレクトリ内に、ja.ymlというファイルを新規作成して、以下のように書きます。
1 2 3 4 5 6 7 | ja: activerecord: attributes: member: name: 名前 yomi: ヨミガナ phone: 電話番号 |
これでフィールド名も日本語になりました。
このja.ymlというのは、日本語化する為の設定ファイルのようなもので、実は上記の書き方によって、memberリソースの
- nameフィールド → 名前
- yomiフィールド → ヨミガナ
- phoneフィールド → 電話番号
という翻訳ルールを定義していることになります。
結果的に、このja.ymlを書いておけば、表示されるフィールド名は全て自動的に翻訳されることになるので、リソースの新規登録画面を作って、登録処理を実装するで、いちいちフィールド名の表示やボタンのテキストなどを日本語に変えたのが、不要になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 | <p> <%= f.label :name ,"名前" %> <%= f.text_field :name %> </p> <p> <%= f.label :yomi, "ヨミガナ" %> <%= f.text_field :yomi %> </p> <p> <%= f.label :phone, "電話番号" %> <%= f.text_field :phone %> </p> <%= f.submit "登録" %> |
↑こんな風に、頑張って日本語化しましたが、全部消してしまいましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 | <p> <%= f.label :name %> <%= f.text_field :name %> </p> <p> <%= f.label :yomi %> <%= f.text_field :yomi %> </p> <p> <%= f.label :phone %> <%= f.text_field :phone %> </p> <%= f.submit %> |
各フィールドの表記をデフォルトに戻しても、ちゃんと日本語化されているのが分かると思います。↓
[…] バリデーションエラーメッセージ、及び、フィールド名を日本語化する | Ruby on Rails 始めました (rails-study.net) […]
by 国際化 (I18n) [Rails] – Site-Builder.wiki 2019年9月3日 10:44 PM