Preklady
Preložiteľné atribúty sú JSON stĺpce s mapou jazyk => hodnota, ktoré spracúva vlastný concern balíka HasTranslatableAttributes — bez knižnice tretej strany. Na príspevku sú to title, slug, perex, content, meta_title a meta_description; na kategóriách a tagoch name a slug.
Zápis prekladov
use RoundlyConsulting\Posts\Facades\Posts;
$post = Posts::draft()
->title('en', 'Hello world')
->title('sk', 'Ahoj svet')
->content('en', '<p>…</p>')
->by($user) // polymorphic author
->save();
// Plain Eloquent works too — edit translations on the model and save:
$post->setTranslation('perex', 'en', 'A short intro');
$post->save();Builder ukladá cez Posts::create(); setTranslation() vráti model, ale neukladá ho — save() zavolajte sami. Slugy sa pri uložení vygenerujú z nadpisu pre každý jazyk (pozrite Slugy).
Čítanie prekladov
$post->getTranslation('title', 'sk'); // 'Ahoj svet' (with fallback)
$post->getTranslation('title', 'de', false); // '' — exact locale, no fallback
$post->getTranslations('title'); // ['en' => 'Hello world', 'sk' => 'Ahoj svet']
$post->translate('title'); // current-locale value, with fallback
$post->translate('title', 'sk'); // a given locale, with fallback
$post->title; // same as translate('title')
$post->isTranslatableAttribute('title'); // true
$post->translatableAttributes(); // ['title', 'slug', 'perex', 'content', 'meta_title', 'meta_description']Poradie záložných jazykov
Čítanie so záložným jazykom skúša v tomto poradí:
- požadovaný jazyk;
- záložný jazyk — prvý nastavený z translatable.fallback_locale (ak je nakonfigurovaný translatable-for-laravel), posts.locales.fallback a app.fallback_locale; prázdna hodnota sa považuje za nenastavenú a prejde sa na ďalší;
- abecedne prvý jazyk, ktorý má hodnotu — stabilná voľba nezávislá od poradia kľúčov, v akom databáza vráti JSON.
Priamy prístup k atribútu ($post->title) prechádza týmto reťazcom, pokiaľ model pre daný kľúč nedefinuje accessor alebo mutator. Ak chcete čítať presne jeden jazyk, odovzdajte getTranslation() ako tretí argument false; pri chýbajúcom jazyku vráti ''.
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.