New

Just launched: Vueblocks, a brand-new search engine for Vue packages! Explore Vueblocks →

javaabu/translatable

Adds multi-lingual to Laravel models
2,260
Install
composer require javaabu/translatable
Latest Version:v2.12.0
PHP:^8.2
Laravel:9 – 13
License:MIT
Last Updated:Oct 10, 2026
Links: GitHub  ·  Packagist
Maintainer: dash8x

Translatable

Latest Version on Packagist Test Status Total Downloads Code Coverage

Adds multi-lingual to Laravel models

Installation

You can install the package via composer:

composer require javaabu/translatable

Usage

To get started with this package, you can simply add $table->dbTranslatable(); or $table->jsonTranslatable(); to your migration up function.

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Javaabu\Translatable\DbTranslatable\DbTranslatableSchema;

return new class extends Migration {
    public function up(): void
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();

            // ...

            $table->dbTranslatable();
            // OR
            $table->jsonTranslatable();
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('posts');
    }
};

And then all you need to do is add the Translatable implementation using the IsDbTranslatable or IsJsonTranslatable trait.

...

class Post extends Model implements Translatable
{
    use IsDbTranslatable;
    // OR
    use IsJsonTranslatable;

...

Now, your models will automatically be translated according to the current app()->getLocale().

app()->setLocale('en');
$post->title // This is an English title

app()->setLocale('dv');
$post->title // Mee dhivehi title eh

$post->title_en // This is an English title
$post->title_dv // Mee dhivehi title eh

To add different translations, all you need to do is

// to add title for dv language
$post->title_dv = "Mee Dhivehi title eh";

Documentation

You'll find the documentation on https://docs.javaabu.com/translatable.

Find yourself stuck using the package? Found a bug? Do you have general questions or suggestions for improving this package? Feel free to create an issue on GitHub, we'll try to address it as soon as possible.

If you've found a bug regarding security please mail info@javaabu.com instead of using the issue tracker.

Testing

You can run the tests with

./vendor/bin/phpunit

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email info@javaabu.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

Related Packages

javaabu/helpers

Laravel helper functions for use in everywhere on a project

26,126 0
marshmallow/translatable

Add translation to your Nova Resources. The translations will be stored in a tra...

15,644 2
javaabu/schema

Extends the Laravel database schema with convenience methods used by javaabu/gen...

15,305 0
javaabu/generator-helpers

Helper methods for Laravel generators

15,215 0
javaabu/menu-builder

Dynamically render your sidebar menu in admin panel

14,764 0

Version History

Version Released PHP Laravel License
v2.12.0 ^8.2 ^9.0 || ^10.0 || ^11.0 || ^12.0 || ^13.0 MIT
v2.11.0 ^8.2 ^9.0 || ^10.0 || ^11.0 || ^12.0 || ^13.0 MIT
v2.10.0 ^8.2 ^9.0 || ^10.0 || ^11.0 || ^12.0 MIT
v2.9.0 ^8.2 ^9.0 || ^10.0 || ^11.0 || ^12.0 MIT
v2.8.0 ^8.2 ^9.0 || ^10.0 || ^11.0 || ^12.0 MIT