Laravelのバリデーションを日本語にする方法を調べたのでメモしておきます。
対応前
app\Http\routes.php
Route::get('/post', 'PostController@getIndex');
Route::post('/post', 'PostController@postIndex');
app\Http\Controllers\PostController.php
<?php
namespace App\Http\Controllers;
use Request;
use Redirect;
use Validator;
class PostController extends Controller
{
public function getIndex()
{
return view('post.index');
}
// バリデーションのルール
public $validateRules = [
'mail'=>'required|email',
'password'=>'required|min:8'
];
public function postIndex()
{
// postしたデータをすべて取得
$data = Request::all();
//バリデーションをインスタンス化
$val = Validator::make(
$data,
$this->validateRules
);
//バリデーションNGの場合
if($val->fails()){
return redirect('/post/')->withErrors($val)->withInput();
}
return 'OK!';
}
}
resources\views\post\index.blade.php
<form action="/post" method="POST" novalidate>
<dl>
<dt>メールアドレス<span class="required">(必須)</span></dt>
<dd>
<input name="mail" type="text">
@if($errors->has('mail'))<p class="error">{{ $errors->first('mail') }}</p> @endif
</dd>
</dl>
<dl>
<dt>パスワード<span class="required">(必須・8文字以上)</span></dt>
<dd>
<input name="password" type="text">
@if($errors->has('password'))<p class="error">{{ $errors->first('password') }}</p> @endif
</dd>
</dl>
<div>
<input type="submit" value="送信">
</div>
<input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>
特に設定せずにバリデーションを実装した場合、エラー文言が英語で表示されます。

対応方法
今回はこちらのメッセージファイルを使ってみます。
resources\lang 内にjaディレクトリを作成して、その中にvalidation.phpを作成します。
resources\lang\ja\validation.php
<?php // resources/lang/ja/validation.php
return [
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
'accepted' => ':attributeを承認してください。',
'active_url' => ':attributeは正しいURLではありません。',
'after' => ':attributeは:date以降の日付にしてください。',
'alpha' => ':attributeは英字のみにしてください。',
'alpha_dash' => ':attributeは英数字とハイフンのみにしてください。',
'alpha_num' => ':attributeは英数字のみにしてください。',
'array' => ':attributeは配列にしてください。',
'before' => ':attributeは:date以前の日付にしてください。',
'between' => [
'numeric' => ':attributeは:min〜:maxまでにしてください。',
'file' => ':attributeは:min〜:max KBまでのファイルにしてください。',
'string' => ':attributeは:min〜:max文字にしてください。',
'array' => ':attributeは:min〜:max個までにしてください。',
],
'boolean' => ':attributeはtrueかfalseにしてください。',
'confirmed' => ':attributeは確認用項目と一致していません。',
'date' => ':attributeは正しい日付ではありません。',
'date_format' => ':attributeは":format"書式と一致していません。',
'different' => ':attributeは:otherと違うものにしてください。',
'digits' => ':attributeは:digits桁にしてください',
'digits_between' => ':attributeは:min〜:max桁にしてください。',
'email' => ':attributeを正しいメールアドレスにしてください。',
'filled' => ':attributeは必須です。',
'exists' => '選択された:attributeは正しくありません。',
'image' => ':attributeは画像にしてください。',
'in' => '選択された:attributeは正しくありません。',
'integer' => ':attributeは整数にしてください。',
'ip' => ':attributeを正しいIPアドレスにしてください。',
'max' => [
'numeric' => ':attributeは:max以下にしてください。',
'file' => ':attributeは:max KB以下のファイルにしてください。.',
'string' => ':attributeは:max文字以下にしてください。',
'array' => ':attributeは:max個以下にしてください。',
],
'mimes' => ':attributeは:valuesタイプのファイルにしてください。',
'min' => [
'numeric' => ':attributeは:min以上にしてください。',
'file' => ':attributeは:min KB以上のファイルにしてください。.',
'string' => ':attributeは:min文字以上にしてください。',
'array' => ':attributeは:min個以上にしてください。',
],
'not_in' => '選択された:attributeは正しくありません。',
'numeric' => ':attributeは数字にしてください。',
'regex' => ':attributeの書式が正しくありません。',
'required' => ':attributeは必須です。',
'required_if' => ':otherが:valueの時、:attributeは必須です。',
'required_with' => ':valuesが存在する時、:attributeは必須です。',
'required_with_all' => ':valuesが存在する時、:attributeは必須です。',
'required_without' => ':valuesが存在しない時、:attributeは必須です。',
'required_without_all' => ':valuesが存在しない時、:attributeは必須です。',
'same' => ':attributeと:otherは一致していません。',
'size' => [
'numeric' => ':attributeは:sizeにしてください。',
'file' => ':attributeは:size KBにしてください。.',
'string' => ':attribute:size文字にしてください。',
'array' => ':attributeは:size個にしてください。',
],
'string' => ':attributeは文字列にしてください。',
'timezone' => ':attributeは正しいタイムゾーンをしていしてください。',
'unique' => ':attributeは既に存在します。',
'url' => ':attributeを正しい書式にしてください。',
/*
|--------------------------------------------------------------------------
| 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',
],
],
/*
|--------------------------------------------------------------------------
| 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' => [],
];
config\app.php
config\app.phpの下記を変更します。
// 変更前
'locale' => 'en',
// 変更後
'locale' => 'ja',
エラー文言が日本語で表示されました。

resources\lang\en\validation.phpにデフォルトの英語のエラーメッセージがあるので、こちらをコピーしてメッセージ部分を書き換える方法でもできます。
【参考サイト】
- Laravel 5.1 日本語エラーメッセージファイル – ララ帳
- Laravelのデフォルトログイン処理でエラーメッセージを日本語にしたい – Qiita
- Laravel 5.1 日本語バリデーションメッセージファイル · GitHub
コメントが承認されるまで時間がかかります。