Railsのi18nでラベルが日本語で表示されない
前提
Railsガイド見ながら以下のように設定します。
# config/application.rb module AppName class Application < Rails::Application # 略 config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s] config.i18n.default_locale = :ja # 略 end end
Userモデルの翻訳ファイルは以下のとおりです。
# config/locales/models/user/ja.yml ja: activerecord: models: user: ユーザー attributes: user: email: メールアドレス password: パスワード
以上が終わったらRailsサーバーを再起動しておきます。
今回検証するViewに対応するコントローラーのnewアクションの内容は以下のとおりです。
def new @user = User.new end
日本語訳の検証
よくあるログインフォームを例に見ていきます。
※Slimで書いています。
.signup-form = form_with url: auth_login_path, local: true do |f| = f.label :email = f.email_field :email, placeholder: :email, autofocus: true = f.label :password = f.password_field :password, placeholder: :password .signup-form__submit = f.submit 'ログイン'
これでページを表示してみると...
おや、ラベルが日本語化されていませんね。
これ、実は form_with
に model
を指定していないことが原因のようでした。
model: @user
を追加します。
.signup-form = form_with model: @user, url: auth_login_path, local: true do |f| .signup-form__input = f.label :email = f.email_field :email, placeholder: :email, autofocus: true = f.label :password = f.password_field :password, placeholder: :password .signup-form__submit = f.submit 'ログイン'
きちんとメールアドレスとパスワードが日本語化されました! いや〜意外なところでつまづいてしまいました。