Перевести Производственная ошибка на Laravel 5.8 - PullRequest
0 голосов
/ 08 января 2020

В Laravel, как я могу перевести ошибку, показанную в производственном режиме, например, "500 Internal Server Error", на другой язык (локаль)?

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Внутри всех страниц ошибок отображается текст с поддержкой i18n.

Имейте в виду, что для дальнейшей настройки, кроме перевода сообщений, вы все равно можете опубликовать sh представлений ошибок и настроить их в соответствии со своими потребностями с помощью этой команды ремесленника:

php artisan vendor:publish --tag=laravel-errors

Вы должны обратиться к этому пункту о локализации с использованием строк перевода в качестве ключей для создания требуемых json файлов. Ключи, которые необходимо переопределить, определены на страницах ошибок блейда по умолчанию, которые вы можете найти на github

Представьте, что вы хотите переопределить сообщение об ошибке 500. Найдите все случаи использования функции __ (двойное подчеркивание) в файле 500.blade.php, а также в файлах макета.

Предоставленный параметр станет ключом, который вы будете использовать для переопределения сообщения в json file.

Пример

Например, учитывая содержимое файла 500.blade.php:

@extends('errors::minimal')

@section('title', __('Server Error'))
@section('code', '500')
@section('message', __('Server Error'))

Соответствующий файл перевода json может быть определен как:

{
    "Server Error": "This is my custom message that will override the default one!"
}

Если у вас все еще есть сомнения, просто попросите разъяснений в комментариях.

0 голосов
/ 08 января 2020

Вам может понадобиться настраиваемый просмотр ошибок, для реализации вам необходимо создать 500.blade.php в папке ошибок представлений. а затем разработайте его по своему усмотрению. Но помните, что ошибки сервера, такие как 500, не отображают представления. Для этого вы можете попытаться отредактировать функцию рендеринга app/Exceptions/Handler.php следующим образом:

public function render($request, Exception $e) {


   // 404 page when a model is not found
if ($e instanceof ModelNotFoundException) {
    return response()->view('errors.404', [], 404);
}

if ($this->isHttpException($e)) {
    return $this->renderHttpException($e);
} else {
    // Custom error 500 view on production
    if (app()->environment() == 'production') {
        return response()->view('errors.500', [], 500);
    }
    return parent::render($request, $e);
} 

}

Поделитесь, если это поможет вам, это не проверено мной. Но это должно работать

Обновление

Над кодом может отображаться 500 для ошибок проверки, поэтому проверьте это

public function render($request, Exception $e) {
   $exception = \Symfony\Component\Debug\Exception\FlattenException::create($e);
   $statusCode = $exception->getStatusCode($exception);

   if (env('APP_DEBUG') == FALSE && $statusCode == 500 && $e instanceof ValidationException != TRUE) {
      return response()->view('errors.500', [], 500);
   } else {
      return parent::render($request, $e);
   }
}
...