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

Laravel Nova Lang Laravel Package

coderello/laravel-nova-lang

A Laravel Nova tool for managing app translations directly from the admin panel. Browse and edit language files, add locales, and keep multilingual content organized without editing files manually.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit This is a data-only package, not a runtime component. It ships Laravel translation files (lang/{locale}/*.php) for the Nova UI and registers a publishable asset group. There is no service provider logic, no middleware, no database surface, and no API contract your application code can couple to. Architecturally that makes it a near-zero-risk fit: it can be added, removed, or replaced by a copied directory without touching application code. The only real coupling is to Laravel Nova's internal translation key namespace, which is a version-locked contract you do not control. Treat it as a localisation asset, not a dependency.

One amendment following 2.0.2: the release notes reference "development commands," which implies the repo carries maintainer tooling — most likely an artisan command to pull/diff Nova's own English lang files. Confirm whether those commands ship in the installed package (dev-only autoload vs. production autoload). If an update/diff command is available to consumers, it materially reduces the manual effort in our own upgrade runbook; if it is maintainer-only, nothing changes.

Integration feasibility High. The integration is a composer require --dev (or a plain copy) plus php artisan vendor:publish into the Nova translation path (lang/vendor/nova/{locale}, with the caveat that Laravel 9+ moved the default lang directory from resources/lang to root lang/). Set config/app.php → fallback_locale = 'en' so missing keys degrade to English rather than rendering raw dotted keys. Realistic effort for a first locale: half a day including verification; each additional locale is near-zero incremental cost. No migrations, no config flags, no queue or cache implications. The publish step must be added to deployment/CI or the files drift between environments.

Technical risk

  • Version drift (primary risk — materially reduced by 2.0.2, not eliminated). The prior release was 2023-04-20 and Nova 5 shipped in 2025 with a materially different key set. This release refreshes en "from latest Nova version," which is the single most consequential line in the changelog: it resets the English baseline the other locales are keyed against. What it does not establish is which Nova major that baseline corresponds to. If "latest" means Nova 4.x, a Nova 5 install still silently falls through to English or renders raw keys for any new or renamed key. This remains a correctness risk visible only in the target locale, which English-language QA will not catch — so the key-diff gate stays mandatory, but the odds of it passing have improved substantially.
  • Quality variance (secondary risk — now uneven within the locale set). 40+ community-contributed locales with no review gate, no CI check for key parity, and no glossary. This release updates de, fr, es, ru, nl, zh-TW, zh-CN (and es twice, from two contributors — worth noting as a merge-quality question), adds lv, and leaves the remainder untouched. So coverage is now bimodal: eight refreshed locales plus one new one, and a long tail that is now further behind the refreshed en baseline. Prioritise scope against the refreshed set.
  • Supply chain. MIT-licensed, small maintainer footprint, and effectively zero declared dependents — the "0 dependents" figure reflects that this is consumed by copying files, not by being a true composer dependency, so it understates adoption but also means no downstream pressure to keep it current. 2.0.2 is evidence the project is maintained rather than abandoned, which is a real improvement on the previous read; it is not evidence of a support commitment.
  • Scope gap. This package localises strings only. It does not deliver RTL layout (Nova has no first-class RTL support), localised date/number formatting beyond what Carbon and app locale provide, or localised validation messages — those are separate concerns.

Key questions

  1. Which Nova major version does the refreshed en file in 2.0.2 target, and does it match ours verbatim? (Diff the package's en file against vendor/laravel/nova/resources/lang/en — this is a 30-minute check and the single most important gate. The 2.0.2 refresh makes this cheap to do and likely to pass, but do not skip it.)
  2. Which locales are actually in scope, and to what quality bar — internal admin tooling (machine translation acceptable) or customer-facing/audited (human review required)? Note the refreshed set (de, fr, es, ru, nl, zh-TW, zh-CN, lv) now carries a different provenance from the untouched tail.
  3. Do the "development commands" ship in the installed package, and can they be used to re-diff Nova's key set automatically on upgrade?
  4. Do any target locales require RTL layout, and if so, is that a separate workstream we are funding?
  5. Do we consume this as a composer dependency (upstream updates, but version-coupling risk) or vendor a pinned copy into our repo (full control, manual key diff on Nova upgrades)?
  6. Who owns re-validating translations on each Nova upgrade, and is that on the upgrade checklist?

Integration Approach

Stack fit Clean fit for any Laravel 9/10/11 application running Nova. No PHP version constraints beyond Nova's own, no conflicting service providers, no autoload pollution. Because the artefact is static files, it composes with any localisation approach already in place (Laravel's lang directory, per-locale overrides, or a translation management platform). It is also trivially compatible with a lang/vendor/nova/{locale} override layer, which lets you patch bad strings without forking the package.

Migration path There is no migration — this is purely additive. For a fresh install, publish before the first locale switch. For an existing Nova install with hand-rolled translations, diff the current lang/vendor/nova directory against the package output first; the package can only be adopted wholesale or merged key-by-key, and blind publishing will overwrite local corrections. 2.0.2 makes this diff more valuable than before: the refreshed en is a better reference baseline, and the eight updated locales are worth re-diffing against any strings we already patched by hand.

Compatibility Two axes to pin explicitly:

  • Nova major version — the effective compatibility boundary. Pin the package to a branch/tag that targets your Nova major and record that mapping in the repo. 2.0.2 narrows the gap to current Nova but does not self-declare a major; assert it from the file diff, not the changelog.
  • Laravel lang path convention — resources/lang (Laravel ≤8) vs root lang/ (Laravel ≥9). Getting this wrong results in a silent no-op where translations simply do not apply, which reads as "the package doesn't work." Also confirm the locale codes used here align with your app.locale / per-user locale values (e.g. pt_BR vs pt-BR, and the zh-TW/zh-CN convention used here). Mismatched codes fail silently.

Sequencing

  1. Gate: key-set diff against your Nova version's English file, now against the 2.0.2 en. If coverage is materially incomplete, stop and replan (fork + fill gaps, or restrict to the locales that pass).
  2. Decide consume-vs-vendor. Default recommendation remains vendor a pinned copy into the application repo — the artefact is static, upgrades are rare, and ownership is cheaper than dependency management. If a second release lands within the next couple of quarters, revisit and consider tracking upstream as a dev dependency instead.
  3. Publish/commit files, wire the deploy step, set fallback_locale.
  4. Smoke-test all target locales with the highest-traffic admin screens (resource index, detail, create, filters, global search, actions) before wider rollout. Include lv only if it clears review.
  5. Add "re-diff Nova lang keys" as a mandatory step in the Nova upgrade runbook, and check whether the packaged dev commands can automate it.
  6. Schedule human review only for the locales that clear the quality bar in step 2 of the questions above.

Operational Impact

Maintenance Low ongoing cost, but not zero. Expect: occasional upstream releases worth evaluating (2.0.2 is the first in roughly two years — do not infer a regular cadence from it), manual key diffing on every Nova upgrade, and ad-hoc corrections when a user reports an awkward string. Budget roughly 1–2 engineer-days per Nova major upgrade and near-zero between upgrades; the 2.0.2 refresh means our first adoption is now cheaper than originally scoped, since we are starting from a current English baseline rather than a 2023 one. The real maintenance is ownership of the locale files, which is why vendoring is usually the cheaper long-term posture.

Support No commercial support, no SLA, single-maintainer upstream. Acceptable here precisely because the blast radius is cosmetic — a bad string degrades UX, it does not break functionality, corrupt data, or expose a security surface. Escalation path is "fix the file in our repo," which is available to any engineer. Do not put this on a critical-path dependency register.

Scaling Scales trivially. Static PHP arrays loaded per request via Laravel's translator with its normal caching; a handful of files per locale, kilobytes each. No runtime cost of note, no per-user overhead, no external service. Adding locales is linear and uninteresting — which is the point.

Failure modes

  • Silent English fallback — missing key, no error, user sees English inside a translated UI. Most likely failure, hardest to notice; now most likely to bite in the long tail of locales not refreshed by 2.0.2, which lag further behind the new en baseline.
  • Raw key rendering — dotted key shown to the user, typically from a Nova key rename or a wrong publish path. Highly visible, easy to diagnose; the highest-risk scenario remains running Nova 5 against a baseline that turns out to be Nova 4.
  • Overwritten local fixes — republishing clobbers hand-tuned strings. Mitigate by treating the vendored copy as source of truth and never re-publishing blindly.
  • Locale code mismatch — translations present but never selected due to pt_BR vs pt-BR style divergence.
  • Inconsistent provenance within the locale set — refreshed and unrefreshed locales now differ in both key coverage and contributor/reviewer history; treat them as two tiers, not one homogeneous set.
  • Unreviewed machine translation — wrong-register or wrong-terminology strings reaching customers; a reputational, not technical, failure.
  • None of these are availability risks. No failure mode here takes the admin panel down.

Ramp-up Effectively zero for any Laravel developer. The conceptual load is "copy files to the right directory and get the locale codes right." Documentation needs are a one-page internal runbook: publish path, fallback config, locale code convention, key-diff procedure on Nova upgrade, and who approves new locales. Total onboarding cost under an hour.

Net position: still high value-to-effort for multilingual admin tooling — an 8.5/10 opportunity for a few hours of work — but the conditional has shifted in our favour. 2.0.2 refreshes en against a current Nova, updates eight locales, and adds lv, which addresses the dominant finding of the previous assessment (dormancy and key drift). It does not remove the gate: verify the target Nova major against the new en, and treat the unrefreshed locales as a lower tier. The decision to make is still not whether to use it but how to own it: vendor it, pin it, and put the upgrade diff on the runbook.

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.
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core