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

Entity Translations Bundle Laravel Package

vm5/entity-translations-bundle

A Symfony bundle for adding locale-aware translations to Doctrine entities. Store and retrieve translated fields per language, manage multilingual database content, and integrate translations into forms and templates with minimal configuration. Ideal for multilingual Symfony applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The first thing a TPM should verify is the stack mismatch: despite being catalogued as a "Laravel/PHP package," this is a Symfony bundle (EntityTranslationsBundle, registered via config/bundles.php by convention, not a Laravel service provider). Architecturally it binds to Doctrine ORM — translated-field storage, event listeners/subscribers, and a repository/query layer that hydrates translations for entities. So fit is conditional: acceptable in a Symfony + Doctrine application, poor in Laravel/Eloquent, where nothing here can be dropped in — you'd be re-implementing the concept, not the package. Confirm the host stack first; it flips the verdict from "conditional" to "not applicable."

Integration feasibility. Mechanically small on the right stack: composer require, enable the bundle, configure the translation target, annotate/attribute the entity fields, generate schema, test. Feasibility is dominated instead by the dependency graph: last release January 2021, so its Composer constraints target roughly PHP 7.x–8.0, Symfony 4/5, and Doctrine 2.x. A modern project (PHP 8.2+, Symfony 6/7, Doctrine 3) will likely hit constraint conflicts, deprecated bundle registration patterns, and Doctrine 3 API changes. Budget a spike that proves "persist and read one translated field" on the actual pinned versions before anything else.

Technical risk. High, and mostly non-technical to mitigate:

  • Abandonment — ~4 years since a release, 9 stars, 0 dependents. No security patching, no compatibility upkeep, single-maintainer signal. Effectively orphaned.
  • Correctness risk — translation hydration is a subtle domain (fallback locales, partial translations, N+1 joins, query-walker behavior). Failures present as wrong-language content, not exceptions, which is the worst kind of defect to detect.
  • Supply chain — MIT is permissive and safe to fork, which is the realistic mitigation. But low stars/dependents means low public scrutiny: assume untested code paths.
  • POPO support implies reflection/serialization beyond Doctrine entities — check behavior with typed properties, readonly, and enums on modern PHP.

Key questions.

  1. Is the target Symfony+Doctrine or Laravel/Eloquent? (Determines candidacy.)
  2. What are the pinned PHP / Symfony / Doctrine versions, and does the bundle's composer.json allow them?
  3. Is there already a maintained equivalent in the codebase or ecosystem — DoctrineExtensions Translatable or KNPLabs/DoctrineBehaviors for Symfony; spatie/astrotomic translatable for Laravel?
  4. What is the blast radius — marketing copy, or regulated content where wrong-locale output is a defect?
  5. Who owns the fork if we adopt, and is that person's time cheaper than writing a small translation table?

Integration Approach

Stack fit. Treat as Symfony-only until proven otherwise. On Laravel: do not integrate — use a Laravel-native translation package or a purpose-built translations table with relations/JSON columns. On Symfony: directionally correct for Doctrine entity translation.

Migration path. Adoption here means fork-and-own from day one:

  1. Fork into an internal namespace, tag a baseline, pin exact versions.
  2. Run a compatibility patch pass (attributes vs. annotations, bundle extension/container registration, Doctrine 3 API changes).
  3. Own the schema migrations for translation tables and document the data model.
  4. Integrate behind a feature flag, piloting a single low-risk entity.

Compatibility. Build a small matrix (PHP × Symfony × Doctrine) and run it in CI on the fork. If a target cell fails and isn't cheaply patchable, stop — that's the decision point.

Sequencing. (1) One-day spike: read/write one translated field in a scratch app on target versions → (2) go/no-go → (3) fork + patch + tests → (4) pilot → (5) rollout. Do not sequence this after the schema is locked; the migration design is the genuinely hard part.

Operational Impact

Maintenance. The license is $0 (MIT); the cost is stewardship. Expect to own 100% of maintenance — compatibility patches, bug fixes, docs. Compare the ongoing ownership cost against a few days of building a custom translation table for one or two entities; at small scope, in-house is likely cheaper and lower risk than adopting an orphan.

Support. No vendor, no active community, 9 stars. Support = whichever engineer reads the source. Knowledge concentration is the main operational hazard: require a second reviewer and record a one-page ADR plus a runbook on the fork.

Scaling. Watch four things:

  • Query amplification — translated relations joined per entity; without eager loading/query hints, N+1 on list endpoints.
  • Table growth — one row per (entity, field, locale); index on (entity_id, locale) and measure.
  • Cache — translations are read-heavy, so cache in front, but invalidation on entity update becomes your problem if the bundle doesn't handle it.
  • Hydration cost — benchmark 1k/10k rows, not just the smoke test.

Failure modes to plan for.

  • Silent wrong-locale fallback (highest severity, hardest to notice).
  • Unfixable breakage on the next PHP/Doctrine upgrade, with no upstream to appeal to.
  • Schema drift if migrations aren't owned in-repo.
  • Listener conflicts with existing Doctrine subscribers (ordering, flush loops).
  • Reflection-based POPO handling failing on modern typed/readonly properties.
  • Stale cache after translation edits.

Ramp-up. Thin docs and unconventional internals: roughly 1–2 days for a Doctrine-fluent engineer to reach competence, longer for anyone else. If the team isn't already deep in Doctrine ORM events and hydration, this is a poor learning investment for a 9-star library.

Bottom line. Score 0.105, orphaned since Jan 2021, zero dependents: do not adopt as-is. It is defensible only if (a) the stack is Symfony + Doctrine, (b) scope is small and stable, and (c) you accept fork ownership up front. Otherwise choose a maintained ecosystem package or build the small translation table yourself.

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.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log