# Traduire les modèles de facture d’une boutique vendant à l’international

> Étapes concrètes pour adapter les gabarits de facture PDF d'une boutique WooCommerce selon la langue et la devise réelles du client, pas celles du site.

- Auteur : WordPress Développement
- Publié le : 2022-09-23
- Mis à jour le : 2022-09-23
- Catégorie : Multilingue
- URL : https://www.wpmoderne.fr/multilingue/traduire-modeles-facture-boutique-internationale/

## L’essentiel

- La langue de la facture doit suivre la commande, pas le site
- Les libellés fiscaux se traduisent, pas les montants
- Tester chaque gabarit avec une vraie commande de test

`wp wc order create` ne suffit pas à valider un gabarit de facture multilingue : il faut le vérifier en conditions réelles, avec une vraie commande passée dans chaque langue du site. C'est le point de départ de ce tutoriel, construit pour une boutique de vêtements techniques vendant en France, en Espagne et en Allemagne via WooCommerce, avec des factures PDF générées automatiquement à la confirmation de commande.

Le problème initial était simple à énoncer et pénible à corriger : les factures PDF étaient toutes générées dans la langue de l'administrateur du site, quelle que soit la langue dans laquelle le client avait passé commande. Voici la marche à suivre, étape par étape, pour que chaque facture reflète fidèlement la langue et la devise du client.

## Étape 1 : identifier la langue réelle de la commande

Avant de toucher au gabarit lui-même, il faut s'assurer que la langue du client est bien enregistrée quelque part au moment de la commande. Avec Polylang et WooCommerce Multilingual, cette information existe déjà sous forme de métadonnée de commande, généralement accessible via `get_post_meta( $order_id, 'wpml_language', true )` pour WPML, ou une métadonnée équivalente ajoutée par un filtre personnalisé pour Polylang.

- Vérifier que la métadonnée de langue existe pour chaque nouvelle commande
- Si elle n'existe pas encore, l'ajouter via le hook `woocommerce_checkout_update_order_meta`
- Tester en passant une commande complète dans chaque langue du site

## Étape 2 : basculer la locale avant de générer le PDF

La génération de la facture s'effectue en tâche de fond, souvent bien après que le client a quitté la page de confirmation. Il faut donc appeler `switch_to_locale()` avec la langue enregistrée à l'étape précédente, juste avant de générer le contenu du PDF, puis `restore_current_locale()` une fois le fichier produit.

```
add_filter( 'wpo_wcpdf_before_pdf', function( $document_type, $order ) {
    $langue = get_post_meta( $order->get_id(), 'wpml_language', true );
    if ( $langue ) {
        switch_to_locale( $langue );
    }
}, 10, 2 );
```

## Étape 3 : traduire les libellés fixes du gabarit

Un gabarit de facture contient des libellés récurrents : « Facture n° », « Date d'échéance », « Total TTC », « Merci pour votre commande ». Ces chaînes doivent passer par `__()` ou `_e()` avec le domaine de texte du thème ou de l'extension de facturation, et être traduites via l'interface de traduction de chaînes de l'extension multilingue utilisée.

> L'essentiel à retenir : La langue de la facture doit suivre la commande, pas le site ; Les libellés fiscaux se traduisent, pas les montants ; Tester chaque gabarit avec une vraie commande de test

Une erreur fréquente consiste à coder ces libellés en dur dans le fichier de gabarit PHP, sans fonction de traduction, ce qui rend impossible toute correction ultérieure sans modifier le code source du gabarit.

### Le cas particulier des mentions légales

Les mentions légales obligatoires sur une facture (numéro de TVA intracommunautaire, mention d'autoliquidation pour une vente hors Union européenne) varient parfois de formulation selon la langue réglementaire du pays destinataire, pas seulement de traduction littérale. Ce point mérite une validation avec un comptable avant la mise en production, tutoriel ou pas.

## Étape 4 : adapter le format des nombres et de la devise

Un montant de « 1 234,56 € » en français devient « 1.234,56 € » en allemand et « 1,234.56 € » dans certains formats anglo-saxons : la virgule et le point ne jouent pas le même rôle selon la langue. WooCommerce gère ce formatage via les réglages régionaux, mais un gabarit de facture personnalisé qui formate les montants « à la main » avec `number_format()` ignore complètement cette variation si les paramètres ne sont pas transmis explicitement.

## Étape 5 : tester avec de vraies commandes, pas des aperçus

L'aperçu de facture proposé par la plupart des extensions de facturation PDF utilise souvent des données factices qui ne reflètent pas toujours le comportement réel en production. J'ai systématiquement passé une commande complète de test dans chacune des trois langues, avec des produits réels, pour vérifier le rendu final du PDF généré.

| Langue testée | Devise attendue | Résultat |
| --- | --- | --- |
| Français | EUR, format français | Correct dès le premier essai |
| Espagnol | EUR, format espagnol | Libellé « IVA » manquant, corrigé |
| Allemand | EUR, format allemand | Séparateur décimal correct après réglage |

## Étape 6 : documenter la configuration pour la maintenance future

Ce genre de configuration se perd facilement lors d'une mise à jour du thème ou de l'extension de facturation. J'ai ajouté un commentaire explicite dans le fichier de gabarit, expliquant pourquoi `switch_to_locale()` est appelé à cet endroit précis, pour qu'un futur développeur ne le supprime pas par erreur en pensant simplifier le code.

## Pour aller plus loin

Traduire un gabarit de facture ne se limite pas à traduire des libellés : il faut suivre la langue réelle de la commande, basculer la locale au bon moment du cycle de génération, et vérifier le format des nombres autant que celui du texte. Sur cette boutique, ces six étapes ont permis d'éliminer totalement les réclamations de clients recevant une facture dans une langue qu'ils ne comprenaient pas.
