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

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

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

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

Ruby on Rails 4

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

Q&A

解決済

2回答

4440閲覧

Rails deviseの日本語化に失敗する

komachi

総合スコア94

Ruby on Rails

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

Ruby on Rails 4

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

1グッド

1クリップ

投稿2017/05/11 11:52

編集2017/05/11 12:19

deviseのメッセージが日本語化できなくて困っています。
認証が必要なアクションを作り、未認証状態でアクセスしたところ、Authorized users only.というように英語のエラーメッセージが返ってきてしまいます。

以下が、その再現です。

sh

1curl -X POST http://192.168.100.100:3000/api/schedules/ -d "body=hogehoge&user_id=-1" 2{"errors":["Authorized users only."]} # <= 日本語化したい

どうすれば日本語化できるかご教示ください。
自身が気づいた点としては、後述のdevise.ja.ymlで、Authorized users only.に対する日本語訳が無いのだと思います。この点についても何かご存知でしたらご教示ください。よろしくおねがいします。


なお、deviseの設定は以下のページを参考にしました。
まずこちらのページを参考にしてdeviseを導入しました。認証が必要なアクションには、以下のように before_action :authenticate_user! を付けました。

ruby

1class ApplicationController < ActionController::Base 2 before_action :authenticate_user! 3 4 ... 5 6end

また、こちらのページを参考にしてconfig/locale/devise.ja.ymlを所定のディレクトリに配置しました。config/application.rbも参考ページ通りです。


(追記)
自分はdeviseとdevise_token_authというgemを使っていたのですが、gemの実装の中に"Authorized users only."というエラーメッセージがベタ書きされてました。これを編集すれば、思い通りのメッセージになりました。

いじったファイルは以下です。
/usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/devise_token_auth-0.1.39/lib/devise_token_auth/controllers/helpers.rb

テスト結果は以下です。

sh

1curl -X POST http://192.168.100.100:3000/api/schedules/ -d "year=2017&month=12&day=31&user_id=1" 2{"errors":["認証が必要です。"]}
u.yusuke22👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

対応としては、config/locales/ja.ymlに

ja: activerecord: models: book: 本 user: ユーザー attributes: book: title: 作品名 author: 著者名 created_at: 登録日時 updated_at: 更新日時 user: email: メールアドレス password: パスワード password_confirmation: 確認用パスワード current_password: 現在のパスワード errors: messages: invalid: "が不正な値です。" confirmation: "が一致しません。" accepted: "を承諾してください。" empty: "が記入されていません。" blank: "が記入されていません。" inclusion: "は一覧にありません。" exclusion: "は予約されています。" too_long: "は%{count}文字以内で記入してください。" too_short: "は%{count}文字以上で記入してください。" wrong_length: "は%{count}文字で記入してください。" taken: "はすでに使用されています。" not_a_number: "は数値で入力してください。" greater_than: "は%{count}より大きい値を指定してください。" greater_than_or_equal_to: "は%{count}以上の値を指定してください。" equal_to: "は%{count}を指定してください。" less_than: "は%{count}より小さい値を指定してください。" less_than_or_equal_to: "は%{count}以下の値を指定してください。"

みたいに書きます。
基本的に[英語: 日本語]の形式に書いていきます。
githubのrails-i18nを参考にするといいと思います。
ちなみにactiverecord:とerrors:の間にmodelで定義しているテーブルの情報を記述します。

投稿2017/05/11 15:25

wattaru

総合スコア76

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

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

0

Railsでは、エラーメッセージは半角英数でしかやりとり出来ません。
英文でおくって

ja.ymlに書いてある対応に変換するといった形を取っています。
なのでja.ymlに対応を追記して下さい。

投稿2017/05/11 12:46

moke

総合スコア2241

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

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

komachi

2017/05/11 15:07

"対応を追記"とは具体的にどういうことでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問