Aperçu
PartitechSonataExtraBundle fournit un moyen pratique de gérer les traductions dans Sonata Admin. Ce bundle inclut deux commandes principales : sonata:extra:translation-create-template et sonata:extra:translation-import-template. Ces commandes facilitent la création et l'importation de traductions, optimisant le processus et en s’intégrant à un service de traduction externe.
Commandes
Commande sonata:extra:translation-create-template
Description
Cette commande prépare votre contenu pour la traduction. Elle crée une structure de répertoires avec des fichiers contenant le texte à traduire.
Usage
bin/console sonata:extra:translation-create-template --site=[SITE_ID] --reference-site=[REFERENCE_SITE_ID] --service="[ADMIN_SERVICE]"
--site: L'ID du site pour lequel les traductions doivent être créées.--reference-site: L'identifiant du site de référence.--service: Le service d'administration pour lequel des traductions sont nécessaires.
Sortie
La commande génère un ensemble de répertoires et de fichiers sous var/cache/translation/YourService/.
Pour chaque identifiant d'article, vous trouverez des fichiers tels que :
payloadArray.txt: Contient des phrases à traduire.payloadArray_translated.json: Pour stocker le contenu traduit.- D'autres fichiers pour gérer le contenu structuré comme le HTML.
Commande sonata:extra:translation-import-template
Description
Cette commande importe le contenu traduit dans votre base de données, reconstruisant la structure HTML.
Utilisation
Après avoir traduit le contenu, exécutez :
bin/console sonata:extra:translation-import-template --service="[ADMIN_SERVICE]"
Aperçu du processus
- Désactiver la traduction automatique : Tout d'abord, assurez-vous que la traduction automatique est désactivée.
- Créer un modèle de traduction : utilisez la commande sonata:extra:translation-create-template pour générer des fichiers de traduction.
- Traduire le contenu : Soumettez le contenu de
payloadArray.txtau service de traduction retenu ou à un traducteur professionnel. Remplissez le contenu traduit dans payloadArray_translated.json. - Gérer le contenu structuré : pour les champs HTML, utilisez field_content_payload.txt pour la traduction et mettez à jour field_content_translation.txt en conséquence.
- Importer des traductions : Exécutez la commande sonata:extra:translation-import-template pour mettre à jour votre contenu avec les nouvelles traductions.
Exemple
# Creating translation templates
bin/console sonata:extra:translation-create-template --site=5 --reference-site=2 --service="Partitech\SonataExtra\Admin\ArticleAdmin"
# Importing translated content
bin/console sonata:extra:translation-import-template --service="Partitech\SonataExtra\Admin\ArticleAdmin"
Gérer le contenu structuré comme le HTML
Lorsqu'on traite des traductions pour des champs de texte contenant du contenu structuré (par exemple, HTML), le PartitechSonataExtraBundle fournit une méthode sophistiquée pour s'assurer que la structure et la mise en forme sont préservées. Cela est particulièrement important pour le contenu incluant des balises HTML, des extraits de code, des images et d'autres médias intégrés.
Comprendre la structure des fichiers
La commande sonata:extra:translation-create-template génère plusieurs fichiers pour aider dans ce processus :
field_content_code_blocks.json: Ce fichier contient des « blocs de code » ou des sections du contenu HTML qui ne doivent pas être traduits. Cela peut inclure des extraits de code réels, des médias intégrés ou d'autres éléments non textuels dans votre contenu HTML.field_content_payload.txt: Ce fichier inclut le texte de votre contenu HTML qui nécessite une traduction. Avant de créer ce fichier, le bundle extrait les éléments non traduisibles (comme ceux dans field_content_code_blocks.json) et les remplace par des espaces réservés. Cette extraction garantit que seul le texte nécessaire est traduit, optimisant à la fois la qualité et le coût de la traduction.field_content_translation.txt: Après avoir traduit le contenu dansfield_content_payload.txt, le texte traduit doit être placé dans ce fichier.
Le processus de traduction
Voici un aperçu détaillé de la façon dont le processus de traduction fonctionne pour le contenu structuré :
- Extraire les éléments non traduisibles : Le bundle identifie et extrait les parties du contenu HTML qui n'ont pas besoin d'être traduites (par exemple, les blocs de code, les images) et les stocke dans field_content_code_blocks.json. Ces éléments sont remplacés par des espaces réservés dans le texte HTML.
- Le contenu textuel à traduire, désormais exempt des éléments non textuels, est placé dans field_content_payload.txt. Ce texte doit être soumis pour traduction.
- Réinsérer le texte traduit : Une fois traduit, le nouveau texte est inséré dans field_content_translation.txt.
- Reconstruire le contenu HTML : Lors du processus d'importation (sonata:extra:translation-import-template), le bundle réassemble le contenu HTML. Il combine le texte traduit de field_content_translation.txt avec les éléments non traduisibles de field_content_code_blocks.json, en remplaçant les espaces réservés par leur contenu original.
Conclusion
Cette fonctionnalité simplifie le processus de traduction dans Sonata Admin, s'intégrant parfaitement aux outils de traduction externes et garantissant une gestion efficace du contenu.
Adapter l’exemple à la version installée
Les exemples Symfony et Sonata restent attachés aux versions indiquées dans l’article. Symfony 4.x et Symfony 6.2 ne sont plus maintenus : pour un projet actuel, utilisez une branche maintenue et la documentation correspondant exactement à vos dépendances.
php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle
Avant de reprendre le code, contrôlez les signatures, les services, les routes et les templates concernés. Ajoutez ensuite un test fonctionnel couvrant les autorisations, le code HTTP et le résultat visible.
Référence : versions Symfony maintenues.