こんな悩みを解決します。
いのうえ
こんにちは、学生フリーランスエンジニアのいのうえ(@inouelog)です!
日本向けにWEBアプリを開発してリリースするときには、デフォルトの英語では不親切ですよね。この記事では、メッセージを日本語化する方法を解説します。
前提条件
Laravel 5.xまたは、6.x、7.xであること。
8.xは未確認です。
Laravelでバリデーションなどのメッセージを日本語化する方法
config/app.phpを以下のように変更します。タイムゾーン(標準時)もついでに変更しておきましょう。
'locale' => 'ja', // デフォルトは'en'
'timezone' => 'Asia/Tokyo', // デフォルトは'UTC'
resources/lang/enのフォルダをresources/langにコピーして、名前を’ja’に変更します。
resources/lang/jaフォルダのauth.php, pagination.php, passwords.phpを以下のように上書きします。
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
'failed' => '認証情報が記録と一致しません。',
'throttle' => 'ログイン試行が規定回数を超えました。:seconds秒後に再開できます。',
];
<?php
return [
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
'previous' => '« 前へ',
'next' => '次へ »',
];
<?php
return [
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
'password' => 'パスワードは6文字以上にして、確認用入力欄と一致させてください。',
'reset' => 'パスワードは再設定されました!',
'sent' => 'パスワード再設定用のURLをメールで送りました。',
'token' => 'パスワード再設定用のトークンが不正です。',
'user' => "メールアドレスに一致するユーザーが存在しません。",
];
5.xの場合は、validation.phpを下記のように上書きします。
<?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には真偽値を指定してください。',
'confirmed' => ':attributeが確認用の値と一致しません。',
'date' => ':attributeには正しい形式の日付を指定してください。',
'date_format' => '":format"という形式の日付を指定してください。',
'different' => ':attributeには:otherとは異なる値を指定してください。',
'digits' => ':attributeには:digits桁の数値を指定してください。',
'digits_between' => ':attributeには:min〜:max桁の数値を指定してください。',
'dimensions' => ':attributeの画像サイズが不正です。',
'distinct' => '指定された:attributeは既に存在しています。',
'email' => ':attributeには正しい形式のメールアドレスを指定してください。',
'exists' => '指定された:attributeは存在しません。',
'file' => ':attributeにはファイルを指定してください。',
'filled' => ':attributeには空でない値を指定してください。',
'image' => ':attributeには画像ファイルを指定してください。',
'in' => ':attributeには:valuesのうちいずれかの値を指定してください。',
'in_array' => ':attributeが:otherに含まれていません。',
'integer' => ':attributeには整数を指定してください。',
'ip' => ':attributeには正しい形式のIPアドレスを指定してください。',
'ipv4' => ':attributeには正しい形式のIPv4アドレスを指定してください。',
'ipv6' => ':attributeには正しい形式のIPv6アドレスを指定してください。',
'json' => ':attributeには正しい形式のJSON文字列を指定してください。',
'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には:valuesのうちいずれとも異なる値を指定してください。',
'numeric' => ':attributeには数値を指定してください。',
'present' => ':attributeには現在時刻を指定してください。',
'regex' => '正しい形式の:attributeを指定してください。',
'required' => ':attributeは必須です。',
'required_if' => ':otherが:valueの時:attributeは必須です。',
'required_unless' => ':otherが:values以外の時: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には正しい形式のURLを指定してください。',
/*
|--------------------------------------------------------------------------
| 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' => [],
];
こちらを参考にさせていただきました。
6.xと7.xの場合は、validation.phpを下記のように上書きします。
<?php
return [
/*
|--------------------------------------------------------------------------
| バリデーション言語行
|--------------------------------------------------------------------------
|
| 以下の言語行はバリデタークラスにより使用されるデフォルトのエラー
| メッセージです。サイズルールのようにいくつかのバリデーションを
| 持っているものもあります。メッセージはご自由に調整してください。
|
*/
'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 kBから、:max kBの間で指定してください。',
'string' => ':attributeは、:min文字から、:max文字の間で指定してください。',
'array' => ':attributeは、:min個から:max個の間で指定してください。',
],
'boolean' => ':attributeは、trueかfalseを指定してください。',
'confirmed' => ':attributeと、確認フィールドとが、一致していません。',
'date' => ':attributeには有効な日付を指定してください。',
'date_equals' => ':attributeには、:dateと同じ日付けを指定してください。',
'date_format' => ':attributeは:format形式で指定してください。',
'different' => ':attributeと:otherには、異なった内容を指定してください。',
'digits' => ':attributeは:digits桁で指定してください。',
'digits_between' => ':attributeは:min桁から:max桁の間で指定してください。',
'dimensions' => ':attributeの図形サイズが正しくありません。',
'distinct' => ':attributeには異なった値を指定してください。',
'email' => ':attributeには、有効なメールアドレスを指定してください。',
'ends_with' => ':attributeには、:valuesのどれかで終わる値を指定してください。',
'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' => ':attributeには: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が:valuesでない場合、: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キロバイトでなくてはなりません。',
'string' => ':attributeは:size文字で指定してください。',
'array' => ':attributeは:size個指定してください。',
],
'starts_with' => ':attributeには、:valuesのどれかで始まる値を指定してください。',
'string' => ':attributeは文字列を指定してください。',
'timezone' => ':attributeには、有効なゾーンを指定してください。',
'unique' => ':attributeの値は既に存在しています。',
'uploaded' => ':attributeのアップロードに失敗しました。',
'url' => ':attributeに正しい形式を指定してください。',
'uuid' => ':attributeに有効なUUIDを指定してください。',
/*
|--------------------------------------------------------------------------
| Custom バリデーション言語行
|--------------------------------------------------------------------------
|
| "属性.ルール"の規約でキーを指定することでカスタムバリデーション
| メッセージを定義できます。指定した属性ルールに対する特定の
| カスタム言語行を手早く指定できます。
|
*/
'custom' => [
'属性名' => [
'ルール名' => 'カスタムメッセージ',
],
],
/*
|--------------------------------------------------------------------------
| カスタムバリデーション属性名
|--------------------------------------------------------------------------
|
| 以下の言語行は、例えば"email"の代わりに「メールアドレス」のように、
| 読み手にフレンドリーな表現でプレースホルダーを置き換えるために指定する
| 言語行です。これはメッセージをよりきれいに表示するために役に立ちます。
|
*/
'attributes' => [],
];
こちらは公式ドキュメントを参考にしました。
これでメッセージが日本語化されました!