typicms/translatable
A trait to make an Eloquent model hold translations
3,768
1
| Install | |
|---|---|
composer require typicms/translatable |
|
| Latest Version: | 2.0.1 |
| PHP: | ^8.0 |
| License: | MIT |
| Last Updated: | Jun 22, 2026 |
| Links: | GitHub · Packagist |
Maintainer: Samuel De Backer
A trait to make Eloquent models translatable
This project is based on spatie/laravel-translatable, it resolves inconsistencies that have arisen over time in the initial project.
This package contains a trait HasTranslations to make Eloquent models translatable. Translations are stored as json.
There is no extra table needed to hold them.
use Illuminate\Database\Eloquent\Model;
use TypiCMS\Translatable\HasTranslations;
class NewsItem extends Model
{
use HasTranslations;
// ...
}
After the trait is applied on the model, you can do these things:
$newsItem = new NewsItem;
$newsItem
->setTranslation('name', 'en', 'Name in English')
->setTranslation('name', 'nl', 'Naam in het Nederlands')
->save();
$newsItem->name; // Returns 'Name in English' given that the current app locale is 'en'
$newsItem->getTranslation('name', 'nl'); // returns 'Naam in het Nederlands'
app()->setLocale('nl');
$newsItem->name; // Returns 'Naam in het Nederlands'
// If you want to query records based on locales, you can use the `whereLocale` and `whereLocales` methods.
NewsItem::whereLocale('name', 'en')->get(); // Returns all news items with a name in English
NewsItem::whereLocales('name', ['en', 'nl'])->get(); // Returns all news items with a name in English or Dutch
Testing
composer test
Security
If you've found a bug regarding security, please mail sdebacker@gmail.com instead of using the issue tracker.
Credits
We got the idea to store translations as JSON in a column from Mohamed Said. Parts of the readme of his multilingual package were used in this readme.
License
The MIT License (MIT). Please see License File for more information.
Related Packages
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| 2.0.1 | ^8.0 | ^9.0| | MIT | |
| 2.0.0 | ^8.0 | ^10.0| | MIT | |
| 1.0.0 | ^8.0 | ^9.0| | MIT |