ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
なぜ日本語化が必要か
Laravel のバリデーションエラーはデフォルトで英語です:
The name field is required.
The email must be a valid email address.
The password must be at least 8 characters.
日本人向けサービスでは違和感があるので、日本語化が必須です。
手順1: locale を ja に変更
// config/app.php
return [
'locale' => 'ja', // ← en から ja へ
'fallback_locale' => 'en',
'faker_locale' => 'ja_JP',
// ...
];
キャッシュ反映:
php artisan config:clear
php artisan config:cache
手順2: 翻訳ファイル作成
Laravel 9+ は lang/、8 以前は resources/lang/ 配下に ja/validation.php を作成:
// lang/ja/validation.php
':attribute は必須項目です。',
'email' => ':attribute は有効なメールアドレス形式で入力してください。',
'min' => [
'string' => ':attribute は :min 文字以上で入力してください。',
'numeric' => ':attribute は :min 以上の数値で入力してください。',
'array' => ':attribute は :min 個以上選択してください。',
],
'max' => [
'string' => ':attribute は :max 文字以下で入力してください。',
'numeric' => ':attribute は :max 以下の数値で入力してください。',
],
'unique' => '入力された :attribute は既に使用されています。',
'confirmed'=> ':attribute と確認用の入力が一致しません。',
'numeric' => ':attribute は数値で入力してください。',
'attributes' => [
'name' => '名前',
'email' => 'メールアドレス',
'password' => 'パスワード',
'tel' => '電話番号',
],
'custom' => [
'email' => [
'required' => 'メールアドレスを入力してください。',
'unique' => 'このメールアドレスは既に登録されています。',
],
],
];
手順3: 動作確認
// routes/web.php または Controller
$request->validate([
'name' => 'required|max:20',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
]);
送信して空のままだと以下のように表示されます:
名前 は必須項目です。
メールアドレス は必須項目です。
パスワード は必須項目です。
手順 (簡単版): laravel-lang/lang パッケージ
全てのメッセージを自分で書くのは大変。laravel-lang/lang パッケージを使えば 一発:
composer require laravel-lang/common --dev
php artisan lang:add ja
これで lang/ja/ 配下に validation.php、auth.php、pagination.php、passwords.php が一括生成されます。70+ 言語対応。
Form Request での個別カスタマイズ
// app/Http/Requests/UserStoreRequest.php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UserStoreRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'name' => 'required|max:20',
'email' => 'required|email|unique:users',
'age' => 'nullable|integer|between:0,120',
];
}
// この Request 専用のメッセージ
public function messages(): array
{
return [
'name.required' => 'お名前を入力してください。',
'email.required' => 'メールアドレスを入力してください。',
'email.unique' => 'このメールアドレスは既に登録済です。',
'age.between' => '年齢は :min から :max の範囲で入力してください。',
];
}
// この Request 専用の属性名
public function attributes(): array
{
return [
'name' => 'お名前',
'email' => 'メールアドレス',
'age' => '年齢',
];
}
}
プレースホルダ一覧
| プレースホルダ | 意味 | 例 |
|---|---|---|
:attribute | 項目名 | 名前 |
:min / :max | 最小/最大値 | 8 |
:value | 入力値 | foo |
:size | サイズ | 10 |
:other | 他フィールド名 | パスワード確認 |
:date | 日付 | 2024-01-01 |
JSON API のメッセージ形式
Laravel は Accept: application/json が付くと自動で JSON 422 を返す:
{
"message": "The given data was invalid.",
"errors": {
"name": ["名前 は必須項目です。"],
"email": ["メールアドレス は有効なメールアドレス形式で入力してください。"]
}
}
トップレベルの message も翻訳したい場合はカスタム例外ハンドラで対応:
// app/Exceptions/Handler.php (Laravel 10 以前) または
// bootstrap/app.php (Laravel 11+)
use Illuminate\Validation\ValidationException;
$exceptions->render(function (ValidationException $e, $request) {
if ($request->expectsJson()) {
return response()->json([
'message' => '入力内容に誤りがあります。',
'errors' => $e->errors(),
], 422);
}
});
よくあるハマりどころ
- locale を変えてもキャッシュで反映されない →
php artisan config:clear - 翻訳ファイルが
resources/lang/にある → Laravel 9+ はlang/へ移動 (php artisan lang:publish) - attributes が効かない → validation.php の
attributesキーに記述する。別ファイルに書くと読まれない - カスタムルール →
php artisan make:ruleで生成したルールのメッセージはmessage()内で__()を使う
FAQ
Q: 英語と日本語を両立したい
A: ユーザー設定に応じて App::setLocale($lang) をミドルウェアで設定。lang/en/ と lang/ja/ 両方用意する。
Q: バリデーション以外(認証メール等)も日本語化したい
A: lang/ja/auth.php、lang/ja/passwords.php、lang/ja/pagination.php も作成。laravel-lang/lang ならまとめて入る。
Q: ja_JP / ja-JP どちらが正しい?
A: Laravel の locale は ja または ja_JP。Faker の locale は ja_JP。混同しないよう注意。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- 入力データの保持
- 必須チェック
- 文字列の長さチェック
- 存在チェック
- 一意チェック
- 日本語化
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?