sohrab-az / laravel-language
A flexible language package for Laravel
1.0.0
2026-05-01 16:39 UTC
README
A simple and lightweight language management package for Laravel applications.
This package provides a database-driven approach to manage languages, including default language, active languages, and per-model language assignment.
Features
- Store languages in database
- Define default language
- Enable/disable languages
- Assign language to Eloquent models
- Fluent service API for managing languages
- Built-in Eloquent trait for multilingual relations
Installation
You can install the package via composer:
composer require sohrab-az/laravel-language
Configuration
Publish the configuration file:
php artisan vendor:publish --tag=language-config
config/language.php
return [ 'default' => 'en', 'supported' => [ [ 'code' => 'en', 'name' => 'English', 'direction' => 'ltr', 'active' => true ], [ 'code' => 'fa', 'name' => 'Persian', 'direction' => 'rtl', 'active' => true ], ], ];
Migration
Run the migrations:
php artisan migrate
This will create a languages table and seed it based on your configuration.
Database Structure
The languages table includes:
code(string, unique)name(string)direction(enum: ltr, rtl)is_active(boolean)is_default(boolean)meta(json, nullable)
Usage
Language Manager
You can inject LanguageManager anywhere in your application:
use Gitmag\Language\Services\LanguageManager; class ExampleController { public function __construct(protected LanguageManager $languageManager) {} public function index() { $languages = $this->languageManager->all(); $active = $this->languageManager->active(); $default = $this->languageManager->default(); return $languages; } }
Set Default Language
$languageManager->setDefault('fa');
Activate / Deactivate Language
$languageManager->activate('en'); $languageManager->deactivate('fa');
Working with Eloquent Models
Use the HasLanguage trait in your model:
use Gitmag\Language\Traits\HasLanguage; class Post extends Model { use HasLanguage; }
Assign Language to Model
$post->setLanguage('en')->save();
or:
$post->setLanguage($languageModel)->save();
Query by Language
Post::language('en')->get(); Post::language($languageId)->get(); Post::language($languageModel)->get();
Default Language Scope
Post::defaultLanguage()->get();
Helpers
$post->getLanguageCode(); $post->isLanguage('en');
Service Provider
The package automatically registers:
- LanguageManager singleton
- Config file
- Migrations
License
MIT