私はlaravelにapiを持っており、ユーザーの言語で返された検証エラーが欲しいです。どうすればlaravel apiで言語を指定できますか?例えば、 は次のように応答します。検証エラーのためにlaravel 5.1 apiでどのように言語を検出できますか?
if ($validator->fails()) {
return response()->json([
'errors' => $validator->getMessageBag()->getMessages(),
], 400);
}
各言語に最適です。 faとen。このためミドルウェア にミドルウェアを登録する)
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Foundation\Application;
/**
* Class Localization
*
* @author Mahmoud Zalt <[email protected]>
*/
class Localization
{
/**
* Localization constructor.
*
* @param \Illuminate\Foundation\Application $app
*/
public function __construct(Application $app)
{
$this->app = $app;
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
*
* @return mixed
*/
public function handle($request, Closure $next)
{
// read the language from the request header
$locale = $request->header('Content-Language');
// if the header is missed
if(!$locale){
// take the default local language
$locale = $this->app->config->get('app.locale');
}
// check the languages defined is supported
if (!array_key_exists($locale, $this->app->config->get('app.supported_languages'))) {
// respond with error
return abort(403, 'Language not supported.');
}
// set the local language
$this->app->setLocale($locale);
// get the response after the request is done
$response = $next($request);
// set Content Languages header in the response
$response->headers->set('Content-Language', $locale);
// return the response
return $response;
}
}
2: