Le WordPress d'aujourd'hui, décodé pour les développeurs

Multilingue

Statuts de commande traduits pour une marketplace artisanale multi-vendeurs

Comment afficher les statuts de commande dans la langue de chaque vendeur d'une marketplace artisanale, sans toucher au code des autres boutiques du réseau.

Par Clément Hadrot • 19 août 2025 • 4 min de lecture • Aucun commentaire
Statuts de commande traduits pour une marketplace artisanale multi-vendeurs

wp wc order_status list : cette commande liste les statuts de commande enregistrés dans une base WooCommerce. Sur la marketplace de poterie et de tissage Argilane, cette liste sert de point de départ à un problème précis : chaque atelier vendeur doit voir ses commandes dans sa propre langue, sans que personne n’ait à toucher au thème ou au code des autres vendeurs.

La marketplace regroupe des artisans francophones, néerlandophones et anglophones qui vendent sur la même installation WordPress, avec WooCommerce et une extension de marketplace multi-vendeurs. L’objectif n’est pas de traduire la boutique dans son ensemble, mais uniquement les statuts de commande visibles par chaque vendeur dans son tableau de bord.

Pourquoi ce cas ne se résout pas comme un site multilingue classique

Sur un site multilingue classique, un visiteur choisit sa langue et voit tout le site dans cette langue. Ici, la langue à afficher dépend du vendeur connecté, pas d’un choix de visiteur : un même statut de commande, « en cours de préparation », doit s’afficher en néerlandais pour un vendeur et en anglais pour un autre, au même instant, sur la même commande consultée depuis deux tableaux de bord différents.

Étape 1 : attacher une langue à chaque compte vendeur

L'essentiel à retenir : Traduire les libellés sans modifier le code des vendeurs ; Utiliser un filtre de statut plutôt qu'un fork ; Tester avec un vendeur par langue avant le déploiement

La première étape consiste à stocker la langue préférée de chaque vendeur comme métadonnée utilisateur, via update_user_meta( $vendor_id, 'vendor_locale', 'nl_NL' ). Cette métadonnée sert de référence unique : elle ne dépend ni du réglage général du site, ni de la langue du navigateur du vendeur, ce qui évite les incohérences si un vendeur consulte son tableau de bord depuis un ordinateur mal configuré.

Étape 2 : intercepter le libellé du statut à l’affichage

Plutôt que de dupliquer les fichiers de statuts, on intercepte l’affichage avec le filtre woocommerce_order_status_name côté tableau de bord vendeur, en résolvant la langue à afficher à partir de la métadonnée du vendeur connecté :

add_filter( 'woocommerce_order_status_name', function( $label, $status, $order ) {
    if ( ! is_admin() || ! function_exists( 'get_current_screen' ) ) {
        return $label;
    }
    $vendor_id = get_current_user_id();
    $locale    = get_user_meta( $vendor_id, 'vendor_locale', true );
    if ( ! $locale ) {
        return $label;
    }
    switch_to_locale( $locale );
    $translated = translate_with_gettext_context( $label, 'Order status', 'woocommerce' );
    restore_current_locale();
    return $translated;
}, 10, 3 );

La fonction switch_to_locale() change temporairement la locale active pour la durée du filtre, puis restore_current_locale() la remet en place. Cette bascule évite tout effet de bord sur le reste de la requête, y compris pour les autres vendeurs connectés sur le même serveur au même moment.

Étape 3 : ne pas oublier les notifications automatiques

Les statuts affichés dans l’interface ne sont qu’une partie du problème : les courriels de notification envoyés par WooCommerce à chaque changement de statut doivent suivre la même logique. Le hook woocommerce_email_headers ne suffit pas seul, il faut combiner un changement de locale au moment de la génération du courriel avec add_filter( 'determine_locale', ... ) pour les fonctions de traduction appelées pendant l’envoi.

  • Vérifier que chaque courriel transactionnel respecte la langue du vendeur destinataire
  • Ne jamais modifier les fichiers de traduction globaux de WooCommerce pour un seul vendeur
  • Documenter la métadonnée vendor_locale dans le guide d’intégration de nouveaux vendeurs

Étape 4 : tester avec un vendeur réel par langue

Avant tout déploiement, créez un compte de test par langue supportée et passez une commande complète sur chacun, du panier jusqu’au remboursement partiel. Cette étape révèle souvent un statut personnalisé oublié, ajouté par une extension tierce sans traduction correspondante dans la locale visée.

Un statut personnalisé non traduit se repère toujours au même endroit : dans le courriel de confirmation, jamais dans l’interface d’administration qu’on a l’habitude de tester.

En résumé

Traduire des statuts de commande pour une marketplace multi-vendeurs ne demande ni fork du code des vendeurs, ni extension multilingue complète. Une métadonnée utilisateur, un filtre ciblé et une bascule de locale contrôlée suffisent à couvrir le cas, à condition de tester chaque langue avec une commande réelle avant de considérer le sujet clos.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi