Я использую промежуточное ПО для переключения между английским и арабским языками
<?php
namespace App\Http\Middleware;
use Closure;
class ApplyLocale
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$segments = collect($request->segments());
$locale = $segments->first();
if (! in_array($locale, config('app.locales'))) {
$locale = 'ar';
app()->setLocale($locale);
$segments->prepend($locale);
return redirect($segments->implode('/'));
}
app()->setLocale($locale);
return $next($request);
}
}
а в helper.php я использую это для переключения между
/**
* @return string
*/
function switchLocaleUrl()
{
$locale = config('app.locale');
if ($locale === 'ar') {
return '/en/' . collect(Request::segments())->splice(1)->implode('/');
}
return '/ar/' . collect(Request::segments())->splice(1)->implode('/');
}
и в виду я использую:
<li><a href = "{{ switchLocaleUrl() }}"><i class = "hvr-float-shadow"></i> {{ config('app.locale') === 'en' ? 'عربي' : 'ENGLISH' }}</a></li>
но когда я перехожу на url localhost / myproject / ar произошла ошибка 404 NOT FOUND






В обработчике промежуточного программного обеспечения допущена опечатка.
используйте config('app.locale') вместо config('app.locales')
Добавьте массив, содержащий доступные языки в config / app.php
'languages' => массив ('en', 'fr', 'de', 'es')
Добавьте этот код в Filters.php
App :: before (функция ($ запрос) {
if ( in_array(Request::segment(1), Config::get('app.languages')) ) {
Session::put('locale', Request::segment(1));
return Redirect::to(substr(Request::path(), 3));
}
if ( Session::has('locale') ) {
App::setLocale(Session::get('locale'));
}
});
это не меняется