2016-12-09 1 views
0

У меня есть api в laravel, и я хочу получить ошибки проверки на языке пользователя. как я могу указать язык в laravel api? , например, ответ это:Как я могу определить язык в laravel 5.1 api для ошибки проверки?

if ($validator->fails()) { 
      return response()->json([ 
       'errors' => $validator->getMessageBag()->getMessages(), 
      ], 400); 
     } 

возвращение лучше для каждого языка. fa и en.

ответ

1

1) создать промежуточное программное обеспечение в App/HTTP/Middleware

localization.php

и написать их в том, что:

<?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) Зарегистрируйте промежуточное программное обеспечение в для промежуточного программного это , перейти в App \ Http \ Kernel.php добавить в этом массиве, что есть в файле ядра:

protected $middleware = [] 

это одно.

\App\Http\Middleware\Localization::class, 

3) добавьте к этому app.php в конфигурации директории

'supported_languages' => [ 'ан' => 'английский', 'фа' => 'персидская'],

4) создайте языковую папку в lang-папке «resources/lang» для вашего языка (в данном случае это [fa] рядом с [en]) и, конечно же, установите там ваши файлы. для этого вопроса только скопируйте файл validation.php в папку fa и измените текст ошибки.

5) установите заголовок «Content-Language» в вашем запросе ([ru] или [fa]).

1

Там нет никакой необходимости делать все этот Вы можете сделать это в вашей папке ресурсов 1) особенность локализации Laravel обеспечивает удобный способ для извлечения строк на разных языках, что позволяет легко поддерживать несколько языков в вашем приложении. Языковые строки хранятся в файлах в каталоге resources/lang. В этом каталоге должен быть подкаталог для каждого языка, поддерживаемого приложением . Для пошагового руководства проверьте эту ссылку: https://laravel.com/docs/5.3/localization

Смежные вопросы