Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Cum se utilizează Spatie traducerile atunci când sunt utilizate atât fișiere de bază, cât și fișiere de limbă


Cum se utilizează Spatie traducerile atunci când sunt utilizate atât fișiere de bază, cât și fișiere de limbă


Spatie gestionează traduceri atât cu fișierele de bază de date, cât și cu fișierele de limbă în primul rând prin pachetul său Laravel-Translarea-Loader, care se integrează perfect cu sistemul de traducere nativ al Laravel.

Cum funcționează atunci când utilizați atât fișiere de bază de date, cât și limbaj

- Pachetul vă permite să stocați traduceri în baza de date folosind un tabel dedicat (`Language_lines`). Fiecare intrare de traducere este reprezentată de o instanță de model „LanguageLine”, care include:
- `Group`: Grupul de traducere (de exemplu,„ Validare ”sau„ Auth ”).
- `cheie`: tasta de traducere din cadrul grupului.
- `text`: un tablou care deține traduceri pentru diferite localuri (de exemplu,` ['en' => 'Acesta este un câmp necesar', 'nl' => 'dit este een verplicht veld'] `).

- Când solicitați o traducere folosind funcții de traducere obișnuite ale lui Laravel, cum ar fi `trans ()` sau `__ ()`, pachetul verifică mai întâi baza de date pentru traducere. Dacă găsește o intrare potrivită, returnează versiunea bazei de date.

- Dacă traducerea nu se regăsește în baza de date, aceasta revine la fișierele de limbă tradiționale stocate în directorul Laravels S `Resources/Lang`.

- Aceasta înseamnă că traducerile bazelor de date înlocuiesc traducerile de fișiere de limbă dacă ambele există pentru aceeași cheie și local.

- Pachetul acceptă atât traduceri bazate pe grup (de exemplu, `validare.required`), cât și traduceri JSON folosind un nume special de grup` '*' 'pentru liniile de traducere JSON.

Caracteristici și comportament suplimentar

- pachetele cache -uri de traduceri pentru a optimiza performanța, reducând întrebările bazelor de date la cererile de traducere repetate. Cache -ul este invalidat atunci când traducerile sunt create, actualizate sau șterse.

- Este extensibil: puteți adăuga furnizori de traduceri personalizate (de exemplu, YAML, CSV) prin implementarea interfeței pachetului S `TranslationLoader`, permițând încărcarea traducerilor din alte surse dincolo de baza de date și fișierele de limbă.

- Puteți continua să utilizați ajutoarele de traducere implicite ale Laravelului și directivele BLADE (`@Lang`,` trans () `,` __ () `) fără modificări.

Rezumat

Pachetul de încărcătoare de traducere Spatie îmbină efectiv traducerile stocate în baza de date cu traducerile native bazate pe fișiere Native, prin prioritizarea intrărilor în baze de date. Aceasta permite editarea dinamică a traducerilor prin intermediul unei UI susținută de baza de date, păstrând în același timp căderea în fișierele de limbă statică. Integrarea este lină, necesitând modificări minime ale apelurilor de traducere existente și oferă memorie în cache și extensibilitate pentru cazuri de utilizare avansată [1] [3] [5] [6] [7].

Citări:
[1] https://github.com/spatie/laravel-translation-loader
[2] https://spatie.be/docs/laravel-translatable/v6/introduction
[3] https://laravel-news.com/translation-loader-package
[4] https://github.com/spatie/laravel-translatable
[5] https://www.laravelblogs.com/courses/multi-manguage-lavell/spatie-lavell-translation-loader
[6] https://packagist.org/packages/spatie/lavell-translation-loader
[7] https://freek.dev/593-a-lauvel-package-to-tore-manguage-lines- in-the-database
[8] https://laveldaily.com/lesson/multi-manguage-lavell/spatie-lavell-translatable