在laravel中设置会话之前,如何检查语言的存在?

时间:2018-07-25 11:46:33

标签: laravel laravel-5

嗨。我目前在routes

中使用此功能
Route::get('locale/{locale}', function ($locale) {
    \Session::put('locale', $locale);
    return redirect()->back();
});

用于更改语言。

我想在这样的SESSION集合之前检查语言的存在。

Route::get('locale/{locale}', function ($locale) {
    if(!exist($locale)){
         \Session::put('locale', 'en');
    }
    else{
         \Session::put('locale', $locale);    
    }
    return redirect()->back();
});

如何创建类似于上述功能的功能?

上面的函数只是一个示例,它不正确

2 个答案:

答案 0 :(得分:3)

这是否必要要确定。如果给定的语言环境完全缺少或仅缺少该特定标识符,Laravel将退回到默认语言。

我可以想到一种简单的方法来检查特定语言环境是否有翻译:

if (file_exists(resource_path("lang/$locale"))) {
   // Locale directory exists
}

答案 1 :(得分:0)

另一种解决方案是使用 Lang::hasForLocale(),如果您确定该文件始终以每种语言存在。例如:如果你总是 some-keys.php 在每个语言环境文件夹中,你可以做

Use Lang;

if (Lang::hasForLocale('some-keys', $locale)) {
   //
}