STEP06：Laravel5.7 の ValidationMessageを日本語化してみた

こちらの記事を参考にしました
　Laravel5でのValidationMessageを日本語化してみた
　https://qiita.com/Rock22/items/1db96c801d78ebafb7cc

上記記事で参照しているソースは Laravel5.1 でしたので、
5.7で増えているメッセージ分を追加してみました。


下記の環境設定他関連記事はこちら
[Laravel + Vue + Vuetify で業務サイト作ってみる](https://qiita.com/nobu-maple/items/d1e7170d62ab07890a7a)


#１．日本語メッセージファイルを配置

記事にあるファイルを取得してきて
https://gist.github.com/syokunin/b37725686b5baf09255b
5.7 にある英語版と比較。
足りないところを追加して翻訳（ // 追加 のある行）
日本語がおかしい気がしてますが、良い訳がありましたら指摘いただけると嬉しいです

```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以降の日付にしてください。',
    'after_or_equal'       => ':attributeは:date以降の日付にしてください。',          // 追加
    'alpha'                => ':attributeは英字のみにしてください。',
    'alpha_dash'           => ':attributeは英数字とハイフンのみにしてください。',
    'alpha_num'            => ':attributeは英数字のみにしてください。',
    'array'                => ':attributeは配列にしてください。',
    'before'               => ':attributeは:date以前の日付にしてください。',
    'before_or_equal'      => ':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桁にしてください。',
    'dimensions'           => ':attributeは画像サイズが不正です。',                   // 追加
    'distinct'             => ':attributeは重複しています。',                         // 追加
    'email'                => ':attributeを正しいメールアドレスにしてください。',
    'exists'               => '選択された:attributeは正しくありません。',
    'file'                 => ':attributeはファイルにしてください。',                 // 追加
    'filled'               => ':attributeは必須です。',
    'gt'                   => [
        'numeric' => ':attributeは:value以上にしてください。',                        // 追加
        'file'    => ':attributeは:value KB以上のファイルにしてください。.',          // 追加
        'string'  => ':attributeは:value文字以上にしてください。',                    // 追加
        'array'   => ':attributeは:value個以上にしてください。',                      // 追加
    ],
    'gte'                  => [
        'numeric' => ':attributeは:value以上にしてください。',                        // 追加
        'file'    => ':attributeは:value KB以上のファイルにしてください。.',          // 追加
        'string'  => ':attributeは:value文字以上にしてください。',                    // 追加
        'array'   => ':attributeは:value個以上にしてください。',                      // 追加
    ],
    'image'                => ':attributeは画像にしてください。',
    'in'                   => '選択された:attributeは正しくありません。',
    'in_array'             => 'The :attribute field does not exist in :other.',       // 追加
    'integer'              => ':attributeは整数にしてください。',
    'ip'                   => ':attributeを正しいIPアドレスにしてください。',
    'ipv4'                 => ':attributeを正しいIPv4アドレスにしてください。',       // 追加
    'ipv6'                 => ':attributeを正しいIPv6アドレスにしてください。',       // 追加
    'json'                 => ':attributeを正しいJSON形式にしてください。',           // 追加
    'lt'                   => [
        'numeric' => ':attributeは:value より小さくなければなりません。',             // 追加
        'file'    => ':attributeは:value KBより小さくなければなりません。',           // 追加
        'string'  => ':attributeは:value 文字以下でなければなりません。',             // 追加
        'array'   => ':attributeは:value 項目以下でなければなりません。',             // 追加
    ],
    'lte'                  => [
        'numeric' => ':attributeは:value以下にしてください。',                        // 追加
        'file'    => ':attributeは:value KB以下のファイルにしてください。.',          // 追加
        'string'  => ':attributeは:value文字以下にしてください。',                    // 追加
        'array'   => ':attributeは:value個以下にしてください。',                      // 追加
    ],
    'max'                  => [
        'numeric' => ':attributeは:max以下にしてください。',
        'file'    => ':attributeは:max KB以下のファイルにしてください。.',
        'string'  => ':attributeは:max文字以下にしてください。',
        'array'   => ':attributeは:max個以下にしてください。',
    ],
    'mimes'                => ':attributeは:valuesタイプのファイルにしてください。',
    'mimetypes'            => ':attributeは:valuesタイプのファイルにしてください。',  // 追加
    'min'                  => [
        'numeric' => ':attributeは:min以上にしてください。',
        'file'    => ':attributeは:min KB以上のファイルにしてください。.',
        'string'  => ':attributeは:min文字以上にしてください。',
        'array'   => ':attributeは:min個以上にしてください。',
    ],
    'not_in'               => '選択された:attributeは正しくありません。',
    'not_regex'            => ':attributeの書式が正しくありません。',                 // 追加
    'numeric'              => ':attributeは数字にしてください。',
    'present'              => ':attributeは存在する必要があります。',                 // 追加
    'regex'                => ':attributeの書式が正しくありません。',
    'required'             => ':attributeは必須です。',
    'required_if'          => ':otherが:valueの時、:attributeは必須です。',
    'required_unless'      => ':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は既に存在します。',
    'uploaded'             => ':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' => [],

];
```


#２．言語設定を 日本語に

もともと en になっている設定を ja に変更

```php:config/app.php
～～

    /*
    |--------------------------------------------------------------------------
    | Application Locale Configuration
    |--------------------------------------------------------------------------
    |
    | The application locale determines the default locale that will be used
    | by the translation service provider. You are free to set this value
    | to any of the locales which will be supported by the application.
    |
    */

    'locale' => 'ja',

～～
```


#３．動作確認

## 変更前

メッセージが英語

![zz1.png](https://qiita-image-store.s3.amazonaws.com/0/153259/1f804b7d-fc19-7b10-57d6-e77bfb8877e3.png)


## 変更後

メッセージは日本語に


![zz2.png](https://qiita-image-store.s3.amazonaws.com/0/153259/d6e5d4d7-43bb-f39b-a439-f922ab5880fe.png)



#４．項目名も日本語化

参考記事の通り項目名もメッセージファイルに追記

```php:resources/lang/ja/validation.php
～～
    /*
    |--------------------------------------------------------------------------
    | 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' => [
        'name' => '名前',
        'loginid' => 'ログインＩＤ',
        'pass' => 'パスワード',
    ],
～～
```

## 変更確認

項目も日本語になった

![zz3.png](https://qiita-image-store.s3.amazonaws.com/0/153259/03d25f03-6a5b-752c-c6b6-70ce1ebe0309.png)


#

以上

Laravelのエラーメッセージは日本語になりました（Vue.js部分はまだ。。）



今回もソースはこちら
https://github.com/u9m31/u9m31/tree/step06