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