считали ли вы, что язык должен быть в строке запроса вместо части конечной точки? например 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 может быть строкой, которую вы всегда настраиваете на перевод, $ request-> lang может быть сегментом запроса, если вы используете (/de/test).
Другим подходом может быть проверка (!file_exists($path))
$ path в качестве файла перевода, а затем перенаправление.
Надеюсь, это поможет.