Laravel6のログイン機能シリーズの続きです。
前回、メールドライバにMailGunを設定しました。
しかし、ログイン機能のデフォルトの状態ではすべて英語表記です。
バリデーションの文言やパスワードリセットのメール文も全て英語で表示されます。
今回はこれを日本語で表示されるようにカスタマイズします。
手順
1.Laravelプロジェクト自体の日本語設定
Laravelの設定ファイルにて日本語の設定をしておきます。
特に'local' => 'ja'
の記述は重要です。
ここの設定値はLaravelのローカライゼーション機能(多言語化)の言語ディレクトリの設定値になります。
# config/app.php
:
'timezone' => 'Asia/Tokyo', // タイムゾーン
'locale' => 'ja', // 第一言語を日本語(ローカライゼーション)
'fallback_locale' => 'en', // 該当言語が見つからない場合の言語
'faker_locale' => 'ja_JP',
:
2.アプリの名前を日本語
自動生成した認証機能の名前が.envの APP_ANME
で設定されているので、以下のように修正します。
APP_NAME=Laravel学習張
:
3.画面上のテキストを日本語化
自動生成したログイン機能の各画面は __
ヘルパ関数を使用して文字列を表示しています。
:
<!-- Authentication Links -->
@guest
<li class="nav-item">
<a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
</li>
@if (Route::has('register'))
<li class="nav-item">
<a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
</li>
@endif
@else
:
ここは多言語対応された書き方なので、resources/lang/ja.json
というファイルを作成し、以下の内容で保存します。
画面に表示される文字に加えて、パスワードリセットとして通知されるメール文章も日本語化にしました。
# resources/lang/ja.json
{
"Login": "ログイン",
"Register": "新規登録",
"Forgot Your Password?": "パスワードを忘れた場合",
"Reset Password": "パスワード再設定",
"Send Password Reset Link": "パスワード再設定URLを送信",
"Name": "お名前",
"E-Mail Address": "メールアドレス",
"Password": "パスワード",
"Confirm Password": "パスワード(確認用)",
"Remember Me": "ログイン状態を保存",
"Hello!": "ご利用ありがとうございます。",
"Reset Password Notification": "パスワード再設定のお知らせ",
"You are receiving this email because we received a password reset request for your account.": "あなたのアカウントでパスワード再発行のリクエストがありました。",
"This password reset link will expire in :count minutes.": "再設定URLの有効期限は :count 分です。",
"If you did not request a password reset, no further action is required.": "もしパスワード再発行をリクエストしていない場合、操作は不要です。",
"If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser: [:actionURL](:actionURL)": "\":actionText\"ボタンを押しても何も起きない場合、以下URLをコピーしてWebブラウザに貼り付けてください。\n[:actionURL](:actionURL)",
"Regards": "よろしくお願いいたします"
}
ログイン画面
パスワードリセット通知メール
4.その他の文言を日本語化
resources/lang/en/ディレクトリをコピーして resources/lang/ja にペースト。
日本語にオーバーライドしていきます。
ローカライゼーション機能(多言語化)
Laravelでは、様々な国の言語を扱えるように、各国の言語の文字に関しては resources/langディレクトリ 下のファイルに保存します。
auth.php | pagination.php | passwords.php | validation.php |
---|---|---|---|
認証関係のメッセージ | ページネーションメッセージ | パスワード部分のメッセージ | バリデーションメッセージ |
├── lang
│ ├── en ( ← 既存にあるやつ/デフォルト)
│ │ ├── auth.php
│ │ ├── pagination.php
│ │ ├── passwords.php
│ │ └── validation.php
│ └── ja ( ← enディレクトリからコピペ)
│ │ ├── auth.php (← 日本語にオーバーライド)
│ │ ├── pagination.php (← 日本語にオーバーライド)
│ │ ├── passwords.php (← 日本語にオーバーライド)
│ │ └── validation.php (← 日本語にオーバーライド)
バリデーション(validation.php)
バリデーション(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は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' => '選択した値が不正です。',
'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 KBのファイルを選択してください。',
'string' => ':attributeは:size文字で入力してください。',
'array' => ':attributeは:size個にしてください。',
],
'starts_with' => ':attributeを:valuesから始まるよう入力してください。',
'string' => ':attributeは門司で入力してください。',
'timezone' => ':attributeを正しいタイムゾーンで入力してください。',
'unique' => ':attributeは既に取得されているため、違うものを入力してください。',
'uploaded' => ':attributeはアップロードに失敗しました。',
'url' => ':attributeを正しいURLで入力してください。',
'uuid' => ':attributeを正しいUUIDで入力してください。',
/*
|--------------------------------------------------------------------------
| 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 our attribute placeholder
| with something more reader friendly such as "E-Mail Address" instead
| of "email". This simply helps us make our message more expressive.
|
*/
'attributes' => [
'email' => 'メールアドレス',
'password' => 'パスワード',
],
];
パスワードリセット(passwords.php)
パスワードリセット(passwords.php)
パスワードリセットの画面で表示する文字を日本語化します。
<?php
return [
'reset' => 'パスワードをリセットしました。',
'sent' => 'パスワードリセット用URLを送信しました。',
'token' => 'パスワードリセット用トークンが不正です。',
'user' => 'メールアドレスに一致するユーザーが見つかりません。',
];
ページネーション(pagination.php)
ページネーション(pagination.php)
ページネーションで表示する文字を日本語化します。
<?php
return [
'previous' => '« 前へ',
'next' => '次へ »',
];
ログイン認証エラーの文言(auth.php)
ログイン認証エラーの文言(auth.php)
ログイン認証エラーで表示される文字を日本語化します。
<?php
return [
'failed' => 'ログインできません。入力した情報に誤りがないかご確認ください。',
'throttle' => '何度もログインに失敗したため、:seconds秒後に再度お試しください。',
];
以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。