mrmonat/nova-translatable
A Laravel Nova integration for translatable models that lets you edit multilingual fields per locale directly in Nova resources, with locale tabs and inputs for managing translations alongside your other resource fields.
Localization roadmap sequencing. This package is a concrete input to the "ship multilingual admin editing now vs. defer" decision. It buys time-to-first-localized-admin-screen — not a localization program. Frame the decision as whether to accelerate the first localized edit form, not whether to invest in i18n. The package adds no capability we couldn't build; it shortens the path to a demo.
Build vs. buy for admin tooling. It sharpens the recurring "custom Nova field vs. community field" call. At 81 stars, zero dependents, no release since 2021-08-29, and archived, it should be valued as a reference implementation to vendor or fork, not a dependency to composer require. The realistic in-house equivalent is ~1–2 engineer-days, which reframes the decision from "adopt vs. build" to "build with a head start vs. build from scratch." That delta is UI polish, not architecture.
Vendor lock-in and license renewal review. It forces the explicit question of how much of our content-ops surface depends on Laravel Nova — a paid, licensed product on an annual major-version upgrade clock — plus a single-maintainer field sitting on top of it. Relevant to Nova license renewal timing and long-term CMS strategy: a dead field on a paid framework couples our renewal cadence to an unmaintained dependency.
Content-ops use cases it unblocks. Editor-facing locale switching on a single record, with translations stored as a JSON column. Fits marketing pages, product catalogs, and SEO metadata where one entity needs N language variants edited in one form — small locale counts (2–4), internal editors, no per-locale approval chains.
Risk register line item. The archived status is itself a decision input. If adopted, log it as "vendored, internally owned" with a named owner and a re-evaluation trigger (Nova major upgrade, PHP/Laravel upgrade, or the addition of a third locale).
Explicitly out of scope — do not let this package anchor these conversations: public-facing i18n, routing/locale negotiation, translation memory, machine translation, and editorial workflow (draft → review → publish per locale). Nova is a CRUD panel, not a TMS.
Consider it when:
spatie/laravel-translatable for JSON-column translation storage. If either half is missing, the package has no job to do and the evaluation ends.Look elsewhere when:
astrotomic/laravel-translatable). Different storage model, different field.spatie/nova-translatable — satisfies requirements. A maintained first-party package is almost certainly the correct answer, and checking is hours, not days.To executives: This is a small, free, MIT-licensed admin-panel add-on that lets our editors translate content inside the Laravel admin we already run, without a separate CMS or a translation vendor. It is not a platform bet. The honest framing: the project is archived and effectively unmaintained, so treat it as a head start on a build we own, not a dependency we install and forget. The recommended ask is small — roughly one to two engineer-days to vendor and own the field — versus an estimated multi-week build from scratch or a recurring annual TMS contract for what is currently an internal-only need. Decision requested: approve the small build allocation, or defer localization until locale count and editorial-workflow requirements are clearer. Blast radius is limited to internal admin tooling; a failure degrades editorial workflow, not the customer-facing product.
To engineering: It's a single Nova field that renders locale tabs and maps them onto spatie/laravel-translatable's JSON column. The value is entirely front-end ergonomics — locale switcher, fallback display, dirty tracking — not novel logic, so the realistic plan is fork-and-own, not composer require. Concretely: evaluate the first-party spatie/nova-translatable first (hours), and only proceed if requirements diverge. Then pin a commit and consume it via a path/VCS repository under an org-owned namespace, audit for Nova API drift across major versions, verify the field resolution/hydration contract and Vue asset compatibility against the current Nova pipeline, and add a round-trip test asserting that a locale write does not silently overwrite sibling translations — that is the one plausible path to real data loss and the highest-severity failure mode. Budget 1–2 engineer-days steady state per year, spiking to roughly a week around a Nova major. Note plainly that with 81 stars, zero dependents, and no maintainer there is no downstream canary for breakage — we absorb that risk ourselves. If requirements grow past simple per-record locale editing, stop extending this and scope a proper editorial workflow instead.
How can I help you explore Laravel packages today?