bakerkretzmar
12/18/2019 - 4:19 PM

Laravel localized routes

Laravel localized routes

<?php

class RouteServiceProvider
{
    public function boot()
    {
        Route::macro('localize', function (callable $callback) {
            foreach(['', 'en', 'fr'] as $locale) {
                $suffix = $locale ? "-{$locale}" : '';

                Route::prefix($locale)->group(function () use ($callback, $suffix) {
                    $callback($suffix);
                });
            }
        });
        
        parent::boot();
    }
}
<?php

// Generates '/', '/en', and '/fr'
Route::localize(function ($locale) {
    Route::get('/', HomeController::class)->name('home' . $locale);
});