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

Balík má dva rovnocenné vstupné body. Fasáda Translatable je najkratšia a odporúčaná voľba. Manager RoundlyConsulting\Translatable\Support\TranslationManager je koreňom fasády: je zaregistrovaný ako singleton, injektujete ho cez konštruktor a ponúka identické API ako explicitnú závislosť, bez statických volaní:

use RoundlyConsulting\Translatable\Support\TranslationManager;

final class UpdateTopicTranslations
{
    public function __construct(private TranslationManager $translations) {}

    public function handle(Topic $topic, array $input): void
    {
        $topic->setTranslations('name', $this->translations->fromInput($input['name'] ?? []));
    }
}

Obe cesty vedú k tomu istému singletonu:

use RoundlyConsulting\Translatable\Facades\Translatable;
use RoundlyConsulting\Translatable\Support\TranslationManager;

app(TranslationManager::class) === Translatable::getFacadeRoot(); // true — one singleton

Bez akčných tried

Balík nemá akčné triedy, ktoré by ste skladali do vlastných jobov či príkazov: robí len čisté výpočty nad mapami jazykov — žiadny zápis do databázy, fronta, e-mail, udalosť ani HTTP volanie — a tie obslúži priamo manager. Z vlastných akcií preto volajte manager (alebo fasádu).

Výmena managera

TranslationManager zámerne nie je final — je to jediné navrhnuté miesto na rozšírenie balíka. Rozšírte ho, prepíšte metódu a vymeňte ho: ostatné jeho metódy prepis zohľadnia a podtriedu použijú aj volania fasády a každý model s HasTranslations:

use RoundlyConsulting\Translatable\Facades\Translatable;
use RoundlyConsulting\Translatable\Support\TranslationManager;

Translatable::swap(new class extends TranslationManager
{
    public function supported(): array
    {
        return ['en', 'sk', 'de'];
    }
});

Translatable::supported();                        // ['en', 'sk', 'de']
Translatable::fromInput(['de' => 'Investieren']); // ['de' => 'Investieren']
$topic->missingLocales('name');                   // now also reports 'de'

Interné triedy

Support\FallbackResolver a Support\LocaleGuard sú interné (@internal) stavebné bloky — namiesto nich volajte Translatable::resolve(), ensureLocale() alebo isSupported(). Kontrola formátu kľúča jazyka zostáva pevnou poistkou pri každom zápise aj v každom scope a nikdy nezávisí od metódy, ktorú prepíšete.

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.