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

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

ただいまの
回答率

90.33%

  • Ruby on Rails 4

    2465questions

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

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 203

koichi8888

score 14

 前提・実現したいこと

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • gouf

    2018/06/25 20:22 編集

    View ではどのように表示させていますか? 当該部分のコードは公開可能ですか? (参考: http://guides.rubyonrails.org/i18n.html )

    キャンセル

  • koichi8888

    2018/06/26 11:03

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

    キャンセル

回答 1

checkベストアンサー

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/26 11:02

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

    キャンセル

同じタグがついた質問を見る

  • Ruby on Rails 4

    2465questions

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