WordPress multilingue facilement

Différentes méthodes ont été décrites pour créer un site en plusieurs langues avec WordPress, avec plus d’inconvénients que d’avantages pour la plupart.

Même Lumière de Lune, préfère un autre système de publication lorsqu’il s’agit de répondre à la demande d’un de ses clients. C’est à lire dans Quel CMS pour un site multilingue ? Après avoir utilisé le plugin WPML quelques temps, je vais essayer maintenant de m’en passer.  Et pour l’instant, ce sera sans utiliser la nouvelle fonction multisites de WordPress, ainsi que c’est conseillé ici.

Je voudrais bénéficier rapidement d’un site bilingue, même si ce n’est que pour une poignée d’articles,  et ensuite faire un parcours de reconnaissance sur un serveur en local en suivant la documentation, avant de me jeter à l’eau.

Au passage, je posterai bien quelques billets en français pour en parler, et peut-être même traduire cette doc sur l’installation en multisites en passant si j’en ai le temps et le courage. (Et si je ne découvre pas que ça a déjà été fait quelque part, entre temps).

Pour l’instant, multilingue sur sites uniques, en local, voici ce que ça donne

J’ai installé un site WordPress en local, dans un portable tournant sur un système PCLinuxOS. Le serveur est Apache, il y a aussi php et mysql. Ce sont des versions récentes pour tout.

Ce site reproduit d’assez près le présent site, lequel, doté de deux ou trois articles traduits en anglais, présente pour le moment les articles en français et en anglais les uns sous les autres. La raison en est que j’ai désactivé le plugin WPML, qui produisait des messages d’erreur.

Localement, j’ai installé WordPress dans un répertoire nommé “melodie”. En ligne, il est ici sous “blog”, temporairement, et ailleurs encore, où il existe toujours, il est à la racine du site public.

Localement, une fois le site installé à neuf, configuré, et les importations réalisées, (une partie, c’est à dire, les liens et la galerie NextGen Gallery, par la base de données, et tout le reste : posts, commentaires, par l’import du fichier xml), j’ai installé un second site, pour lequel j’ai renommé le répertoire wordpress en “en”. J’ai fait un “chown -R apache.apache” sur ce répertoire, car dans la configuration locale actuellement ce sont les noms de l’utilisateur et groupe du serveur, puis j’ai déménagé ce répertoire à l’intérieur du site “melodie”. ça donne quoi ? Ça donne l’url:

http://localhost/melodie/en

Ça suit une arborescence logique. Les deux sites on le même thème et les mêmes plugins une fois configurés, ainsi que la même configuration de widgets, ce qui donne l’impression qu’on est toujours sur le même site.

Maintenant, comment faire pour le choix de la langue ? C’est très simple. Il y a deux solutions. J’aurais pu mettre deux sites, l’un nommé “fr” et l’autre “en” sous la racine du répertoire public, et ajouter un fichier index.html ou index.php pointant vers l’un et l’autre, mais là j’ai choisi d’installer le répertoire “en” dans le répertoire “melodie”, alors je vais ajouter un lien dans la barre latérale, de chacun d’entre eux et c’est tout.

Enfin presque tout : je vais commencer par créer une catégorie de liens, que je nommerai  “Languages” sur le site en anglais, et dans cette catégorie, ajouter le lien vers le site en français. Sur le site en français, la catégorie se nommera : “Langues” et j’y ajouterai le lien vers le site en anglais, bien entendu.

Pour l’image si on veut un drapeau, comment faire ? Il se trouve que quand on crée un nouveau lien, il est possible de lui joindre une image, en plaçant le lien de l’image dans un champ prévu à cette effet. Cette image figurera par défaut à gauche du lien une fois celui-ci activé.

Et après ? Après, comment faire pour configurer cette catégorie de liens avec une option “menu déroulant” si le site est disponible dans deux langues ou plus ?  Je n’en ai aucune idée pour l’instant… 🙂

Si j’avais préféré faire une page statique, cela serait intéressant aussi d’avoir un lien “Langues” sur chacun des deux sites, l’un pointant vers l’autre, de sorte à ne pas obliger l’internaute à repasser par la page statique pour aller sur l’autre site. Par contre il pourrait y avoir en plus un lien retour vers l’index sous l’onglet “Accueil” et sous l’onglet “Home” du site en anglais, par exemple.

J’admettrai volontiers que cette méthode (inclure un site vers une autre langue dans un site origine) est peu élaborée, et repose sur un travail manuel de préparation et surtout surtout sur un travail non automatisé pour les traductions et synchronisations des traductions. De plus, je ne lierai pas les sites plus que ça, ni au niveau des fichiers communs ni dans le wp-config.php ou ailleurs. Pour l’instant l’avantage que j’y trouve est qu’elle est simple et sans complication pour la mise en place.

Je teste cette méthode temporairement, jusqu’à l’étape suivante, qui sera d’installer un multisite.

Pour l’instant, en local, voici ce que ça donne côté site en français

et ce que ça donne côté site en anglais

Oui, bon, la seconde capture est un peu floue, pourtant j’ai utilisé convert (suite ImageMagick) pour la redimensionner.

Notez : je ne parle pas l’Allemand. Le lien vers un site en allemand est un faux lien juste pour voir à quoi ça ressemblerait avec plus de deux sites.

La suite bientôt, j’espère.

Ah oui j’oubliais : je traduis du français vers l’anglais, et parfois de l’anglais vers le français. Je me sers rarement des traducteurs automatiques en ligne, quand je le fais, c’est toujours pour dégrossir avant de repasser dessus. De plus l’anglais n’étant pas ma langue natale et n’ayant pas pour métier traductrice, je demande souvent à des personnes de langue anglaise de me proposer une reformulation adéquate.

C’est simplement pour dire que je conseillerai d’éviter de publier directement des textes traduits à l’aide de robots, sans y ajouter un travail plus élaboré. L’effet en est cocasse, mais pas forcément celui recherché. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.