Créer le module de traduction

Publié le


Générer le module FrenchRouting

Ouvrez votre terminal, placez-vous à la racine de votre installation Thelia et saisissez la commande suivante :

php Thelia module:generate FrenchRouting

La console de Thelia va générer pour vous l'ensemble des répertoires et fichiers nécessaires au bon fonctionnement de votre module.

Néanmoins, nous allons faire un peu de ménage pour l'alléger car nous n'allons pas avoir besoin de tous ce qui est généré.

En effet, vous pouvez supprimer les répertoires suivants :

  • AdminIncludes
  • Command
  • Controller
  • EventListeners
  • Hook
  • i18n
  • Loop
  • templates

Au niveau des fichiers, vous pouvez supprimer Config/schema.xml car nous n'avons pas besoin de base de données.

Attention à bien laisser le fichier Config/config.xml car il est obligatoire pour l'activation du module même si on ne s'en sert pas ici.

Mettez ensuite à jour le fichier Config/module.xml avec les informations de votre module.

Voici un exemple :

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="http://thelia.net/schema/dic/module"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://thelia.net/schema/dic/module http://thelia.net/schema/dic/module/module-2_1.xsd">
    <fullnamespace>FrenchRouting\FrenchRouting</fullnamespace>
    <descriptive locale="en_US">
        <title>French translation of Thelia core routing.</title>
    </descriptive>
    <descriptive locale="fr_FR">
        <title>Traduction française des urls du core de Thelia.</title>
    </descriptive>
    <languages>
        <language>en_US</language>
        <language>fr_FR</language>
    </languages>
    <version>1.0.0</version>
    <author>
        <name>Votre nom</name>
        <email>email@domain.com</email>
    </author>
    <type>classic</type>
    <thelia>2.1.0</thelia>
    <stability>prod</stability>
</module>

Il ne vous reste plus qu'à vous rendre dans votre panel d'administration afin d'activer le module FrenchRouting.

Traduire les urls anglaises du core de Thelia

Pour modifier les URLs du core de Thelia, nous allons d'abord devoir les récupérer. Copiez donc le contenu intégral du fichier local/modules/Front/Config/routing.xml dans le fichier Config/routing.xml de votre module.

Maintenant, prenons par exemple la page d'enregistrement accessible via l'url /register.

Voici la route actuelle correspondante :

<!-- Register -->
<route id="customer.create.view" path="/register" methods="get">
    <default key="_controller">Front\Controller\CustomerController::viewRegisterAction</default>
</route>

<route id="customer.create.process" path="/register" methods="post">
    <default key="_controller">Front\Controller\CustomerController::createAction</default>
    <default key="_view">register</default>
</route>

Il vous suffit de modifier l'id et le path, comme ceci par exemple :

<!-- Register -->
<route id="fr.customer.create.view" path="/inscription" methods="get">
    <default key="_controller">Front\Controller\CustomerController::viewRegisterAction</default>
</route>

<route id="fr.customer.create.process" path="/inscription" methods="post">
    <default key="_controller">Front\Controller\CustomerController::createAction</default>
    <default key="_view">register</default>
</route>

Il ne vous reste plus qu'à enregistrer et votre nouvelle URL française /inscription sera disponible.

Si vous testez sans être sur l'environnement de développement (index_dev.php), vous ne verrez aucune modification car il faut vider le cache interne de Thelia.

Pour ce faire, rien de plus simple, soit vous utilisez la fonctionnalité présente en back-office au niveau de la configuration avancée, soit vous utilisez votre terminal comme suit :

rm -rf cache/prod/*

Il vous faudra peut-être l'exécuter en sudo.

Astuce : Se mettre en index_dev.php pour éviter le cache interne de Thelia.

Maintenant que votre cache est vide, allez tester votre nouvelle URL !

Voilà, il ne vous reste plus qu'à modifier toutes les autres déclarations afin que toutes les URLs du core de Thelia soient accessible en français.

Modifier les templates pour appeler les nouvelles URLs

Pour le moment, les liens HTML ainsi que les URLs des retours des formulaires appellent toujours les URLs anglaises. Il faut donc modifier dans les templates l'appel aux URLs via {url path} et {success_url} pour les mettre en français.

Attention, les URLs d'origine restent accessibles si on les saisit directement dans la barre d'adresse.

À vous de voir si vous souhaitez les utiliser pour une boutique multilingue et dans ce cas, modifier les liens en fonction de la langue détectée, ou bien si vous voulez les « supprimer » (par des redirections 301).

Ajouter votre commentaire

Les commentaires

Search