Retour d’expérience sur Polylang pour concevoir un WordPress multilingue

Polylang est un plugin de multilingue pour WordPress créé et maintenu par Frédéric Demarle. 

Mon expérience avec polylang

J’ai commencé à créer des sites multilingues il y a quatre ans, lorsque j’ai intégré l’équipe d’une agence web spécialisé dans l’hôtellerie.

La plupart des sites en lien avec le tourisme nécessitent d’être traduits en plusieurs langues. À l’époque j’avais décidé de travailler avec WPML, un plugin dont Jenny vous a déjà parlé et qui reste un des plus utilisé. Il fait le travail, en gros, mais ne m’a jamais satisfait complètement :

  1. Son code n’est pas très clair, pas très propre, et pas du tout documenté. Alors lorsque qu’un bug se présente c’est assez complexe de le résoudre ;
  2. Il n’est pas très performant, voir assez lent. C’est notamment dû au nombre de requêtes qu’il exécute (cependant l’équipe de développement a fait des efforts depuis) ;
  3. J’avais constamment l’impression désagréable d’être bridé par le plugin dans ma façon de penser et de développer le site ;

Et donc après avoir utilisé ce plugin sur une centaine de sites, j’ai testé Polylang, dont on m’avait parlé. Depuis, je n’ai plus jamais installé WPML.

Comment Polylang fonctionne-t’il ?

Polylang s’appuie sur des taxonomies pour localiser l’ensemble des contenus de WordPress. Celles-ci sont masquées et vous n’aurez pas à vous en soucier, j’en parle ici uniquement parce que c’est intéressant de savoir comment cela fonctionne.

Il y a une taxonomie language pour assigner une langue aux contenus, et une taxonomie translations pour établir la relation entre les différentes versions des contenus. La même mécanique est appliquée aux termes, et donc à l’ensemble des taxonomies.

Le plugin utilise ensuite des filtres à plusieurs endroits de WordPress pour servir le contenu adéquat.

C’est donc un plugin qui s’appuie uniquement sur les outils natifs de WordPress.

Ceci, en plus d’une bonne gestion du cache fait qu’il est relativement performant ; plus que WPML, et même plus que Multilingual Press.

Comment configurer Polylang ?

Déjà ce qui ressort de ce plugin c’est qu’il est simple à utiliser. Il n’a même pas de menu de niveau 1 dans l’interface, juste un sous-menu dans Réglages puis Langues, avec quelques onglets que nous allons passer en revue…

L’onglet « Langues »

C’est ici que l’on définit les langues du site. On peut choisir les langues via un sélecteur, puis ensuite personnaliser le nom, le code… Par contre ce n’est pas ici que l’on peut customiser le drapeau, nous verrons cela plus loin.

L’onglet « Traduction des chaînes »

Ce menu permet de traduire certains éléments tels que le titre du site, sa description ou bien les titres des Widgets.

Les thèmes et plugins peuvent ajouter la possibilité de traduire des éléments via ce panneau, à la façon de WPML, en utilisant un fichier wpml-config.xml ou bien la fonction pll_register_string() (ou son alias icl_register_string()).

À noter ici que le plus performant reste de traduire les chaînes via des fichiers .mo / .po si vous en avez la possibilité. Cet onglet est plutôt fait pour traduire les textes qui seront amenés à changer durant la vie du site.

L’onglet « réglages »

Cet onglet au nom explicite permet de définir les réglages du multilingue. Il permet de définir la langue par défaut, le format des URLs selon la langue – domaine, sous-domaine ou sous-dossier, et puis le plus important : quels sont les contenus qui doivent être traduisibles.

C’est aussi dans cette section que l’on gère la synchronisation des taxonomies, des images à la une, des templates et des champs personnalisés… : soit on laisse Polylang synchroniser ces valeurs entre les langues, soit on laisse la main à l’utilisateur afin qu’il puisse gérer ses contenus avec davantage de finesse.

Lingotek

Depuis la version 1.7.8, le service de traduction Lingotek est proposé avec Polylang.

Personnellement je ne suis pas fan, je l’ai testé brièvement dans le cadre d’un projet, et lorsque Lingotek m’a proposé de traduire les « limaces » j’ai directement désinstallé leur plugin… (je suppose qu’il parlait des slugs, que l’on peut traduire en limace si l’on ignore totalement le contexte ;-))

Je m’explique : je pense que du côté Polylang, Frédéric Demarle a parfaitement implémenté le service de traduction ; en revanche côté Lingotek je n’ai pas l’impression qu’ils aient fait l’effort de s’adapter au contexte des chaines à traduire dans l’admin de WordPress, et ça ne me rassure pas sur la qualité du service.

Comment utiliser Polylang ?

Une fois le plugin configuré, son utilisation générale est assez similaire à ce que propose WPML :
polylang-switcher-langue

  • Un sélecteur dans la barre d’administration permet de filtrer / basculer la langue en cours ;
  • Dans la liste des contenus de l’administration, nous avons maintenant une colonne avec la langue de ceux-là, et un lien vers ses différentes versions.

La fenêtre d’édition des contenus est identique selon la langue. Le seul élément de l’interface utilisateur qui a été ajouté est une boite de dialogues indiquant la langue du contenu en cours d’édition.

