🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

Q&A

解決済

2回答

2842閲覧

バリデーションによるエラーメッセージを日本語化する際に ja.ymlが読み込まれず、日本語化ができない

amaama

総合スコア2

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

0グッド

0クリップ

投稿2021/03/02 17:21

編集2021/03/02 20:49

現在railsで簡単なアプリを作っています。
ユーザ登録フォームからpeopleデータベースにユーザ登録する際に
表示されるエラーメッセージを日本語化したいと考えていました。
下記サイトを参考に上記実現を試みたところ
https://qiita.com/Ushinji/items/242bfba84df7a5a67d5b

personモデルのバリデーションによるエラーメッセージを日本語化する際に
ja.ymlが読み込まれず、日本語化ができないです。
関連ドキュメントを下記に示します。
解決策をご教授頂けないでしょうか

rails-i18nは導入済みです。

該当のソースコード

config/locales/ja.yml

ja: activerecord: models: person: パーソン attributes: person: name: 名前 age: 年齢 email: メールアドレス password: パスワード

config/application.rb

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 Insta class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. I18n.load_path += Dir[Rails.root.join("config", "locales", "**", "*.{rb,yml}")] config.i18n.default_locale = :ja config.load_defaults 5.2 # Settings in config/environments/* take precedence over those specified here. # Application configuration can go into files in config/initializers # -- all .rb files in that directory are automatically loaded after loading # the framework and any gems in your application. end end

app/views/people/add.html.erb

<h1>ユーザ登録</h1> <p class="error_message"><%= @msg %></p> <div class="form1"> <table> <%= form_for(@person, url: { controller: "people", action: "create" }) do |form| %> <tr> <th>Name</th> <td><%= form.text_field :name, :size => "20" %></td> </tr> <tr> <th>Age</th> <td><%= form.text_field :age, :size => "3" %></td> </tr> <tr> <th>email</th> <td><%= form.text_field :email, :size => "30" %></td> </tr> <tr> <th>password</th> <td><%= form.text_field :password, :size => "30" %></td> </tr> <%= form.submit "登録", class: "button" %> <% end %> </table> </div>

app/controllers/people_controller.rb

class PeopleController < ApplicationController def index @msg = "Person data." @data = Person.all end def add @person = Person.new end def create @person = Person.new person_params if @person.save redirect_to "/people" else re = "" @person.errors.messages.each do |key, vals| vals.each do |val| re += '<span style="color:red">' + key.to_s + "</span> " + val + "<br>" end end @msg = re.html_safe render "add" end if request.post? Person.create(person_params) end end private def person_params params.require(:person).permit(:name, :age, :email, :password) end end

補足情報(FW/ツールのバージョンなど)

Rails 5.2.4.4
ruby 2.7.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml

上記のファイルを ja.yml にマージしてください。

これで @model.errors.full_messagesは日本語化されると思います。
(されない場合はspring stopしてrailsを再起動してみてください)

@model.errors.messages だとkeyが日本語化されないようなので、
エラー文を組み立てるときにkeyの部分を以下のようにしてください。

ruby

1Person.human_attribute_name(key)

4.5 Active Recordモデルで翻訳を行なう

投稿2021/03/02 22:10

neko_daisuki

総合スコア2090

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amaama

2021/03/03 06:02

猫大好きさん 回答ありがとうございます! 無事解決することができました! ぬこ僕もだーーい好き♡
guest

0

config/locals/ja.yml

ローカルではなく、ロカーレ config/locales/ja.yml
とか?

違ったらすみません。

投稿2021/03/02 20:44

gambaldia

総合スコア266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amaama

2021/03/02 20:54

回答ありがとうございます。 すいません、質問文の中のみのタイピングミスです。 誤:config/locals/ja.yml 正:config/locales/ja.yml 実際は上記正のようなフォルダ配置となっており、問題解決方法を求めております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問