Laravelの日本語化ファイルを編集し、バリデーションメッセージの:valueや:dateなどのプレースホルダーを日本語化する
Laravelを日本語化し、言語ファイルのvalidation.phpを編集することで、バリデーションメッセージを日本語化することができます。
attributesメソッドを編集することで英語の属性名も日本語化できるので、例えば年齢入力欄の属性名をageにしていても、
ageには、数字を指定してください。
ではなく、
年齢には、数字を指定してください。
と表示することが可能です。
問題
ただ、attributesメソッドを追加しても、:dateなどのプレースホルダーは日本語化されないため、一部日本語化されない箇所があります。
例えば、以下のような例です。
まず、日本化していない場合はLaravelの言語を日本語に変更の記事に沿って日本語しておきます(インストーラのダウンロードでは対応したバージョンを指定します)。
次に、make:requestコマンドでフォームリクエストクラスを作成します。
php artisan make:request ExampleRequest
バリデーションルールを追加します。
public function rules()
{
return [
'deadline' => 'required|date|after_or_equal:today',
];
}
ここでは、deadline(締切日)という属性に、
- 必須
- 日付文字列
- 本日以降
というルールを設定しました。
次に、カスタムバリデーション属性名を設定するため、attributeメソッドを追加します。
'attributes' => [
'deadline' => '締切日',
],
これによって、例えばrequiredのバリデーションに失敗した場合の表示が
deadlineは必ず指定してください。
から
締切日は必ず指定してください。
という表示に変わります。
:valueや:dateなどのプレースホルダーを日本語に置き換えたい
しかしながら、after_or_equalのバリデーションメッセージは
'after_or_equal' => ':attributeには、:date以降の日付を指定してください。',
となっているため、:dateプレースホルダーの部分は、attributeメソッドでも置き換えられず、after_or_equalのバリデーションに失敗した場合、
締切日には、today以降の日付を指定してください。
という表示になってしまいます。
解決策
:valueや:dateなどのプレースホルダーを変更する場合は、valuesメソッドを使います。
:valueプレースホルダーの変更方法は、ドキュメントの言語ファイルでカスタム値を指定に記載があります。
:dateプレースホルダーの変更は、次のように記述します。
'values' => [
'date' => [
'today' => '本日',
],
],
これによって、
締切日には、本日以降の日付を指定してください。
と表示されるようになります。
Author And Source
この問題について(Laravelの日本語化ファイルを編集し、バリデーションメッセージの:valueや:dateなどのプレースホルダーを日本語化する), 我々は、より多くの情報をここで見つけました https://qiita.com/MtDeity/items/4536adbf8d9c03e592ab著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .