Я установил локализацию в моем laravel приложении, оно работает нормально, но на некоторых страницах, где есть слаг, не работает, когда я меняю язык.
Route::get('p/{slug}', ['as' => 'single_page', 'uses' => 'PostController@showPage']);
Route::get('categories/{id}/{slug?}', ['as' => 'single_category', 'uses' => 'CategoriesController@singleCategory']);
Route::get('campaign/{id}/{slug?}', ['as' => 'campaign_single', 'uses' => 'CampaignsController@show']);
Я заметил, что когда я меняю язык на этих предыдущих страницах я получил ошибку 404, и слаг был удален и заменен на локаль / {$ locale}:
localhost/mysite/public/p/about //until now page work fine but when i change language
localhost/mysite/public/p/locale/en // i got this (slug was removed)
(then i got the 404error , same thing for all route that have a slug)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class LangController extends Controller
{
public function index ($lang){
app()->setLocale($lang);
echo trans('lang.home');
}
}
<?php
namespace App\Http\Middleware;
use Closure;
class localization
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(\Session::has('locale')){
\App::setlocale(\Session::get('locale'));
}
return $next($request);
}
}
Route::get('locale/{locale}', function ($locale){
Session::put('locale',$locale);
return redirect()->back();
}
);