Skip to main content

Language Model

The Language model represents a language entry used for i18n/L10n, including locale identity, UI direction, calendar system preference, and first day of week.

Namespace

JobMetric\Language\Models\Language

Overview

The Language model stores language configuration data including name, flag, locale, direction, calendar, first day of week, and status. It includes query scopes for filtering and uses the HasBooleanStatus trait for status management.

Properties

Name

public string $name;

Human-readable display name of the language (e.g., "Persian", "English").

Flag

public string|null $flag;

Optional visual representation of the language flag (e.g., "ir", "us").

Locale

public string $locale;

Locale identifier (two-letter code like "fa", "en", "ar"). Must be unique.

Direction

public string $direction;

Text direction: 'ltr' (left-to-right) or 'rtl' (right-to-left).

Calendar

public string $calendar;

Calendar system identifier (e.g., "gregorian", "jalali", "hijri").

First Day of Week

public int $first_day_of_week;

First day of week (0-6): 0=Sunday, 1=Monday, ..., 6=Saturday.

Status

public bool $status;

Activation toggle: true = active, false = inactive.

Query Scopes

Of Locale

Filter by locale:

Language::ofLocale('fa')->first();

Of LTR

Filter left-to-right languages:

Language::ofLtr()->get();

Of RTL

Filter right-to-left languages:

Language::ofRtl()->get();

Of Calendar

Filter by calendar system:

Language::ofCalendar('jalali')->get();

Constants

Direction Constants

Language::DIRECTION_LTR = 'ltr';
Language::DIRECTION_RTL = 'rtl';

Complete Examples

Querying Languages

use JobMetric\Language\Models\Language;

// Get by locale
$language = Language::ofLocale('fa')->first();

// Get RTL languages
$rtlLanguages = Language::ofRtl()->get();

// Get Jalali calendar languages
$jalaliLanguages = Language::ofCalendar('jalali')->get();

// Get active languages
$active = Language::where('status', true)->get();

Creating Languages

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

When to Use Language Model

Use the Language model directly when you need to:

  • Direct Queries: Query languages directly without going through the service
  • Custom Logic: Implement custom language-related logic
  • Relationships: Define relationships with other models
  • Scopes: Use query scopes for filtering