首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哪里检查Laravel语言翻译是否存在?

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

Stack Overflow用户
提问于 2019-04-20 05:58:23
回答 1查看 864关注 0票数 2

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

不幸的是,我不确定在哪里进行检查?

代码语言:javascript
复制
if(!in_array($lang, $languages)) {
    App::abort(404);
}
return true;

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2019-04-20 06:23:47

您是否考虑过语言应该位于查询字符串上,而不是端点的一部分?例如,http://localhost/test?lang=de,我见过许多开发人员采用这种方法,我相信它更干净。

关于你的问题,似乎你已经对中间件有了正确的想法,所以创建一个新的并检查Illuminate\Translation\Translator,有几个方法可以帮助你确定翻译是否存在。

示例:

代码语言:javascript
复制
public function handle($request, Closure $next)
{
    if (Illuminate\Support\Facades\Lang::hasForLocale($someKey,$request->lang)) {
        abort(404);
    }

    return $next($request);
}

$someKey可以是您总是配置为要翻译的字符串,$ request ->lang可以是请求的一部分,如果您使用(/de/$someKey)。

另一种方法是检查(!file_exists($path)) $path是否为您的转换文件,然后重定向。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55768279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档