

バリデーションメッセージを多言語化(今回は日本語化)する場合、

`/resources/lang/ja/validation.php`

上記ファイルのattributes配列に`フィールド名 => 日本語名`で記述すれば  
フィールド名が日本語化されますが、  
異なるモデルで同じフィールド名を使用している場合はどうやって分ければいいのでしょうか？

例えば、  
Userモデルには`ユーザ名`という意味のnameフィールドがあり、  
Shopモデルには`店舗名`という意味のnameフィールドがある、といった状況です。


CC BY-SA 3.0
2016-11-30T07:16:46.647
30789
2019-09-24T05:01:35.393
question
laravel laravel-5 localization i18n
Laravel 5.3の多言語化について


各々でバリデーターを作成すれば可能です。

[code]

    class UsersController extends Controller{
    
        public function post() {
    
            $validator = Validator::make($request->all(), [
                'name' => 'required',
            ]);
    
            $validator->setAttributeNames([
                'name' => 'ユーザ名',
            ]);
    
            if ($validator->fails()) {
                return redirect('users/')
                            ->withErrors($validator)
                            ->withInput();
            }
        }
    }
    
[/code]

* * *
[code]

    class ShopsController extends Controller{
    
        public function post() {
    
            $validator = Validator::make($request->all(), [
                'name' => 'required',
            ]);
    
            $validator->setAttributeNames([
                'name' => '店舗名',
            ]);
    
            if ($validator->fails()) {
                return redirect('shops/')
                            ->withErrors($validator)
                            ->withInput();
            }
        }
    }
    
[/code]

また、Requestを作成してバリデーションを行なっている場合は  
`attributes()`メソッドを用いることができます。

[code]

    class UsersRequest extends FormRequest{
    
        //...
    
        public function attributes(){
            return [
                'name' => 'ユーザ名',
            ];
        }
    }
    
[/code]


CC BY-SA 3.0
2016-11-30T18:52:01.503
30797
2016-11-30T18:52:01.503
13404
30789
answer


`ValidatesRequests::validate`の場合の属性名指定は

[code]

    class UsersController extends Controller
    {
        public function post(Request $request)
        {
            $this->validate($request, [
                'name' => 'required',
            ], null, [
                'name' => 'ユーザ名',
            ]);
        }
    }
    
[/code]

のようにも指定できますね。


CC BY-SA 3.0
2016-11-30T22:43:31.243
30798
2016-11-30T22:43:31.243
2376
30789
answer