Skip to content

Instantly share code, notes, and snippets.

@waska14
Created March 29, 2020 07:17
Show Gist options
  • Save waska14/43b4a7b345eeff6d40d3195ad64e5e34 to your computer and use it in GitHub Desktop.
Save waska14/43b4a7b345eeff6d40d3195ad64e5e34 to your computer and use it in GitHub Desktop.
Laravel - locale prefix
<?php
namespace App\Http\Middleware;
use Closure;
class Language
{
public function handle($request, Closure $next)
{
$locale = $request->segment(1);
if (in_array($locale, array_keys(config('app.locales')))) {
app()->setLocale($locale);
return $next($request)->withCookie(cookie()->forever('locale', $locale));
}
$query = implode("/", request()->segments());
$locale = $request->cookie('locale') ?: app()->getLocale();
return redirect($locale . "/" . $query);
}
}
<?php
protected function mapWebRoutes()
{
$locale = request()->segment(1);
$routeGroup = [
'middleware' => ['App\Http\Middleware\Language', 'web'],
'namespace' => $this->namespace,
];
if (in_array($locale, array_keys(config('app.locales')))) {
app()->setLocale($locale);
$routeGroup['prefix'] = $locale;
}
Route::group($routeGroup, function ($router) {
require base_path('routes/web.php');
});
}
<?php
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
dd('root');
});
Route::get('test', function () {
dd('test');
});
Route::group(['prefix' => 'gela'], function () {
Route::get('test', function () {
dd('getla/test');
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment