在Laravel 5.8上翻译生产错误

在Laravel 5.8上翻译生产错误,laravel,debugging,locale,translate,Laravel,Debugging,Locale,Translate,在Laravel中,如何将生产模式中显示的错误(如“500 Internal Server error”)转换为其他语言(区域设置)?您可能需要自定义错误视图,为了实现此功能,您需要在视图的错误文件夹中创建500.blade.php。然后根据您的需要进行设计。但是请记住,像500这样的服务器错误不会渲染视图。为此,您可以尝试将app/Exceptions/Handler.php的呈现函数编辑为: public function render($request, Exception $e) {

在Laravel中,如何将生产模式中显示的错误(如“500 Internal Server error”)转换为其他语言(区域设置)?

您可能需要自定义错误视图,为了实现此功能,您需要在视图的错误文件夹中创建
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);
   }
}

在内部,所有错误页面都使用i18n支持呈现文本

请记住,对于除翻译消息之外的进一步自定义,您仍然可以发布错误视图,并使用此artisan命令自定义它们以满足您的需要:

php artisan供应商:发布--tag=laravel错误 您应该参考关于创建所需json文件的这一段。 您需要覆盖的键在您可以在上找到的默认刀片错误页面中定义

假设您要覆盖500错误消息。 在
500.blade.php
文件和布局文件中查找
\uuuu(双下划线)函数的所有用法

提供的参数将成为用于覆盖json文件中消息的键

例子 例如,给定
500.blade.php
文件内容:

@extends('errors::minimal')
@节(“标题”,“服务器错误”)
@节(“代码”,“500”)
@节(“消息”,“服务器错误”)
相应的json翻译文件可以定义为:

{
“服务器错误”:“这是我的自定义邮件,将覆盖默认邮件!”
}
如果您仍然有疑问,请在评论中要求澄清