php - 在哪里检查 Laravel 语言翻译是否存在?
问题描述
我正在翻译我的 Laravel 网站,该网站使用 mcamara/laravel-localization 包进行翻译。我发现如果有人键入不存在的语言(fe http://localhost/de/test),页面上会出现一些错误。因为我不想检查和修复所有页面的错误,所以我需要一些中间件或处理程序来检查所选语言是否在带有翻译的数组中,如果不是重定向到 404 页面。
不幸的是,我不确定在哪里进行检查?
if(!in_array($lang, $languages)) {
App::abort(404);
}
return true;
非常感谢 !
解决方案
您是否认为语言应该在查询字符串上而不是端点的一部分上?例如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 是您的翻译文件,然后重定向。
希望这可以帮助。
推荐阅读
- python-3.x - MIMEImage 未显示在电子邮件正文中/尝试在电子邮件中嵌入图像
- android - 尝试实现来自不同类的方法
- google-bigquery - 非美国专利文档的描述或声明的 BigQuery UNNEST 导致查询不返回任何结果
- html - 如何为离子日期时间选择器设置 pickerOptions 内联?
- python - 带有一个列表理解的冒泡排序
- c++ - MSVC 中的 Qt Creator 调试
- java - Xuggler,不看完整视频就直奔某一帧(秒)
- python - 遍历“螺旋”中的列表
- python - 为什么屏幕上没有显示 tkinter 按钮?
- python - Scipy 积分 (quad, quadrature, nquad) 不能积分向量参数化函数?(等效函数在 MATLAB 中有效)