Laravel不会在内核文件中设置本地化 - 它仅在我设置路由/ api时有效.php



在Laravel中我添加了,根据站点的解决方案:在Laravel中设置Locale

SetLocale.php文件在app/Http/Middleware在这个文件中,我设置了本地化:

<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesApp;

class SetLocale
{
public function handle($request, Closure $next)
{
App::setLocale('fr');

return $next($request);
}
}

和Laravel不调用上述函数。在我的应用程序中,我一直设置了七种语言。在Kernel.php文件中,我添加了web和api组:

protected $middlewareGroups = [
'web' => [
AppHttpMiddlewareSetLocale::class,
EncryptCookies::class,
AddQueuedCookiesToResponse::class,
StartSession::class,
ShareErrorsFromSession::class,
VerifyCsrfToken::class,
SubstituteBindings::class,
],
'api' => [
AppHttpMiddlewareSetLocale::class,

但是没有调用SetLocale的方法handle

当我将以下行添加到routes/api.php文件时,它可以工作:

<?php
use IlluminateHttpRequest;
use IlluminateSupportFacadesRoute;
app()->setLocale('fr');
Route::get('/', function ()
{
return 'Hello API';
});

这是我的config/app.php文件,区域设置为fr:

'locale' => 'fr',
'fallback_locale' => 'fr',

我正在检查controller:

class RegistrationController extends Controller
{
public function store (Request $request)
{
return response()->json([ 'message' => __('auth.testmessage') . ' ' . app()->getLocale() ]);

当我对这个方法调用request时,我得到:

{"message":"test message2 en"}

但是当我在api.php文件中设置时,我得到... test message2 fr

如果你想改变应用程序的区域设置,你只需要修改config/app.php文件。

该文件包含一个array,将关键字locale的值更改为您想要的区域设置,如下所示:

'locale' => 'fr',

您可能需要清除配置缓存之后:

在项目文件夹php artisan config:cache

中运行此命令

您所展示的站点只是展示了如何在运行时更改应用程序语言环境配置,当您有一个具有多种语言的系统并且您希望提供此功能时,从任何页面更改语言。