ZdMultilang
ZdMultilang est un plugin pour WordPress permettant de bloguer dans plusieurs langues. Celui ci permet de configurer autant de langues que vous le voulez et de traduire les articles/catégories/tags dans ces langues.
Par la suite, les utilisateurs peuvent choisir dans quelle langue lire le blog/article via un widget disponible, ou directement dans les posts (via une option configurable)
1. Installation
Pour installer le plugin, il suffit de déposer les fichiers dans le dossier wp-content et de l’activer comme n’importe quel autre plugin.
2. Utilisation
Afin d’utiliser le plugin, il faut avant tout paramétrer les langues disponibles. Pour ce faire, il vous faudra aller dans l’onglet Langues de votre tableau de bord, puis dans Langues, comme ci-dessous:

Une fois là, vous n’avez plus qu’a ajouter les langues en remplissant les champs prévus à cet effet.
- Nom de la langue est utilisé pour afficher en clair la langue (de manière compréhensible pour un humain).
- Code de la langue est le code international utilisé pour traduire votre texte, vous trouverez la liste des codes disponibles pour WordPress ici. Ce code sera donc utilisé pour traduire les articles, mais aussi l’interface si le fichier de traduction est présent (comme mentionné sur la page précédente). Il sert aussi à afficher le drapeau de langue.
- Permalien est une valeur qui est nécessaire, en effet, ne pas remplir cette valeur rendra votre blog légèrement… non-fonctionnel. En effet, c’est a partir de ces valeurs que les règles de d’écriture d’url sont générées (rewrite_rules). Cette valeur peux contenir n’importe quoi (par exemple fr ou français ou french). Elle est utilisée pour créer les url de type /en/zdstats ou /english/zdstats, etc…
- Langue par défaut permet de dire au plug-in dans quelle langue vous écrivez « normalement » via l’interface WordPress. Notez qu’il ne peut y avoir qu’une seule langue par défaut.
Une fois les langues définies, vous allez pouvoir commencer à traduire les éléments de votre blog.
Traduction des termes (tags, categories et categories de liens).
Pour traduire ces éléments, dirigez vous vers l’onglet Traductions puis choisissez le type de terme que vous désirez traduire et enfin cliquez sur le nom original, vous serez amenés a une page comme celle-ci :

Traduction d’articles/pages.
Pour traduire un article (ou une page), il vous faudra aller sur l’onglet Articles & Pages, puis cliquer sur le lien correspondant a ce que vous voulez traduire, voir ci-dessous :

Ces liens peuvent avoir deux états, Traduire, qui signifie que l’article n’as pas encore de traduction, ou Editer qui signifie que l’article possède déjà une version localisée.
Cliquer sur le titre original de l’article vous amènera directement à la page d’édition de l’article original.
Lors de la traduction d’un article, vous pourrez voir l’article original au dessus de votre zone de saisie, et que cette même zone utilise l’éditeur visuel de WordPress.
3. Options
Il y a quelques options disponibles avec ce plugin, elle vous permettront notamment de modifier le comportement de votre blog.
- Langue par défaut voir la description au chapitre 2.
- Affiche le selecteur de langue dans les articles vous permet de placer dans chaque article un lien vers les langues disponibles. En mettant cette option à Masqué, vous ne verrez donc pas ce sélecteur.
- Position du selecteur de langue définie l’emplacement du selecteur au niveau du contenu de l’article (Haut ou Bas).
- Affiche les noms de langues dans le selecteur affiche ou non le nom de la langue dans ce selecteur
- Affiche les drapeaux dans le selecteur affiche ou non le drapeau associé a la langue dans le selecteur. Vous pouvez évidement combiné les 2 variables en fonction de vos besoins.
- Classe CSS du selecteur de langue, qui comme son nom l’indique est le nom de la classe CSS à utiliser pour l’affichage du selecteur.
Par exemple, sur Zen-Dreams j’ai paramétré le selecteur comme étant visible, en haut des articles et ne pas afficher le nom des langues.

