Spatie zpracovává překlady s databázovými i jazykovými soubory primárně prostřednictvím svého balíčku Laravel-Translation-Loader, který se bez problémů integruje s nativním překladačním systémem Laravel.
Jak to funguje při používání souborů databáze i jazyků
- Balíček umožňuje ukládat překlady do databáze pomocí vyhrazené tabulky (`Language_lines`). Každá položka překladu je reprezentována modelovou instancí „jazyk jazyka“, která zahrnuje:
- `Group`: Skupina překladu (např." Validace "nebo" Auth ").
- `Key`: Klíč překladu ve skupině.
- `Text`: Pole drží překlady pro různá lokalita (např.` ['en' => 'Toto je požadované pole', 'nl' => 'dit je een Verplicht Veld] `).
- Když požádáte o překlad pomocí obvyklých funkcí překladu LaRavel jako `trans ()` nebo `__ ()`, balíček nejprve zkontroluje databázi pro překlad. Pokud najde odpovídající položku, vrátí verzi databáze.
- Pokud překlad není v databázi nalezen, spadne zpět do tradičních jazykových souborů uložených v adresáři zdroje Laravel s `.
- To znamená, že překlady databáze přepíše překlady jazykových souborů, pokud existují oba pro stejný klíč a národní prostředí.
- Balíček podporuje překlady založené na skupinách (např. „Validation.Required“) a JSON překlady pomocí speciálního názvu skupiny `'*'` pro překlady JSON.
Další funkce a chování
- Balíčky ukládá skupiny překladů k optimalizaci výkonu a snížení dotazů na databáze při opakovaných požadavcích na překlad. Při vytváření, aktualizovaných nebo odstranění překladů je mezipaměť zneplatněna.
- Je to rozšiřitelné: můžete přidat vlastní poskytovatele překladu (např. YAML, CSV) implementací rozhraní balíčku S `TranslationLoader`, což umožňuje načtení překladů z jiných zdrojů za databázi a jazykové soubory.
- Můžete i nadále používat výchozí překlady LaRavel a direktivy Blade (`@lang`,` trans () `, __ ()`) bez úpravy.
Shrnutí
Balíček Spatie's Translation Loader Efektivně sloučí překlady uložené databáze s nativními překlady založenými na souborech Laravel prioritou položek databáze. To umožňuje dynamické úpravy překladů prostřednictvím databáze podporované uživatelské rozhraní při zachování zálohování do souborů statického jazyka. Integrace je hladká a vyžaduje minimální změny stávajících překladových volání a nabízí ukládání do mezipaměti a rozšiřitelnost pro pokročilé případy použití [1] [3] [5] [6] [7].
Citace:
[1] https://github.com/spatie/laravel-cranslation-loader
[2] https://spatie.be/docs/laravel-cranslatable/v6/introduction
[3] https://laravel-news.com/translation-loader-package
[4] https://github.com/spatie/laravel-nranslatable
[5] https://www.laravelblogs.com/courses/multi-language-laravel/spatie-laravel-translation-loader
[6] https://packagist.org/packages/spatie/laravel-cranslation-loader
[7] https://freek.dev/593-a-laravel-Package-to-Store-Language-lines-in-the-Database
[8] https://laraveldaily.com/lesson/multi-language-laravel/spatie-laravel-cranslatable