Laravel 不会在内核文件中设置本地化 - 它仅在我在 routes/api 中设置时有效。php
Laravel won't to set localize in Kernel file - it works only when I set in routes/api.php
在Laravel中我根据站点的解决方案添加:set Locale in Laravel
SetLocale.php 文件在 app/Http/Middleware
在这个文件中我设置了本地化:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\App;
class SetLocale
{
public function handle($request, Closure $next)
{
App::setLocale('fr');
return $next($request);
}
}
而Laravel并没有调用上面的函数。在我的应用程序中,我一直设置 en 语言。在 Kernel.php
文件中,我同时添加到网络和 api 组:
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\SetLocale::class,
EncryptCookies::class,
AddQueuedCookiesToResponse::class,
StartSession::class,
ShareErrorsFromSession::class,
VerifyCsrfToken::class,
SubstituteBindings::class,
],
'api' => [
\App\Http\Middleware\SetLocale::class,
但是 SetLocale
的方法句柄没有被调用。
当我将此行添加到 routes/api.php
文件时它起作用了:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
app()->setLocale('fr');
Route::get('/', function ()
{
return 'Hello API';
});
这是我的 config/app.php
文件,其中语言环境设置为 fr:
'locale' => 'fr',
'fallback_locale' => 'fr',
我正在控制器中检查:
class RegistrationController extends Controller
{
public function store (Request $request)
{
return response()->json([ 'message' => __('auth.testmessage') . ' ' . app()->getLocale() ]);
当我调用此方法的请求时,我得到:
{"message":"test message2 en"}
但是当我在 api.php
文件中设置时,我得到 ... test message2 fr
如果您想要更改应用程序语言环境,您只需修改 config/app.php
文件。
此文件包含一个 array
,将值从键 locale
更改为您想要的语言环境,如下所示:
'locale' => 'fr',
之后您可能需要清除配置缓存:
运行 这个命令在你的项目文件夹中 php artisan config:cache
您展示的站点只是展示了当您有一个具有多种语言的系统并且您想要提供此功能时如何在运行时更改您的应用程序区域设置配置,从任何页面更改语言。
在Laravel中我根据站点的解决方案添加:set Locale in Laravel
SetLocale.php 文件在 app/Http/Middleware
在这个文件中我设置了本地化:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\App;
class SetLocale
{
public function handle($request, Closure $next)
{
App::setLocale('fr');
return $next($request);
}
}
而Laravel并没有调用上面的函数。在我的应用程序中,我一直设置 en 语言。在 Kernel.php
文件中,我同时添加到网络和 api 组:
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\SetLocale::class,
EncryptCookies::class,
AddQueuedCookiesToResponse::class,
StartSession::class,
ShareErrorsFromSession::class,
VerifyCsrfToken::class,
SubstituteBindings::class,
],
'api' => [
\App\Http\Middleware\SetLocale::class,
但是 SetLocale
的方法句柄没有被调用。
当我将此行添加到 routes/api.php
文件时它起作用了:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
app()->setLocale('fr');
Route::get('/', function ()
{
return 'Hello API';
});
这是我的 config/app.php
文件,其中语言环境设置为 fr:
'locale' => 'fr',
'fallback_locale' => 'fr',
我正在控制器中检查:
class RegistrationController extends Controller
{
public function store (Request $request)
{
return response()->json([ 'message' => __('auth.testmessage') . ' ' . app()->getLocale() ]);
当我调用此方法的请求时,我得到:
{"message":"test message2 en"}
但是当我在 api.php
文件中设置时,我得到 ... test message2 fr
如果您想要更改应用程序语言环境,您只需修改 config/app.php
文件。
此文件包含一个 array
,将值从键 locale
更改为您想要的语言环境,如下所示:
'locale' => 'fr',
之后您可能需要清除配置缓存:
运行 这个命令在你的项目文件夹中 php artisan config:cache
您展示的站点只是展示了当您有一个具有多种语言的系统并且您想要提供此功能时如何在运行时更改您的应用程序区域设置配置,从任何页面更改语言。