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

IA & MCP

MCP Adapter et TranslatePress : un agent suggère les traductions manquantes

Repérer automatiquement les chaînes non traduites d'un site multilingue et laisser un agent proposer une traduction, sans jamais la publier seul : un outil MCP en lecture pensé pour TranslatePress.

Par Clément Hadrot • 25 juin 2025 • 4 min de lecture • Aucun commentaire
MCP Adapter et TranslatePress : un agent suggère les traductions manquantes

wp_register_ability( 'monplugin/lister-chaines-non-traduites', ... ) — c’est par cette déclaration que commence l’intégration décrite ici, pensée pour un site utilisant TranslatePress et confronté à un problème classique : de nouvelles chaînes de texte apparaissent régulièrement sans traduction, et personne n’a le temps de les repérer manuellement page après page.

Avec le MCP Adapter désormais disponible pour exposer des abilities WordPress à un client MCP externe, il devient possible de construire un outil dédié à cette tâche précise : repérer les chaînes non traduites, et laisser un agent proposer une traduction, sans jamais lui donner la main sur la publication du site.

Le problème que cet outil résout

TranslatePress détecte automatiquement les chaînes de texte présentes sur le site et permet de les traduire depuis une interface dédiée. Le problème ne vient pas de la détection, déjà bien gérée par l’extension, mais du suivi : sur un site qui publie du contenu régulièrement, la liste des chaînes non traduites s’allonge sans qu’aucune alerte ne prévienne l’équipe éditoriale.

L’outil MCP construit ici se contente de lire cette liste et de la mettre à disposition d’un agent, qui peut ensuite proposer une traduction pour chaque chaîne, sans jamais l’enregistrer directement dans TranslatePress.

Structure de l’outil MCP en lecture

L'essentiel à retenir : L'outil MCP proposé ne fait que lire les chaînes non traduites, jamais les publier ; Chaque proposition de traduction reste stockée en brouillon, jamais directement visible sur le site ; La variante selon la langue cible porte surtout sur le prompt de contexte fourni à l'agent

L’ability déclarée expose une capacité en lecture seule, volontairement limitée pour éviter tout risque d’écriture non maîtrisée :

wp_register_ability( 'monplugin/lister-chaines-non-traduites', array(
    'label'       => 'Chaines non traduites',
    'description' => 'Renvoie la liste des chaines detectees par TranslatePress sans traduction pour une langue cible donnee.',
    'input_schema' => array(
        'type'       => 'object',
        'properties' => array(
            'langue_cible' => array( 'type' => 'string' ),
            'limite'       => array( 'type' => 'integer', 'default' => 20 ),
        ),
        'required' => array( 'langue_cible' ),
    ),
    'permission_callback' => function() {
        return current_user_can( 'edit_pages' );
    },
    'execute_callback' => 'monplugin_lister_chaines_non_traduites',
) );

Le permission_callback restreint l’accès à cette ability aux comptes disposant déjà de la capacité d’édition de page, ce qui empêche un agent connecté avec un rôle plus restreint d’accéder à cette liste sans autorisation adaptée.

Ce que l’agent fait ensuite, et ce qu’il ne fait pas

Une fois la liste des chaînes non traduites récupérée, l’agent propose une traduction pour chacune, en s’appuyant sur le contexte de la page d’origine transmis dans le prompt. Ces propositions sont stockées dans une table dédiée, en attente de validation, et n’apparaissent à aucun moment sur le site tant qu’un traducteur ou un éditeur n’a pas confirmé chaque proposition individuellement depuis l’interface habituelle de TranslatePress.

Cette séparation stricte entre proposition et publication répond à une contrainte simple : une traduction incorrecte, publiée automatiquement sans relecture, resterait visible par tous les visiteurs de la langue cible jusqu’à sa correction, un risque que ce circuit évite entièrement en conservant une étape de validation humaine obligatoire.

Variantes selon la langue cible

Le prompt transmis à l’agent varie selon la langue cible visée, en particulier pour les langues où l’ordre des mots ou les conventions de politesse diffèrent fortement du français. Une traduction vers l’allemand, par exemple, nécessite une consigne spécifique sur la position du verbe dans les phrases subordonnées, une contrainte qui n’a pas d’équivalent direct en anglais ou en espagnol.

  • Ajouter, pour chaque langue cible, un rappel des conventions typographiques propres à cette langue.
  • Fournir le contexte de la page d’origine, pas seulement la chaîne isolée, pour éviter les traductions ambiguës hors contexte.
  • Limiter le nombre de chaînes traitées par appel pour garder un contrôle qualité réaliste côté relecteur humain.

Un outil MCP en lecture seule reste, dans la grande majorité des cas de traduction, suffisant pour apporter un vrai gain de temps sans exposer le site au moindre risque de publication non maîtrisée.

Ce que cet outil ne couvre pas

Cette intégration ne concerne que TranslatePress et ne traite pas le cas d’une extension de traduction concurrente, dont le fonctionnement interne et le stockage des chaînes diffèrent suffisamment pour nécessiter une adaptation distincte de l’ability décrite ici.

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