Prekladateľné modely
Prekladateľné atribúty vymenujte vo verejnej vlastnosti array $translatable a implementujte kontrakt Translatable — všetky metódy poskytuje trait HasTranslations. Model nepotrebuje cast array: JSON serializáciu vymenovaných atribútov rieši trait.
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Translatable\Concerns\HasTranslations;
use RoundlyConsulting\Translatable\Contracts\Translatable;
final class Topic extends Model implements Translatable
{
use HasTranslations;
/** @var list<string> */
public array $translatable = ['name', 'description'];
}- Implementujte kontrakt. Na Translatable sa odkazuje Translatable::apply() aj Blade komponent a rozširuje ProvidesLocaleMaps zo sluggable — model bez neho nemôže mať slugy podľa jazyka.
- Vymenovaným atribútom nepridávajte cast — trait číta aj zapisuje surový JSON sám.
- Hromadné priradenie funguje ako obvykle: pridajte atribúty do $fillable (alebo použite $guarded) a odovzdajte mapy jazykov, napr. Topic::create(['name' => ['en' => 'Investing']]).
- Volanie akejkoľvek prekladovej metódy alebo scopu s atribútom, ktorý nie je vymenovaný, vyhodí NotATranslatableAttributeException.
Fallback pre konkrétny model
Globálny fallback režim a záložný jazyk prepíšete pre jeden model dvoma voliteľnými protected vlastnosťami:
use RoundlyConsulting\Translatable\Enums\FallbackMode;
protected ?FallbackMode $translatableFallbackMode = FallbackMode::Fallback;
protected ?string $translatableFallbackLocale = 'en';Ak je vlastnosť null alebo chýba, platí hodnota z konfigurácie. Čo robí ktorý režim, nájdete v časti Fallback režimy.
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.