lykegenes / laravel-locale-switcher
A Laravel locale switcher Middleware
Installs: 1 203
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 2
Forks: 2
Open Issues: 0
Requires
- illuminate/http: ^9.0
- illuminate/support: ^9.0
Requires (Dev)
- mockery/mockery: ^1.5
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-10-26 23:06:59 UTC
README
A Simple Laravel middleware to easily load and switch the user's locale.
Version Compatibility
Install
Via Composer
composer require lykegenes/laravel-locale-switcher
Then, add this to your Service Providers (It should be done automa) :
Lykegenes\LocaleSwitcher\ServiceProvider::class,
and add this Alias [Optional]
'LocaleSwitcher' => Lykegenes\LocaleSwitcher\Facades\LocaleSwitcher::class,
Finally, you will need to register this Middleware either in your Kernel.php
or directly in your routes.
This way, you can control which routes will have automatic locale detection (Web pages) or not (your API).
Make sure this middleware is placed after any Session or Cookie related middlewares from the framework.
\Lykegenes\LocaleSwitcher\Middleware\SwitchLocaleMiddleware::class,
Optionally, you can publish and edit the configuration file :
php artisan vendor:publish --provider="Lykegenes\LocaleSwitcher\ServiceProvider" --tag=config
Usage
To change the locale, simply add "locale" to the route parameters. It works for all your routes. Some examples :
http://my-app.com/?locale=en
http://my-app.com/some/sub/route?locale=fr
http://my-app.com/some/sub/route?locale=es&otherParam=value
This will store the locale in the user's session, and set it as the current locale everytime the user requests a page.
You can build the routes with the included helpers. The URLs will be generated using the current locale.
$url = action_localized('SomeController@someFunction', ['your' => 'parameters']); $url = route_localized('someNamedRoute', ['your' => 'parameters']);
To build a URL to the same page, but with a different locale, use the switch_locale()
helper.
$url = switch_locale('fr'); // URL of the French version of the current page.
You can easily generate a dropdown using the laravelcollective/html package :
HTML::ul(LocaleSwitcher::getEnabledLocales());
Credits
License
The MIT License (MIT). Please see License File for more information.