eolica/nova-locale-switcher
A Laravel Nova tool that adds a locale switcher to your admin panel, letting you switch the application language from the Nova UI. Useful for multilingual apps where editors need to preview content or work across locales without leaving Nova. Simple to install and configure, it integrates directly i...
Architecture fit. This is a thin Nova front-end tool: a service provider that registers a tool with Nova::tools([...]) and a compiled Vue component that renders a locale dropdown in the Nova UI. It is deliberately scoped as UI only — the README states it ships "without any concrete localization implementation," meaning the package does not set app()->setLocale(), does not route or persist the selection, and does not translate anything. Architecturally it is a presentation-layer convenience, not a localization framework. Any team expecting the latter will be disappointed; any team that already has a localization layer (session/user-preference locale, middleware calling App::setLocale()) can treat this as a small rendering shim.
Integration feasibility. Installation is standard Composer + NovaServiceProvider::tools(), with likely a publishable config listing available locales. Effort to get pixels on screen: under an hour for a competent Laravel developer. Effort to make it actually localize the admin panel: 1–3 days, because you must build the persistence and middleware layer yourself. The real integration question is not the package, it's whether you own the locale-resolution contract (where is locale stored — session, users.locale column, cookie? what wins on conflict? how does it interact with API requests?).
Technical risk. High, concentrated in a few places:
Key questions.
localStorage, or not at all? Where does it write?dist/ committed, or does it require npm build from source with a Vue toolchain version we'd have to match?Stack fit. Fits standard Laravel + Nova projects on PHP 7.4–8.x. It is a Nova-only artifact: it adds nothing to the application layer, the API layer, or any non-Nova surface. If your admin is not Nova, this package is irrelevant.
Migration path. Given the age and zero dependents, the correct framing is not "adopt a dependency" but "acquire a 100-line component." MIT licensing makes that clean. Three options, in order of preference:
SetLocale middleware is a day's work, is testable without a fork debt, and gives you full ownership of the persistence contract.packages/ or app/Nova/Tools/, pin the Vue build, add tests. Acceptable if your team is Nova-fluent and time-boxed.Compatibility. Verify against your exact laravel/nova constraint before anything else; treat Nova major-version compatibility as a gate, not a detail. Confirm PHP and Laravel version bounds in composer.json, and confirm whether the tool tolerates Nova's asset versioning. If your Nova is v4+, assume breakage until proven otherwise.
Sequencing.
users.locale for admins, session fallback), precedence rules, and default.App::setLocale() on every Nova request; make the switcher reflect state rather than own it.Maintenance. Effectively unmaintained upstream: no releases in roughly four years, no visible CI, no test suite, single-vendor provenance. Your team owns every future fix regardless of whether you install or fork — which further tilts the decision toward forking or reimplementing. Budget a recurring line item for "re-verify on every Nova major upgrade."
Support. No SLA, no commercial backing, no issue-triage cadence. Dependency resolution questions go to a dormant GitHub issue tracker. Team must be self-sufficient in Nova tooling — a common and acquirable skill, but not free.
Scaling. Negligible runtime cost — a config array and a rendered dropdown. No database, no queue, no external calls, no cache surface. It will not be your bottleneck at any scale. The scaling concern is organizational: every additional locale multiplies translation surface, QA matrix, and content-authoring effort, none of which this package addresses.
Failure modes.
app()->setLocale() never fires; admins believe they are editing the French site while writing English content. Highest-severity failure because it is invisible.Ramp-up. Low for anyone with Nova experience — a day to read the package, a day to wire persistence. The genuine ramp-up cost sits downstream, in standing up the localization infrastructure this package deliberately omits. Plan and staff for that, not for the switcher.
Verdict for the TPM. Low score, near-zero adoption, four-year-old release, and it does not perform the function its name implies. Recommended action: do not take it as a production dependency. Run a half-day spike for UX reference, then implement or fork in-house. The package is a two-hour solution to a visible problem; the invisible problem — locale persistence and actual translation coverage — is where the budget belongs.
How can I help you explore Laravel packages today?