Laravel 9 应用程序(从 8 升级)lang 目录未按预期工作

Mar*_*der 12 php laravel laravel-8 laravel-9

我已将 Laravel 8 应用程序升级到版本 9,根据文档:升级指南,该resources/lang目录现在位于根项目目录 ( lang) 中。

我已将该lang目录移至项目的根目录,但似乎不起作用。

// config/app.php
'locale' => 'pt-BR',
Run Code Online (Sandbox Code Playgroud)

// lang/pt-BR/messages.php
return [
    'welcome' => 'Welcome to the app!',
];
Run Code Online (Sandbox Code Playgroud)

控制器

return response()->json([
    'message' => Lang::get('messages.welcome') // it returns "messages.welcome"
]);
Run Code Online (Sandbox Code Playgroud)

但是当我将lang目录更改回 时/resources/lang,它可以像以前的 laravel 版本一样正常工作。所以我创建了一个新的 Laravel 9 项目,它工作了,这让我认为需要一些额外的配置,但它没有记录在升级指南中。我的composer.json依赖项与新的 laravel 项目完全相同。Laravel 是否需要进行任何额外配置才能识别该目录?

Mar*_*der 32

所以我找到了解决方案,“问题”是我没有删除该resources/lang目录,因此 Laravel 使用该目录而不是lang应用程序基本路径中的目录。

删除resources/lang目录后,它按预期工作。感谢@lagbox 评论。

@IGP 的答案也有效。

  • 同样的问题,必须删除 `resources/lang` 目录 (3认同)

IGP*_*IGP 8

您可以使用 的方法中的方法对您的 lang 路径进行硬useLangPath编码。AppServiceProviderboot

# app/Providers/AppServiceProvider.php

public function boot()
{
    app()->useLangPath(base_path('lang'));

    // or app()->useLangPath(app()->basePath('lang'));
}
Run Code Online (Sandbox Code Playgroud)