猿问

在哪里检查Laravel语言翻译是否存在?

我正在翻译Laravel网站,该网站使用mcamara / laravel-localization包进行翻译。我发现,如果有人键入一种不存在的语言(fe http:// localhost / de / test),则页面上会出现一些错误。因为我不想检查并修复所有页面中的错误,所以我需要一些中间件或处理程序来检查所选语言是否在包含翻译的数组中,以及是否不重定向至404页面。


不幸的是,我不确定在哪做支票?


if(!in_array($lang, $languages)) {

    App::abort(404);

}

return true;

非常感谢 !


神不在的星期二
浏览 158回答 1
1回答

莫回无

您是否认为该语言应位于查询字符串上而不是端点的一部分?例如http:// localhost / test?lang = de我已经看到很多开发人员都采用这种方法,而且我认为它更干净。关于您的问题,您似乎已经对中间件有了正确的想法,因此创建一个新的中间件并检查Illuminate\Translation\Translator那里有几种方法可以帮助您确定翻译是否存在。例子:public function handle($request, Closure $next){    if (Illuminate\Support\Facades\Lang::hasForLocale($someKey,$request->lang)) {        abort(404);    }    return $next($request);}$ someKey可以是您始终配置为要翻译的字符串,如果您使用(/ de / test),则$ request-> lang可以是请求的一部分。另一种方法可能是检查(!file_exists($path))$ path是您的翻译文件,然后重定向。希望这可以帮助。
随时随地看视频慕课网APP
我要回答