/Symfony Translation – Do you understand ?
Symfony Logo

Symfony Translation – Do you understand ?

Dans une application web ou un site web, nous sommes toujours confronté à un systèmes 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éfault sur l’application.
  • fallbacks : C’est la traduction du message dans ce language si il ne trouve pas dans la langue souhaite.

Utilisation

Controller

Pour le controller « 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 correspondant.

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 simple, 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 sur plusieurs langues sans problème.