multilingue

Anticiper le multilingue pour votre site Prestashop

Voici quelque chose que je constate régulièrement chez les clients… vouloir faire du multilingue, mais finalement on peut pas le faire tout de suite. Et donc il faut penser à ajuster votre boutique en conséquence.

Nous sommes tous pressés

Dans chaque projet client, je constate toujours le même cheminement… on voit très grand au début… le temps file et pour finir on n’est pas prêt dans les temps. Typiquement le fait d’avoir sa boutique en plusieurs langues demande un gros travail côté marchand.

Assez souvent je vois le cas arriver… « Bon on se lance avec une langue et on verra le reste après ». Et là on envisage par exemple de désactiver les langues inutilisées dans le back-office afin qu’elles soient masquées.

Ce n’est pas forcément une bonne idée de désactiver les langues, parce que par défaut quand vous avez plusieurs langues, il y’a toujours le préfixe affiché dans l’url (ex. /fr), si vous laissez une seule langue active vous n’aurez plus ce préfixe.

Préfixe ou pas quelle importance ? En fait par la suite quand vous activerez les autres langues… les urls de bases qui étaient par ex. « prestashop_1_6_1_5/3-femmes » vont devenir « /prestashop_1_6_1_5/fr/3-femmes » et vous aurez pleins de liens morts et il faudra corriger tous les liens + perturbation au niveau du référencement.

Urls Prestashop
Les urls de Prestashop utilisent un préfixe de langue seulement si vous avez « plusieurs » langues. Un détail, mais qui peut poser ensuite des problèmes et générer des erreurs 404 (1 = avec le multilingue, 2 = une seule langue).

Voici une manière de faire

1) Pour éviter les perturbations, je vous propose donc de laisser les langues activées dans le back-office et de commencer par désactiver le bloc « sélecteur de langue » dans les modules de Prestashop.

2) Au niveau du sitemap, on va donner à Google uniquement la version « fr » de notre site (qui elle est terminée), pour cela on va modifier le fichier « modules\gsitemap\gsitemap.php » (module officiel du sitemap) et après cette ligne (vers 707):

$languages = Language::getLanguages(true, $id_shop);

On ajout le code suivant :

// Webbax - 28.04.17 - retrait langues non utilisées
$langs_auth = array('fr');
foreach($languages as $k => $l){
    if(!in_array($l['iso_code'],$langs_auth)){
        unset($languages[$k]);
    }
}
// --

Dans la variable « $langs_auth » je mentionne d’autoriser que le français, cela autorisera le module à générer le sitemap uniquement dans cette langue et on évitera donc de donner à Google un sitemap avec des pages de langue qui ne sont pas encore prêtes.

3) Au niveau du robots.txt qui est à la racine de votre site sur votre FTP, il faudrait ajouter les règles suivantes (ajoutez ce code idéalement après la mention « User-agent: * »).

# Webbax désactiver l'indexation des autres langues
Disallow: /de/
Disallow: /en/
Disallow: /it/

Si vous n’avez pas de fichier « robots.txt » à la racine de votre boutique, pensez à le générer la documentation Prestashop pourra vous renseigner pour la génération.

Google Webmaster Robots.txt
Dans la console Google Webmaster je peux vérifier si une url contenant le « /de/ » est autorisée. Ici l’url retourne un blocage c’est exactement ce que l’on veut.

Indexer du contenu pas traduit

Si on ne fait rien (uniquement désactiver le bloc des langues), le problème qui peut survenir c’est d’avoir du contenu indexé dans Google, alors que cela n’est pas encore terminé. Est-ce grave ? Ce n’est pas vraiment bon, car Google pourrait vous pénaliser pour du contenu dupliqué.

Il faut que Google absorbe le contenu lorsque celui-ci est prêt, car par défaut quand on crée du texte dans Prestashop, celui-ci est automatiquement « copié » dans les autres langues (indexer du français dans plusieurs langues n’est pas vraiment une bonne idée).

Contenu non-traduit
Il est préférable de ne pas indexer le contenu « partiellement traduit » (ici du français dans l’allemand). Je préconiserai d’attendre que toutes les traductions soient bien terminées avant d’activer l’affichage des langues pour Google.

Bilan

Et après on fait quoi ? Hé bien, lorsque vous êtes prêts avec vos langues secondaires, il suffit de retirer les deux correctifs ci-dessus. Parfois on ne pense pas vraiment à ce genre de problématique, mais Google reste un robot très basique… il faut lui faciliter le travail. Actuellement avec Prestashop, si vous pensez faire du multilingue, assurez-vous donc de toujours avoir le préfixe de langue dès le départ, mais limitez l’accès aux langues secondaires.

Notez mon billet, Google va adorer :
1 étoiles - J'aime pas !2 étoiles - Bof !3 étoiles - Bien !4 étoiles - Très bien !5 étoiles - Génial ! (8 votes, moyenne : 4,38 sur 5)
Loading...

10 commentaires sur “Anticiper le multilingue pour votre site Prestashop”

  1. Bonjour, j’ai installé un module hreflang pour google, car ça manquait sur mon site souriredessaveurs.com . Seulement je me retrouve avec quelques erreurs chez google (aucune balise de renvoi), pas énormément d’erreur, mais qui me fait poser cette question : dans localisation/langue les codes de langue par défaut avec prestashop sont par exemple pour la France fr-fr, ne vaudrait-il pas mieux le modifier en fr ? Car il me semble que cela voudrait exclure, pour ce cas les pays francophones et ne laisser google qu’informer les Français de France ? Que me suggérez-vous ? merci

    1. Bonjour,

      Normalement cela se gère dans la partie « Paramètres de la boutique -> Trafic et SEO » (sous Prestashop 1.7). En standard je conseille de ne pas mettre le « www », car selon les standards actuels cela n’est plus forcément recommandé.

      A bientôt !

  2. Bonjour,
    Vraiment, j’adore ton site, et les bons tutos que tu mets en ligne chaque semaine, une vraie mine d’or !
    En ce qui concerne le multilangue, j’y suis confrontée et avait déjà mis en place ta solution.
    Le souci qui persiste et que dans l’url si je remplace manuellement le fr par en, j’accède aux pages.
    Alors j’ai fait une redirection dans le htaccess avec ce code Options +FollowSymLinks
    RewriteRule ^en.*$ https://monsite.com/fr/ [R=301,L]
    Ca marche, mais le pb est que ce code semble me pénaliser quand je page sur l’outil google Pagespeed. En effet, sans ce code, je gagne environ 18 points, ce qui n’est pas rien.
    Quelle autre solution pour rediriger temporairement ces pages en vers le fr le temps que mes traductions soient prêtes ?
    Merci !

    1. Hello,

      Merci pour le retour positif, concernant cela me semble étrange que la perte soit aussi importante… il faudrait quand même vérifier si dans l’url il n’y a pas encore d’autres fois la chaine « en » (ex. dans le nom de domaine). A vérifier aussi sur la redirection s’il y a réellement le « www » au site ou non… Il est possible que la règle RewriteRule est trop large (mais j’avoue que les expressions régulières c’est pas mon fort ;))

      A bientôt !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *