簡體   English   中英

Laravel本地化在404頁面

[英]Laravel localization in 404 page

你好我有laravel本地化的問題

我已經制作了語言切換器,當前選擇的語言在404頁面上不起作用(如果我在控制器manualy中返回abort(404),它會工作),它總是在config / app.php中定義的默認語言環境中顯示內容

我的中間件代碼

<?php
namespace App\Http\Middleware;

use Closure;

class SetLanguageCookie
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if($request->hasCookie('language')) {
            $cookie = $request->cookie('language');
            app()->setLocale($cookie);

            return $next($request);
        } else {
            $response = $next($request);
            $response->withCookie(cookie()->forever('language', 'en'));
            return $response;
        }
    }
}

任何想法我怎樣才能使這個工作? 所有自動顯示的404頁面都顯示當前所選語言的內容?

如果您有默認錯誤處理,請查找此文件:

應用程序\\ \\例外Handler.php

將render方法更改為以下內容:

    /**
 * Render an exception into an HTTP response.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Exception  $e
 * @return \Illuminate\Http\Response
 */
public function render($request, Exception $e)
{

    if($e instanceof NotFoundHttpException)
    {
        if(\Request::hasCookie('language')) {
            $cookie = \Request::cookie('language');
            app()->setLocale($cookie);
           //.... etc
        }
    }

    return parent::render($request, $e);
}

在@ArthurSamarcos的幫助下修復了它

應用程序/異常/ Handler.php

use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

/**
 * Render an exception into an HTTP response.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Exception  $e
 * @return \Illuminate\Http\Response
 */
public function render($request, Exception $e)
{
    if($request->hasCookie('language')) {
        // Get cookie
        $cookie = $request->cookie('language');
        // Check if cookie is already decrypted if not decrypt
        $cookie = strlen($cookie) > 2 ? decrypt($cookie) : $cookie;
        // Set locale
        app()->setLocale($cookie);
    }

    if($e instanceof NotFoundHttpException) {
        return response()->view('errors.404', [], 404);
    }

    return parent::render($request, $e);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM