Rails エラーメッセージの日本語化
はじめに
現在チーム開発中、プログラミング学習2ヶ月目の初学者です🔰
エラーメッセージを日本語化する中でちょっと苦戦したので、
備忘録として残しておきます!
間違いなどあればぜひコメントで教えてください🙆🏻♀️
Gemの導入
gem "rails-i18n"
bundle installを忘れずに!
configファイルを編集
以下を記述することで、エラーメッセージが日本語化される!
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 6.1
+ config.i18n.default_locale = :ja
# I18nライブラリに訳文の探索場所を指示する
+ config.i18n.load_path += Dir[Rails.root.join('config/locales/*.yml').to_s]
カラム名以外が日本語になっている状況!
カラム名を日本語にする
専用のymlファイルを作成する!
下記のようにモデル、属性、カラム名に分けて記述したら無事日本語になりました🔥
インデントが少しでもズレると変わらないので注意です!!
あと、ja:や models:などの記述は1つで大丈夫です💪🏻
こんな感じで記述!
ja:
activerecord:
models:
item: 商品名
genre: ジャンル名
shipping_address: 配送先
attributes:
item:
name: 商品名
description: 商品説明
price_without_tax: 税抜金額
genre: ジャンル名
genre:
name: ジャンル名
shipping_address:
postal_code: 郵便番号
address: 住所
name: 宛名
:
このサイトのNG例に注意です!!
例(配送先)
ちなみにバリデーションはこんな感じ!
class ShippingAddress < ApplicationRecord
belongs_to :customer
#バリデーション設定
validates :name, :address, presence: true
validates :address, length: { maximum: 50 }, presence: true
validates :postal_code, format: {with: /\A\d{7}\z/}, presence: true
:
コントローラーはこんな感じ!
保存に失敗した場合にrenderの記述がないとエラーメッセージが表示されないです。
class Public::ShippingAddressesController < ApplicationController
def create
@shipping_address = ShippingAddress.new(shipping_address_params)
@shipping_address.customer_id = current_customer.id
if @shipping_address.save
# 保存に成功した場合の処理
redirect_to shipping_addresses_path, notice: "配送先を登録しました。"
else
# 保存に失敗した場合の処理
@shipping_addresses = current_customer.shipping_addresses
render :index
flash.now[:alert] = "配送先の登録に失敗しました。"
end
end
:
エラーメッセージを呼び出す記述
:
<%= render "layouts/error_messages", model: @shipping_address %>
:
エラーメッセージの部分テンプレート
<% if model.errors.any? %>
<div class="alert alert-danger">
<ul class="mb-0">
<% model.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
devise関連の日本語化
config/lacalesディレクトリに、devise.ja.ymlファイルを作成し、
下記の翻訳コードを記述!
今回は、userではなく、customerで作成しているため、
userのところを下記のように変更!
これもインデントに要注意!
ja:devise.ja.yml
activerecord:
attributes:
customer:
first_name: 性
last_name: 名
furigana_last_name: セイ
furigana_first_name: メイ
post_code: 郵便番号
address: 住所
telephone_number: 電話番号
password: パスワード
:
こんな感じでエラーメッセージが無事日本語になリました!
🌱参考にさせていただいた記事
インデントなど少しでもずれたり記述方法が違うとエラーになってしまうので苦戦しました😂
チーム開発ももう終わりに近づいてきていて、
最初は右も左もわからない状態でメンバーが1人抜けてしまったり
イレギュラーなことも多かったですが、
無事完成できそうで安心しているのと、みんなで作り上げる楽しさを知りました🥹
無我夢中で毎日寝不足でしたが、
ポートフォリオやこれからに活かせるいろんなことが学べたなあ
残りの期間も精一杯頑張ります!🏋🏻パワー
Discussion