rectitude-open/filament-locale-picker
A Filament plugin that adds a locale picker to your admin panel, letting users switch between configured languages from a simple dropdown. Easy to register in a panel provider and customize with your own list of supported locales.
Architecture fit. rectitude-open/filament-locale-picker is a Filament panel plugin rather than a general Laravel locale package. It slots into the existing Filament panel lifecycle via a plugin class registered on the Panel object, and injects a locale-selection UI through Filament's render-hook system (typically the topbar or user menu). That means it composes with the admin panel architecture we already have rather than introducing a parallel front-end concern, but it also means it is only useful to us to the extent that our locale switching lives inside Filament panels — any public-facing or API-side locale negotiation remains out of scope and must be handled separately.
Integration feasibility. The installation surface is small and conventional: Composer dependency, plugin registration in the relevant PanelProvider, and (likely) an optional published config for the list of available locales. There is no database migration implied, no service provider override, and no queue or storage dependency. This is a low-ceremony integration that a single developer can complete and verify in well under a day.
Technical risk. Low overall, with one concrete caveat surfaced by this release: v1.0.1 fixes the view namespace used when registering the render hook. That strongly implies v1.0.0 registered a hook against an incorrect namespace, which in practice manifests as a missing picker or a View [ ... ] not found exception at render time. v1.0.0 should therefore be treated as defective and skipped entirely; v1.0.1 is the first genuinely usable release. Secondary risks are the usual ones for a young 1.x package from a small maintainer organisation: no long-term API stability guarantee, and a render-hook approach is inherently coupled to Filament's internal hook naming, which has shifted across Filament major versions.
Key questions.
composer.json constraint actually permit, and does that match our panel version?pt_BR vs pt-PT)?Stack fit. The package assumes a Laravel + Filament stack and is only meaningful there. If our admin surface is Filament-based, fit is good and the plugin is narrowly scoped to a single, well-understood responsibility. If any part of our admin is Livewire/Blade outside Filament, the picker will not cover it and we would be running two locale mechanisms side by side — a state-consistency problem worth avoiding.
Migration path. None required. There is no prior assessment and no incumbent package to displace, so this is a greenfield addition. If we already have a hand-rolled locale switcher in the panel, plan to remove it in the same change set rather than run both, otherwise two components will compete over the same session key.
Compatibility. Pin the dependency to ^1.0.1 explicitly — do not allow 1.0.0 to resolve, since that version is known-broken by virtue of this fix. Verify the Filament version constraint against our installed major before merging, and confirm the PHP and Laravel constraints against our runtime. Because the fix is namespace-level, a stale view cache in any environment that previously ran 1.0.0 could mask or reproduce the original symptom; treat cache clearing as part of the rollout step, not an afterthought.
Sequencing.
PanelProvider change across remaining panels.Maintenance. Minimal ongoing effort — configuration-level ownership, no custom code to maintain. The real maintenance exposure is dependency risk: a small package from a single GitHub organisation, at 1.x, with a hook-based integration into Filament internals. Budget for the possibility that a Filament major upgrade breaks the hook registration and the package is slow to follow. Keeping the registration isolated to one line per panel makes that a cheap fix or a cheap removal.
Support. Community/GitHub-issues support only; assume no vendor SLA. For a UI convenience feature of this size that is acceptable, provided we are not depending on it for a compliance or access-control requirement. If locale selection ever becomes part of a regulatory obligation, this package is not the right foundation.
Scaling. Negligible. The plugin adds one render hook and a small view per panel request; there is no query overhead, no caching layer, and no background work. It will not be a performance factor at any plausible admin traffic level.
Failure modes.
^1.0.1, clear view cache on deploy.Ramp-up. Very low. A developer familiar with Filament plugins can integrate and validate this in half a day; the only genuine learning is confirming the persistence semantics. Documentation for consumers is thin — this is a small package with a short README — so plan to capture our own integration notes (which panels, which locales, where it renders) in the repo rather than relying on upstream docs.
Verdict on this release. v1.0.1 is a single-line bug fix correcting the view namespace in render-hook registration. It introduces no new features, no breaking changes, and no deprecations, but it is material in one respect: it converts the package from effectively non-functional to usable. Adopt ^1.0.1 as the floor and skip 1.0.0 entirely.
How can I help you explore Laravel packages today?