
PolyLingo vs Polylang : quelle est la différence et quand utiliser chacun
By Robert M
PolyLingo vs Polylang : quelle est la différence et quand utiliser chacun
Si vous êtes arrivé ici, vous êtes probablement dans l'une des deux situations suivantes : vous êtes satisfait de Polylang dans WordPress mais vous vous demandez s'il existe un équivalent pour un projet qui n'est pas sur WordPress, ou vous migrez complètement hors de WordPress et essayez de comprendre ce qu'il advient de votre configuration multilingue.
Cet article répond directement aux deux questions. Nous couvrirons ce que chaque outil fait réellement, où chacun s'intègre, et comment choisir entre eux.
Ce qu'est Polylang (et ce qu'il n'est pas)
Polylang est un plugin WordPress. C'est l'un des meilleurs plugins multilingues dans l'écosystème WordPress. Il gère les sélecteurs de langue, vous permet de créer des versions traduites des articles et pages, gère les balises hreflang, et s'intègre proprement avec l'éditeur de blocs WordPress. Si vous gérez un site WordPress, c'est un outil sérieux, bien maintenu, et il y a une bonne raison à ses millions d'installations actives.
La limitation est clairement dans la description : c'est un plugin WordPress. Il n'a pas d'API que vous pouvez appeler depuis l'extérieur de WordPress. Il n'a pas de concept de fichier de locale JSON, de fichier de contenu Markdown, ou de template HTML dans un projet Next.js. Tout son modèle suppose que le contenu vit dans la base de données WordPress et est rendu par WordPress.
Ce n'est pas une critique. C'est juste la portée de l'outil.
Ce qu'est PolyLingo
PolyLingo est une API de traduction. Vous lui envoyez du contenu (texte brut, Markdown, JSON ou HTML) et il retourne des versions traduites dans toutes les langues que vous demandez, en une seule requête. Il n'a aucune opinion sur votre CMS, votre framework ou votre configuration de déploiement. Il fonctionne partout où vous pouvez faire une requête HTTP.
L'objectif principal de conception est la préservation du format. La plupart des API de traduction sont construites autour des phrases : vous envoyez une chaîne, vous recevez une chaîne en retour. Ce modèle s'effondre rapidement lorsque votre contenu a une structure. Collez un fichier de locale JSON dans un service de traduction typique et vous obtiendrez des noms de clés traduits, des délimiteurs corrompus, ou du texte là où il y avait un objet. PolyLingo considère la structure comme hors limites. Seules les valeurs de chaîne changent ; tout le reste revient exactement comme il a été envoyé.
Un exemple concret. Vous envoyez ceci :
{"btn": {"save": "Save", "cancel": "Cancel"}}
Un traducteur orienté phrase pourrait vous renvoyer :
{"button": {"save": "Guardar", "cancel": "Cancelar"}}
La clé btn est devenue button. Cela cassera votre application. PolyLingo vous donne :
{"btn": {"save": "Guardar", "cancel": "Cancelar"}}
Clés intactes. Seules les valeurs sont traduites.
Le même principe s'applique au Markdown (les titres restent des titres, les blocs de code sont laissés tels quels, les URLs des liens ne changent pas) et au HTML (les balises et attributs sont préservés, seuls les nœuds de texte et les attributs appropriés sont traduits).
La vraie différence : la portée
La façon la plus simple de le dire :
Polylang gère le contenu multilingue à l'intérieur de WordPress. C'est une couche CMS. Il gère quel article est la version espagnole de quel article anglais, génère des sélecteurs de langue, et maintient les traductions synchronisées lorsque vous mettez à jour le contenu.
PolyLingo traduit du contenu structuré via une API. C'est une couche de traduction. Vous lui fournissez du contenu, il retourne des traductions. Ce que vous faites avec ces traductions dépend de vous.
Ils résolvent des problèmes adjacents, pas le même problème. C'est pourquoi la comparaison n'est pas vraiment "lequel est meilleur" mais "quel problème ai-je."
Quand utiliser Polylang
- Votre site fonctionne sous WordPress et vous souhaitez rester sur WordPress
- Vous avez besoin d'un flux de travail de gestion de contenu : éditeurs passant d'une version linguistique à une autre, suivi du statut de traduction, sélecteurs de langue dans le thème
- Vous n'êtes pas développeur et vous voulez une solution pilotée par une interface utilisateur
- Vous utilisez WooCommerce et avez besoin d'une gestion de traduction des produits dans WordPress
Polylang excelle dans tout cela. Si WordPress est votre stack, c'est l'outil approprié.
Quand utiliser PolyLingo
- Vous développez avec Next.js, Nuxt, SvelteKit, Astro ou tout autre framework non WordPress
- Vous utilisez un CMS headless (Contentful, Sanity, Prismic) et devez traduire le contenu au moment de la publication ou via un webhook
- Votre contenu est dans des fichiers de locale JSON qui doivent être traduits sans corrompre la structure des clés
- Vous migrez hors de WordPress et souhaitez emporter votre flux de travail multilingue avec vous
- Vous avez du contenu Markdown (articles de blog, documentation, descriptions de produits) et avez besoin de versions traduites qui ne cassent pas la mise en forme
- Vous souhaitez traduire en plusieurs langues en un seul appel API plutôt que de faire un appel par langue
Le point de terminaison /translate de PolyLingo accepte un tableau targets, donc une requête peut retourner les 36 langues supportées en une fois. Pour un fichier de locale qui doit être livré en dix langues, c'est un appel API au lieu de dix.
Qu'en est-il de la migration depuis WordPress ?
Si vous déplacez un site WordPress vers une configuration headless ou statique, votre contenu Polylang ne vous suit pas automatiquement. Les traductions sont stockées comme métadonnées des articles WordPress et ne s'exportent pas proprement en fichiers Markdown ou structures JSON.
Le chemin pratique que la plupart des équipes empruntent :
- Exportez votre contenu WordPress en Markdown ou JSON (des outils comme
wordpress-export-to-markdowngèrent la partie mécanique) - Utilisez PolyLingo pour traduire le contenu exporté dans vos langues cibles
- Stockez les fichiers résultants dans votre nouvelle structure de contenu à côté de la langue source
Le point de terminaison batch de PolyLingo (POST /translate/batch) est conçu exactement pour cela. Vous pouvez envoyer jusqu'à 100 éléments de contenu en une seule requête, chacun avec son propre format, tous partageant le même ensemble de langues cibles. Pour une migration de site avec des centaines de pages, c'est l'outil adapté.
Résumé côte à côte
| PolyLingo | Polylang | |
|---|---|---|
| Fonctionne sans WordPress | Oui | Non |
| Préservation du format (JSON, Markdown, HTML) | Oui | Contenu WordPress uniquement |
| Une requête, toutes les langues | Oui | Non |
| Accès API REST | Oui | Non |
| Interface de gestion de contenu | Interface traducteur (sans code) | Administration complète WordPress |
| Détection automatique du format de contenu | Oui | N/A |
| Support des langues RTL | Oui | Oui |
| Facturation à l'usage | Oui | Plugin gratuit / forfait Polylang Pro |
La version courte
Si vous êtes sur WordPress et que vous y restez : utilisez Polylang. Il est conçu pour cet environnement et il est bon dans ce domaine.
Si vous êtes hors WordPress, en train d'en sortir, ou construisez quelque chose qui n'est pas WordPress : PolyLingo vous offre le même flux de travail multilingue structuré via une API qui fonctionne avec ce que vous construisez.
Les deux outils peuvent aussi coexister. Certaines équipes utilisent Polylang sur leur site marketing principal (qui reste sur WordPress) et PolyLingo pour leur site de documentation, leurs chaînes d'interface utilisateur web, ou leurs modèles d'email. Le flux de travail est le même ; la stack n'a pas à l'être.
Essayez-le
Le niveau gratuit de PolyLingo inclut 100 000 jetons par mois. Cela suffit pour plusieurs articles de blog en dix langues, ou un fichier de locale de taille moyenne en 36 langues. Pas de carte de crédit requise.
curl -sS -X POST "https://api.usepolylingo.com/v1/translate" \
-H "Authorization: Bearer $POLYLINGO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "# Welcome\n\nTranslate **any format** without breaking the structure.",
"format": "markdown",
"targets": ["es", "fr", "de", "ja"]
}'