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

Fallback režimy

Enum FallbackMode riadi každé čítanie s fallbackom — prístup cez vlastnosť, getTranslation() so zapnutým fallbackom aj serializáciu:

RežimHodnota v konfiguráciiVyhodnotenie
FallbackMode::NonenoneLen presne požadovaný jazyk — ak chýba, null.
FallbackMode::FallbackfallbackPresný jazyk, potom nastavený záložný jazyk.
FallbackMode::AnyanyPresný jazyk, potom záložný jazyk, potom prvá dostupná hodnota — najprv podporované jazyky v ich poradí, potom ostatné uložené jazyky abecedne. Predvolený režim — obsah nikdy nezostane prázdny.
// Stored: name = {"sk": "Investovanie"}, fallback_locale = en, app locale = de

// FallbackMode::Any (default)
$topic->name;                                // 'Investovanie' — first available value

// FallbackMode::Fallback or FallbackMode::None
$topic->name;                                // null

// Regardless of the mode
$topic->getTranslation('name', 'de', false); // null — fallback switched off
$topic->translatedOrNull('name');            // null — exact app locale only

Posledný krok režimu Any prechádza podporované jazyky v ich poradí a potom ostatné uložené jazyky abecedne. Výber nikdy nezávisí od toho, ako databáza zoradí kľúče JSON, takže riadok sa na každej databáze aj pred a po opätovnom načítaní zobrazí v rovnakom jazyku.

Únik obsahu medzi jazykmi pri Any

Any je predvolený, aby obsah nikdy nezostal prázdny. Daň za to: keď je prázdny požadovaný aj záložný jazyk, Any zobrazí hodnotu prvého dostupného jazyka — obsah, ktorý ste pre daný jazyk zámerne nepreložili, sa tak môže zobraziť v inom jazyku. Ak je časť obsahu pre jednotlivé jazyky viazaná právne alebo regulačne, prepnite na Fallback (alebo None) globálne cez TRANSLATABLE_FALLBACK či konfiguráciu, alebo pre konkrétny model:

use RoundlyConsulting\Translatable\Enums\FallbackMode;

protected ?FallbackMode $translatableFallbackMode = FallbackMode::Fallback;
protected ?string $translatableFallbackLocale = 'en';

Neznáma hodnota v translatable.fallback sa vyhodnotí ako Any. FallbackMode používa trait Helpers z enums-for-laravel, takže sú naň dostupné pomocné metódy tohto balíka.

Vyhodnotenie surovej mapy

Translatable::resolve() použije rovnaké vyhodnotenie ako čítanie z modelu, no pre surovú mapu, ktorú máte mimo modelu — v cache, v odpovedi z API či v poli z konfigurácie. Jazyk je predvolene aktuálny, režim a záložný jazyk podľa konfigurácie. Prázdne hodnoty nikdy nevyhrajú — null, '', booleany, polia a objekty sa preskočia, int a float sa prevedú na reťazec — takže aj neupratanú mapu vyhodnotí bez výnimky:

use RoundlyConsulting\Translatable\Enums\FallbackMode;
use RoundlyConsulting\Translatable\Facades\Translatable;

$map = ['en' => 'Investing', 'sk' => 'Investovanie']; // a cached payload, an API response, a config array

app()->setLocale('sk');
Translatable::resolve($map);                          // 'Investovanie' — current locale, configured chain
Translatable::resolve($map, 'de');                    // 'Investing' — falls back to fallback_locale (en)
Translatable::resolve($map, 'de', FallbackMode::None); // null — exact locale only
Translatable::resolve($map, 'de', FallbackMode::Fallback, fallbackLocale: 'sk'); // 'Investovanie'

// A messy map resolves, it never throws:
Translatable::resolve(['en' => null, 'sk' => 'Ahoj'], 'de'); // 'Ahoj'
Translatable::resolve(['sk' => 5], 'de');                   // '5'

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.