marshmallow/translatable
A Laravel package for adding translations to Eloquent models. Use a trait to mark translatable attributes, store per-locale values, and retrieve localized content with fallback support, keeping multilingual model data simple and integrated with Laravel.
translatables table vs. JSON columns on the parent table. That choice drives query performance, indexing, migration complexity, and how you validate/version translated content — a decision worth making explicitly rather than inheriting by default.laravel-translatable) because of query/reporting pain may use this package as the reference implementation for a normalized alternative.Consider it only when all of the following hold:
translatables table (indexable, reportable, no JSON blobs) rather than JSON columns.Look elsewhere (or build internally) when:
To executives: Localization is a growth lever, but it usually stalls on admin tooling — editors can't manage translated content without engineering help. This package is a small, MIT-licensed building block that lets editors manage translations directly in our Nova admin, and it keeps translations in a clean, queryable table rather than buried in JSON. The tradeoff is maturity: it's a very early-stage package with minimal adoption, so I'd recommend it as a prototype or reference implementation, not a production dependency we adopt blind. It de-risks the "how" of localization cheaply while we decide how much to invest.
To engineering: The interesting part is the schema stance — a dedicated translatables table instead of JSON columns, which buys us real indexing and reporting at the cost of joins and migration overhead. Given the package's adoption profile (no dependents, near-zero stars), I'd frame the ask as: spike it in a branch, validate the data model against our reporting needs, and treat it as a fork candidate if it fits. It should not enter our dependency tree without an owner, tests, and an upgrade plan.
How can I help you explore Laravel packages today?