Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Wie behandelt Spatie Übersetzungen, wenn sowohl Datenbank- als auch Sprachdateien verwendet werden?


Wie behandelt Spatie Übersetzungen, wenn sowohl Datenbank- als auch Sprachdateien verwendet werden?


Spatie behandelt Übersetzungen mit Datenbank- und Sprachdateien hauptsächlich über sein Laravel-Translation-Loader-Paket, das nahtlos in das native Übersetzungssystem von Laravel integriert wird.

Wie es funktioniert, wenn sowohl Datenbank- als auch Sprachdateien verwendet werden

- Mit dem Paket können Sie Übersetzungen in der Datenbank mithilfe einer dedizierten Tabelle (`Language_lines`) speichern. Jeder Übersetzungseintrag wird durch eine "Languageline" -Modellinstanz dargestellt, einschließlich:
- `Group`: Die Übersetzungsgruppe (z. B." Validierung "oder" Auth ").
- `key`: Der Übersetzungsschlüssel innerhalb der Gruppe.
- `text`: Ein Array, das Übersetzungen für verschiedene Orte hält (z. B.` ['en' => 'Dies ist ein erforderliches Feld', 'nl' => 'dit ist een verplicht veld'] `).

- Wenn Sie eine Übersetzung mit den üblichen Übersetzungsfunktionen von Laravel wie `trans ()` oder __ () `anfordern, überprüft das Paket zunächst die Datenbank für die Übersetzung. Wenn es einen passenden Eintrag findet, wird die Datenbankversion zurückgegeben.

- Wenn die Übersetzung in der Datenbank nicht gefunden wird, fällt sie auf die traditionellen Sprachdateien zurück, die im Verzeichnis von Laravel 'Ressourcen/Lang` gespeichert sind.

- Dies bedeutet, dass Datenbankübersetzungen Sprachdateiübersetzungen überschreiben, wenn beide für denselben Schlüssel und für denselben Gebietsschema vorhanden sind.

- Das Paket unterstützt sowohl gruppenbasierte Übersetzungen (z. B. "Validation.Required") als auch JSON-Übersetzungen mit einem speziellen Gruppennamen "*" für JSON-Übersetzungslinien.

Zusätzliche Funktionen und Verhalten

- Das Paket speichert Gruppen von Übersetzungen zur Optimierung der Leistung und reduziert Datenbankabfragen bei wiederholten Übersetzungsanforderungen. Der Cache wird ungültig, wenn Übersetzungen erstellt, aktualisiert oder gelöscht werden.

- Es ist erweiterbar: Sie können benutzerdefinierte Übersetzungsanbieter (z. B. YAML, CSV) hinzufügen, indem Sie das Paket "Translationloader" -Rinterface implementieren, sodass Übersetzungen aus anderen Quellen über die Datenbank- und Sprachdateien hinaus geladen werden können.

- Sie können die Standard -Übersetzungshelfer und Blade -Direktiven (@@Lang`, `trans ()`, `__ ()`) ohne Änderung weiterhin verwenden.

Zusammenfassung

Das Spatie's Translation Loader-Paket verschiebt effektiv mit den nativen Datei-basierten Übersetzungen von LaRavel mit Datenbank-gestellten Übersetzungen durch Priorisierung von Datenbankeinträgen. Dies ermöglicht eine dynamische Bearbeitung von Übersetzungen über eine von der Datenbank unterstützte Benutzeroberfläche und behält den Fallback an statische Sprachdateien bei. Die Integration ist reibungslos und erfordert minimale Änderungen an vorhandenen Übersetzungsaufrufen und bietet Caching und Erweiterbarkeit für fortgeschrittene Anwendungsfälle [1] [3] [5] [6] [7].

Zitate:
[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-language-laravel/spatie-laravel-translation-loader
[6] https://packagist.org/packages/spatie/laravel-translation-loader
[7] https://freek.dev/593-a-laravel-package-t-stor-language-in-in-database
[8] https://laraveldaily.com/lesson/multi-language-laravel/spatie-laravel-translatable