Laravel 9 应用程序(从 8 升级)lang 目录未按预期工作
Laravel 9 app (upgraded from 8) lang directory not working as expected
我已将我的 Laravel 8 应用程序升级到版本 9,并且根据文档:upgrade guide,resources/lang
目录现在位于根项目目录中(lang
).
我已经将 lang
目录移动到我的项目的根目录,但它似乎不起作用。
// config/app.php
'locale' => 'pt-BR',
和
// lang/pt-BR/messages.php
return [
'welcome' => 'Welcome to the app!',
];
控制器
return response()->json([
'message' => Lang::get('messages.welcome') // it returns "messages.welcome"
]);
但是当我将 lang
目录改回 /resources/lang
时,它像以前的 laravel 版本一样工作正常。所以我创建了一个 Laravel 9 的新项目并且它工作了,这让我认为需要一些额外的配置,但它没有记录在 upgrade guide 中。我的 composer.json
依赖项与新的 laravel 项目完全相同。 Laravel 是否需要进行任何其他配置才能识别目录?
您可以在 AppServiceProvider
的 boot
方法中使用 useLangPath
方法对您的 lang 路径进行硬编码。
# app/Providers/AppServiceProvider.php
public function boot()
{
app()->useLangPath(base_path('lang'));
// or app()->useLangPath(app()->basePath('lang'));
}
所以我找到了解决方案,“问题”是我没有删除 resources/lang
目录,所以 Laravel 使用的是那个目录而不是 lang
目录应用程序的基本路径。
删除 resources/lang
目录后,它按预期工作。感谢@lagbox 评论。
@IGP 也工作了。
根据文档,您应该在 config/app.php 中使用 'locale' => 'pt_BR' 并将您的 lang 文件夹命名为 lang/pt_BR/messages.php
for languages that differ by territory, you should name the language directories according to the ISO 15897. For example, en_GB should be used for British English rather than en-gb.
我已将我的 Laravel 8 应用程序升级到版本 9,并且根据文档:upgrade guide,resources/lang
目录现在位于根项目目录中(lang
).
我已经将 lang
目录移动到我的项目的根目录,但它似乎不起作用。
// config/app.php
'locale' => 'pt-BR',
和
// lang/pt-BR/messages.php
return [
'welcome' => 'Welcome to the app!',
];
控制器
return response()->json([
'message' => Lang::get('messages.welcome') // it returns "messages.welcome"
]);
但是当我将 lang
目录改回 /resources/lang
时,它像以前的 laravel 版本一样工作正常。所以我创建了一个 Laravel 9 的新项目并且它工作了,这让我认为需要一些额外的配置,但它没有记录在 upgrade guide 中。我的 composer.json
依赖项与新的 laravel 项目完全相同。 Laravel 是否需要进行任何其他配置才能识别目录?
您可以在 AppServiceProvider
的 boot
方法中使用 useLangPath
方法对您的 lang 路径进行硬编码。
# app/Providers/AppServiceProvider.php
public function boot()
{
app()->useLangPath(base_path('lang'));
// or app()->useLangPath(app()->basePath('lang'));
}
所以我找到了解决方案,“问题”是我没有删除 resources/lang
目录,所以 Laravel 使用的是那个目录而不是 lang
目录应用程序的基本路径。
删除 resources/lang
目录后,它按预期工作。感谢@lagbox 评论。
@IGP
根据文档,您应该在 config/app.php 中使用 'locale' => 'pt_BR' 并将您的 lang 文件夹命名为 lang/pt_BR/messages.php
for languages that differ by territory, you should name the language directories according to the ISO 15897. For example, en_GB should be used for British English rather than en-gb.