**TL;DR.** Le SEO multilingue en 2026 a trois règles. (1) Choisissez une structure d'URL et utilisez-la partout. (2) Émettez des clusters hreflang réciproques qui incluent uniquement les locales réellement traduites par entité. (3) Traduisez l'ensemble du parcours utilisateur, pas seulement les titres des produits. Si vous respectez ces règles, vous dépasserez les concurrents à locale unique dans chaque marché traduit.

## Pourquoi cela compte en 2026

Le commerce électronique transfrontalier continue de croître. Selon les estimations de l'industrie, environ 28 % des commandes de commerce électronique mondiales ont traversé les frontières en 2025. Les commerçants qui desservent plusieurs régions de manière native se classent mieux dans ces régions et convertissent mieux car l'expérience est localisée.

Les moteurs de recherche AI (Perplexity, ChatGPT, Claude, Google AI Overviews) gèrent le contenu multilingue moins élégamment que le SERP classique de Google. Les pages avec de forts signaux de locale — URLs propres, hreflang précis, métadonnées dans la langue, JSON-LD spécifique à la locale — sont citées plus fiablement que les pages bilingues ambiguës.

## Étape 1 : Choisissez une structure d'URL

| Structure       | Exemple                | Avantages                                         | Inconvénients                                   |
| --------------- | ---------------------- | ------------------------------------------------- | ----------------------------------------------- |
| ccTLD           | `example.de`           | Signal géographique le plus fort ; clair pour les utilisateurs | Divise l'autorité de domaine ; plusieurs certificats SSL |
| Sous-domaine    | `de.example.com`       | Facile à configurer pour l'hébergement par région | Considéré comme un site séparé par certains signaux |
| Préfixe de chemin| `example.com/de/`      | Consolide l'autorité ; peu coûteux à mettre en place | Signal géographique légèrement plus faible que ccTLD |
| Paramètre de requête | `example.com/?lang=de` | Le plus facile à ajouter                          | **Ne pas utiliser.** Google le considère comme un duplicata. |

Le défaut de 2026 est **préfixe de chemin**. C'est ce qu'Ordiko utilise par défaut (`example.com/de/`, `example.com/fr/`, etc.).

## Étape 2 : Émettez un cluster hreflang complet

Pour chaque URL traduite, sortez :

```html
<link rel="alternate" hreflang="en" href="https://example.com/en/products/leather-bag" />
<link rel="alternate" hreflang="de" href="https://example.com/de/products/leather-bag" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/products/leather-bag" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/products/leather-bag" />
```

Règles :

