tomatophp/filament-language-switcher

Switch between languages on your app using user base column on database
37,218 37
Install
composer require tomatophp/filament-language-switcher
Latest Version:5.0.0
PHP:^8.2
License:MIT
Last Updated:Sep 14, 2026
Links: GitHub  ·  Packagist
Maintainer: fadymondy

Screenshot

Filament Language Switcher

Dependabot Updates PHP Code Styling Tests Latest Stable Version License Downloads

Switch between languages on your app using user base column on database

Version Compatibility

Plugin Filament Laravel PHP
1.x 3.x 10.x / 11.x 8.1+
4.x (4.x branch) 4.x 11.x / 12.x 8.2+
5.x 5.x 12.x / 13.x 8.2+

Screenshots

Switcher Light RTL Dropdown Light Dropdown Dark

Installation

composer require tomatophp/filament-language-switcher

after install your package please run this command

php artisan filament-language-switcher:install

finally register the plugin on /app/Providers/Filament/AdminPanelProvider.php

->plugin(\TomatoPHP\FilamentLanguageSwitcher\FilamentLanguageSwitcherPlugin::make())

now on your User.php model or any user model add this trait

use \TomatoPHP\FilamentLanguageSwitcher\Traits\InteractsWithLanguages;

now you must see the switcher and you can change language as you like

If your user table has a lang column it is used, otherwise the language is stored in the user_languages table. Users who never picked a language get app.locale.

Languages

The languages shown in the switcher come from the locals key of the config file. Each language needs a label and a flag (a country code from country-flags):

'locals' => [
    'en' => ['label' => 'English', 'flag' => 'gb'],
    'nl' => ['label' => 'Dutch', 'flag' => 'nl'],
],

The package names every default language in 18 languages; a language without a translated name shows its label. Set show_flags to false to hide the flags in the list.

Security

The switch route (/languages/switcher?lang=xx) only changes the language of the signed in user. Guests get a 403 and languages that are not in locals are rejected. The model and model_id parameters sent by older versions are ignored.

Publish Assets

you can publish config file by use this command

php artisan vendor:publish --tag="filament-language-switcher-config"

you can publish views file by use this command

php artisan vendor:publish --tag="filament-language-switcher-views"

you can publish languages file by use this command

php artisan vendor:publish --tag="filament-language-switcher-lang"

you can publish migrations file by use this command

php artisan vendor:publish --tag="filament-language-switcher-migrations"

Testing

if you like to run PEST testing just use this command

composer test

Code Style

if you like to fix the code style just use this command

composer format

PHPStan

if you like to check the code by PHPStan just use this command

composer analyse

Other Filament Packages

Checkout our Awesome TomatoPHP

Related Packages

tomatophp/filament-withdrawals

Manage your wallet withdrawals in FilamentPHP

2,259 7
tomatophp/filament-pos

POS System for FilamentPHP with a lot of features and integration with Ecommerce...

1,510 68
tomatophp/filament-pwa

get a PWA feature on your FilamentPHP app with settings from panel

28,140 93
tomatophp/filament-invoices

Generate and manage your invoices / payments using multi currencies and multi ty...

4,381 109
tomatophp/filament-api

Generate APIs from your filament resource using single line of code

7,509 55