在Laravel 5.8上翻译生产错误
在Laravel中,如何将生产模式中显示的错误(如“500 Internal Server error”)转换为其他语言(区域设置)?您可能需要自定义错误视图,为了实现此功能,您需要在视图的错误文件夹中创建在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) {
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翻译文件可以定义为:
{
“服务器错误”:“这是我的自定义邮件,将覆盖默认邮件!”
}
如果您仍然有疑问,请在评论中要求澄清