/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è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.