Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Comment Spatie gère-t-elle les traductions lorsque le paramètre de l'application change-t-il


Comment Spatie gère-t-elle les traductions lorsque le paramètre de l'application change-t-il


Spatie gère les traductions dans les applications de Laravel en intégrant avec le système de localisation de Laravel et en fournissant des moyens flexibles de stocker et de récupérer des traductions en fonction des paramètres régionaux actuels de l'application.

Comment Spatie gère les traductions lorsque le paramètre de l'application change

1. Stockage de traduction et récupération

- Spatie propose un package appelé Laravel-Translation-chargeur qui permet de stocker des traductions dans une base de données au lieu de seulement des fichiers linguistiques. Ce package remplace le fournisseur de services de traduction par défaut de Laravel par le fournisseur de Spatie, permettant aux traductions d'être récupérées dynamiquement à partir de la base de données [1].
- Les traductions sont stockées dans un tableau (généralement `Language_lines`) où chaque entrée contient un groupe (comme" validation "), une clé (comme" requise "), et un objet JSON détenant des traductions pour plusieurs locaux (par exemple,` 'en' => 'Ceci est un champ requis', 'nl' => 'Dit est een verplicht Veld') [1].
- Lorsque vous appelez la fonction de Laravel `__ ()` avec une clé de traduction, le chargeur de Spatie récupère la traduction pour l'ensemble des paramètres régionaux actuels dans l'application. Par exemple, si le paramètre local de l'application est `'nl'`,` __ (' validation.requure ') `Renvoie la traduction néerlandaise de la base de données [1].

2. Commutation des paramètres régionaux

- Le paramètre des paramètres de l'application peut être modifié à l'exécution à l'aide de la méthode `app () -> setLocale ('LOCALE_CODE')` Méthode.
- Une fois le lieu modifié, toutes les récupérations de traduction ultérieures via `__ () 'ou d'autres fonctions de traduction renvoie automatiquement le texte dans les paramètres locaux nouvellement définis.
- Si une traduction est manquante pour les paramètres régionaux actuels dans la base de données, le mécanisme local de secours de Laravel peut renvoyer la traduction du paramètre par défaut, sauf si explicitement désactivé [1] [8].

3. Traductions au niveau du modèle avec JSON Storage

- Un autre package spatie, traditionnel par laravel, est conçu pour que les modèles éloquents rendent les attributs traduisibles.
- Les traductions sont stockées sous forme de JSON dans une seule colonne de base de données par attribut transltable, sans avoir besoin de tables supplémentaires [3].
- Lorsque le paramètre régional de l'application change, l'accès à un attribut traduisible sur le modèle renvoie automatiquement la valeur des paramètres régionaux actuels. Par exemple, `$ Newsitem-> name` renvoie la traduction de l'ensemble des paramètres régionaux actuels dans l'application [4].
- Vous pouvez explicitement obtenir ou définir des traductions pour des localités spécifiques en utilisant des méthodes comme `GetTranslation (attribut, paramètres régionaux)» et `setTranslation (attribut, paramètres régionaux, valeur)` [4].

4. Fallback et traductions manquantes

- Le package traduisible de Spatie prend en charge les lieux de secours, donc si une traduction est manquante pour les paramètres régionaux actuels, il peut renvoyer la traduction d'un autre paramètre (généralement par défaut) [8].
- Ce comportement peut être contrôlé en passant un drapeau booléen à «Gettranslation» pour désactiver la secours et obtenir une chaîne vide si la traduction est manquante [8].

Résumé

Lorsque les paramètres régionaux de l'application changent, les packages de traduction de Spatie servent automatiquement la traduction appropriée à partir de lignes de langue stockées par la base de données ou d'attributs de modèle stockés par JSON, en tirant parti du paramètre de paramètre local de Laravel. Cette intégration transparente garantit que les fonctions de récupération de traduction renvoient la chaîne localisée correcte basée sur le paramètre local de l'application actuel, avec des mécanismes de secours disponibles si une traduction est manquante.

Cette approche permet une commutation des paramètres régionaux dynamique à l'exécution et prend en charge le stockage des traductions de manière flexible, soit dans les tables de base de données ou les colonnes JSON, selon le package utilisé.

Références: [1] [3] [4] [8]

Citations:
[1] https://github.com/spatie/laravel-translation-loaddeur
[2] https://spatie.be/docs/Laravel-transplatable/v6/introduction
[3] https://github.com/spatie/laravel-transplatable
[4] https://spatie.be/docs/laravel-translatable/v6/basic-usage/getting-and-settings-translations
[5] https://filamentphp.com/plugins/filament-spatie-translableable
[6] https://github.com/filamentphp/filament/discussions/6913
[7] https://laraveldaily.com/lesson/multi-language-laravel/spatie-laravel-translation-loadher
[8] https://stackoverflow.com/questions/65252615/spatie-laravel-translatable-shows-the-default-locale-when-i-ryth