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

Čítanie a zápis

Čítanie

Prístup cez vlastnosť vráti hodnotu pre jazyk aplikácie cez fallback reťazec; explicitné metódy vám umožnia zvoliť jazyk a fallback vypnúť:

$topic->name;                                 // localized, fallback chain
$topic->getTranslation('name', 'sk');         // explicit locale, fallback on
$topic->getTranslation('name', 'sk', false);  // no fallback -> null if missing
$topic->translatedOrNull('name');             // app locale, NO fallback
$topic->getTranslations('name');              // full map (admin resources)
$topic->getTranslations();                    // every translatable attr -> its map
$topic->hasTranslation('name', 'sk');         // bool
$topic->getTranslatedLocales('name');         // list<string>
$topic->missingLocales('name');               // supported - translated (feed an AI service)
$topic->isTranslatableAttribute('name');      // bool
$topic->getTranslatableAttributes();          // list<string>

Zápis

Settery sú fluentné a vracajú model; na uloženie zavolajte ako obvykle save(). Priradenie reťazca zapíše hodnotu pre jazyk aplikácie, priradenie poľa nahradí celú mapu a kľúč s JSON cestou, napríklad update(['name->sk' => …]), upraví jeden jazyk cez rovnaké kontroly:

$topic->setTranslation('name', 'sk', 'Investovanie'); // fluent, returns $this
$topic->setTranslation('name', 'sk', null);   // forgets sk (never stores blank)
$topic->setTranslations('name', ['en' => 'Investing', 'sk' => 'Investovanie']);
$topic->replaceTranslations(['name' => ['en' => 'Investing']]);
$topic->forgetTranslation('name', 'sk');
$topic->forgetAllTranslations('name');
$topic->name = 'Investing';                   // sets the APP locale value
$topic->name = ['en' => 'Investing', 'sk' => 'Investovanie']; // replaces the map
$topic->save();

$topic->update(['name->sk' => 'Sporenie']);   // JSON-path key: patches one locale, same guards

Prázdne hodnoty a null sa zahadzujú, takže mapa nikdy neobsahuje prázdny reťazec a fallback reťazec má vždy na čo reálne prejsť. setTranslation(…, null) a forgetTranslation() jazyk odstránia; setTranslations() nahradí celú mapu jedného poľa a replaceTranslations() urobí to isté pre viacero polí naraz.

Sledovanie zmien porovnáva dekódovanú mapu, nie surový JSON reťazec: PostgreSQL aj MySQL vracajú JSON s inými medzerami a v inom poradí kľúčov, no opätovné uloženie nezmenenej mapy na žiadnej databáze nespustí UPDATE.

Prehľad metód

MetódaVraciaÚčel
getTranslation($key, $locale = null, $useFallback = true)?stringHodnota jedného jazyka; predvolene jazyk aplikácie so zapnutým fallbackom.
translatedOrNull($key)?stringHodnota jazyka aplikácie bez fallbacku.
getTranslations($key = null)arrayMapa jedného poľa alebo mapy všetkých prekladateľných polí.
setTranslation($key, $locale, $value)staticNastaví jeden jazyk; null alebo prázdny reťazec ho odstráni.
setTranslations($key, $translations)staticNahradí celú mapu poľa.
replaceTranslations($fields)staticNahradí mapy viacerých polí naraz.
forgetTranslation($key, $locale)staticOdstráni jeden jazyk.
forgetAllTranslations($key)staticVyprázdni mapu poľa.
hasTranslation($key, $locale = null)boolČi je jazyk uložený; predvolene jazyk aplikácie.
getTranslatedLocales($key)list<string>Jazyky, ktoré majú hodnotu.
missingLocales($key)list<string>Podporované jazyky bez hodnoty.
isTranslatableAttribute($key)boolČi je atribút uvedený v $translatable.
getTranslatableAttributes()list<string>Všetky uvedené atribúty.

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.