# Traduire correctement les menus de navigation sur un site WordPress multilingue

> Un menu mal traduit ruine l'expérience d'un site multilingue en quelques secondes. Voici la méthode complète avec WPML et Polylang, et les pièges à éviter.

- Auteur : Clément Hadrot
- Publié le : 2021-11-30
- Mis à jour le : 2021-11-30
- Catégorie : Multilingue
- URL : https://wpmoderne.dev.wordpress-developpement.fr/multilingue/traduire-menus-navigation-multilingue/

## L’essentiel

- Un menu se crée une fois par langue, jamais partagé
- Les liens personnalisés doivent pointer vers l'URL de la bonne langue
- Les mega-menus construits en blocs demandent une vérification manuelle

Le menu de navigation est la première chose qu'un visiteur voit et utilise sur un site. Sur un projet multilingue, c'est aussi l'un des éléments les plus fréquemment mal configurés : liens qui pointent vers la mauvaise langue, libellés non traduits, sous-menus incomplets d'une langue à l'autre. Ces défauts sont d'autant plus visibles qu'ils sautent aux yeux dès la première visite, contrairement à un problème de balise `hreflang` invisible pour l'utilisateur final.

Cet article détaille la méthode correcte de gestion des menus multilingues sur WordPress, avec WPML et Polylang, ainsi que les erreurs les plus fréquentes constatées en recette de sites.

## Le principe de base : un menu par langue et par emplacement

Sur WordPress, un menu est assigné à un « emplacement » (`theme_location`) déclaré par le thème, par exemple `menu-principal` ou `menu-pied-de-page`. En contexte multilingue, il ne s'agit pas d'avoir un seul menu affiché dans plusieurs langues, mais bien d'un menu distinct par langue, chacun assigné au même emplacement mais actif selon la langue courante du visiteur.

Avec Polylang, la création se fait manuellement : il faut créer autant de menus que de langues actives (« Menu principal FR », « Menu principal EN »), assigner à chacun sa langue depuis l'écran **Apparence → Menus**, puis les associer tous deux au même emplacement. Polylang se charge ensuite de servir automatiquement le bon menu selon la langue de la page consultée.

Avec WPML, le module **WPML → Traduction des menus de navigation** propose une approche différente : partir du menu existant dans la langue par défaut et générer sa traduction directement depuis une interface dédiée, où chaque élément de menu (chaque lien) peut être traduit individuellement sans dupliquer manuellement toute la structure.

## Traduire les libellés sans casser la structure

Un menu contient deux types d'éléments : les liens vers du contenu existant (une page, un article, une catégorie) et les liens personnalisés (une URL externe, une ancre). Les premiers suivent normalement la traduction du contenu ciblé si l'extension multilingue est correctement configurée : un lien vers la page « Contact » traduite pointe automatiquement vers la version anglaise « Contact » (ou « Contact Us ») lorsque le menu anglais est affiché.

Les liens personnalisés, en revanche, ne bénéficient d'aucune traduction automatique de leur libellé ni de leur URL. Un lien « Voir nos tarifs » pointant vers `/tarifs/` doit être manuellement recréé dans le menu anglais avec le libellé « See our pricing » et l'URL `/en/pricing/`. C'est une source d'erreur fréquente : un menu anglais fini par ressembler à un menu français mal traduit, avec des URL françaises dans une navigation censée être entièrement en anglais.

> L'essentiel à retenir : Un menu se crée une fois par langue, jamais partagé ; Les liens personnalisés doivent pointer vers l'URL de la bonne langue ; Les mega-menus construits en blocs demandent une vérification manuelle

## Le cas des mega-menus construits avec des blocs

Depuis l'arrivée de l'éditeur de site et des menus de navigation en blocs (bloc **Navigation**, introduit avec WordPress 5.9), certains thèmes construisent des méga-menus riches directement en blocs Gutenberg, avec des colonnes, des images, et des mises en forme avancées. Ce contenu doit être traduit comme n'importe quel contenu en blocs : WPML propose depuis ses versions récentes une prise en charge de la traduction de blocs via son éditeur de traduction avancé, tandis que Polylang s'appuie sur la traduction native de blocs disponible dans WordPress lui-même.

Un piège spécifique à ce type de menu : une image utilisée dans un bloc de méga-menu (un visuel promotionnel avec du texte incrusté) n'est jamais traduite automatiquement, même si le bloc parent l'est. Si le visuel contient du texte en dur, il faut prévoir une version par langue de l'image elle-même, ce qui est facile à oublier lors de la recette.

## Vérifier la cohérence entre langues : une checklist de recette

1. Ouvrir le site dans chaque langue et comparer le nombre d'éléments de menu visibles : un écart de nombre signale presque toujours un oubli de traduction.
2. Cliquer sur chaque lien personnalisé et vérifier que l'URL de destination correspond bien à la langue courante, pas à la langue par défaut.
3. Vérifier les sous-menus (menus déroulants) qui sont souvent négligés lors de la traduction initiale, l'attention se portant d'abord sur le premier niveau visible.
4. Tester le menu sur mobile, où certains thèmes utilisent un menu « hamburger » distinct qui peut être configuré séparément du menu de bureau et donc traduit de manière incomplète.
5. Vérifier le menu du pied de page, souvent oublié car moins visible lors des tests rapides.

## Automatiser partiellement avec WP-CLI

Pour un audit rapide du nombre d'éléments par menu sur un site multilingue, une commande WP-CLI simple permet de comparer les volumes sans ouvrir chaque écran manuellement :

```
wp menu list --fields=term_id,name,slug,count
```

Un écart significatif de `count` entre le menu français et le menu anglais correspondant à un même emplacement est un signal à vérifier immédiatement, avant même d'ouvrir l'interface graphique.

> Un menu bilingue avec un lien manquant d'un côté n'est jamais signalé par une erreur technique. C'est un défaut purement éditorial, qui ne se détecte qu'en le regardant vraiment, langue par langue — un rappel utile qu'aucune extension multilingue ne remplace une recette humaine attentive.

## En résumé

La traduction des menus de navigation demande une rigueur particulière parce qu'aucune erreur ici ne passe inaperçue aux yeux du visiteur. Un menu par langue et par emplacement, une attention systématique aux liens personnalisés et à leurs URL, et une vérification manuelle comparative entre langues restent, malgré la maturité des extensions multilingues actuelles, la meilleure garantie contre les incohérences de navigation.
