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