【バックエンド構築1】Laravelを日本仕様にする
現地時間の設定
Laravel11は従来と違って、config/app.phpで現地時間の設定をする必要はありません。
時間の設定は.envで修正します。
sailで構築したLaravelは初回下記の通りとなっているので、修正します。
- APP_TIMEZONE=UTC
// .env
APP_TIMEZONE=Asia/Tokyo
APP_LOCALE=ja
APP_FALLBACK_LOCALE=ja
APP_FAKER_LOCALE=ja_JP
config/app.phpは触らなくてOK
Laravel11からはファイル削減のため、app.phpは柔軟に対応できるように変更されています。
'timezone' => env('APP_TIMEZONE', 'UTC'),
これは.envを参照するけど、設定がなかったらUTC(協定世界時(きょうていせかいじ))に合わせちゃうからねって意味だそうです。
言語の追加
Laravelの良さといえば、PHPではつど設定していたバリデードの手間を省けることかなと思います。日本語でもバリデードできるように言語を追加していきましょう。
日本語の追加
composer require laravel-lang/lang laravel-lang/publisher --dev
次に言語設定ファイルをインストールします。
php artisan lang:add ja
これでlangというファイルがdatabaseやconfigと同じ階層に生成されます。
lang/とは
lang/は翻訳ファイルを格納しておくディレクトリです。
下記のコマンドで翻訳言語を増やすことがでます。
- php artisan lang:add <言語>
ちなみに階層は下記の通り。
lang/
└── ja/
├── auth.php
├── pagination.php
├── passwords.php
├── validation.php
└── ja.json
どうやって翻訳しているのか
興味本位でjsonの中身を見てみました。
察するに対応している言語に対して翻訳した言語を割り当てているようです。
// lang/ja/ja.json
"Cancel": "キャンセル",
"Click here to re-send the verification email.": "確認メールの再送はこちら",
"Confirm": "確認",
"Confirm Password": "パスワード(確認用)",
"Current Password": "現在のパスワード",
"Dashboard": "ダッシュボード",
"Delete Account": "アカウント削除",
使ってみる
ログイン機能で失敗すれば言葉が出るかも?と思ったので試してみます。
いいね〜。文字が細くてみにくいから、後でboldかけようっと。
おそらく本来はここまでの設定でOKだと思います。
【おまけ】php artisan lang:publishとは
いろんな情報を漁っていたらこんなコマンドも出てきました。
php artisan lang:publish
https://taraoblog.com/laravel-validation-japanese/
試しに叩いてみると。langディレクトリにenディレクトリフォファイルが追加されています。
lang/
├── en/
| ├── auth.php
| ├── pagination.php
| ├── passwords.php
| └── validation.php
└── ja/
├── auth.php
├── pagination.php
├── passwords.php
├── validation.php
└── ja.json
中を覗くと、文字通りバリデーションで表示される英語がずらりと入っています。
Laravelの以前のバージョンではここから日本語用に翻訳作業が必要だったのかなと思いつつ、現在は日本語のパッケージがあるから設定不要かもと思いました。(違ったら誰かご指摘ください)
ちなみにphp artisan lang:publishを打った後でも日本語の設定はそのままでいけたのでうっかり追加しても安心してください。笑
Discussion