Spatie spracováva preklady s databázovými a jazykovými súbormi predovšetkým prostredníctvom balíka Laravel-Translation-Loader, ktorý sa bez problémov integruje do natívneho prekladacieho systému Laravel.
Ako to funguje pri používaní databázových aj jazykových súborov
- Balík vám umožňuje ukladať preklady do databázy pomocou vyhradenej tabuľky (`Language_lines`). Každá položka prekladu predstavuje inštanciu modelu „Languageline“, ktorá obsahuje:
- `Group`: Skupina prekladu (napr.„ Validácia “alebo„ auth “).
- `Key`: Kľúč prekladu v skupine.
- `Text`: preklady držania poľa pre rôzne lokality (napr. ['en' => 'Toto je požadované pole', 'nl' => 'dit je een verplicht veld']`).
- Keď požiadate o preklad pomocou obvyklých prekladových funkcií Laravel, ako je `trans ()` alebo `__ ()`, balík najskôr skontroluje databázu prekladu. Ak nájde zodpovedajúci záznam, vráti verziu databázy.
- Ak sa preklad nenájde v databáze, spadá späť do tradičných jazykových súborov uložených v adresári Laravel's Resources/Lang`.
- To znamená, že preklady databázy potlačujú preklady jazykových súborov, ak existujú pre rovnaký kľúč a miestne nastavenie.
- Balíček podporuje preklady založené na skupinách (napr. „Validation.Required`) a JSON preklady pomocou špeciálneho názvu skupiny`*'`pre riadky prekladu JSON.
Ďalšie funkcie a správanie
- Balíček ukladá skupiny prekladov na optimalizáciu výkonu, čím sa znižuje databázové dotazy v opakovaných požiadavkách na preklad. Vyrovnávacia pamäť je zneplatnená, keď sú preklady vytvorené, aktualizované alebo odstránené.
- Je to rozšíriteľné: môžete pridať vlastných poskytovateľov prekladu (napr. YAML, CSV) implementáciou rozhrania balíka prekladača, čo umožňuje načítať preklady z iných zdrojov za databázovými a jazykovými súbormi.
- Môžete pokračovať v používaní Laravelových predvolených pomocníkov prekladov a smerníc Blade (`@lang`,` trans () `,` __ () `) bez úpravy.
Zhrnutie
Balík prekladača Spatie's Translation Looker efektívne spája preklady uložené databázou s prekladmi natívnych súborov Laravel tým, že uprednostňujú prioritné položky databázy. To umožňuje dynamickú úpravu prekladov prostredníctvom používateľského rozhrania podporovaného databázou a zároveň ponechať záložné kusy do statických jazykových súborov. Integrácia je plynulá, vyžaduje minimálne zmeny existujúcich prekladových hovorov a ponúka ukladanie do vyrovnávacej pamäte a rozšíriteľnosť pre prípady pokročilého použitia [1] [5] [6] [7].
Citácie:
[1] https://github.com/spatie/laravel-translation-loader
[2] https://spatie.be/docs/laravel-translatable/v6/introdukcia
[3] https://laravel-news.com/translation-loader-package
[4] https://github.com/spatie/laravel-translatable
[5] https://www.laravelblogs.com/courses/multi-manguage-laravel/spatie-laravel-translation-loader
[6] https://packagist.org/packages/spatie/laravel-translation-loader
[7] https://freek.dev/593a-laravel-package-to-store-wanguage-Lines-in-the-database
[8] https://laravaldaily.com/lesson/multi-manguage-laravel/spatie-laravel-translatable