我如何检测 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