fsi/admin-translatable-bundle
Symfony bundle for managing translations in admin interfaces. It adds translatable admin resources so editors can maintain multilingual content and labels from one backend, simplifying locale-aware workflows and keeping translations close to the admin experience.
This is a Symfony bundle, not a Laravel package — there is no service provider, no config/admin-translatable.php, and nothing auto-discovered by Composer. Realistically, a Laravel developer will mine it for the pattern (per-locale form tabs + locale-aware datagrid + admin locale switcher) rather than install it. The nearest Laravel equivalents are astrotomic/laravel-translatable (translations table) plus a Filament/Nova resource that renders one tab per locale.
If you do need to run it (legacy Symfony project):
composer require fsi/admin-translatable-bundle — it pulls in fsi/admin-bundle and fsi/translatable-bundle; it does nothing on its own.FSi\Bundle\AdminTranslatableBundle\FSiAdminTranslatableBundle in config/bundles.php and import the bundle's routing for the locale switch endpoint.fsi/translatable-bundle (a translations OneToMany + TranslatableTrait) and make your admin class translatable-aware.Where to look first: the README's "usage" section, then FSi\Bundle\AdminTranslatableBundle\Manager\LocaleManager (how the active locale is resolved and stored) and the form type that renders locale tabs. That form type is the piece worth copying into a Laravel implementation.
First use case: take an existing admin CRUD for an entity like Article, add a translations relation, and register it as translatable so the edit form gains one tab per locale and the list view gains a locale column/filter.
App::setLocale() driven by a middleware reading session('admin_locale'). Keep the resolution in one place — a LocaleManager-style singleton — so forms, grids, and queries agree.translations filtered by the active locale and adds a locale column + filter. The Laravel analogue is a query scope: ->withTranslation($locale) plus a locale filter on the table resource.$article->translate($locale)->getTitle() ?? $article->getTitle()), not in the controller.TranslatableResource) so existing resources become translatable with one use statement.fsi/admin-bundle + fsi/translatable-bundle are hard requirements; you cannot use it as a standalone translation UI. Check those two packages' health before adopting.slug alone breaks the moment you add a second language. Use a composite unique on (object_id, locale) or (locale, slug).UnitOfWork dump or profiler before shipping.doctrine and request panels) to confirm the locale reaching the query; if the wrong language appears, check listener priority — a later LocaleListener can overwrite the admin locale.LocaleManager (swap the storage), the translatable datagrid extension (port as a Laravel query scope + column), and the tabbed form type (port as a Filament Tabs schema component). These three are portable; the bundle wiring is not.How can I help you explore Laravel packages today?