NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Translatable for Laravel

Schéma a ukladanie

Balík registruje Blueprint makro translatable(), ktoré vytvorí stĺpec jsonb. Použite ho vo vlastných migráciách:

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

Schema::create('topics', function (Blueprint $table): void {
    $table->id();
    $table->translatable('name');          // jsonb column
    $table->translatable('description')->nullable();
    $table->localizedSlug('slug');         // sluggable's macro — jsonb / json / text per engine
    $table->timestamps();
});

Makro sa registruje už vo fáze register() providera, takže je dostupné v každej migrácii. localizedSlug() je makro zo sluggable pre stĺpce slugov podľa jazyka.

Statická analýza

Pre Larastan / PHPStan je makro deklarované ako translatable(string $name): ColumnDefinition, takže aj reťazené modifikátory ako ->nullable() prejdú kontrolou typov. Makro existuje, až keď sa service provider balíka spustí. Larastan spúšťa hostiteľskú aplikáciu s auto-discovery a makro v nej zvyčajne nájde — nie však vtedy, keď sa provider počas analýzy nenačíta: pri vývoji balíka pod Testbench, s dont-discover alebo s ručne registrovaným providerom. Migrácia, ktorá makro volá, by tam inak zlyhala s „Call to an undefined method“. Balík preto obsahuje rozšírenie pre PHPStan (RoundlyConsulting\Translatable\PHPStan\TranslatableMacrosExtension), ktoré phpstan/extension-installer načíta cez extra.phpstan.includes — nič nekonfigurujete. Bez installera ho pridajte ručne:

includes:
    - vendor/roundly-consulting/translatable-for-laravel/extension.neon

localizedSlug() deklaruje vlastné rozšírenie pre PHPStan z balíka sluggable.

Formát uloženia

Každý atribút obsahuje obyčajný JSON objekt s kľúčmi podľa jazyka — bez akéhokoľvek obalu:

{"en": "Investing", "sk": "Investovanie"}

Prázdne hodnoty a null sa nikdy neukladajú a atribút bez prekladov sa zapíše ako prázdny objekt. Riadky zapísané ručne písaným vzorom „json cast + accessor pre jazyk“ sa načítajú rovnako, preto pri prechode na tento balík netreba migrovať dáta. Nový jazyk neskôr pridáte zmenou konfigurácie — mapa jednoducho získa ďalší kľúč.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.