filamerce/filament-translatable
Filament Translatable brings multilingual editing to Filament resources, letting you manage translated fields across locales with locale switchers, per-language inputs, and smooth integration with translatable models. Simplify multilingual admin panels and keep translations organized.
Package: filamerce/filament-translatable — a Filament panel plugin providing translatable-field authoring (multi-locale form tabs/inputs) layered over a Laravel translation backend, most commonly spatie/laravel-translatable.
Release under review: v3.2.0 (minor). Contents are narrow: Filament v5 compatibility plus three Dependabot CI/tooling bumps (stefanzweifel/git-auto-commit-action 6→7, actions/checkout 5→6, dependabot/fetch-metadata 2.4.0→2.5.0). No new user-facing features, no declared deprecations, no migration guide published.
Architecture fit. The package sits at the presentation layer of a standard Laravel + Filament stack: it decorates form/table schema components for locale-aware editing and delegates persistence to a translation trait on the Eloquent model. That is a low-coupling position — it should not own translation storage, fallback logic, or routing. Fit is good for teams already standardising on Filament for internal/admin surfaces with 2+ content locales. It is a poor fit where translations are authored outside the panel (CMS/API-first), or where the data model uses a bespoke JSON/column-per-locale scheme rather than the trait-based contract.
Integration feasibility. Low-to-moderate effort, but the effort is dominated by the Filament major-version move, not by this package. Adopting v3.2.0 in isolation on an existing Filament v4 codebase is not a discrete change — it is coupled to a panel-wide v5 upgrade (schema/action namespace moves, asset and theming changes, plugin registration surface). On a greenfield or already-v5 project, adoption is a same-day task: composer require, register the plugin on the panel, add the trait and a $translatable array to the model, declare translatable fields in the resource schema.
Technical risk. Mixed. The dependency bumps are CI hygiene and carry effectively zero runtime risk. The real risk is that a minor version number is being used to signal a major platform dependency shift. Three unverified scenarios, in order of concern:
| Scenario | Impact if true | Severity |
|---|---|---|
| v3.2.0 drops Filament v4 support to add v5 | Minor bump masks a breaking change; existing v4 installs break on composer update |
High |
| v3.2.0 supports both v4 and v5 via widened constraints | Clean, low risk, upgrade is opt-in | Low |
| v3.2.0 targets v5 only and v3.1.x is the v4 LTS branch | Manageable, but requires pinning discipline and a documented support window | Medium |
Secondary risks: single-maintainer project (filamerce) with a small contributor base; the release note body is generated boilerplate with no compatibility matrix, no minimum PHP/Laravel/Filament constraint statement, and no test evidence in the notes. Test coverage across the v4/v5 matrix is unknown. Locale-fallback and validation edge cases in translatable forms are historically where these plugins accumulate defects.
Key questions for the maintainer / vendor.
composer.json constraint range, or is v5 now the floor? What is the supported support window for v3.1.x?php, laravel/framework, filament/filament, and translation-backend constraints for v3.2.0?spatie/laravel-translatable only, or also custom trait implementations?Stack fit. Appropriate for Laravel 11/12 + Filament applications where the admin panel is the primary authoring surface and the content model already uses a translation trait. Confirm the storage strategy first — if the team uses column-per-locale or a separate translations table with custom resolution, evaluate whether the plugin's field components still render correctly, or whether a thin in-house wrapper is cheaper than adapting.
Migration path.
^3.2, register the plugin in the panel provider, add the trait and $translatable, done.~3.1.0 constraint and treat the panel upgrade as a separate, scheduled project.Compatibility. Verify the full matrix in CI before merging: PHP version, Laravel version, Filament major, translation backend, and at minimum two locales including one with a non-Latin script and a fallback chain. Confirm behaviour for nullable translations, partial locale coverage, and validation messages appearing per-locale — these are the components most likely to regress on a major Filament schema change.
Sequencing.
Maintenance. Very low ongoing cost — the plugin is small and its surface area is field rendering. The real maintenance load sits with the Filament major-version treadmill, which is outside this project's control and will recur roughly annually. Budget a recurring line item for "panel + plugin upgrades" rather than treating this as a one-off.
Support. Vendor support is effectively community/OSS: GitHub issues, best-effort, single primary maintainer. There is no SLA. For a package touching only the editing UI, that is usually acceptable; it becomes unacceptable if the same plugin is also responsible for translation resolution at read time. Keep the read path owned in-house so an unmaintained release cannot silently break production content rendering.
Scaling. Negligible runtime footprint — form components add no query or caching layer of their own; scaling characteristics are those of the underlying translation storage. Watch instead for content scaling: locale count multiplies form size and validation surface, and panels with 6+ locales see noticeable admin UX and request-payload growth. If locale count is growing past ~4, plan for per-locale lazy tab loading rather than rendering all locales at once.
Failure modes.
^3 constraint pulls a future v3.3 that raises the Filament floor without warning. Mitigate with an explicit constraint and a locked composer.lock in CI.Ramp-up. Minimal for a Laravel-fluent engineer: half a day to ship a first translatable resource, and the mental model (trait + $translatable + schema field) transfers directly from the Filament docs. The non-obvious knowledge is organisational rather than technical — which locales are authoritative, what the fallback chain is, and who approves new locale additions. Document that in the repo README rather than leaving it in the plugin's behaviour.
Recommendation. Adopt v3.2.0 for Filament v5 projects; hold v4 projects on the v3.1.x line pending a clear answer on the Filament v4 support window, and pin explicitly either way. The release itself is low-risk; the version-numbering convention around the Filament major bump is the one item worth escalating before it reaches a lockfile.
How can I help you explore Laravel packages today?