Selon les réglages du plugin, les éléments tierces des contenus (termes de taxonomie, templates, champs personnalisés, image à la une…) seront synchronisés, ou pas.

Les outils pour développeurs

Une des forces de ce plugin est, selon moi, qu’il dispose d’une excellente documentation. Vous trouverez en ligne le détail des fonctions disponibles selon ce que vous souhaitez faire.

Polylang étant sortit bien après WPML, il propose un guide de migration pour les développeurs habitués à WPML, il fournit des fonctions équivalentes et ajoute même des alias sur les fonctions de WPML !

Si vous avez l’habitude d’utiliser un fichier wpml-config.xml, sachez qu’il sera parfaitement supporté par Polylang.

Quelques fonctions

Polylang met à disposition de nombreuses fonctions pour les développeurs. Je vais juste aborder avec vous les plus intéressantes.

  • pll_the_languages( $args )
    Cette fonction permet d’afficher un sélecteur de langue. Elle prend un tableau de paramètres, dont raw qui permet de ne pas afficher le sélecteur, mais de renvoyer un tableau de données pour construire notre propre sélecteur de langue ;
  • pll_get_post( $post_id, $language_slug )
    Celle-ci permet simplement de récupérer l’ID d’un contenu dans la version que l’on souhaite. En indiquant juste le premier argument on obtient l’ID du contenu dans la langue en cours. Cette fonction vous servira si vous appelez des contenus hors d’une boucle, directement via leurs ID WordPress ;
  • pll_register_string( $name, $string, $group, $multiline )
    Cette fonction sert à ajouter, dans le thème ou dans un plugin, du texte qui pourra être traduit par l’utilisateur dans l’administration. C’est l’équivalent de icl_register_string() dans WPML. À noter que le texte ne sera traduit que si l’on utilise les fonctions pll__() ou pll_e() pour afficher ces chaînes ;
  • Il y a de nombreuses autres fonctions dont le détail se trouve ici ;

Quelques filtres

Le plugin permet également aux développeurs d’altérer son comportement grâce à des hooks.

  • pll_copy_post_metas avec les attributs $metas et $sync
    Ce filtre permet de copier des métadonnées lors de la création ou la synchronisation dans une langue autre que celle par défaut.
  • pll_get_flag avec les attributs $html et $slug
    Ce filtre nous permet tout simplement de définir de nouveaux drapeaux, si ceux du plugin ne nous conviennent pas. Par exemple :
    add_filter( 'pll_get_flag', 'willy_get_flag', 10, 2 );
    function willy_get_flag( $html, $slug ) {
      $html = '<img src="' . get_stylesheet_directory_uri() . '/flags/' . $slug . '.png" />';
      return $html;
    }

En fait le plugin propose des filtres pour surcharger tous les réglages disponibles dans l’administration.

Utilisation avec Woocommerce

Une question qui revient souvent lorsque l’on parle de Polylang est : « Est-ce qu’il fonctionne avec Woocommerce ? », et la réponse est : « oui, mais pas nativement… ».

En fait la manipulation requise n’est pas si compliquée, il existe même un plugin qui s’en charge.
Woocommerce cible les pages du tunnel d’achat en enregistrant directement leurs ID dans des options. Si l’on ne fait rien, Woocommerce dirigera les visiteurs vers ces pages sans tenir compte de la langue en cours de navigation.

Il faut donc se hooker sur les filtres de Woocommerce afin de le rediriger vers les pages traduites, lorsqu’il récupère leurs ID.

Ce qui donne :

if (function_exists('pll_get_post') ) { 
  add_filter( 'woocommerce_get_checkout_page_id', 'pll_woocommerce_get_page_id' ); 
  add_filter( 'woocommerce_get_cart_page_id', 'pll_woocommerce_get_page_id' ); 
  add_filter( 'woocommerce_get_myaccount_page_id', 'pll_woocommerce_get_page_id' ); 
  add_filter( 'woocommerce_get_edit_address_page_id', 'pll_woocommerce_get_page_id' ); 
  add_filter( 'woocommerce_get_view_order_page_id', 'pll_woocommerce_get_page_id' ); 
  add_filter( 'woocommerce_get_change_password_page_id', 'pll_woocommerce_get_page_id' ); 
  add_filter( 'woocommerce_get_thanks_page_id', 'pll_woocommerce_get_page_id' ); 
  add_filter( 'woocommerce_get_shop_page_id', 'pll_woocommerce_get_page_id' ); 
  add_filter( 'woocommerce_get_terms_page_id', 'pll_woocommerce_get_page_id' ); 
  add_filter( 'woocommerce_get_pay_page_id', 'pll_woocommerce_get_page_id' ); 
  function pll_woocommerce_get_page_id( $id ) { 
    return pll_get_post( $id ); 
  } 
}

Voilà pour cibler les bonnes pages dans Woocommerce.

Après, si vous souhaitez traduire certaines chaines de Woocommerce telles que les titres ou descriptions des modes de paiement, vous pourrez utiliser d’autres filtres que je ne vais pas détailler ici – il y aurait tellement à dire. Sachez juste qu’avec quelques filtres Polylang est compatible avec Woocommerce.

Bilan après une année d’utilisation.

J’utilise Polylang depuis plus d’un an maintenant et j’en suis toujours aussi satisfait.