Un widget est aussi disponible et remplis la même fonction que le selecteur.
4. F.A.Q
Comment savoir quel code de langue utiliser ?
Le code langue est celui qui est utilisé par WordPress pour la locale de votre blog. Par exemple le code pour l’anglais est en_US et le code pour le Français est fr_FR, fr_BE pour le Belge, etc…
Puis-je avoir plusieurs permalien identiques ?
Non, le permalien est ce qui permet de faire la translation vers une langue. C’est pourquoi les permaliens doivent être uniques. Toutefois, le permalien est limité a 50 caractères, ce qui vous laisse quand même de la marge.
5. Téléchargement
Vous pouvez télécharger la dernière version sur le site officiel de WordPress.
6. Screencast
ZdMultilang presentation Video from Anthony PETITBOIS on Vimeo.
Vous appréciez mon travail ? pourquoi ne pas faire un don ?
Petite précision:
Quand je suis à l’adresse de mon site http://monsite.com (anglais) et que je veux passer dans une autre langue (français), ça ne marche pas.
Par contre si je suis sur http://monsite.com/en et que je veux passer en français, là ça fonctionne…
Helllo Anthony !
Tout d’abord merci pour ton plugin, vraiment top !
Je développe mon premier site worpress et, ne sachant pas coder en PHP (eh oui, pas bien, je sais), je voudrais savoir si tu pouvais me donner le bout de code à insérer dans le header pour afficher les drapeaux en haut du site.
J’ai vu plus haut que tu parlais de la fonction « zd_multilang_menu », mais je me retrouve un peu con avec ça entre les mains…
Je pense franchement que ca ne te prendra pas trop de temps, et en plus tu me rendra un sacré service !
Merci d’avance…
Hervé
Bonjour,
J’ai une erreur dans mon moteur de recherche :
« Warning: Invalid argument supplied for foreach() in /homez.195/*****/www/wp-content/plugins/zdmultilang/zd_multilang.php on line 1443
WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AND post_status='published'' at line 1]
SELECT post_content, post_title, ID, post_excerpt FROM wp_zd_ml_trans WHERE LanguageID= » AND ID in () AND post_status=’published’
Warning: Invalid argument supplied for foreach() in /homez.195/****/www/wp-content/plugins/zdmultilang/zd_multilang.php on line 1456
»
et aussi à chaque fois que je poste un article en français langue par défaut:
« Warning: Invalid argument supplied for foreach() in /homez.195/****/www/wp-content/plugins/zdmultilang/zd_multilang.php on line 1456″
Ma config: multilang 1.2.5 french, english; WordPress: 2.8.4
Est-ce que mettre WordPress à 2.8.6 aiderait?
Aussi je suggère la création d’un forum pour ce super plugin et pourquoi pas des contributions au code !!!
Merci pour le coup de main
Un autre problème !!! Au secours
Sous Internet Explorer 8 (Windows 7) la page d’édition d’une traduction est buggée:
Les champs sont tous décalés vers le bas
Mais pire: quand on sauve, le message confirme bien que la page a été mise à jour mais en fait tout est effacé ! impossible d’ajouter quoi que ce soit
Sous firefox pas de problèmes l’édition marche très bien!
Voilà juste pour prévenir
I use this pluggin because i need to tranlate only few posts, and it looks the best to do this. But i have a problem, i write the original post, i translate it to english (for example) and when i try to switch to the others languages, the post doesn’t change, it is always the same, the original post.
The url to original post is:
http://mywordpressblog.cat/?p=3&lang=ca (it shows the good page)
the tranlate url is (the url that you can see in the firefox bar when you click to english):
http://mywordpressblog.cat/?p=3&lang=en
(you see the same!!)
Can someone help me?
Salut Anthony,
merci pour ce plugin qui très agréable a utilisé
j’ai vu que d’autre personne avait le même problème que moi en parcourant tous les messages précédents mais je n’ai pas trouvé de réponse.
Qu’en est t’il de la possibilité d’utilisation du plugin avec un compte éditeur, auteur, contributeur … ?
Bonjour Anthony,
J’ai vu arriver avec plaisir la release de zdmultilang 1.2.5 pour pouvoir mettre une page statique en accueil.
J’ai aussi installé wordpress 2.8.6 pour être sûr d’être compatible, en pointant sur ma base de données wordpress existante.
Je peux bien afficher correctement les traductions que j’ai entrées avant l’upgrade avec une page d’accueil statique. Le problème est que quand j’essaie de modifier ou entrer de nouvelles traductions zd refuse de me les sauver, il met des champs vides dans la base, j’ai vérifié (nom de page et contenu). Quand je teste le site, les pages concernées apparaissent vides et sans nom dans la langue correspondante. Ce n’est pas l’affichage, c’est bien l’éditiion puisque les champs zd* correspondants dans la base mysql sont vides.
Ceci se reproduit quel que soit le thème utilisé.
As-tu une idée sur ce problème ?
Cordialement
Christophe,
Tu n’utiliserais pas IE8 par hasard ?
), ZdMultilang ne supporte pas IE8
En effet, si c’est le cas, change de navigateur car, et je ne sais vraiment pas pourquoi et ne peux tester (puisque IE n’existe pas sur mon OS
Anthony,
. Si j’y arrive, je te remonterai l’info, si tu as des indications à me donner sur l’endroit précis où chercher ce serait bien.
Effectivement, j’ai testé avec Firefox 3.5.5 et là tout fonctionne bien.
Avec IE, seul l’enregistrement des pages traduites ne fonctionne pas, c’est donc très localisé, tout le reste fonctionne. J’utilise IE6, je sais c’est vieux, il faudra que je fasse upgrader ma machine mais comme toujours, le temps…
Pour préciser le symptome: on peut éditer normalement la traduction, mais quand on fait save, le titre et le contenu traduits sont perdus et ce sont ces champs vides qui sont sauvés dans la base, même le texte traduit préexistant est donc détruit. Si tu veux plus d’infos sur le problème, tu peux me demander. Ce doit être extrêmement localisé à mon avis il doit y avoir une ou deux lignes de code qui posent problème, mais je ne connais pas assez bien php pour me lancer seul dans l’investigation
Encore merci pour ce super plugin qui agit très activement en faveur de la diversité culturelle, bien difficile à défendre de nos jours…
Cordialement
Anthony, a la ligne 1800, il y a une erreur dans la requête :
« SELECT COUNT(*) AS total FROM wp_comments AS c1 WHERE (comment_post_ID = %d) AND NOT EXISTS (SELECT * FROM wp_zd_ml_comments AS c2 WHERE c1.comment_ID = c2.comment_id) »,
Il faut remplacer « wp_ » par le préfixe de l’installation WordPress de l’utilisateur à l’aide de $wpdb->prefix.
Salut et super merci pour le plugin qui est juste ce qu’il me fallait.
J’ai un seul souci, j’aimerai n’afficher que les drapeaux sans le noms des langues dans le menu. J’ai rajouté ce bout de code trouvé dans le fil de discussion :
Ca marche nickel mais je n’arrive pas à enlever le nom des langues alors qu’il y a la possibilité dans les options de ton plugin.
Une idée ?
Merci !
problème résolu !
Simplement pour déclarer qu’il y a un bug lors de l’utilisation de ce plugin :
- Uniquement avec Internet Explorer
- WordPress v2.9.1
- ZdMultilang v1.2.5
Symptomes :
- Lors de la modification ou de la création d’une page/article à traduire, après un clic sur « SAVE », toutes les données saisies ne sont pas enregistré (valeur vide) et tout le contenu traduit est perdu.
C’est comme si aucune donnée n’était postée….
Ce bug ne se produit pas avec Firefox, Chrome ou Safari.
Meme après suppression et réinstallation du plugin, le bug persiste.
Si besoin de nouveau test, n’hésitez pas à me contacter.
Tout d’abord bravo et merci pour ce merveilleux plugin.
J’ai un lien vers la page d’accueil de mon blog (langue par défaut : français) mais quand je navigue en langue allemande et que je clique su le lien, comme le lien pointe sur monsite/blog/ et que la langue par défaut est le français, le visiteur allemand reviens systématiquement sur la page d’accueil en français…
Une question: y-a-t-il un moyen de récupérer le langage en cours (session par exemple?) afin de rendre le lien dynamique du type: $lien = »monsite/blog/ ».$langue_en_cours ;
merci d’avance.
Bonjour,
J’ai un petit souci pour placer les drapeaux dans le menu d’un site http://www.evolveproject.fr/BAF comme vous pouvez voir, vous savez comment je peux faire pour les avoir en suivant ?
Merci !
Mat
Encore bonjour est-il possible d’avoir un support pour placer les drapeaux où on veut sur le site svp ? je n’ai pas de réponse depuis un moment et j’ai beau fait 10000 bidouille je n’arrive à rien