Depuis Symfony 2.x, le framework propose la commande translation:extract
pour extraire tout le contenu traduisible des templates Twig et du code PHP.
Si vous n’êtes pas familier avec le composant traduction de Symfony, je vous invite à consulter la documentation officielle.
Pour parcourir ces nouveautés j’ai créé un mini projet en Symfony 7.2 avec un Controller et un template Twig qui contiennent tous deux des traductions à compléter.
Controller :
Les traductions ont été ajoutées en désordre afin d’utiliser une nouvelle fonctionnalité plus tard.
Twig :
Tri par ordre alphabétique des traductions
Grâce à Daniel Gorgan, la commande translation:extract
inclut désormais une option --sort
(asc ou desc) pour afficher le contenu traduit trié alphabétiquement lors de l’affichage des messages dans le terminal :
J’avais sciemment déclaré mes traductions dans le désordre dans le template et dans le code.
Après cette commande nous voyons que l’output de la commande affiche les traductions dans l’ordre alphabétique croissant :
Depuis Symfony 7.2, cette option s’applique également aux fichiers de traduction. En l’utilisant en combinaison avec l’option --force
, vous pouvez maintenant trier le contenu du fichier de traduction par ordre alphabétique :
Exemple d’une partie de fichier de traduction en français après la commande :
Comme vous pouvez le constater les traductions ont été créées dans l’ordre alphabétique.
Les développeurs gagnent ainsi en visibilité lors de la complétion des traductions notamment pour les applications web avec des milliers de traductions.
Nouveau format des traductions à compléter
Par défaut, lorsque la commande translation:extract
trouve un nouveau contenu, elle crée une nouvelle entrée de traduction en utilisant le même contenu comme source et comme traduction en attente. Par exemple, si votre application utilise le format XLIFF pour les traductions et que les templates utilisent des clés de traduction au lieu de contenu réel, vous verrez des entrées comme celle-ci dans le fichier de traduction :
Le préfixe __
est ajouté pour vous aider à repérer rapidement le contenu non traduit dans votre application. Avec la version 7.2, vous pouvez également laisser la traduction en attente complètement vide lors de la création de nouvelles entrées dans le fichier de traduction.
Pour ce faire, Jawira Portugal a introduit la nouvelle option --no-fill
dans Symfony 7.2.
Je vais maintenant créer les traductions en espagnol avec cette option (toujours par ordre alphabétique) :
On remarque que les nouvelles entrée de traductions ont cette forme :
Les développeurs peuvent identifier clairement toutes les traductions manquante en recherchant « <target><target/> » au lieu de « __ ».
Lors de la complétion de ces traductions j’ai gagné au moins une dizaine de secondes sur 11 traductions car je n’avais pas besoin de supprimer la valeur par défaut dans les balises target.
Le gain de temps devient important lors de l’ajout de nombreuses traductions ou d’une nouvelle langue.
Le nouveau linter de traductions
Avant les linters, lorsqu’une configuration de traduction (yaml, xliff, etc..) était erronée il était parfois difficile de retrouver la ligne où se trouvait l’erreur de configuration.
Les linters sont des outils d’analyse de code statique utilisés pour repérer les erreurs, notamment les problèmes de syntaxe et de style. Symfony inclut plusieurs commandes de linter pour vérifier les fichiers de configuration YAML lint:yaml
, les services du container lint:container
, les templates Twig lint:twig
, et même la syntaxe des fichiers de traduction XLIFF lint:xliff
.
Depuis la contribution de Hugo Alliaume sur Symfony 7.2, un nouveau linter permet de vérifier le contenu des traductions. Contrairement à la commande lint:xliff
, cette nouvelle commande lint:translations
vérifie toutes vos traductions, quel que soit le format de traduction supporté :
Pour limiter le linter aux locales de votre choix l’option --locale
peut être utilisée:
Comme vous pouvez le voir la traduction erronée est directement identifiée sur la clé « C translation ». Les développeurs identifient désormais clairement où est le problème et peuvent corriger rapidement la traduction.
👉 Les améliorations apportées à la gestion des traductions dans Symfony 7.2 représentent un véritable gain de temps pour les développeurs. Les nouvelles options de tri et de formatage, avec notamment l’option --no-fill
, permettent de gérer les fichiers de traduction de manière plus efficace. En complément , le nouveau linter lint:translations
offre un niveau de contrôle supplémentaire pour repérer les erreurs de format plus rapidement.
Sources
https://symfony.com/blog/new-in-symfony-7-2-translations-linter
https://symfony.com/blog/new-in-symfony-7-2-improved-translation-extractor
https://symfony.com/doc/7.2/translation.html