我想在更改语言环境时更改路由组前缀。
例如,如果语言环境为en:
Route::group(['prefix' => 'giveaway'], function () {
});
如果语言环境为tr:
Route::group(['prefix' => 'cekilis'], function () {
});
我应该怎么做。
我尝试了
'prefix'=>__('routes.prefix')
但是应用程序无法访问路线中的当前语言环境。
答案 0 :(得分:0)
我建议您使用中间件将语言环境设置为动态
创建如下所示的中间件:
namespace App\Http\Middleware;
use Closure;
class Language
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
\App::setLocale($request->locale);
return $next($request);
}
}
然后在app \ Http \ Kernel中注册此中间件:
protected $middlewareGroups = [
'web' => [
// ...
\App\Http\Middleware\Language::class,
// ...
]
];
最后,您可以在路由文件上调用中间件
Route::middleware('language')->group(function ($locale) {
//You have a condition as you wish
if ($locale == 'en') {
Route::group(['prefix' => 'giveaway'], function () {
.......
});
} elseif ($locale == 'tr') {
Route::group(['prefix' => 'cekilis'], function () {
........
});
}
});
我希望这能解决您的问题