Setup your Laravel application with localized routes
This application is still in development and could implement breaking changes. Please use at your own risk.
You can install the package with composer
composer require justijndepover/laravel-localized-routes
After installation you should publish your configuration file
php artisan vendor:publish --tag="laravel-localized-routes-config"
This is the config file
return [
/**
* This global setting can enable / disable the entire localization package.
*/
'enable_localized_routes' => true,
/**
* This list contains all the available locales.
* Simply add your own locale and thats it!
*/
'locales' => [
'en' => 'English',
'nl' => 'Nederlands',
],
/**
* Automatically detect locales
*
* With this setting enabled, you can automatically detect locales.
* The middleware to do so will check the request for a "locale" header
*
* useful for api's, where you don't want the locale prefix,
* but still want to set the application locale
*/
'auto_detect_locales' => true,
/**
* Automatically redirect requests if the localized version exists
*
* With this setting enabled, your requests will automatically redirect
* to their localized counterpart.
*
* For example: /home => /en/home
*/
'auto_redirect_to_localized_route' => true,
];
To make your routes multi lingual add this in your web.php
:
Route::localized(function () {
// Every route in here is localized
});
and thats it! You can still give your routes a name like you're used to:
Route::localized(function () {
Route::get('home', HomeController::class)->name('home');
});
<!-- in your blade view -->
<a href="{{ route('home') }}">Home</a>
<!-- will return /{locale}/home -->
If you want to switch to a different localized route, you can do so with the switchLanguage
function.
switchLanguage('fr'); // will return the current route, but the localized part is substituted with the new language
This package is a simplified version of: codezero-be/laravel-localized-routes
If you want a more robust solution with more options, check out their version.
If you find any security related issues, please open an issue or contact me directly at justijndepover@gmail.com.
If you wish to make any changes or improvements to the package, feel free to make a pull request.
The MIT License (MIT). Please see License File for more information.