Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Nova Lang Laravel Package

optimistdigital/nova-lang

Laravel Nova package that adds multi-language support to your admin panel: manage languages, switch the active locale per user, and localize resources and fields. Integrates with nova-translatable and ships middleware, a Language model, and configurable fallbacks.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. This is a Nova-only add-on, so its addressable surface is narrow by definition: teams that already pay for Laravel Nova and need (a) drag-and-drop reordering of a resource's index view and (b) a locale dimension on Nova resources. The second capability is the load-bearing one — it encodes an opinionated localization model (locale attached to a resource/record, with the UI scoped to the active locale). That model must match how your data is already shaped. If your i18n strategy is JSON translation columns or a sidecar translations table (spatie/laravel-translatable), this package fights your schema rather than complementing it. Treat the sorting feature as replaceable commodity; treat the locale feature as a data-model commitment.

Integration feasibility. Mechanically simple: composer require, publish config/migrations, add a trait to affected models, register the Nova tool/provider. The real gate is version alignment. A last release of 2020-10-28 places it in the Nova 3 / Laravel 7–8 / PHP 7.4 era, with Vue 2 + Laravel Mix asset tooling. Nova 4 (Vue 3, Vite) and Nova 5 will not consume those compiled assets, and the PHP-side service provider may reference APIs that have since moved. Expect a compatibility spike, not a drop-in install.

Technical risk. The risk is concentrated and identifiable rather than diffuse:

  • Maintainer abandonment. The optimistdigital vendor was rebranded to outl1ne; the original namespace is effectively frozen. Last release ~5 years old.
  • Adoption signal. 14 stars and a 0.13 health score mean almost no community validation — you will be one of very few users, so bugs you hit are bugs you fix.
  • Commercial upstream dependency. Nova itself is a paid, closed-source product with its own major-version cadence. Every Nova upgrade is a forced-migration event for this package.
  • Not a security risk so much as a durability risk — MIT license means forking is legally clean, which is the mitigation.
  • Bundled concerns. Two unrelated features shipped together, so you inherit sorting complexity even if you only want locales.

Key questions.

  1. Which Nova major version are we on, and is there a committed upgrade path over the next 24 months?
  2. What is our existing localization data model, and does one-row-per-locale fit it — or are we retrofitting?
  3. Do Nova's native sortable columns (sortable() on index, or Nova 4+ index reordering) already cover the sorting requirement, letting us drop half the package?
  4. Is there a maintained successor (outl1ne/nova-lang) or a widely-used alternative (spatie/nova-translatable) that covers the same need with active support?
  5. How small is the actual feature surface? If it is a trait, a scope, and a locale switcher, in-house replacement may be cheaper than adoption.

Integration Approach

Stack fit. Valid only for Laravel 7/8 + Nova 3 + PHP 7.4/8.0. Confirm exact composer constraints before committing; do not assume ^ ranges will resolve against a modern lockfile.

Migration path. Three viable routes, in order of preference:

  1. Adopt the maintained fork. Verify whether the outl1ne namespace has a Nova 4/5-compatible release. This is the lowest-effort path and preserves the author's intent.
  2. Vendor-fork internally. Clone under an internal namespace, raise PHP/Laravel/Nova constraints, port assets from Mix/Vue 2 to Vite/Vue 3 if on Nova 4+, and add regression tests. MIT makes this clean; budget ~1–2 engineer-weeks for a Nova major port.
  3. Reimplement. If you only need locale scoping plus a sort column, this is likely a few hundred lines: a trait, a global scope, a sort_order column, a Nova field/filter, and a reorder endpoint. Strongly consider this if the package's data model is only an approximate fit.

Compatibility. Pin the package to an exact version, freeze Nova and Laravel minors in composer.json, and add an integration test that boots Nova and renders the affected resource index. This is the single highest-value guardrail, because the failure mode is a silent, late-breaking composer update.

Sequencing.

  1. Confirm Nova version and localization data model (blocking).
  2. Spike: install on a throwaway branch, exercise sort + locale switch, measure what breaks (2–3 days).
  3. Benchmark against native Nova sorting and spatie/nova-translatable.
  4. Decide: fork, reimplement, or reject.
  5. If adopted, vendor the code, add CI coverage, and document the fork owner and upgrade runbook.

Operational Impact

Maintenance. Assume full ownership from day one. There is no upstream to lean on. Add a standing line item to every Nova upgrade: re-validate this package, re-compile assets, re-run index/filter tests.

Support. No vendor SLA, no active issue triage, thin documentation. Internal engineers become the de facto maintainers; knowledge should be spread across at least two people to avoid a single point of failure.

Scaling. Runtime cost is negligible — a WHERE locale = ? scope and an ORDER BY — but two structural concerns grow with data:

  • One-row-per-locale inflates table size linearly with locale count and complicates uniqueness (slug collisions across locales), cross-locale reporting, and relational joins.
  • Contiguous sort_order requires rewriting sibling rows on insert/reorder, which is O(n) writes and a contention point on large or frequently-edited lists. Prefer sparse ordering (gaps of 1000) or a decimal/lexorank scheme if list size grows.

Failure modes.

  • composer update pulls a Nova/Laravel version the package cannot boot → admin panel 500s. Mitigate with pinned constraints and a boot smoke test in CI.
  • Nova major upgrade silently breaks the tool's compiled JS → sorting/locale UI disappears while PHP still works. Mitigate with an E2E check on the resource index.
  • Locale scope leaks: records created outside the switcher are invisible or duplicated. Mitigate with a data audit before and after rollout.
  • Concurrent reorder corrupts sort_order. Mitigate with transactions and a reindex job.
  • Slug/uniqueness collisions once a second locale is enabled. Mitigate with composite unique indexes.

Ramp-up. Low for anyone fluent in Nova — a day to read the source, half a day to wire up a resource. The hidden cost is organizational: the team must also internalize the package's localization opinion and the fork's upgrade procedure. For a 14-star, five-year-stale dependency, the honest recommendation is to fund the spike, expect to reimplement, and treat adoption as a last resort justified only if the locale data model is an exact match and a maintained fork exists.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console