runroom-packages/doctrine-translatable-bundle
Doctrine Translatable Bundle adds per-locale translations to Doctrine entities in Symfony, storing translated fields in separate translation tables and wiring them into queries and hydration. Simple setup for building multilingual applications.
Consider it when:
dimsav/laravel-translatable / spatie/laravel-translatable), and this should be excluded on stack mismatch alone.Look elsewhere when:
[READ-ONLY] split from a monorepo. There is no community, no issue traffic, no third-party validation. This is a maintenance liability, not a safe default.For executives: We need multilingual content to enter new markets. The expensive, differentiating parts of localization are editorial workflow, review, and translation supply — not database plumbing. This package is a small, MIT-licensed, conventional Symfony/Doctrine implementation of the plumbing: one row per locale, queried natively. Adopting it removes several weeks of bespoke schema work and keeps our options open, since it's permissive-licensed and trivially replaceable if we outgrow it. The honest caveat: it has effectively zero external adoption and is published as a read-only mirror of an internal monorepo. We should therefore vendor it into our codebase and own it — roughly one to two days of review by a senior engineer — rather than depend on it as a maintained third-party library. Low cost, low lock-in, no procurement or licensing exposure.
For engineering: Standard Doctrine entity-translation pattern — separate translation tables, locale-keyed, per-entity. It is Symfony-only; it is not usable from Laravel/Eloquent, so confirm the stack before anyone spends time on it. The repository is a read-only subtree split with no dependency graph and no community, so treat the upstream as a source of truth to copy, not a version to pin. Recommended path: fork/vendor, pin to a commit, add our own tests around the entity lifecycle and fallback behavior, and keep the translation surface behind a thin internal interface so we can swap the implementation without touching domain code. Budget for the authoring/admin UI separately — this bundle is persistence only.
How can I help you explore Laravel packages today?