Spatie gère les traductions avec les fichiers de base de données et de langage principalement via son package Laravel-Translation-chargeur, qui s'intègre parfaitement au système de traduction natif de Laravel.
Comment cela fonctionne lors de l'utilisation des fichiers de base de données et de langue
- Le package vous permet de stocker des traductions dans la base de données à l'aide d'une table dédiée (`Language_lines`). Chaque entrée de traduction est représentée par une instance de modèle «Languageline», qui comprend:
- `Group`: le groupe de traduction (par exemple," validation "ou" auth ").
- «Key»: la clé de traduction au sein du groupe.
- `Text`: un tableau détenant des traductions pour différents lieux (par exemple,` ['en' => 'Ceci est un champ requis', 'nl' => 'Dit est een verplicht veld'] `).
- Lorsque vous demandez une traduction en utilisant des fonctions de traduction habituelles de Laravel comme `trans ()` ou `__ () ', le package vérifie d'abord la base de données pour la traduction. S'il trouve une entrée correspondante, il renvoie la version de la base de données.
- Si la traduction n'est pas trouvée dans la base de données, elle retombe dans les fichiers linguistiques traditionnels stockés dans le répertoire «Resources / Lang» de Laravel.
- Cela signifie que les traductions de la base de données remplacent les traductions de fichiers linguistiques si les deux existent pour la même clé et les mêmes paramètres.
- Le package prend en charge les traductions basées sur des groupes (par exemple, `Validation.Required`) et les traductions JSON en utilisant un nom de groupe spécial` '*' 'pour les lignes de traduction JSON.
fonctionnalités et comportements supplémentaires
- Le package cache des groupes de traductions pour optimiser les performances, réduisant les requêtes de base de données sur les demandes de traduction répétées. Le cache est invalidé lorsque les traductions sont créées, mises à jour ou supprimées.
- Il est extensible: vous pouvez ajouter des fournisseurs de traduction personnalisés (par exemple, YAML, CSV) en implémentant l'interface `TraductionLoader 'du package, permettant de charger des traductions à partir d'autres sources au-delà de la base de données et des fichiers linguistiques.
- Vous pouvez continuer à utiliser les aides de traduction par défaut de Laravel et les directives de lame (`@ lang`,` trans () ', `__ ()`) sans modification.
Résumé
Le package de chargeur de traduction Spatie fusionne efficacement les traductions stockées par la base de données avec les traductions basées sur des fichiers natives de Laravel en hiérarchisant les entrées de base de données. Cela permet l'édition dynamique des traductions via une interface utilisateur soutenue de la base de données tout en conservant les fichiers de langue statique. L'intégration est fluide, nécessitant des modifications minimales des appels de traduction existants et offre une mise en cache et une extensibilité pour les cas d'utilisation avancés [1] [3] [5] [6] [7].
Citations:
[1] https://github.com/spatie/laravel-translation-loaddeur
[2] https://spatie.be/docs/Laravel-transplatable/v6/introduction
[3] https://laravel-news.com/translation-loader-package
[4] https://github.com/spatie/laravel-transplatable
[5] https://www.laravilblogs.com/courses/multi-language-laravel/spatie-laravel-translation-loadher
[6] https://packagist.org/packages/spatie/laravel-translation-loadher
[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-transplatable