---
title: "Čítanie a zápis — Translatable for Laravel | Roundly"
description: "Čítajte aktuálny jazyk cez fallback reťazec, zvoľte jazyk explicitne a zapisujte jednotlivé hodnoty alebo celé mapy jazykov."
url: https://roundly-consulting.com/sk/open-source/navody/translatable-for-laravel/citanie-a-zapis
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Translatable for Laravel](https://roundly-consulting.com/sk/open-source/navody/translatable-for-laravel.md)

# Čí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úť:

```php
$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' => …\]), nastaví jeden jazyk cez rovnaké kontroly:

```php
$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: sets 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.

Každý zápis jedného jazyka sa zlúči do mapy modelu v pamäti; save() potom zapíše celý stĺpec. Ak dva requesty načítajú ten istý riadok a uložia rôzne jazyky, platí posledný zápis — pozrite Súbežné úpravy v časti Vstup a validácia.

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.

## Model načítaný bez stĺpca

Zápis jedného jazyka — setTranslation(), forgetTranslation(), Translatable::apply(), $model->name = '…' či kľúč name->sk vo fill() alebo update() — potrebuje uloženú mapu. Na modeli načítanom bez daného stĺpca, napríklad cez Topic::query()->select('id')->first(), preto vyhodí TranslationsNotLoadedException ešte predtým, ako sa čokoľvek zmení — inak by nasledujúce save() vymazalo všetky ostatné uložené jazyky. Nahradenie celej mapy funguje aj naďalej, rovnako ako nové a práve vytvorené modely:

```php
$topic = Topic::query()->select('id')->first();
$topic->setTranslation('name', 'sk', 'Investície');   // TranslationsNotLoadedException
$topic->setTranslations('name', ['en' => 'Investing']); // fine — replaces the whole map
```

Čítanie takého stĺpca — getTranslation(), getTranslations(), hasTranslation(), missingLocales(), isFullyTranslated() a ostatné metódy stavu — rešpektuje Model::preventAccessingMissingAttributes(): ak je zapnuté, vyhodí MissingAttributeException z Eloquentu rovnako ako $model->name; ak je vypnuté, stĺpec sa číta ako prázdny.

## 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 kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/translatable-for-laravel.md)
