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