Language Switcher
CommunityZero-config language switcher for Filament admin panels with automatic translation detection and country flags.
Author:
Craft Forge
Package health
BetaAutomated checks of this plugin's Composer package
15 checks
- Skipped: GitHub Actions pinned to SHA
- Skipped: GitLab CI includes pinned to SHA
- Passed: Open security advisories
- Passed: Dependabot PR responsiveness — No open Dependabot PRs.
- Skipped: Renovate MR responsiveness
- Skipped: Dependabot or Renovate configured
- Skipped: Dependency update cooldown configured
- Failed: Provides a security policy — View details on Plumb
- Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
- Passed: Commit and release recency — Active: last commit 143 days ago; last release 144 days ago.
-
Passed:
composer.lock not committed by library
—
composer.lockis absent from the released dist archive. - Passed: Dist archive is lean
-
Passed:
Current Laravel version supported
—
Package dependencies resolve together with current Laravel
13.0. -
Passed:
Current PHP version supported
—
Constraint
^8.1supports current PHP8.5. - Skipped: Current Symfony version supported
filament/
namespace. Review the source and install at your own risk. Found
malware or an unresolved security issue the author won't
address?
Report it
.
Documentation
A simple and elegant language switcher plugin for Filament admin panels. Automatically detects available Filament translations or allows custom language configuration with optional flag icons. Supports auth pages, cookie persistence, and locale change events.


#Demo
#Installation
| Plugin Version | Filament Version | PHP Version |
|---|---|---|
| 1.x | 3.x, 4.x, 5.x | > 8.1 |
1. Install the package via Composer:
composer require craft-forge/filament-language-switcher
2. Register the plugin in your Filament panel configuration (e.g. AdminPanelProvider):
use CraftForge\FilamentLanguageSwitcher\FilamentLanguageSwitcherPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
FilamentLanguageSwitcherPlugin::make(),
]);
}
The plugin will automatically detect available Filament language files and display them in a dropdown menu.
#Configuration
#Locales
By default, the plugin auto-detects available Filament language files. To define the locale list manually, pass it to locales() - choose one of three formats:
Locale codes - names and flags are resolved automatically from the built-in dictionary (200+ languages):
FilamentLanguageSwitcherPlugin::make()
->locales(['en', 'fr', 'de'])
Full control - specify name and flag per locale. Flag codes reference: https://flagicons.lipis.dev.
FilamentLanguageSwitcherPlugin::make()
->locales([
['code' => 'en', 'name' => 'English', 'flag' => 'us'],
['code' => 'fr', 'name' => 'Français', 'flag' => 'fr'],
['code' => 'de', 'name' => 'Deutsch', 'flag' => 'de'],
])
Dynamic - load locales at runtime (e.g. from a database):
FilamentLanguageSwitcherPlugin::make()
->locales(fn () => Language::pluck('code')->toArray())

#Remember Locale
Store the selected locale in a cookie to persist across browser sessions (e.g. after logout):
FilamentLanguageSwitcherPlugin::make()
->rememberLocale() // forever
->rememberLocale(days: 30) // for 30 days
#Custom Render Hook
Change where the language switcher appears in the panel:
use Filament\View\PanelsRenderHook;
FilamentLanguageSwitcherPlugin::make()
->renderHook(PanelsRenderHook::USER_MENU_PROFILE_AFTER)
Popular placements:
USER_MENU_BEFORE— before the user menu (default)USER_MENU_PROFILE_AFTER— after user profile in dropdownUSER_MENU_AFTER— after the user menuSIDEBAR_FOOTER— at the bottom of sidebarFOOTER— in the page footer
All available render hooks: https://filamentphp.com/docs/5.x/advanced/render-hooks

#Show on Auth Pages
Display the language switcher on login, register, and password reset pages:
FilamentLanguageSwitcherPlugin::make()
->showOnAuthPages()
#Hide Flags
Display only language names without flag icons:
FilamentLanguageSwitcherPlugin::make()
->showFlags(false)
#Event
The plugin dispatches a LocaleChanged event whenever a user switches locale, providing both the new and previous locale:
use CraftForge\FilamentLanguageSwitcher\Events\LocaleChanged;
use Illuminate\Support\Facades\Event;
public function boot(): void
{
Event::listen(LocaleChanged::class, function (LocaleChanged $event) {
// auth()->user()->setLocale($event->newLocale);
// Log::info("Locale changed from {$event->oldLocale} to {$event->newLocale}");
});
}
#License
The MIT License (MIT). Please see License File for more information.
The author
From the same author
Featured Plugins
A selection of plugins curated by the Filament team
Blueprint
Filament Blueprint is a premium Laravel Boost extension that helps AI agents produce accurate, detailed implementation plans and security reports for Filament apps.
Filament
Custom Dashboards
Let your users build and share their own dashboards with a drag-and-drop interface. Define your data sources in PHP and let them do the rest.
Filament
Custom Fields
Eliminate custom field migrations forever. Let your users create and manage form fields directly in Filament admin panels with 20+ built-in field types, validation, and zero database changes.
Relaticle