Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
40
Help us understand the problem. What is going on with this article?
@sasakure-kei

Laravelのデフォルトログイン処理でエラーメッセージを日本語にしたい

More than 5 years have passed since last update.

Laravel5を使っていて、デフォルトのログイン処理を使ってみたとき日本語化するに躓いたのでメモ

まず準備

本題じゃないのでだいぶ省略しますが
https://github.com/laravel/laravel
ここからapp/Http/routes.phpやresources/views/配下を拝借すればこんな感じになりますね。

スクリーンショット 2015-11-17 1.43.28.png

このLoginボタンを押下すると
app/Http/Controllers/Auth/AuthControllerのpostLoginアクションが呼ばれます。

デフォルトではuseしているAuthenticatesAndRegistersUsersトレイトが
postLoginアクションを実装しているので、何も書かなくてもバリデーションしたり認証したり、連続失敗時にしばらくログイン不可にするとかやってくれるようになります。

よし日本語化だ

ここまで分かったらviewはオリジナルなデザインに変えればよくって、
キレイに言語ファイルで変更したい場合はresources/lang/enをコピーしてjaを作り、config/app.phpにてロケールを指定します。

config/app.php
    'locale' => 'ja',

がしかし、単純にそれだけでは下図のように「The email field is required.」や「The password field is required.」は変わらないんですね。

スクリーンショット 2015-11-17 1.56.13.png

そうなんす。これってpostLoginアクション内で呼ばれているバリデーション処理が動的に組み立ててるメッセージなもんで
emailとかpasswordとかってテキストフォームのnameをそのまま使ってるし、、
最初は「もしかしてこれって変更したい場合は自前でログイン処理書けってことなのかー」って思ったりしました。

ちゃんと変更する方法あった。

resources/lang/ja/validation.php(enからjaにコピーしたやつ)内のcustomで指定した場合はそのメッセージが優先されるようになってた。
というわけで

resources/lang/ja/validation.php
    /*
    |--------------------------------------------------------------------------
    | Custom Validation Language Lines
    |--------------------------------------------------------------------------
    |
    | Here you may specify custom validation messages for attributes using the
    | convention "attribute.rule" to name the lines. This makes it quick to
    | specify a specific custom language line for a given attribute rule.
    |
    */

    'custom' => [
        'attribute-name' => [
            'rule-name' => 'custom-message',
        ],
        'email' => [
            'required' => 'メールアドレスを入力してください',
        ],
        'password' => [
            'required' => 'パスワードを入力してください',
        ],

スクリーンショット 2015-11-17 1.58.15.png

ふー 分かってしまえばどうってことなかった
(よくみたら英語で丁寧に説明書いてあるじゃんね。なんなら例まであるし)

もう少しDRYに(追記)

同僚に教えてもらったので追記します。
下記のように:attributeを使うことでパラメータ名も切り出す事が出来ました。めもめも

resources/lang/ja/validation.php

    'custom' => [
        'attribute-name' => [
            'rule-name' => 'custom-message',
        ],
        'email' => [
            'required' => ':attributeを入力してください',
        ],
        'password' => [
            'required' => ':attributeを入力してください',
        ],

    /*
    |--------------------------------------------------------------------------
    | Custom Validation Attributes
    |--------------------------------------------------------------------------
    |
    | The following language lines are used to swap attribute place-holders
    | with something more reader friendly such as E-Mail Address instead
    | of "email". This simply helps us make messages a little cleaner.
    |
    */

    'attributes' => [
        'email' => 'メールアドレス',
        'password' => 'パスワード',
    ],
40
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
stafes
お弁当&ケータリングの総合モール「ごちクル」を運営。”食を通じて世界をより幸せにする”ことに情熱を注ぐ会社です。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
40
Help us understand the problem. What is going on with this article?