Josselin Dionisi - Développeur indépendant

Utilisation des « locales » avec Sylius dans le cadre de plusieurs langues (internationalisation)

ionicons-v5-k Josselin Dionisi 19 avr. 2023
441 lectures Niveau :

Un nouvel article sur Sylius est disponible.

J’étais persuadé vous avoir déjà parlé de Sylius mais il semblerait que non alors c’est parti !

Sylius est une solution e-commerce basée sur notre très cher framework Symfony (lui on vous en a déjà parlé plein de fois sur le blog par contre 😛).

Imaginez donc pouvoir gérer une boutique en ligne et la paramétrer intégralement, le tout en bénéficiant de tous les avantages ainsi que toutes les fonctionnalités permises par Symfony, ça fait rêver non ?

Bon et bien ce n’est pas tout, puisque Sylius est bien pensé et vous permet de gérer plusieurs boutiques en une et ce dans des langues différentes.

Les canaux

Cette notion est appelés Canaux (Channels en anglais) et chaque canal correspond à une boutique tierce. Attention cela peut aussi vouloir dire simplement différencier plusieurs types de boutiques, comme par exemple une boutique physique et sa version en ligne. Les canaux ne sont pas eux-même forcément liés à plusieurs langues.

Lorsque vous installer votre boutique la première fois il faut donc configurer les canaux souhaités. Tout cela se fait dans le back-office de manière simple et intuitive et vous pourrez passer d’un canal à l’autre grâce à la debug toolbar de Symfony (mais si vous savez ce petit rectangle noir en bas de page lorsque vous êtes en mode dév 😛).

Les « locales »

Bon ici par contre on ne va parler que des langues différentes. Il va falloir définir toutes les langues qui seront disponibles sur votre Sylius (toutes boutiques confondues donc). Une fois fait vous pourrez alors associer comme il vous convient chaque langue “active” à l’un de vos canals. Ainsi vous pouvez tout à fait avoir un canal en français et en anglais mais un autre canal seulement en allemand. Toutes les combinaisons différentes sont possibles.

Petite erreur à éviter : Si vous changez la locale principale du canal par défaut vous risquez d’avoir l’erreur “Channel could not be found”. Vérifiez alors que vous avez renseigné un hostname dans le back-office de la boutique (soit localhost soit le domaine du site).

Bon tout ça c’est très bien mais ça reste de la configuration basique dans un panel admin. Nous on est développeurs donc quand est-ce qu’on rentre dans le code ?

Et bien justement pour continuer sur le sujet des canaux et des locales, comment faire pour importer des produits dans Sylius depuis une source externe et les placer correctement dans chaque canal ?

La réponse tient en une entité Symfony...

Les « channel pricing »

En effet si comme pour toute boutique en ligne vous allez devoir configurer des catégories et des produits. L’important dans le cas d’un site multi-lingue (et multi-canal) c’est de pouvoir ajouter des produits à destination de certains publics et avec des données différentes.

Par exemple un prix de 10€ pour un produit en France vaudra 11€ en Espagne. Ce produit pourrait aussi bien ne pas être disponible en Allemagne. Tout cela se paramètre donc via les channel pricing" qui sont la pierre angulaire de votre boutique.

Conclusion

Voilà pour un premier aperçu sur Sylius et sur un cas où la documentation officielle n’est pas forcément très exhaustive. Je ferais certainement d’autres articles sur le même principe afin de vous faire gagner du temps de recherches pour gérer certaines situations. 😀