質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

2455閲覧

Railsでバリデーションのエラーメッセージを日本語化できない

koichi8888

総合スコア24

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2018/06/25 06:38

編集2018/06/25 06:39

前提・実現したいこと

railsでバリデーションのエラーメッセージを日本語化したいですが、
カラム名と日本語訳の対応表をja.ymlに追記しても日本語化できません。
フォームからデータを更新する際に入力必須の項目を空欄にして更新処理を実行した際にエラーを表示させたいです。

application.rbにja.ymlを読み込む記述は追記済みで、現状、エラーメッセージは”<カラム名(英語)>を入力してください”と表示されているので、ja.ymlの読み込みはできていると思っています。

そのため、追記したカラム名と日本語訳の対応表の記載が間違っていると思っています。

ハマってしまっており、ご回答を頂ければ、大変助かります。

該当のソースコード

ja.yml

--- ja: activerecord: ############ここから############ attributes: GyomuDatum: category_id: カテゴリ end_date: 終了日 ip_address: IPアドレス publish_corporation: 発行会社 start_date: 開始日 target_server: 対象サーバ ############ここまで############ errors: messages: record_invalid: "バリデーションに失敗しました: %{errors}" restrict_dependent_destroy: has_many: "%{record}が存在しているので削除できません" has_one: "%{record}が存在しているので削除できません" ############ここから############ models: GyomuDatum: 業務データ ############ここまで############ date: abbr_day_names: - 日 - 月 - 火 - 水 - 木 - 金 - 土 abbr_month_names: - ~ - 1月 - 2月 - 3月 - 4月 - 5月 - 6月 - 7月 - 8月 - 9月 - 10月 - 11月 - 12月 day_names: - 日曜日 - 月曜日 - 火曜日 - 水曜日 - 木曜日 - 金曜日 - 土曜日 formats: default: "%Y/%m/%d" long: "%Y年%m月%d日(%a)" short: "%m/%d" month_names: - ~ - 1月 - 2月 - 3月 - 4月 - 5月 - 6月 - 7月 - 8月 - 9月 - 10月 - 11月 - 12月 order: - !ruby/symbol year - !ruby/symbol month - !ruby/symbol day datetime: distance_in_words: about_x_hours: one: 約1時間 other: "約%{count}時間" about_x_months: one: 約1ヶ月 other: "約%{count}ヶ月" about_x_years: one: 約1年 other: "約%{count}年" almost_x_years: one: 1年弱 other: "%{count}年弱" half_a_minute: 30秒前後 less_than_x_minutes: one: 1分以内 other: "%{count}分未満" less_than_x_seconds: one: 1秒以内 other: "%{count}秒未満" over_x_years: one: 1年以上 other: "%{count}年以上" x_days: one: 1日 other: "%{count}日" x_minutes: one: 1分 other: "%{count}分" x_months: one: 1ヶ月 other: "%{count}ヶ月" x_seconds: one: 1秒 other: "%{count}秒" x_years: one: 1年 other: "%{count}年" prompts: day: 日 hour: 時 minute: 分 month: 月 second: 秒 year: 年 errors: format: "%{attribute}%{message}" messages: accepted: を受諾してください blank: を入力してください confirmation: "と%{attribute}の入力が一致しません" empty: を入力してください equal_to: "は%{count}にしてください" even: は偶数にしてください exclusion: は予約されています greater_than: "は%{count}より大きい値にしてください" greater_than_or_equal_to: "は%{count}以上の値にしてください" inclusion: は一覧にありません invalid: は不正な値です less_than: "は%{count}より小さい値にしてください" less_than_or_equal_to: "は%{count}以下の値にしてください" model_invalid: "バリデーションに失敗しました: %{errors}" not_a_number: は数値で入力してください not_an_integer: は整数で入力してください odd: は奇数にしてください other_than: "は%{count}以外の値にしてください" present: は入力しないでください required: を入力してください taken: はすでに存在します too_long: "は%{count}文字以内で入力してください" too_short: "は%{count}文字以上で入力してください" wrong_length: "は%{count}文字で入力してください" template: body: 次の項目を確認してください header: one: "%{model}にエラーが発生しました" other: "%{model}に%{count}個のエラーが発生しました" helpers: page_entries_info: more_pages: display_entries: "%{first}-%{last}件を表示中 / 合計%{total}件" one_page: display_entries: "1-%{count}件を表示中 / 合計%{count}件" one: "<b>1件中 1-1 件を表示</b>" zero: <b>該当データがありません。</b> number: currency: format: delimiter: "," format: "%n%u" precision: 0 separator: "." significant: false strip_insignificant_zeros: false unit: 円 format: delimiter: "," precision: 3 separator: "." significant: false strip_insignificant_zeros: false human: decimal_units: format: "%n %u" units: billion: 十億 million: 百万 quadrillion: 千兆 thousand: 千 trillion: 兆 unit: "" format: delimiter: "" precision: 3 significant: true strip_insignificant_zeros: true storage_units: format: "%n%u" units: byte: バイト gb: GB kb: KB mb: MB tb: TB percentage: format: delimiter: "" format: "%n%" precision: format: delimiter: "" support: array: last_word_connector: 、 two_words_connector: 、 words_connector: 、 time: am: 午前 formats: default: "%Y年%m月%d日(%a) %H時%M分%S秒 %z" long: "%Y/%m/%d %H:%M" short: "%m/%d %H:%M" pm: 午後 views: pagination: first: 先頭 last: 最終 next: 次ページ previous: 前ページ truncate: "..."

試したこと

・ja.ymlに追記後、OS再起動しても設定は反映されませんでした。
・下記のリンクでja.ymlを整形したものを追記しても設定が反映されませんでした。
リンク:http://www.yamllint.com/

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

・Rails
Rails 4.2.10

・Mysql
mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper

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

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

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

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

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

koichi8888

2018/06/26 02:03

ご回答ありがとうございます。無事解決しましたので、クローズさせていただきます。
guest

回答1

0

ベストアンサー

他が全てスネークケース(display_entriesのように全て小文字かつ_区切り)なのに対して、
GyomuDatumだけキャメルケース(単語の先頭が大文字、区切り文字なしでくっつける)になってるのが原因な気がします。
もしそうならgyomu_datumに直して解決しないでしょうか?

投稿2018/06/25 16:54

kthatoto

総合スコア49

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

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

koichi8888

2018/06/26 02:02

ご回答ありがとうございます。教えて頂いた通り、『gyomu_datum』に変更したところ、解決しました。大変助かりました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問