Open source
Translatable for Laravel
composer require roundly-consulting/translatable-for-laravelPrehľad
Natívna vrstva prekladateľných atribútov pre Eloquent. Každý prekladateľný atribút je obyčajná mapa jazykov uložená v jednom stĺpci json/jsonb a čítanie vráti hodnotu pre aktuálny jazyk cez konfigurovateľný fallback reťazec, takže obsah nikdy nezostane prázdny. K tomu zabezpečený zápis, fasáda Translatable s validačnými a vyhľadávacími pomocníkmi pre administračné formuláre, prehľad stavu prekladov, voliteľné udalosti zmien a slugy pre každý jazyk cez sluggable-for-laravel. Licencia MIT, postavené len na Laraveli a vlastných balíkoch Roundly — bez závislostí tretích strán.
Čo získate
Jeden stĺpec na atribút
Každý prekladateľný atribút je obyčajná JSON mapa jazykov v jednom stĺpci jsonb — nový jazyk pridáte bez migrácie.
Fallback reťazec
Režimy None, Fallback alebo Any — čítanie prejde na záložný jazyk a potom na akúkoľvek hodnotu, takže obsah nikdy nezostane prázdny.
Zabezpečený zápis
Kľúče jazykov sa overujú pri každom zápise, hodnoty musia byť skalárne a striktný režim odmietne nepodporované jazyky.
Jedna fasáda, injektovateľný manager
Jazyky, vyhodnotenie fallbacku, normalizácia vstupu, validačné pravidlá, PATCH zmeny a vyhľadávanie na jednej fasáde — alebo injektujte jej manager.
Stav prekladov
Chýbajúce jazyky pre každé pole, miera úplnosti pre progress bar, scope pre chýbajúce jazyky a hotový Blade odznak.
Slugy podľa jazyka
sluggable-for-laravel vytvorí slug pre každý jazyk z rovnakého zdroja jazykov — dva traity, žiadny cast.
Voliteľné udalosti zmien
Jedna udalosť TranslationsChanged pri uložení — zaraďte AI doplnenie chýbajúcich jazykov do fronty bez úprav modelu.
Dokumentácia
Inštalácia
Inštalácia cez Composer, voliteľné publikovanie konfigurácie a validačných textov — žiadne migrácie na publikovanie.
Konfigurácia
Každý konfiguračný kľúč, jeho predvolená hodnota a env premenná — záložný jazyk, fallback režim, striktné jazyky a zdroj jazykov.
Schéma a ukladanie
Pridajte stĺpce jsonb s mapou jazykov cez Blueprint makro translatable(); hodnoty sa ukladajú ako obyčajný JSON objekt bez obalu.
Prekladateľné modely
Pridajte trait HasTranslations a kontrakt Translatable, vymenujte atribúty v $translatable a voliteľne prepíšte fallback pre model.
Fasáda Translatable
Všetky pomocníky pre mapy jazykov na jednej fasáde — podporované jazyky, overenie jazyka, fallback, vstup, pravidlá, vyhľadávanie a usingLocale().
DI a akcie
Namiesto fasády injektujte TranslationManager — rovnaké API ako explicitná závislosť. Akčné triedy balík nemá: ide o čisté výpočty.
Čítanie a zápis
Čítajte aktuálny jazyk cez fallback reťazec, zvoľte jazyk explicitne a zapisujte jednotlivé hodnoty alebo celé mapy jazykov.
Fallback režimy
Určte, kam až čítanie prejde — len presný jazyk, záložný jazyk alebo akákoľvek hodnota — globálne alebo pre konkrétny model.
Vstup a validácia
Zabezpečený zápis, normalizácia vstupu cez fromInput(), overenie jedného jazyka, validačné pravidlá pre mapy jazykov a zmeny v štýle PATCH.
Serializácia
toArray(), toJson(), JSON odpovede a API Resources vracajú pre každý atribút vyhodnotenú hodnotu jazyka, nie surovú mapu.
Stav prekladov
Chýbajúce jazyky pre každé pole, úplnosť celého modelu pre progress bar, vylúčenie atribútov a hotový Blade odznak stavu.
Dopyty a vyhľadávanie
Scopy pre jednotlivé jazyky nezávislé od databázy, scope pre chýbajúce jazyky a doslovné vyhľadávanie bez ohľadu na veľkosť písmen.
Udalosti
Zapnite jednu udalosť TranslationsChanged pri uložení — zaraďte AI doplnenie chýbajúcich jazykov či vyčistenie cache bez úprav modelu.
Slugy podľa jazyka
Slugy pre každý jazyk cez sluggable-for-laravel — dva traity, dve rozhrania, žiadny cast — s rovnakým zdrojom jazykov.
Artisan about
Sekcia balíka v php artisan about — počet a zdroj jazykov, fallback režim a prepínače, nikdy nie zoznam vašich jazykov.
Výnimky
Všetky chyby balíka dedia z TranslatableException — chybné kľúče jazykov, neskalárne hodnoty a neprekladateľné atribúty.
Testovanie
Zámerne bez fake — jazyky a fallback zafixujete konfiguráciou či výmenou managera, asertujete Pestom, sadu spustíte na SQLite, PostgreSQL či MySQL.
Požiadavky
PHP 8.4+ s ext-json, Laravel 12 alebo 13 a akákoľvek databáza podporovaná Laravelom; tri balíky Roundly sa nainštalujú automaticky.
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 kryptomienOdoslaní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.