Weave Code
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

Laravel Translatable Laravel Package

latevaweb/laravel-translatable

Add translatable Eloquent attributes backed by a Translations database table. Use a Translatable trait to set/get per-locale values, auto-resolve attributes by current app locale, and store translations via polymorphic relations.

View on GitHub
Deep Wiki
Context7

Laravel Translatable

Make Eloquent model attributes translatables using Translations table

Scrutinizer Code Quality Code Coverage Build Status StyleCI License: MIT Laravel 6.x

This package contains a trait to make Eloquent attributes translatable. Translations are stored in Translations database table.

Once the trait is installed on the model you can do these things:

$customer = new Customer; // An Eloquent model
$customer
   ->setTranslation('greeting', 'en', 'Hello')
   ->setTranslation('greeting', 'es', 'Hola')
   ->save();
   
$customer->greeting; // Returns 'Hello' given that the current app locale is 'en'
$customer->getTranslation('greeting', 'es'); // returns 'Hola'

app()->setLocale('es');

$customer->greeting; // Returns 'Hola'

Installation

You can install the package via composer:

composer require latevaweb/laravel-translatable

If you want to change the default model or the default tables names, you could publish the config file:

php artisan vendor:publish --provider="LaTevaWeb\Translatable\TranslatableServiceProvider" --tag=config --force

You must publish the migration file to create polymorphic and main translations tables:

php artisan vendor:publish --provider="LaTevaWeb\Translatable\TranslatableServiceProvider" --tag=migrations --force

Making a model translatable

The required steps to make a model translatable are:

  • First, you need to add the LaTevaWeb\Translatable\Traits\Translatable-trait.
  • Next, you should create a public static property $translatable which holds an array with all the names of attributes you wish to make translatable.
  • You have to create a field in the migration of your model type string and nullable.

Here's an example of a prepared model:

use Illuminate\Database\Eloquent\Model;
use LaTevaWeb\Translatable\Traits\Translatable;

class NewsItem extends Model
{
    use Translatable;
       
    protected $fillable = ['greeting'];
    public static $translatable = ['greeting'];
}
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.
calmfox/watch-sylius
damienfern/grpc-symfony-bundle
atoolo/index-bundle
atoolo/genai-bundle
coprotoai/laravel-ticket
davidjln/llm-carbon-bundle
cryonighter/valid-request-bundle
coolms/taxonomy-bundle
coolms/field-bundle
articulate-orm/symfony
aaix/laravel-tall-architect
ephoto/akeneo-connector
emmanuelballery/eb-plantumlbundle
emielburgman/symfony-visitor-beacon
emielburgman/symfony-visit-storage
emielburgman/symfony-security-headers
emielburgman/symfony-log-viewer
emarref/xdebug-bundle
emarref/pubnub-bundle
elriseio/finance-money-bundle