Skip to main content

Build Language Management. Simply and Powerfully.

Laravel Language is a modern, flexible package that provides a clean, framework-native way to manage application languages with first-class validation rules, events, and a fluent query API. It supports multiple calendar systems, text directions, and provides comprehensive tools for internationalization and localization.

Why Laravel Language?

Simple API

Laravel Language provides a clean, intuitive API for managing languages. Store, update, delete, and query languages with simple method calls through the service or facade.

Calendar Awareness

Support for multiple calendar systems: Gregorian, Jalali, Hijri, Hebrew, Buddhist, Coptic, Ethiopian, and Chinese. Each language can have its own calendar preference.

Validation Rules

Built-in validation rules: CheckLocaleRule and LanguageExistRule ensure data integrity and validate locale codes.

Event System

Built-in events for language lifecycle: LanguageStoredEvent, LanguageUpdatedEvent, LanguageDeletingEvent, and LanguageDeletedEvent. Integrate with notification systems, caching, or any custom logic.

Middleware Support

Built-in middleware for setting language and timezone automatically based on user preferences or request parameters.

Rich Querying

Query languages with filters, sorts, and field selection using Spatie QueryBuilder under the hood.

API Resources

Optional API resources for transforming language data for API responses.

What is Language Management?

Language management is the process of managing multiple languages in your application, including locale settings, text direction (LTR/RTL), calendar systems, and formatting preferences. Traditional approaches often involve:

  • Creating custom language tables manually
  • Writing complex queries to filter and sort languages
  • Managing locale settings manually
  • Duplicating code across different parts of the application

Laravel Language solves these challenges by providing:

  • Unified System: Single table for all language data
  • Calendar Support: Multiple calendar systems out of the box
  • Simple API: Clean methods for all operations
  • Event Integration: Built-in events for extensibility
  • Query Helpers: Easy methods for common queries

Key Features

Language Service

The main service class that provides methods for storing, updating, deleting, and querying languages. Can be used directly or through the facade.

Language Model

The Eloquent model that stores language data. Includes query scopes for filtering by locale, direction, and calendar.

Calendar Type Enum

Enum for calendar system types: Gregorian, Jalali, Hijri, Hebrew, Buddhist, Coptic, Ethiopian, and Chinese.

Validation Rules

  • CheckLocaleRule: Validates locale codes
  • LanguageExistRule: Validates language existence
  • CheckFutureDateRule: Validates future dates based on calendar

Middleware

  • SetLanguageMiddleware: Automatically sets application locale
  • SetTimezoneMiddleware: Automatically sets application timezone

Events

Four events for language lifecycle:

  • LanguageStoredEvent: When a language is created
  • LanguageUpdatedEvent: When a language is updated
  • LanguageDeletingEvent: Before a language is deleted
  • LanguageDeletedEvent: After a language is deleted

Quick Example

Here's a quick example of how easy it is to use language management:

use JobMetric\Language\Facades\Language;

// Store a new language
$language = Language::store([
'name' => 'Persian',
'flag' => 'ir',
'locale' => 'fa',
'direction' => 'rtl',
'calendar' => 'jalali',
'first_day_of_week' => 0,
'status' => true,
]);

// Get all active languages
$languages = Language::all(['status' => true]);

// Update a language
Language::update($id, [
'name' => 'فارسی',
'status' => true,
]);

// Delete a language
Language::delete($id);

What Awaits You?

In this documentation, you'll learn:

  • Installation: How to install and configure the package
  • Basic Usage: Managing languages in your application
  • Language Service: Complete API for language operations
  • Language Model: Understanding the language data structure
  • Validation Rules: Using built-in validation rules
  • Events: Working with language events
  • Middleware: Setting language and timezone automatically
  • Advanced Usage: Complex scenarios and best practices

Ready to get started? Let's install the package and begin managing languages in your application!