Перекладні Enums

2
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 29 січня, 2026
Enum-типи — чудове доповнення до PHP і Laravel, яке полегшує підтримку та робить код більш зрозумілим. Дізнайтеся, як пакет Laravel Enum Translatable автоматично перекладає значення enum-типів, перетворює їх на масиви для API та легко інтегрується з Eloquent.

Enums — відмінне доповнення для PHP і Laravel. Вони покращують читабельність коду й полегшують його підтримку. Якщо ви робите багатомовний додаток, також потрібно перекладати значення Enum. Для цього існує пакет Laravel Enum Translatable від Osama Sadah.

Основні можливості

Приклад

Додайте trait EnumTranslatable до свого класу Enum.

namespace App\Enums\Article;
 
use Osama\LaravelEnums\Concerns\EnumTranslatable;
 
enum ArticleStatus: string
{
    use EnumTranslatable;
 
    case DRAFT = 'draft';
    case PUBLISHED = 'published';
    case REJECTED = 'rejected';
}

Створіть файли перекладів у директорії lang вашого Laravel‑додатка. Ключ для перекладу генерується автоматично від імені класу Enum.

Наприклад, у lang/en/enums.php може бути:

return [
    'article_statuses' => [
        'draft' => 'Draft',
        'published' => 'Published',
        'rejected' => 'Rejected',
    ],
];

А у lang/es/enums.php:

return [
    'article_statuses' => [
        'draft' => 'Borrador',
        'published' => 'Publicado',
        'rejected' => 'Rechazado',
    ],
];

Щоб отримати переклад значення Enum, використайте методи trans() або allTrans():

$status = ArticleStatus::DRAFT;
 
// Get translation in current locale
$translated = $status->trans();
 
// Get translation in specific locale
$english = $status->trans('en'); // Outputs: Draft
$spanish = $status->trans('es'); // Outputs: Borrador
 
// or All translations
$allTranslations = $status->allTrans(); // Outputs: ['en' => 'Draft', 'es' => 'Borrador']

Пакет також дозволяє автоматично кастити транслювані Enum у ваших Eloquent‑моделях:

namespace App\Models;
 
use App\Enums\Article\ArticleStatus;
use Illuminate\Database\Eloquent\Model;
 
class Article extends Model
{
    //...
 
    protected function casts(): array
    {
        return [
            'status' => ArticleStatus::class,
        ];
    }
}

Дізнатись більше про пакет і переглянути код на GitHub.

Популярні

Logomark Logotype

Налаштування Xdebug з Docker та PHP 8.4 всього за одну хвилину

Встановлення Xdebug може бути складним завданням, але в цій статті ми розкриємо, як швидко та просто налаштувати його за допомогою Docker на прикладі Laravel. Дочитайте до кінця, щоб дізнатися, як за кілька хвилин зробити Xdebug вашим надійним помічником у розробці

Logomark Logotype

Оптимізація запитів до бази даних за допомогою скорочених методів Laravel

Laravel пропонує зручні методи для роботи з датами, які значно спрощують запити до бази даних. Досліджуйте, як ці інтуїтивно зрозумілі функції допомагають створювати чіткі та зрозумілі умови для роботи з часовими даними!

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом