Wordpress: comment faire un site polyglotte ?
Dernièrement intéressé par la mise en ligne d’un site multilingue sous Wordpress, je me suis donc penché sur le sujet. Mon but était de disposer d’un site traduit dans plusieurs langues mais qui conservait malgré tout une certaine sépration entre le contenu traduit. Chaque contenu devait conserver une certaine indépendance. Par exemple, je souhaitais avoir une séparation du contenu, des intéractions (notamment pour les commentaires) et donc des utilisateurs.
Ainsi, en essayant de respecter au maximum ces besoins, j’ai mené différentes recherches et plusieurs tests autour des possibilités offertes par Wordpress et ses plugins. J’ai fini par déployer Wordpress en multisite et en multilingue, avec un thème et un plugin gratuit. Comment j’en suis venu à ce choix personnel (qui n’engage que moi, ici je ne fais que présenter une possibilité parmi tant d’autres) ? Voici mon cheminement.
Wordpress et la gestion des langues
Dans un premier temps il convient, je pense, de faire un point sur le fonctionnement de Wordpress au niveau des langues.
Pour rappel Wordpress est le CMS Open Source le plus utilisé dans le monde, il est naturellement utilisé par de multiples personnes parlant toutes sortes de langues. En toute logique, Wordpress est donc traduit dans de nombreuses langues. Bien entendu la langue de Shakespeare demeure la principale (par défaut).
Quoi qu’il en soit, créer un site Wordpress dans sa langue peut se faire de différentes façons :
- soit en récupérant directement Wordpress dans la langue souhaitée (https://fr.wordpress.org/txt-download/),
- soit en récupérant Wordpress “original” en anglais (https://wordpress.org/download/) et son paquet de langue additionnel (http://wpcentral.io/internationalization/).
Ici, je ne présenterai pas l’installation de Wordpress. Pour cela vous pouvez vous rendre sur la documentation officielle.
Selon la méthode choisie, la langue principale par défaut de Wordpress ne sera pas la même. Rien n’est définitif et cela ne pose pas de véritable problème par la suite de changer de langue.
Pour détailler la gestion des packs de langue sous Wordpress, après avoir vu le choix de l’installation de Wordpress dans une langue, je m’attaque au déploiement en tant que tel d’un paquet de langue.
En quelques mots, Wordpress déjà installé, il suffit de décompresser le paquet de langue dans le dossier wp-content/languages
de la racine de votre site (attention: ne pas oublier d’affecter le bon propriétaire sur les fichiers déployés). Après vous n’avez plus qu’à sélectionner la langue de votre choix dans l’interface d’administration de votre site tournant sous Wordpress (la nouvelle langue déployée devant faire son apparition dans la listbox de la page Settings
> General
).
Maintenant, après cette petite présentation de déploiement des langues sous Wordpress, passons à la partie multisite.
Multi sites vs. Multisites
Hein !!!? Multi sites et multisites… c’est pas la même chose ? Et non, le fonctionnement n’est pas le même. Et à l’usage cela a toute son importance, notamment pour la mise en place d’un site multilingue.
En fait, Wordpress s’installe généralement en une seule instance. C’est-à-dire pour chaque site déployé sur votre serveur web, vous avez un répertoire dédié. Dans le cadre d’un site tournant sous Wordpress, vous avez le répertoire de votre site avec le paquet Wordpress déployé dedans et une base de données dédiée. Cela fait une instance. Si vous avez un autre site à faire tourner sous Wordpress sur le même serveur, vous déployez un autre Wordpress dans le répertoire de ce second site et vous créez une seconde base de données. Cela fait maintenant 2 instances.
Suivant ce raisonnement, vous pouvez déployer autant de fois que vous en avez besoin des instances Wordpress. En conséquence, vous avez Wordpress déployé en doublon, il en est de même au niveau des bases de données. L’administration, aussi en doublon, multiplie également le temps passé à gérer les différents sites en se connectant à chacun d’entre-eux.
Toutefois il existe une alternative à la multiplication d’instances Wordpress, il s’agit du multisite. C’est un mode natif à Wordpress qui permet, en une seule instance, de créer plusieurs sites. Le gain en terme d’espace disque n’est pas négligeable, et que dire au niveau de l’administration… c’est tout de même plus simple de pouvoir tout gérer depuis une seule interface. Non ?
Concrètement qu’est-ce-que cela change ? En multisite vous avez :
- un seul répertoire de site,
- un unique déploiement Wordpress,
- une seule base de données,
- une seule interface d’administration pour gérer tous les sites fonctionnant sous Wordpress,
- un seul déploiement de plugins/thèmes Wordpress.
Ok, c’est bien gentil tout ça mais quel est le rapport avec le multilingue ? J’y viens.
L’idée derrière le fait d’activer le multisite, c’est de pouvoir créer un site dédié pour chaque langue souhaitée. Le tout au travers d’une seule instance Wordpress. De cette manière vous disposez de plusieurs sites, chacun dédié à une langue, et une seule interface d’administration pour tous, des plugins et des thèmes partagés, et une seule base de données. En même temps, vous avez des sites cloisonnés, chaque site possède sa propre langue, ses propres articles et pages, ses propres utilisateurs. Pratique non ?
Mais avant d’aller plus loin, il faut choisir le mode de fonctionnement du multisite pour les sites imbriqués dans une seule instance Wordpress.
Sous-répertoires ou sous-domaines
Tout d’abord, il faut noter que le mode multisite de Wordpress ne fonctionne en principe qu’avec un seul nom de domaine pour tous les sites rattachés à l’instance (avec des sous-répertoires ou bien des sous-domaines). Je dis en principe, car il existe des plugins ou des modifications possibles pour activer le multisite sur différents noms de domaine en une seule instance Wordpress. Toutefois, ce n’est pas au programme de cet article. Je vais rester dans le fonctionnement multisite de base de Wordpress.
Pour mon usage personnel, j’ai opté pour le multisite en sous-répertoires. Ce qui me donne des sites sous la forme :
- www.lepetitcaporal.org
- www.lepetitcaporal.org/fr
- www.lepetitcaporal.org/en
J’aurais tout aussi bien pu choisir de fonctionner en sous-domaines :
- www.lepetitcaporal.org
- fr.lepetitcaporal.org
- en.lepetitcaporal.org
Ici, aucune problèmatique technique (hormis certaines limitations possibles au niveau du DNS dans le cas d’un hébergement mutualisé, je vous invite à consulter la documentation multisite), c’est au choix de chacun selon ses besoins, ses préférences et ses possibilités.
Comme vous pouvez le constater, dans mon cas personnel, j’ai 3 sites. Un site principal, un site en français et un autre en anglais. Cela donne ça dans Wordpress :
A quoi sert le site principal ? C’est en quelque sorte le site racine. L’installation de Wordpress en multisite se fait avec ce nom de domaine. Par la suite, l’activation du multisite permet la création de sous-répertoires (ou de sous-domaines selon son choix).
Le site principal, soit www.lepetitcaporal.org dans mon exemple, peut servir de site à part entière tel un portail vers les autres sites imbriqués, ou bien servir de redirection. J’ai opté pour le second choix.
Multisite Language Switcher
A ce stade, je commence par résumer au cas où vous auriez perdu le fil. Nous avons une instance Wordpress déployée en multisite sur un nom de domain (exemple : www.lepetitcaporal.org
), en mode sous-répertoires, avec 2 sites supplémentaires créés dans le multisite (pour lesquels j’ai pris soin de déployer les packs de langues comme présenté plus haut), respectivement pour la langue française (exemple : www.lepetitcaporal.org/fr
) et la langue anglaise (www.lepetitcaporal.org/en
).
Dorénavant, nous avons donc un site (au sens nom de domaine) découpé en sous-sites grâce aux sous-répertoires tournant sur une seule instance Wordpress. On gère donc l’ensemble depuis la seule interface d’administration grâce à un seul utilisateur d’administration avec le profil super-admin (également appelé administrateur du réseau multisite, il s’agit de l’utilisateur défini lors de l’installation de Wordpress). Cet utilisateur est par défaut celui qui peut gérer tous les sites. En une seule authentification, vous pouvez passer de la gestion d’un site à l’autre en quelques clics.
Un thème
La première chose à faire maintenant, c’est de déployer un thème particulier sur le site principal de notre réseau multisite. Celui-ci est Multisite Language Switcher Theme mise à disposition sur Github par oncleben31. Il s’agit d’un thème pas comme les autres car ce n’est pas un visuel classique. Ici pas de design, de beaux effets de style ou autre. C’est un thème très très simple et sobre mais au combien utile pour l’usage que l’on souhaite en faire. Avec sa page index.php, il se contente de rediriger les visiteurs sur d’autres sites en fonction de la langue de leur navigateur internet. Dans mon cas, j’ai donc activer ce thème sur www.lepetitcaporal.org/. Qu’est-ce que cela donne ?
En gros, lorsqu’un visiteur arrive sur www.lepetitcaporal.org avec son navigateur en français (normalement il s’agit de sa langue maternelle), il est automatiquement redirigé sur le site www.lepetitcaporal.org/fr. De manière complètement transparente, à aucun moment la personne se rend compte de l’usage d’un site de redirection et encore moins d’un mode multisite de Wordpress. Inversement pour le visiteur avec un navigateur anglais, il sera envoyé sur www.lepetitcaporal.org/en.
Par défaut toutes les autres langues possibles des navigateurs sont renvoyées vers la version anglaise du site. Libre à vous de rajouter des sites et des redirections pour d’autres langues. A noter que rien ne se configure au niveau du thème dans l’interface d’administration, via une page de paramétrage. Il faut en effet éditer manuellement le fichier index.php, dont voici une partie du contenu qui permet d’indiquer vers quel site rediriger, en fonction de la langue du navigateur :
~ … if (\\(_SERVER['REQUEST_URI'] == "/") { if (\\)Langue == “fr”) { header(“Location: /fr/”); }
else { header(“Location: /en/”); } } … ~#
La seule chose à faire ensuite c’est donc de déployer le thème sur votre Wordpress, puis de l’activer sur le site prinicpal (racine /
) de votre instance multisite. Voilà, votre site principal ne servira plus qu’à ça. Vous n’aurez quasiment plus jamais besoin d’y toucher. Dès lors vous pouvez vous contenter d’administrer vos 2 sous-sites restants (/fr
et /en
).
Fini ? Presque. Il reste à installer un plugin pour que la solution soit parfaite.
Et un plugin
Nous avons un thème qui redirige en fonction de la langue du navigateur internet vers le site dans la langue correspondante. Mais si le visiteur souhaite basculer manuellement sur le second site traduit dans une autre langue, comment peut-il s’y prendre de manière simple et ergonomique ? Certainement pas en changeant la langue de son navigateur internet, pour relancer une connexion sur l’url du site principal dans le but d’être redirigé sur le second site ! Pas pratique du tout vous en conviendrez. Alors ?
Il reste 3 possibilités :
- soit on laisse le visiteur deviner l’adresse url du second site (exemple :
/en
) à partir du premier (exemplewww.lepetitcaporal.org/fr
) et s’y connecte, - soit on affiche un lien, un icône sur les thèmes de chacun des sites du réseau pour naviguer entre-eux,
- soit on déploye le plugin Multisite Language Switcher.
A mes yeux, sans doute aux vôtres aussi, la meilleure solution est le plugin. Plus simple, plus ergonomique et offrant plus de possibilités aussi bien pour l’administrateur que pour le visiteur. Multisite Language Switcher permet de configurer sur le multisite, pour chacun des sites (dans mon cas je dois paramétrer le plugin sur le site FR et aussi EN), la langue et en fonction de ses choix (et sous réserve d’avoir bien déployé les packs de langue nécessaires), afficher automatiquement via un widget les icônes sous la forme de drapeaux ou de code (FR, EN, …) par exemple. Le visiteur peut ainsi basculer d’une langue (ou d’un site en réalité) à l’autre simplement.
En complément, ce plugin permet de lier les contenus des sites du réseau multisite les uns aux autres pour faciliter la bascule par exemple d’un article en français vers celui en anglais, via un clic sur l’icône la langue de son choix, visible dans le widget.
Dès lors votre site est à la fois multisite et multilingue. Il ne vous reste plus qu’à mettre le contenu dans vos sites dans leur langue respective.
Pour finir
Voilà j’ai terminé mon explication. Il s’agit d’une solution parmi tant d’autres comme je l’ai précisé dans l’introduction. D’autres plugins existent également tels que Polylang ou encore WPML (payant). A ce sujet, je vous invite donc à consulter la liste détaillée de la Marmite sur les différents plugins WP multilingues existants.
Si vous avez des questions, des suggestions ou tout simplement envie de présenter vos solutions multisite pour Wordpress, je vous invite à poster des commentaires afin d’en faire profiter tous les lecteurs.