🌍

Laravel9でresources/langディレクトリを移動しないで使えるか検証してみた

2022/03/01に公開

Laravel9からresources/langディレクトリrootディレクトリに移動しました。
https://laravel.com/docs/9.x/upgrade#the-lang-directory

resources/lang
↓
resources
lang

そこで、Laravel8からLaravel9にバージョンを上げる際に、resources/langディレクトリを移動しないで使えるか検証してみたいと思います。

環境

  • PHP v8.1.2
  • Laravel v9.1.0

環境はLaravel Sailで作っています。

検証

検証のため、Laravel8以前の状態にしたいので、rootディレクトリにあるlangディレクトリは削除し、
resourcesディレクトリ配下にlaravel8のlangディレクトリの内容[1]を持ってきます。

app
bootstrap
config
database
lang <- 削除する
public
resources
  lang <- Laravel8の内容を持ってくる
routes
...

tinkerを使って、langの内容を取得してみます。

$ php artisan tinker
Psy Shell v0.11.1 (PHP 8.1.2 — cli) by Justin Hileman
>>> __('auth.failed');
=> "These credentials do not match our records."
>>> 
>>> app()->langPath();
=> "/var/www/html/resources/lang"

取得できましたー!
app()->langPath()を使ってpathを取得してもresources/langディレクトリを取得できていますね。

なぜ大丈夫なのか?

答えばGitHubにあります。

https://github.com/laravel/framework/blob/v9.1.0/src/Illuminate/Foundation/Application.php#L323-L329

resourcesディレクトリ配下にlangディレクトリの有無を事前に判定していました。
このおかげで、langディレクトリを移動しないで使えるようになっていますね。

結論

移動しなくても大丈夫!!

ただし、今後のバージョンアップでこの判定も消える可能性があるので、
いずれはrootディレクトリに移動した方が良い気はしております。

脚注
  1. https://github.com/laravel/laravel/tree/8.x/resources/lang ↩︎

Discussion