A simple and lightweight Laravel package that adds localized labels to native PHP enums using Laravel's translation system. Ideal for multi-language applications.
mohamedbakr57/localized-enum is a Laravel package for a simple and lightweight laravel package that adds localized labels to native php enums using laravel's translation system. ideal for multi-language applications..
It currently has 2 GitHub stars and 45 downloads on Packagist (latest version v1.0.0).
Install it with composer require mohamedbakr57/localized-enum.
Discover more Laravel packages by mohamedbakr57
or browse all Laravel packages to compare alternatives.
Last updated
Localized Enum is a simple, lightweight Laravel package that adds localized labels to native PHP enums using Laravel’s translation system.
Perfect for multilingual applications and API responses with dynamic localization support.
TestStatus::Approved->label();
// Output: "Approved by Admin" (if translation exists)
TestStatus::Approved->label('custom.status.approved');
// Output: value from that specific key
TestStatus::Approved->label('missing.key', 'Approved fallback');
// Output: "Approved fallback" if translation not found
If you're building an API and send locale via headers:
GET /api/user
X-Locale: ar
The trait will use the X-Locale value automatically.
📝 Default header key is
X-Locale, but it can be overridden.
The default header is X-Locale. You can change it app-wide via config (after
publishing with php artisan vendor:publish --tag="localized-enum-config"):
// config/localized-enum.php
return [
'header_key' => env('LOCALIZED_ENUM_HEADER_KEY', 'Accept-Language'),
'available_locales' => ['en', 'ar'], // optional whitelist; null trusts any header value
];
Or override the method on a specific enum for per-enum control:
enum TestStatus: string
{
use HasLabel;
protected function getLocaleHeaderKey(): string
{
return 'Accept-Language';
}
}
Or override getLabelLocale() entirely for full control.
label() method to native PHP Enumsconfig('app.locale') if no locale is sentcomposer require mohamedbakr57/localized-enum
// lang/en/enums.php
return [
'TestStatus.Approved' => 'Approved by Admin',
'TestStatus.Pending' => 'Waiting',
'TestStatus.Rejected' => 'Rejected',
];
Supports both:
enums.FQCN.CASEenums.Basename.CASEFQCN.CASEBasename.CASE'Approved' => 'Approved Label' for flat key fallbackcomposer test
composer test-coverage
Run Pint for formatting:
composer format
git clone https://github.com/mohamedbakr57/localized-enum.git
cd localized-enum
composer install
composer test
Licensed under MIT License
Built and maintained by Mohamed Bakr
Stars and PRs are welcome ⭐️