Je ne vais pas mentir : il y a toujours quelques contraintes, voire quelques bugs de temps en temps, mais ceux-ci sont généralement simples à contourner ou à résoudre lorsque l’on est développeur : le code du plugin est lisible, bien documenté et la logique du plugin suit le fonctionnement de WordPress. À partir de ça on peut faire à peu près tout ce que l’on souhaite.

93 commentaires

  1. JePapote

    Merci pour ce retour d’expérience. Une question me trotte dans la tête : que se passe t-il si le plugin n’est plus mis à jour ? On perd tout du coup on est ultra dépendant du plugin ?

    1. Willy Bahuaud auteur de l’article

      Oui, et non.
      Comme le dit Thierry déjà, c’est le cas avec tous les plugins, mais il faut garer en tête qu’il s’agit de licence GPL et qu’il est possible de forker le code d’un plugin (surtout s’il n’est plus maintenu) pour continuer de le faire évoluer.
      C’est d’ailleurs le cas de WordPress à la base

    1. Willy Bahuaud auteur de l’article

      J’ai quelques idées de sujet de conf’ pour le WordCamp de cette année… et encore le temps d’y réfléchir
      Mais je n’avais pas pensé à Polylang, surtout que Frédéric Demarle à fait une bonne présentation là dessus au WCLyon.

  2. Frank

    Je l’utilise depuis sa sortie, il est maintenant bien stable et j’ai quitté définitivement les autres alternatives. Bravo au développeur Frédéric Demarle. Et bravo à toi Willy pour cet article

  3. nicolasmaillard

    Je n’ai pas pu venir à bout de Polylang avec WooCommerce. Comment par exemple traduis-tu les options de WooCommerce ? Je devais traduire l’option WooCommerce > Settings > Tax > Price Display Suffix, je n’y suis pas arrivé.

    1. Willy Bahuaud auteur de l’article

      Hello, oui j’ai lu ton article. En fait il faut utiliser les hooks mis à disposition par Woocommerce, il y en a beaucoup (au moins un par option).
      Par exemple si tu veux traduire le suffixe de prix il faut simplement ajouter un peu de code dans ton thème (ou dans un plugin à part) :

      add_filter( 'woocommerce_get_price_suffix', 'mon_suffix_prix_traduit', 10, 2 );
      function mon_suffix_prix_traduit( $suffixe, $obj ) {
        if ( 'en_US' == get_locale() ) {
          // on peut utiliser l'objet passé en paramètre pour filtrer plus finement
          // ou simplement faire…
          $suffixe = 'My price suffixe in english';
        }
        return $suffixe;
      }

      On peut également, si l’on souhaite que les chaines restent définies par l’utilisateur les fonctions pll_register_string() et pll__().

      Pour finir, et c’est une astuce intéressante pour n’importe quel plugin (pas que woocommerce), toutes les options de WordPress passent par deux filtres : pre_option_{option name} et option_{option name} donc on peut filtrer toutes ces options en amont de leur utilisation

      Et enfin, sinon, on peut juste utiliser un wpml-config.xml comme celui-ci : https://github.com/wp-plugins/woocommerce-multilingual/blob/master/wpml-config.xml

  4. nicolasmaillard

    Ok, cela revient à traduire le site à la main et cela nécessite d’être développeur. Je réitère mon constat que Polylang n’est pas en mesure d’assurer la traduction intégrale d’une boutique WooCommerce.
    L’absence de duplication des contenus d’une langue à une autre, ainsi que l’absence de synchronisation des menus le réserve à mon sens à de petits projets.

    1. Willy Bahuaud auteur de l’article

      Hello, comme je le disais, si tu n’es pas développeur, tu peux employer la même méthode qu’avec WPML : le fichier wpml-config.xml que j’ai mis dans mon précédent commentaire. C’est comme cela que WPML traduit woocommerce, et c’est aussi supporté par Polylang.
      L’autre méthode (avec les pll__ et les pll_register_string) peut sinon être mise en place par le développeur du thème, puis après le client traduit le site comme il veut, sans développer quoi que ce soit.

      Polylang gère la copie des metas et taxo d’une langue à l’autre. Pour la copie des contenus par défaut (titre et contenu) il faut mettre en place ce code : Make Polylang WordPress plugin copy the content from the original post (et ça n’écrasera pas la version traduite dès qu’on met à jour la version d’origine, comme avec WPML si le client oublie de cocher « traduire à part »).
      Quant à la synchronisation des menus effectivement ce n’est pas natif non plus, mais ça ne m’a jamais manqué.

      Et bien sûr, libre à chacun d’utiliser le plugin qui lui plait

  5. Totem1er

    Bon, ben moi j’ai une erreur 404 quand j’essaye d’afficher les produits en english..
    Je suis manifestement pas les seul, mais je n’ai pas trouvé la solution..
    Quelqu’un a t’il ce problème (et surtout la soluce) ?

    Merci

  6. Frédéric

    Bonjour,

    Lingotek offre un système de gestion de traductions complet. Le plugin « Lingotek translation » connecte ce système de traduction à WordPress + Polylang. Les traductions obtenues gratuitement sont forcément automatiques d’où les slugs qui deviennent des limaces :). Mais Lingotek doit offrir de la traduction professionnelle.

    Je ne supporte pas encore WooCommerce. Pourquoi ? Regardez la taille de l’extension WooCommerce de WPML. C’est presque deux fois plus gros que Polylang… Il y a un peu de taf… Mais ça avance.

    Pour les bugs, j’essaie de les corriger au fur et à mesure qu’ils me sont rapportés.

  7. dmassiani

    Merci pour ton retour. Juste au moment où j’étais et en peine avec WPML et à me demander si Polylang vaux le coup.

    Ma difficulté majeure avec WPML vient d’un bug profond sur les trad d’url de taxonomie sur des custom post type.
    Du coup tu penses que c’est réalisable facilement avec Polylang ?
    Pour info, il s’agit d’urls incluant la taxonomie d’un custom post type. Ces urls sont donc différente selon la langue. La taxonomie est traduite et WPML n’ai pas capable de gérer cela, il y a un bug profond dixit le support WPML.

    Deuxième chose, je suis content de lire que de gérer de la data pour du plugin par WordPress est une bonne idée.
    Je me suis appuyé sur cette idée pour développer http://storytelling.io/ et je confirme ça fonctionne au poil !

    1. Willy Bahuaud auteur de l’article

      De mon côté, pour gérer la traduction des URLs avec Polylang j’utilise un petit plugin confié par Grégory Viguier. Il permet de choisir la traduction des slugs de taxonomies et des slugs de custom post types

      Il se hook sur registered_post_type et registered_taxonomy pour modifier les globales $wp_rewrite, $wp_post_type et $wp_taxonomies. Puis ensuite il se greffe sur post_type_link, post_type_archive_link et term_link pour modifier l’URL des différents contenus à l’affichage.

  8. Axelle

    Super article comme souvent ! Ton site m’aide énormément pour la construction du mien
    J’ai cependant une petite question : j’ai posté 4 articles en français et je suis donc ici pour créer une version anglaise.
    Je ne l’ai pas encore mis en ligne, mais j’ai pu voir que les commentaires qui étaient sur la page française, n’y seraient pas sur ma version anglaise ?

    Merci pour ta réponse
    Axelle

  9. Feodor Oblomov (@Oblomov83)

    Idem. Le problème avec qTranslate (sans X) était les MàJ WP automatiques qui désactivaient le plugin en attendant le MàJ qui tardait à venir, voire ne venaient pas du tout !
    Maintenant les auteurs suivent les MàJ WP très bien.
    La sélection automatique de la langue (selon les préférences du navigateur) fonctionne très bien, par contre, pour le SEO/référencement, ça marche moyennement…

  10. Clélia

    Bonjour,

    J’ai un problème. Lorsque je suis sur la version anglaise, que je clique sur le menu E-shop, rien ne s’affiche. Il faut que je clique sur le drapeau français (tout en restant sur le menu e-shop), là pas de soucis les produits apparaissent, je re-clique sur le drapeau anglais (tout en restant sur le menu e-shop) et là les produits apparaissent, je ne comprend pas pourquoi rien n’apparait en passant d’un menu à l’autre sur la version anglaise et pourquoi je dois passer pas le drapeau Français puis Anglais. Enssuite quand je clique sur un produit (version anglais) on m’affiche 404 erreur. Alors que en Français tout marche parfaitement.

    Autre problème, les produits entre la version Française et Anglaise ne sont pas liés, je me retrouve donc avec deux fois le produit en stock.

    Merci,
    Clélia

  11. Marc Jouat

    Idem qu’une personne au-dessus : malgré le plugin installé, erreur 404 avec woocommerce (marche nickel avec les articles). Testé tout ce qu’il est envisageable de faire : défaut, produit, catégorie, boutique… Rien n’y fait. Une idée ? Merci d’avance

  12. Tirips

    J’utilise polylang depuis un certain temps en faisant mes propres traductions (article en français puis click sur le + pour créer un nouvel article en anglais, lié à celui en français).
    Mais depuis quelques temps il ne conserve plus cette liaison et j’ai beau essayer de mettre à jour ça ne conserve pas le lien (ça marchait quand les liens entre langues se faisaient par ID).
    Une solution ? Merci d’avance

  13. Tirips

    Il me fallait juste 20 mn de recherche en plus…
    Il ne faut pas copier/coller les titres d’article, mais taper les premières lettres dans le champ de la langue et hop il propose l’article traduit. Y’a plus qu’à enregistrer la modification.
    Dsl pour le dérangement !

  14. Maxime Culea

    Hello Jorl,
    qTranslate X est à mon avis la pire des solutions car ajouter toutes les variations de langue dans le content avec des shortcodes n’a rien de péren :
    – tu ne pourra pas ajouter des méta complexes (acf, autres)
    – le jour ou tu devra changer de méthode ou enlever/ajouter des contenus traduisibles, tu sera dans la moise. Tout ton content sera explosé en multiple shortcodes alias les versions de langues
    En tout cas je respecte ton choix, mais ne le recommande pas.

  15. domi5529

    Bonjour, j’ai parcouru votre article et ses commentaires. J’ai testé polylang et linguotek sur un site et j’ai rapidement constaté la simplicité d’utilisation, des traductions automatiques à surveiller mais d’une relative bonne qualité! Mon problème est celui-ci: Qu’en est-il de la traduction des chaines? Un exemple,je souhaite traduire « Leave a comment » ou « Related post », et rien à faire. Avez-vous une solution sans rentrer dans du développement web.
    Un grand merci d’avance.

  16. Christian L

    Bonjour,

    Je reprends un site, et, comme il se doit, je rencontre des problèmes.
    Après création d’une version anglaise, les 2 pages (fr et en) ont disparues du backoffice, mais sont tjs présentes sur le site…
    La page de réglages>onglet traductions des chaines ne comporte que le français ???

    Auriez vous une idée de l’origine des soucis ?

  17. rodriguez

    Bonjour, je souhaite traduire les titres et les descriptions de paiement woocommerce mais je n’y arrive pas et c’est pas faute d’avoir essayer, il ne me reste plus que ca à traduire!!! help me !!! merci
    Vous indiquez d’ailleurs : « Après, si vous souhaitez traduire certaines chaines de Woocommerce telles que les titres ou descriptions des modes de paiement, vous pourrez utiliser d’autres filtres que je ne vais pas détailler ici « ….euh moi je veux bien des détails

  18. Willy Bahuaud

    Bonjour @rodriguez,

    Pour « sur-traduire » certaines chaînes de textes de WordPress ou de Woocommerce, il faut utiliser les filtres des fonctions de traduction : gettext, gettext_with_context (voir dans /wp-includes/l10n.php)… tu pourras trouver le texte d’origine de la chaine, ainsi que le contexte, dans le code de Woocommerce.

    Un exemple ?

    add_filter( 'gettext','change_gettext_woo', 10, 3 );
    change_gettext_woo( $translation, $text, $domain ) {
    if ( $text == 'Price' && $domain == 'woocommerce' ) {
    $translation = 'Prix';
    }
    return $translation;
    }

  19. rodriguez

    juste pour infos la traduction n’est pas automatique mes moyens de paiement sont en francais sur mon site francais et anglais. Alors une sur traduction pk pas mais je veux déja traduire en anglais. Merci

  20. irienet

    Merci pour votre article qui est très intéressant, j’aurais cependant une question: j’utilise actuellement polylang et je recontre un problème concernant les permaliens. En effet il faudrait que, pour une meme page traduite en plusieurs langue, le permalien reste le même :

    Ce que souhaite avoir :
    http://www.exemple.com/fr/page/
    http://www.exemple.com/en/page/
    etc…

    Ce que j’ai pour l’instant:
    http://www.exemple.com/fr/page/
    http://www.exemple.com/en/page-2/

    J’ai beau changer le permalien dynamiquement via l’option « modifier » lorsque je suis sur la page du post en question, le modification ne prend pas effet.

    Quelqu’un a-t-il une solution ? Merci d’avance.

  21. Hazaliwa

    Bonjour,
    J’ai lu votre article et je pense que vous pourriez peut être m’aider: je ne suis pas du tout développeuse, je suis néophyte et c’est mon premier blog/boutique en ligne wordpress. J’ai le plugin polylang et j’utilise woocommerce. Pour traduire aucun souci, seulement au niveau de la gestion du stock de mes produits, je me retrouve avec deux gestions pour chacune des langues. Je souhaiterai que lorsqu’un client passe commande pour un produit en stock à 1 traduit en français, un client qui souhaite commander ce même produit traduit en anglais ne puisse donc pas le commander. En gros, je souhaiterai synchroniser la gestion de stock entre les différentes versions de langues. Merci!

  22. Willy Bahuaud

    Hello,
    Pour synchroniser la gestion des stocks entre les langues, il faut mettre en place un hook d’action pour que les changements du stock d’un produit soit répercuté sur les autres versions. Voici ce code :

    
    add_action( 'woocommerce_product_set_stock', 'willy_sync_stock_amount_pll' );
    function willy_sync_stock_amount_pll( $obj ) {
    	// Polylang 1.8 is activated
    	if ( function_exists( 'pll_get_post_translations' ) ) {
    		// Unset this filter
    		remove_filter( 'woocommerce_product_set_stock', 'willy_sync_stock_amount_pll' );
    		// Get translated products ID
    		$translations = pll_get_post_translations( $obj->id );
    		if ( ! empty( $translations ) ) {
    			// Get stock quantity
    			$stock = $obj->get_stock_quantity();
    			// Foreach translation, sync stock amount
    			foreach ( $translations as $lang => $translation ) {
    				$p_other = new WC_Product_Simple( $translation );
    				$amount = $p_other->set_stock( $stock );
    			}
    		}
    		// reset this filter
    		add_filter( 'woocommerce_product_set_stock', 'willy_sync_stock_amount_pll' );
    	}
    }
    
  23. Hazaliwa

    Merci Willy Bahuaud pour votre réponse! Comme je vous le disais je suis néophile, du coup n’ayant jamais entendu parler de hook, je me suis documentée cet après midi mais je ne trouve pas d’infos claire sur la procédure à suivre pour déclarer un hook. J’ai peur d’entrer dans les fichiers functions de mon thème et de me tromper et tout planter…je suis moralement et intellectuellement fatiguée…pourriez vous avoir la gentillesse de m’expliquer svp?

  24. Willy Bahuaud auteur de l’article

    Hello,

    Tu as juste besoin de coller ce code que je t’ai confié dans un fichier PHP dans le répertoire « mu-plugins » (que tu peux créer dans wp-content), en ajoutant la balise d’ouverture php au début.

  25. Frédéric Bégnon

    Bonjour
    Mon problème est identique à beaucoup ici. Je viens d’installer woocommerce pour remplacer eShop qui est obsolète. J’avais déjà polylang couplé à lingotek et le soucis est le même qu’avec eShop. Les traductions des pages d’achats s’arrêtent à la page produit. Les pages restantes demeurent inexorablement en français. C’est problématique. Comment faire en sorte tout fonctionne bien. J’ai bien lu tout les commentaires et les réponses proposées. Mais je ne suis pas du tout dans le code. J’ai essayé d’installé l’addon polylang pour woocommerce mais mon wordpress l’a refusé avec un message d’erreur. Une aide me serait précieuse.
    Merci

  26. Frédéric Bégnon

    re
    Attention il y a deux addon woocommerce polylang,integration le premier était foireux (hyyan woo……). Celui que j’ai installé hier a bien été installé. Seulement, ça marche pas non plus. On peut en effet générer les pages de langue (anglais et espagnol pour moi) La page produit n’est plus « trouvée ». J’en ai édité une mais sans succès non plus. Seules les pages anglaise et espagnoles sont « trouvées. » Je pense que cet addon ne prend en compte que j’ai la version francisé de woocommerce. J’avoue que je suis dépassé. Je vais pour l’instant resté sur eShop en attendant que de trouver la solution. Je suis preneur de toutes infos. Merci.

  27. Hazaliwa

    Bonjour, je n’ai pas bien compris votre problème avec polylang car pour ma part il permet de traduire aussi bien les page produits que les autres pages (blog, infos, etc). De plus, les catégories, étiquettes, photos sont aussi traduisibles.

  28. Frédéric Bégnon

    Bonjour Hazaliwa
    Je me suis sans doute mal exprimé. Ce n’est pas facile pour moi d’expliquer avec mes mots ces problèmes. Je vais déjà commencer par le plus évident. Quand le crée un nouveau produit et que je veux l’afficher (en français donc puisque c’est la langue du site), une page d’erreur est affichée. (404) Malgré ça, si je traduis le produit dans les deux langues anglais espagnol, celles s’affichent correctement elles. Mais si je veux continuer le processus d’achat, les liens sont rompus. C’est incompréhensible.
    Merci pour ton aide

  29. Hazaliwa

    Si je dis cela c’est que a priori on pense traduire le français donc on n’entre les langues dans lesquelles on veut traduire sans penser que le français est aussi une langue « traduite »

  30. fredobegnon

    Oui, j’ai le français en langue principale et les deux autres. J’utilise eShop pour l’instant qui fonctionne à moitié car les transactions ne se font pas jusqu’au bout dans la langue sélectionnée mais on peut, en cliquant sur le drapeau du widget, traduire la page au fur et à mesure du processus d’achat. Ce qui est un peu déroutant. Mais ça fonctionne. Tandis qu’avec Woocommerce, C’est la pagaille. Presque deux jours que j’essaie de comprendre.

  31. fredobegnon

    J’ai réussi à créer les principales pages manquantes en y insérant le code woocommerce adéquat. Telles que « panier » « Passer la commande ». Je n’arrive pas à trouver la solution pour « voir le panier » « ajouter un code promo » qui restent en français sauf si l’on clique sur le drapeau pour traduire. Je suis proche du but Il n’y a de page spécifique à ces actions là. Comment faire?

  32. Nico

    Bonjour, Le plugin Polylang ne duplique pas les Produits. Quand je clique sur icon ajout pour la langue « anglaise » par exemple, il ne duplique pas les Variations du produit… ou quand je fais dupliquer un produit, puis je lui change la langue, même chose, il supprime tout les Variations…
    Bien que j’ai installé divers pluging compatible Polylang, sensés résoudre ce problème, rien ne fonctionne… J’avoue ne plus avoir d’idée ou ne pas avoir les compétences pour corriger ce bug.
    As-tu une solution ?
    Je te remercie par avance.

  33. testamar

    Bonjour, félicitation pour votre article très clair.
    Je ne suis pas professionnel et je dois créer un petit site pour une asbl. J’ai déjà developpé la version fr avec le thème academia. Est-ce possible d’insérer polylang pour creer des versions dans d’autres langues ou dois-je tout recommancer ?

  34. tomtom

    Bonjour, et merci pour cet article.

    Un client me demande de ne pas afficher les pages non traduites. Par exemple, le site sera complet en français mais en anglais, seulement les page traduites apparaîtront (les pages non traduites ne doivent pas être proposées dans le menu), Puis-je utiliser polylang pour ça? ou dois-je me taper une install multi-site ?

    Merci d’avance de votre réponse.

    A bientôt

  35. Hazaliwa

    Désolée de revenir à la charge avec ce fameux hook pour synchroniser les gestion de stock sur wordpress/polylang. Pendant un temps ca le fonctionnait puis ces jours ci il s’affiche une erreur fatale. J’ai copié coller le code (par filezilla) sur un fichier php que j’ai placé dans le répertoire wp-content/mu-plugins. Cela n’a aucune incidence sur la gestion de stock…je ne sais que faire.
    merci d’avance pour toute aide!

  36. Agnieszka Rychlicka

    Bonjour,

    j’ai exactement le même problème et je sais pas du tout quoi faire. Chaque fois il faut cliquer sur le drapeau d’une autre langue pour que le produit s’affiche traduit, MAIS après on ne peut pas continuer l’achat, il semble que Woocommerce avec 2 langues a du mal!! J’ai modifié les permaliens dans Polylang et essayé plusieurs options et cela ne marche pas.

  37. Hazaliwa

    Bonjour,
    Je suis tombée sur le plugin Woocommerce Polylang Integration, je l’utilise depuis 2-3 semaines en test et jusqu’à maintenant ça à l’air de fonctionner .

  38. Agnieszka Rychlicka

    même avec le panier et le payment en 2 langues? dans mon cas le plugin ne m’aide pas, les onglets gérés par Woocommerce aparaissent toujours dans la langue utilisée par défaut. Je sais plus comment faire, peut-être tout désactiver?

  39. Hazaliwa

    Pour ma part les onglet woocommerce sont bien traduits…ce qu’il faut faire c’est traduire (en anglais par ex) pour chaque page, produit , menu, catégorie, étiquette. Pour les widget je n’ai rien eu à faire.
    Pouvez me dire plus de précision sur votre problème?

  40. Agnieszka Rychlicka

    Bonjour,
    en fait j’ai traduit toutes les pages (ou plutôt les noms de pages- mon compte, boutique, commandes…Etc), les produits je les ai ajoutés aussi…le problème est le suivant: la page principale s’ouvre, je clique sur l’ongle « boutique » et au lieu de me renvoyer à la « boutique » traduite en français, je finis sur la page de boutique polonaise (la première langue), je dois ensuite cliquer sur le drapeau français- c’est à ce moment que la boutique en français s’affiche. Par contre quand on veut ajouter les produits au panier, on fait clique sur « panier » on est encore renvoyé au « panier », à la page qui ne marche pas puisqu’on voit uniquement « panier » et au dessous: « edit. Si je clique sur le drapeau polonais, tout est ok, le panier fonctionne et on peut poursuivre l’achat (mais en polonais…).

    J’ai donc enlevé le polylang et essayé de tout nettoyer pour que mon site marche correctement avec une langue. Et qu’est-ce qui s’est passé? Après avoir effacé la version française, comme par magie le « panier », « commandes », les buttons « ajouter au panier » tout est EN FRANCAIS!! alors que avant soit ça ne marchait pas soit c’était en polonais!! et on peut même passer au payement en français!! mais comment ça se fait??? Je n’arrive même pas à enlever tout ça maintenant. J’avais effacé toutes les données et fichiers de polylang et je sais pas du tout comment faire.

    Merci d’avance!

  41. Hazaliwa

    Bonjour, pour la remarque 1: pour ma part c’est pareil, car lorsque l’on paramètre woocommerce on doit choisir une page d’accueil, si vous optez pour la page d’accueil « boutique » en polonais, à chaque fois que vous taperez votre adresse de site, vous tombez sur boutique en polonais. C’est au visiteur de choisir ensuite si il veut la page en français ou polonais.
    Pour la remarque2 : avez-vous mis le prix pour le produit en français aussi?
    Pour la remarque 3 : je ne peux pas vous expliquer cela va bien au delà de mes compétences lol . Maintenant il me semble que même un plugin supprimé, lorsqu’il est re installé et reactivé certaines données traduites reviennent, c’est à dire les pages, menus,etc . Après si tout est vraiment effacé, je vous conseille de reprendre les traductions de la page boutique, du menu et d’un seul produit pour retester si ça fonctionne. Pour le plugin, le nom exact est WooCommerce Polylang Integration et son créateur Darko Gjorgjijoski au cas où car des fois on prend des plugins au noms semblables…

  42. Agnieszka Rychlicka

    1.Ma page d’accueil ce n’est pas la boutique, mais étant en France quand on cherche le site, il va s’ouvrir automatiquement en français. Logiquement pour un utilisateur français au moment où on clique sur « boutique » la page s’ouvre aussi en français (ce qui n’est pas le cas) et je crains que à ce stade l’utilisateur il saura pas quoi faire et il abandonnera.

    2. Le problème est qu’il faut un plugin soit pour pouvoir mettre 2 prix différents (avec un plugin payant…) soit (l’option que j’ai choisi sans avoir pas de choix ) installer une sorte de convertisseur de devise- déjà ce n’est pas génial puisque le prix va toujours varier et je ne voulais pas avoir le même taux de change pour 2 marchés différents. Donc, le prix (même en utilisant la version française) reste zloty- la devise principale et à la fin on devrait pouvoir convertir le zloty en EUR. Je l’ai essayé et 2 prix devraitent s’afficher mais je sais pas du tout si au final le paiement se ferait en EUR. Je ne suis pas encore bien arrivée à gérer ça…

    3. ça donne pas trop d’espoirs alors! je vais essayer de réinstaller le plugin, en ce qui concerne le woocommerce polylang integration- oui j’avais exactement le même.

    Pour vous donc la boutique et tous les autres onglets fonctionnent en plusieurs langues?

  43. Hazaliwa

    J’ai opté pour deux langues, français et anglais et le seul petit problème que j’ai c’est que je constate que parfois en tapant l’adresse du site je tombe sur la version anglais (francais langue principale) et non pas sur la boutique en anglais mais plûtot une page shop vide mais une fois que je clique sur l’onglet francais puis anglais je tombe sur la boutique shop.
    En tout cas, en version gratuite jusqu’à maintenant c’est polylang qui me semble être le meilleur compromis. Je me suis arrachée les cheveux pour le comprendre, j’ai demandé de l’aide sur tous les forums possibles, j’ai passé des jours tracassant et malgré ça je pense toujours que polylang est la meilleure option gratuite.

  44. Hazaliwa

    pour votre remarque 1 j’ai trouvé la solution: votre page d’accueil doit être indiquée dans la version française et dans la version polonaise (cliquer sur la langue tout en haut dans la barre de votre tableau de bord wordpress). Dans votre menu (fr), vous indiquez la page d’accueil française, et dans votre menu polonais vous indiquez la page d’acceuil polonaise. Ensuite vous allez dans la rubrique woocommerce<paramètres<produits<affichage: vous indiquez votre page d'accueil pour la version française et ensuite votre page d'accueil polonaise.

  45. Agnieszka Rychlicka

    il me semble que c’était exactement comme ça, en ce qui concerne la rubrique woocommerce je ne me rappelle plus. En tout cas la page d’accueil elle s’ouvrait bien dans les deux langues, en fonction de l’IP. Lorsque je cliquais sur la boutique c’est là où m’arrivait la même chose, comme vous l’aviez décrit avant (qu’il fallait cliquer sur le drapeau pour que la page s’ouvre en- dans mon cas- français, au lieu de rester vide). En tout cas, j’ai supprimé polylang, ça m’a crée beaucoup de problèmes et le site ne fonctionnait pas bien , j’ai fait beaucoup de manipulations pour revenir à l’état correct en polonais (maintenant ça marche). Je vais recommencer avec polylang …petit à petit, peut-être ça va marcher. En revanche, j’ai dû modifier les options des parmaliens.

  46. Jey

    Bonjour,

    merci pour ce feedback POLYLANG!
    Personnellement, je viens de l’installer sur un site vitrine Cone thème ONE PAGE en bilingue français première langue & anglais et malheureusement j’ai des erreurs de page sur mes catégories de MENU en anglais uniquement alors que la HOME Page anglaise est trouvée avec le scrolling et les pages sections en place visuellement. Le retour de la version anglaise vers le logo en page principale du site ne marche pas non plus. J’ai essayé de paramétrer tous les réglages POLYLANG pensant que cela viendrait des URL mais sans succès!! Quelqu’un peut-il m’aider? Merci d’avance

  47. kimaya

    Bonjour
    Je me permets de poster ici pour solliciter votre aide. J’ai un blog WordPress en français avec déjà 200 articles publiés.
    Je souhaiterais traduire ces articles en espagnol et utiliser Polylang que je connais déjà mais sans modifier les url de mes articles existants et c’est la que je coince.

    J’ai coché l’option « La langue est déterminée par des noms de domaine différents  » et laissé l’url principale pour le français et mis example.com/es/ pour l’espagnol dans mon site test mais cela ne fonctionne pas, l’adresse espagnole n’est pas créée.
    Quelqu’un pourrait-il m’aider svp ?
    Merci par avance

      1. kimaya

        Oui en tout cas pour la version espagnole.
        J’ai avancé un peu depuis mon message, à priori en cochant l’option  » La langue est déterminée par le nom du répertoire dans les permaliens » puis  » Cacher l’information de langue dans l’adresse web pour la langue par défaut et Supprimer /language/ dans les permaliens » ça devrait laisser ma langue par défaut (le français) à la racine du site et donc ne pas modifier les url existantes.

        Vous confirmez ?
        Merci de votre aide

  48. Skynet

    Bonjour et merci pour ce tuto.

    J’ai utilisé Polylang, mais à peine le plugin activé, le site deviens vide, d’ou viens le problème s’il vous plait ?
    J’utilise wordpress, woocommerce et buddypress

  49. Jacques

    Bonjour,
    J »utilise le thème GeneratePress avec Polylang pour un site bilingue Français anglais. J’ai une version française et une version anglaise du logotype dans l’en-tête de ma page d’article. Comment basculer de l’une à l’autre en changeant de langue ? J’ai vu qu’on pouvait changer les infos attachées à l’image, mais pas l’image elle-même dans la traduction des médias.
    Merci de vos lumières

      1. jacques

        Merci de la réponse. J’ai effectivement dû ajouter deux fonctions dans le thème enfant.
        La première permet de spécifier les noms des images de logo et la deuxième prend le dessus sur la fonction du thème pour afficher le logo.

Laisser un commentaire

Thèmes & Plugins
Premium By WP Channel

WP Alacarte propose des produits et services de qualité
made in France pour la plateforme WordPress.

Tout est prêt pour créer votre site à la carte !

  • Thèmes et extensions premium
  • Facilité d’utilisation garantie
  • Temps de chargement optimisé
  • Personnalisation avancée
Découvrir

Rejoignez la communauté WordPress !

Faites partie de l’aventure en devenant membre d’une association WordPress. Conférences, ateliers, BarCamp, WordCamp… Venez
partager votre passion pour WordPress !

Aurélien DENIS,
président des associations WordPress Francophone et WPMX