如何在Laravel 5.4中创建支持本地化的API

时间:2019-01-03 07:29:27

标签: php laravel

如何在 laravel 5.4 中创建支持本地化的API,我尝试了以下代码,但没有起作用,并显示了异常(Language not supported),我该如何在< strong> laravel API 任何人的帮助,谢谢。

我已经在config / app.php中设置了

'supported_languages' => ['en' => 'English', 'ar' => 'Arabic'],

这是我的控制器

public function __construct(Application $app)
    {
        $this->app = $app;
    }

    public function handle($request, Closure $lang)
    {
        try 
        {
            // 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.locales');
            }

            // check the languages defined is supported
            if (!array_key_exists($locale, $this->app->config->get('app.supported_languages'))) 
            {
                // respond with error
                return response()->json(['data' => 'Language not supported.', 'status_code' => 403, 'status' => false],403);
            }

            // set the local language
            $this->app->setLocale($locale);

            // get the response after the request is done
            $response = $lang($request);

            // set Content Languages header in the response
            $response->headers->set('Content-Language', $locale);

            // return the response
            return response()->json(['data' => $response, 'status_code' => 200, 'status' => true],200);
        } 
        catch (Exception $e) 
        {
            return Response::json(['error' => 'There is something wrong', 'status_code' => 500, 'status' => false],500);
        }
    }

0 个答案:

没有答案