1. Chaque URL doit se référencer elle-même (l'URL `en` émet `hreflang="en"` pour elle-même).
2. Chaque URL doit lister chaque autre variante.
3. `x-default` pointe vers la locale que vous servez lorsque aucune langue ne correspond (généralement l'anglais ou votre langue par défaut).
4. Utilisez des codes de langue ISO 639-1 (`en`, `de`, `fr`), éventuellement combinés avec la région ISO 3166-1 (`en-GB`, `en-US`).
5. N'incluez pas une variante qui renvoie un statut HTTP non-200.

## Étape 3 : Filtrer pour les entités réellement traduites

Une erreur courante : émettre l'ensemble du jeu de locales pour chaque URL même lorsque de nombreuses entités ne sont traduites que dans un sous-ensemble.

**Faux** :

```html
<!-- le produit n'a que des traductions en en + de -->
<link rel="alternate" hreflang="en" href=".../en/products/x" />
<link rel="alternate" hreflang="de" href=".../de/products/x" />
<link rel="alternate" hreflang="fr" href=".../fr/products/x" />  <!-- renvoie 404 -->
```

**Correct** :

```html
<link rel="alternate" hreflang="en" href=".../en/products/x" />
<link rel="alternate" hreflang="de" href=".../de/products/x" />
<link rel="alternate" hreflang="x-default" href=".../en/products/x" />
```

Ordiko met cela en œuvre via `EntityForSeo.availableLocales` — chaque produit, catégorie, marque et page peut spécifier dans quelles locales il est traduit, et `alternates.languages` est l'intersection de `store.supportedLocales` et `availableLocales`.

## Étape 4 : Traduisez l'ensemble du parcours client

Les lacunes courantes qui nuisent aux classements et à la conversion :

| Surface                  | Traduit ?                                   |
| ------------------------ | ------------------------------------------- |
| Titre méta               | Oui (par locale)                            |
| Description méta         | Oui                                         |
| H1                       | Oui                                         |
| Étiquettes de fil d'Ariane| Oui                                        |
| Noms de catégorie        | Oui                                         |
| Champs de schéma de produit | Oui (`name`, `description`, `category`)  |
| Texte alternatif des images | Oui                                     |
| Messages d'erreur (404/410) | Oui                                     |
| Texte de paiement        | Oui                                         |
| Modèles d'email         | Oui                                         |

Une page qui est à 80 % en allemand avec des messages d'erreur en anglais et du texte alternatif en anglais est un signal pour les utilisateurs et Google.

## Étape 5 : Configurez la devise et l'expédition par locale

La devise et la locale ne sont pas les mêmes (la Suisse utilise le CHF et dessert l'allemand/le français/l'italien) mais elles sont généralement corrélées. En 2026, le schéma de produit :

```json
{
  "@type": "Offer",
  "priceCurrency": "EUR",
  "price": "49.00",
  "availability": "https://schema.org/InStock",
  "shippingDetails": [{
    "@type": "OfferShippingDetails",
    "shippingDestination": { "@type": "DefinedRegion", "addressCountry": "DE" },
    "shippingRate": { "@type": "MonetaryAmount", "value": "4.99", "currency": "EUR" },
    "deliveryTime": {
      "@type": "ShippingDeliveryTime",
      "handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "DAY" },
      "transitTime": { "@type": "QuantitativeValue", "minValue": 2, "maxValue": 5, "unitCode": "DAY" }
    }
  }]
}
```

Les prix et l'expédition par région doivent correspondre à ce que l'utilisateur voit sur la page. Les incohérences entre le schéma et le prix visible amènent Google à supprimer le résultat enrichi.

## Étape 6 : Soumettez des sitemaps

Deux modèles viables :

**Modèle A — un sitemap par locale :**

```
/sitemap.xml (index)
/sitemap-en.xml
/sitemap-de.xml
/sitemap-fr.xml
```

**Modèle B — sitemap unique avec annotations hreflang :**

```xml
<url>
  <loc>https://example.com/en/products/x</loc>
  <xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/products/x" />
  <xhtml:link rel="alternate" hreflang="fr" href="https://example.com/fr/products/x" />
</url>
```

Le modèle A est plus facile à déboguer. Le modèle B est plus compact. Ordiko utilise le modèle A par défaut.

## Étape 7 : Vérifiez

Dans Google Search Console :

1. **Paramètres → Ciblage international → Onglet Langue** — montre les erreurs hreflang.
2. **Couverture → Pages** — confirme que chaque variante de locale est indexée.
3. **Performance → Filtres → Pays** — confirme que chaque locale se classe dans sa région cible.

Pour la recherche AI :

```bash
curl -A "PerplexityBot" https://example.com/de/products/x
# devrait renvoyer 200 avec du contenu allemand et un cluster hreflang allemand
```

## Pièges courants

- Hreflang non réciproque. Émettez toujours un cluster complet.
- Mauvais codes de langue. Utilisez ISO 639-1 (`zh-Hans` pas `zh-CN` pour le chinois simplifié).
- Inclusion d'URLs inaccessibles. Filtrez les cibles 404/410.
- Mélange de structures. Ne mettez pas de contenu allemand sur `/products/x?lang=de` *et* `/de/products/x`.
- Ignorer les moteurs AI. Ajoutez des jumeaux Markdown et un `inLanguage` explicite dans JSON-LD.

## FAQ

**Devrais-je utiliser des ccTLD, des sous-domaines ou des préfixes de chemin ?**
Les préfixes de chemin (example.com/de/) sont le défaut moderne — ils consolident l'autorité de domaine, sont faciles à configurer et Google les gère bien. Les ccTLD (example.de) donnent le signal géographique le plus fort mais divisent l'autorité. Les sous-domaines (de.example.com) se situent entre les deux. Choisissez des préfixes de chemin à moins que vous n'ayez une raison spécifique de ne pas le faire.

**Le hreflang affecte-t-il directement le classement ?**
Pas directement. Le hreflang contrôle quelle variante de locale Google sert à un utilisateur donné — il ne booste pas les classements. S'il est bien fait, il empêche la variante dans la mauvaise langue de surpasser la bonne dans une région donnée, ce qui se traduit par une augmentation mesurable de la conversion.

**Comment les moteurs AI gèrent-ils le contenu multilingue ?**
Perplexity, ChatGPT Search et Claude indexent les pages indépendamment par locale, avec une conscience hreflang plus faible que Google. Meilleure pratique en 2026 : émettez un jumeau Markdown par locale (par exemple /de/blog/slug.md), marquez explicitement inLanguage dans JSON-LD, et envisagez des entrées llms.txt par locale.

**Quelle est l'erreur hreflang la plus courante ?**
Liens non réciproques. Si la page A lie à la page B mais que B ne renvoie pas à A, Google ignore l'ensemble du cluster. Émettez toujours un cluster complet incluant la référence à soi-même.