Dans une application web ou un site web, nous sommes toujours confronté à un système multi-langue à mettre en place. Avec le composant Translation de Symfony, vous pouvez résoudre cette problématique avec facilité.
Installation
Pour l’installer, vous allez utiliser composer.
composer require symfony/translation
Configuration
Lors de l’installation via la commande ci-dessus, il va créer dans notre dossier config un fichier translation.yaml.
Pour plus d’information :
- default_locale: C’est le langage par défaut sur l’application.
- fallbacks : C’est la traduction du message dans ce langage si il ne trouve pas dans la langue souhaitée.
Utilisation
Contrôleur
Pour le contrôleur “HomeController”, vous voudrez avoir la bonne traduction pour la clé de traduction welcome. Vous allez crée un fichier Yaml qui permet de déclarer cette clé avec la traduction correspondante.
Pour une traduction en français :
Pour une traduction en anglais :
Comme on peut le constater, dans les noms de fichiers de traductions on a une extension fr ou en.
Il vient de la variable locale de l’utilisateur, par exemple : X est belge, donc sa locale sera : fr_BE. Les deux premières lettres sont l’indicateur pour la traduction.
Si toute fois, l’utilisateur n’est pas fr ou en, la default_locale que vous avez configuré précédemment fera le nécessaire.
Vous pouvez aussi l’utiliser directement sur votre fichier twig.
Encore plus loin
Désormais qu’on peut traduire des phrases simples, allons plus loin dans les traductions comme par exemple mettre des variables.
Dans un contrôler et dans le fichier Twig, comment on peut injecter la variable dans la traduction :
N’hésitez pas de regarder la documentation Symfony concernant les traductions : https://symfony.com/doc/current/translation.html
Et celui de twig : https://symfony.com/doc/current/translation/templates.html
Désormais, vous pouvez traduire votre site en plusieurs langues sans problème.
Sympa ce petit blog, ça me permet d’aborder une fonctionnalité plus facilement qu’avec le doc 😉
Bonjour,
merci pour ce blog, existe-t-il un article sur comment traduire du contenu qui est en base de données et qui doit s’afficher dans une liste par exemple ?
Bonjour,
Merci pour votre commentaire, je ne pense pas que cela existe. Mais si toute fois je trouve une méthode je mettrai un article pour cela.