we-are-neopix / laravel-model-translation
This package is a driver based solution to translating Laravel models. It contains two drivers for storing translations in the database and in a JSON file, but also contains a plug-and-play system for its users to implement custom drivers for storing translations and use them with the package.
Requires
- php: ^7.4|^8.0
- ext-json: *
- laravel/framework: ~6.0|~7.0|~8.0
Requires (Dev)
- laravel/homestead: ^12.2
- orchestra/testbench: ~6.0
- phpunit/phpunit: ~9.0
README
For Laravel 7 and 8 use version ~1.2
This package is meant to simplify the process of making Eloquent models translatable. It's aim is to deviate as little as possible from Laravel's Eloquent API but still provide a satisfiable level of flexibility. This is achieved by utilizing a driver-based approach to storing translations and a trait which allows Model instances to seamlessly interact with the translation storage.
After setting the package up, all that takes to use your models with translations is this:
$post = BlogPost::find(1); // An instance of the BlogPost model App::setLocale('sr'); $post->title = 'Naslov na srpskom'; $post->save(); $post->setLanguage('en'); $post->title = 'Title in English'; $post->save(); $post->title; // Returns 'Title in English'; $post->setLanguage('sr')->title; // Returns 'Naslov na srpskom'
Since this is a driver-based solution, you have the full power to implement the architecture for persistently storing translations yourself. Of course, the package comes with two drivers out of the box, JSON and MySQL, but you are free to implement your own drivers and rely on whatever architecture you prefer.
For a more detailed explanation on how the package works and how to use it, please visit our wiki pages.