Auto-detects user language from browser/session and sets it for the Laravel application. Provides manual selection via a form component.
- Automatic language detection (browser, session, custom detectors).
- Session-based persistence.
- User profile integration for authenticated users.
- Blade component for language switcher.
- Configurable supported languages and detectors.
-
Install via Composer:
composer require aristonis/laravel-language-switcher
-
Publish config file:
php artisan vendor:publish --provider="Aristonis\LaravelLanguageSwitcher\LaravelLanguageSwitcherServiceProvider" --tag="config"
-
Register middleware
-
Add route in
routes/web.php
:Route::post('/language-switch', [\Aristonis\LaravelLanguageSwitcher\Http\Controllers\LanguageSwitchController::class, 'update'])->name('language-switch.update');
In config/language-switcher.php
:
supported_languages
: Array of supported locales (e.g.,['en' => 'English', 'ar' => 'Arabic']
).detectors
: Enabled detectors (e.g.,['browser']
).session_key
: Session key for locale (default:__lang
).
Automatically sets app()->setLocale()
on each request.
In Blade views:
<x-laravel-language-switcher-switcher />
- Browser: Detects from
Accept-Language
header. - Custom:
- Extends:
LanguageDetectorInterface
- add new class on config file with array
detectors
- Extends:
POST to /language-switch
with locale
field.
php artisan vendor:publish --provider="Aristonis\LaravelLanguageSwitcher\LaravelLanguageSwitcherServiceProvider" --tag="views"
Please see CHANGELOG for more information on what has changed recently.
Report issues at GitHub Issues.
Contributions welcome! Fork the repo, create a feature branch, and submit a pull request. See CONTRIBUTING for details.
Email aristonis@outlook.com or report via Issues.
The MIT License (MIT). Please see License File for more information.
For support, open an issue.