alengo/sulu-translated-media-bundle
SEO-friendly translated media filenames for Sulu CMS 3.x. Serves uploads under locale-specific names like /uploads/red-shoes-de.jpg while storing originals unchanged. Adds an Additional Data admin tab, Twig URL helpers with WebP, and format cache warming; zero-config.
Media entity via the MediaTranslations table and MediaTranslationsAwareInterface, ships sulu_translated_media_url() / sulu_translated_media_urls(), and adds the "Additional Data" admin tab. The change is a compatibility certification: the bundle now targets Sulu 3.1 and Symfony 8.1 in addition to the previously assessed Sulu 3.0.x / Symfony 7.x baseline./uploads/product-de.jpg), WebP-aware responsive output, and the zero-configuration auto-registration of sulu_media.objects.media.model and sulu_admin resources all remain intact. No re-architecture is required to adopt 3.2.0.config/bundles.php, route import, and a schema migration. No new services, entities, or configuration files are introduced by 3.2.0.FormatManager compiler-pass ordering, cache key format) that 3.2.0 inherited.FormatManager compiler-pass replacement and the unchanged sulu_media_url() fallback should still hold, but this must be verified against a staging build rather than assumed.FormatCacheInterface usage (introduced in 3.0.3) is the highest-risk integration point; cache key structure must be re-validated on 3.1.me_media_translations) is not reported as changed, but doctrine:schema:update --force on a newer Doctrine/Symfony stack can generate unexpected diffs. Schema diff review, not blind --force, is required./admin/api prefix risk is unchanged and should be re-tested on the 3.1 admin routing stack, which may have tightened route loading.me_media_translations per rendered media item. The locale index recommendation stands and should be confirmed present before any traffic ramp.composer require is now a genuine hazard. Pin to ^3.2 deliberately and record which track each environment rides.composer.json for 3.2.0, and does it differ per track?app.request.locale is unavailable (CLI, API, queue workers)?de → en) when a translation row is missing?FormatCacheInterface usage on 3.1?sulu_translated_media_urls() still emit srcset-compatible URLs for both default and WebP formats?/uploads/original/... while serving translated paths?| Layer | Prior Assessment (3.0.5) | Updated (3.2.0) |
|---|---|---|
| Sulu CMS | 3.0.x | 3.0.x and 3.1 (dual track) |
| Symfony | 7.x | 7.x and 8.1 (dual track) |
| PHP | 8.2+ | 8.2+ on Symfony 7; 8.4+ implied on Symfony 8.1 — confirm in composer.json |
| Database | Doctrine ORM 3.0+ | Unchanged; re-verify ORM constraint on the 8.1 track |
| Frontend | Twig + <picture> / WebP |
Unchanged |
uploads/ directory.sulu/sulu, symfony/*, doctrine/orm, and all media-adjacent third-party bundles.composer require alengo/sulu-translated-media-bundle:^3.2
bin/adminconsole doctrine:schema:update --dump-sql
--force only after confirming the diff is empty or limited to expected changes.var/cache./admin/api route prefix does not collide with existing admin routes on the 3.1 routing stack.FormatCacheInterface behavior, HTTP caches (Varnish/Nginx), and OPcache under the new stack. Cache key formats are the most likely silent regression.sulu_media_url() calls continue to work; migration to sulu_translated_media_url() remains opt-in and template-by-template.composer.json constraints, inventory third-party Symfony 8 readiness.<picture>/WebP adoption.me_media_translations.locale, cache warm-up, 404 and query-load dashboards.composer.json pins.me_media_translations migrations remains necessary; prefer explicit migrations over --force in production.me_media_translations for the locale row; check fallback configuration./admin/api prefix and admin asset build output.me_media_translations. Confirm indexes on locale and the media join key exist after the platform upgrade; schema tooling on a new Doctrine version can silently alter index naming.sulu_translated_media_url() to return the default path. SEO impact without any error signal; mitigate with logging and a locale-coverage report.--force — applying an unreviewed Doctrine diff on a new ORM version can drop or rename indexes. Mitigate by always reviewing --dump-sql output first./admin/api prefix conflicting with existing admin routes on the Sulu 3.1 routing stack; surfaces as a 404 or 500 in the admin, not the frontend.composer.json rather than relying on host configuration.How can I help you explore Laravel packages today?