Čí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 guardsPrá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óda | Vracia | Účel |
|---|---|---|
getTranslation($key, $locale = null, $useFallback = true) | ?string | Hodnota jedného jazyka; predvolene jazyk aplikácie so zapnutým fallbackom. |
translatedOrNull($key) | ?string | Hodnota jazyka aplikácie bez fallbacku. |
getTranslations($key = null) | array | Mapa jedného poľa alebo mapy všetkých prekladateľných polí. |
setTranslation($key, $locale, $value) | static | Nastaví jeden jazyk; null alebo prázdny reťazec ho odstráni. |
setTranslations($key, $translations) | static | Nahradí celú mapu poľa. |
replaceTranslations($fields) | static | Nahradí mapy viacerých polí naraz. |
forgetTranslation($key, $locale) | static | Odstráni jeden jazyk. |
forgetAllTranslations($key) | static | Vyprá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 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.