8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel 11の言語ファイルで死ぬほどハマった話

Last updated at Posted at 2024-03-20

最初に結論

ロケールの修正はapp.phpではなく.envを修正しましょう。

.envはプロジェクト直下にあります。
Laravel 11 ではデフォルトでAPP_LOCALE等が書いてありました。

なので

APP_LOCALE=ja
APP_FALLBACK_LOCALE=ja
APP_FAKER_LOCALE=ja_JP

こんな感じにすれば lang/ja 以下のファイルを読んでくれるようになります。

以下、迷走の記録

言語ファイルの場所もapp.phpもいうとおりにしてるのに適用されなかった

app.phpのenをjaに変えただけの場合、 .env の設定が優先されているから意味がなかったというのが原因でした。

app.phpのlocale周りの設定って初期状態では

'locale' => env('APP_LOCALE', 'en'),

'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'),

'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'),

みたいな感じになってると思うんですが
これは.envに設定がない場合に適用される値の指定なので
.envに設定してあった場合、enの部分だけjaに変えてもダメ、ということでした。

言語ファイルの場所はどこが正しいの?

laravel 8系以前では
/resorces/lang/ 以下に配置しますが
9系以降では
/lang/ 以下に配置します。

参考にしている記事のバージョンをちゃんと確かめましょう、ってことですね。

ついでに

ブラウザの設定やURL等で言語を切り替える場合は
App::setLocate()を使うそうです。
http://example.com/ja/
みたいな感じでやると思うので
/routes/web.php で設定することになると思います。

8
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?