outl1ne/nova-locale-manager
A Laravel Nova tool and resource for managing your application's locales and languages from the admin panel. Add, edit, enable or disable locales and set the default language without touching configuration files, keeping multilingual projects simple to maintain.
Architecture fit This is a Laravel Nova tool, not a framework-level library: it registers a screen inside the Nova admin panel that performs CRUD over a locales table. Architecturally it lives entirely in the administrative plane and only touches the runtime path if the application deliberately reads its locale list from that table (translatable content models, route-prefix middleware, hreflang/canonical generation, sitemap builders). That distinction is the first decision a TPM has to force: is the locale list a developer-owned configuration artifact seeded at deploy time, or an operator-owned dataset edited at runtime? The package only earns its keep in the second case. For teams already standardized on Nova it is a near-zero-cost convenience; for anyone not on Nova it is unusable, because Nova itself is a paid, per-project licensed dependency.
Integration feasibility
Mechanically trivial: composer require, register the tool in NovaServiceProvider::tools(), publish and run the migration, optionally seed a locale set. Realistic effort for a Laravel developer already inside a Nova app is hours, not days. The larger effort is downstream, not in the package: canonicalizing locale codes (BCP-47 vs. ISO 639-1 vs. bespoke app codes), deciding fallback-locale semantics, and ensuring every consumer of the locale list (translations, routing, caches) resolves from a single source of truth.
Technical risk The dominant risk is lifecycle, not code. Sixteen stars and a last release of July 2022 place this firmly in the "thin, possibly orphaned" band; a 0.14 score is consistent with that. Expect Composer constraints pinned to Laravel 8/9-era and Nova 3/4, with unverified behavior on Laravel 10+/Nova 4.3+/5. Because the tool's surface is genuinely small, the fallback is strong: if it breaks on a framework upgrade, a developer can vendor or reimplement the equivalent screen in a day or two. That asymmetry — high abandonment probability but negligible replacement cost — is what makes this defensible as a tactical convenience and indefensible as a load-bearing dependency. License is MIT, so no legal or redistribution friction; there is no meaningful security surface beyond standard Nova authorization gates, which you must confirm the tool respects per-resource.
Key questions
Stack fit Correct fit is a Laravel + Nova application, PHP 8.0/8.1-era, where locales are already modeled as a database table or are about to be. Poor fit for API-only services, headless/decoupled front ends, or teams running Filament/Backpack/custom admin panels — the tool is not portable across admin frameworks.
Migration path
composer require in a scratch branch to capture the resolved version set and any constraint conflicts before committing to a plan.Compatibility Treat Nova and Laravel upgrades as gated on re-verifying this tool, or pre-emptively vendor it into the repo. Pin the version and add a Dependabot/Renovate watch so an abandoned upstream is visible rather than silent.
Sequencing Land the read-side (application consuming locales from the table) and the write-side (this tool) in separate releases. Shipping the admin UI before consumers are cut over gives operators a control that changes nothing — a fast way to lose trust in the tool.
Maintenance Low touch in steady state, but unowned upstream. Assign a named internal owner and budget the fork: the moment a framework upgrade breaks it, the decision should already be "vendor and patch," not "debate." Annual review of whether the package still earns its place.
Support Community-only, single-vendor (Outl1ne) GitHub issues, no commercial SLA. Do not route operator incidents to the upstream repo; make it clear internally that locale-table problems are ours.
Scaling Effectively free. Locale counts are tens, not thousands; the only scaling concern is cache invalidation and any N-locale fan-out in translation or sitemap generation triggered by a locale being added — that cost lives in your application, not the tool.
Failure modes
| Failure | Impact | Mitigation |
|---|---|---|
| Abandoned upstream breaks on Nova/Laravel upgrade | Admin screen disappears; blocks locale ops | Vendor/fork; pin; monitor advisories |
| Operator deletes a locale still referenced by content | Orphaned translations, broken routes | Guard in model/observer; soft delete; confirmation UX |
| Divergent code formats (en vs en-US) | Duplicate or missing translations | Validation rule on the code field; canonical list upstream |
| Tool bypasses authorization | Unprivileged users mutate locales | Explicit Nova gate/policy |
| Table schema drift vs. package assumptions | Silent write failures | Own the migration; review on upgrade |
Ramp-up A Laravel developer is productive in under a day; a non-developer operator needs only a short walkthrough of the code/name fields and the deletion guard. The genuine ramp-up cost is organizational, not technical: getting agreement on who owns the locale list, what a valid locale code looks like, and what "delete a locale" means for existing content. Resolve those three questions before install, and this package is a cheap, replaceable convenience; skip them and it becomes a quiet source of translation debt.
TPM recommendation: adopt as a thin, fork-ready convenience only inside an existing Nova stack with a DB-backed locale source; otherwise skip it and either keep locales in configuration or budget the one-to-two-day in-house equivalent.
How can I help you explore Laravel packages today?