我如何检测 laravel 5.1 api 中的语言是否存在验证错误?
how can i detect language in laravel 5.1 api for validation error?
我在 laravel 中有一个 api,我想要 return 用户语言的验证错误。如何在 laravel api 中指定语言?
例如回应这个:
if ($validator->fails()) {
return response()->json([
'errors' => $validator->getMessageBag()->getMessages(),
], 400);
}
return 最适合每种语言。 fa 和 en.
1) 在App/Http/Middleware
中创建一个中间件
localization.php
并在其中写下这些:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Foundation\Application;
/**
* Class Localization
*
* @author Mahmoud Zalt <mahmoud@zalt.me>
*/
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)在Middlewares中注册中间件
为了这。转到 App\Http\Kernel.php
添加内核文件中的这个数组:
protected $middleware = []
这个。
\App\Http\Middleware\Localization::class,
3) 将此添加到配置目录
中的 app.php
'supported_languages' => ['en' => 'English', 'fa' => 'persian'],
4) 在 lang 文件夹 "resources/lang" 中为您的语言创建语言文件夹(在本例中它是 [en] 旁边的 [fa]),当然还要在那里设置您的文件。对于这个问题,只需将 validation.php 文件复制到您的 fa 文件夹并更改错误文本。
5) 将请求中的 header "Content-Language" 设置为 ([en] 或 [fa]).
没有必要做这一切
您可以在资源文件夹中执行此操作
1)Laravel 的本地化功能提供了一种方便的方法来检索各种语言的字符串,使您可以轻松地在您的应用程序中支持多种语言。语言字符串存储在 resources/lang 目录中的文件中。在此目录中,应用程序支持的每种语言都应该有一个子目录
如需分步指南,请查看此 link :https://laravel.com/docs/5.3/localization
我在 laravel 中有一个 api,我想要 return 用户语言的验证错误。如何在 laravel api 中指定语言? 例如回应这个:
if ($validator->fails()) {
return response()->json([
'errors' => $validator->getMessageBag()->getMessages(),
], 400);
}
return 最适合每种语言。 fa 和 en.
1) 在App/Http/Middleware
中创建一个中间件localization.php
并在其中写下这些:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Foundation\Application;
/**
* Class Localization
*
* @author Mahmoud Zalt <mahmoud@zalt.me>
*/
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)在Middlewares中注册中间件 为了这。转到 App\Http\Kernel.php 添加内核文件中的这个数组:
protected $middleware = []
这个。
\App\Http\Middleware\Localization::class,
3) 将此添加到配置目录
中的 app.php'supported_languages' => ['en' => 'English', 'fa' => 'persian'],
4) 在 lang 文件夹 "resources/lang" 中为您的语言创建语言文件夹(在本例中它是 [en] 旁边的 [fa]),当然还要在那里设置您的文件。对于这个问题,只需将 validation.php 文件复制到您的 fa 文件夹并更改错误文本。
5) 将请求中的 header "Content-Language" 设置为 ([en] 或 [fa]).
没有必要做这一切 您可以在资源文件夹中执行此操作 1)Laravel 的本地化功能提供了一种方便的方法来检索各种语言的字符串,使您可以轻松地在您的应用程序中支持多种语言。语言字符串存储在 resources/lang 目录中的文件中。在此目录中,应用程序支持的每种语言都应该有一个子目录 如需分步指南,请查看此 link :https://laravel.com/docs/5.3/localization