PHP code example of osama-98 / laravel-enum-translatable

1. Go to this page and download the library: Download osama-98/laravel-enum-translatable library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

osama-98 / laravel-enum-translatable example snippets


enum OrderStatusEnum: string
{
    use EnumTranslatable;

    case PENDING   = 'pending';
    case SHIPPED   = 'shipped';
    case DELIVERED = 'delivered';
}

return [
    'order_statuses' => [
        'pending'   => 'Pending',
        'shipped'   => 'Shipped',
        'delivered' => 'Delivered',
    ],
];

OrderStatusEnum::PENDING->trans();       // 'Pending'
OrderStatusEnum::PENDING->trans('ar');   // 'قيد الانتظار'
OrderStatusEnum::toArrayTrans();         // [['value' => 'pending', 'name' => 'Pending'], ...]

return [

    /*
    |--------------------------------------------------------------------------
    | Supported Locales
    |--------------------------------------------------------------------------
    | The locales that allTrans() will return translations for.
    */
    'supported_locales' => ['en'],

    /*
    |--------------------------------------------------------------------------
    | Modular Support
    |--------------------------------------------------------------------------
    | Enable this if you use a module system such as nWidart/laravel-modules.
    | Translations will be loaded from each module's namespace automatically.
    */
    'modular_enabled' => false,

    /*
    |--------------------------------------------------------------------------
    | Namespace Resolver
    |--------------------------------------------------------------------------
    | The class responsible for resolving a module's translation namespace.
    | Extend TranslationNamespaceResolver to customize the resolution logic.
    */
    'namespace_resolver' => \Osama\LaravelEnums\TranslationNamespaceResolver::class,

];



namespace App\Enums;

use Osama\LaravelEnums\Concerns\EnumTranslatable;

enum CourseStatusEnum: string
{
    use EnumTranslatable;

    case DRAFT     = 'draft';
    case PENDING   = 'pending';
    case PUBLISHED = 'published';
}

// lang/en/enums.php
return [
    'course_statuses' => [
        'draft'     => 'Draft',
        'pending'   => 'Pending',
        'published' => 'Published',
    ],
];

// lang/ar/enums.php
return [
    'course_statuses' => [
        'draft'     => 'مسودة',
        'pending'   => 'قيد المراجعة',
        'published' => 'منشور',
    ],
];

$status = CourseStatusEnum::DRAFT;

$status->trans();      // 'Draft'   (current locale)
$status->trans('ar');  // 'مسودة'
$status->trans('en');  // 'Draft'

CourseStatusEnum::DRAFT->allTrans();
// ['en' => 'Draft', 'ar' => 'مسودة']

CourseStatusEnum::toArrayTrans();      // current locale
CourseStatusEnum::toArrayTrans('ar');  // Arabic
CourseStatusEnum::toArrayTrans('en');  // English
// [
//     ['value' => 'draft',     'name' => 'Draft'],
//     ['value' => 'pending',   'name' => 'Pending'],
//     ['value' => 'published', 'name' => 'Published'],
// ]

CourseStatusEnum::toTransCollection();      // current locale
CourseStatusEnum::toTransCollection('ar');  // Arabic
// Collection([
//     ['value' => 'draft',     'name' => 'مسودة'],
//     ['value' => 'pending',   'name' => 'قيد المراجعة'],
//     ['value' => 'published', 'name' => 'منشور'],
// ])

CourseStatusEnum::DRAFT->object();
// ['value' => 'draft', 'name' => 'Draft']

CourseStatusEnum::DRAFT->transKey(); // 'enums.course_statuses.draft'

CourseStatusEnum::getTransKey(); // 'enums.course_statuses'

CourseStatusEnum::names();   // ['DRAFT', 'PENDING', 'PUBLISHED']
CourseStatusEnum::values();  // ['draft', 'pending', 'published']
CourseStatusEnum::toArray(); // ['draft' => 'DRAFT', 'pending' => 'PENDING', 'published' => 'PUBLISHED']

CourseStatusEnum::toCollection();
// Collection(['draft' => 'DRAFT', 'pending' => 'PENDING', 'published' => 'PUBLISHED'])

CourseStatusEnum::toCollection()->keys();   // ['draft', 'pending', 'published']
CourseStatusEnum::toCollection()->values(); // ['DRAFT', 'PENDING', 'PUBLISHED']

CourseStatusEnum::only(['draft', 'pending']);
// [CourseStatusEnum::DRAFT, CourseStatusEnum::PENDING]

CourseStatusEnum::except([CourseStatusEnum::PUBLISHED]);
// [CourseStatusEnum::DRAFT, CourseStatusEnum::PENDING]

CourseStatusEnum::randomCase();                        // e.g. CourseStatusEnum::PENDING
CourseStatusEnum::randomValue();                       // e.g. 'pending'
CourseStatusEnum::randomCase(except: CourseStatusEnum::DRAFT); // never returns DRAFT
CourseStatusEnum::randomValue(except: ['draft', 'pending']);   // always returns 'published'

CourseStatusEnum::matching('*ed');    // [PENDING, PUBLISHED]
CourseStatusEnum::notMatching('*ed'); // [DRAFT]

CourseStatusEnum::startsWith('p'); // [PENDING, PUBLISHED]
CourseStatusEnum::endsWith('ed');  // [PENDING, PUBLISHED]
CourseStatusEnum::contains('ish'); // [PUBLISHED]

CourseStatusEnum::wrap('draft');                   // CourseStatusEnum::DRAFT
CourseStatusEnum::wrap(CourseStatusEnum::DRAFT);   // CourseStatusEnum::DRAFT
CourseStatusEnum::wrap(null);                      // null
CourseStatusEnum::wrap('invalid', strict: false);  // null

$status = CourseStatusEnum::DRAFT;

$status->is('draft');                        // true
$status->is(CourseStatusEnum::DRAFT);        // true
$status->isNot(CourseStatusEnum::PUBLISHED); // true

$status->isAny(['draft', 'pending']);                                       // true
$status->isAny([CourseStatusEnum::PUBLISHED]);                              // false
$status->isNotAny([CourseStatusEnum::PENDING, CourseStatusEnum::PUBLISHED]); // true

protected function casts(): array
{
    return [
        'status' => CourseStatusEnum::class,
    ];
}

public function toArray(Request $request): array
{
    return [
        'id'     => $this->id,
        'title'  => $this->title,
        'status' => $this->status->object(),
        // ['value' => 'draft', 'name' => 'Draft']
    ];
}

public function create(): JsonResponse
{
    return response()->json([
        'statuses' => CourseStatusEnum::toArrayTrans(),
    ]);
}
bash
php artisan make:enum OrderStatus
bash
php artisan vendor:publish --tag="laravel-enums-config"
bash
php artisan make:enum Admin/UserStatus
# → app/Enums/Admin/UserStatusEnum.php
# → namespace App\Enums\Admin

lang/
├── en/
│   └── enums.php
├── ar/
│   └── enums.php