WPML

Apprenez à enregistrer les textes saisis par l’utilisateur à partir des extensions et des thèmes pour la traduction. Une fois enregistrés, vous pouvez les traduire avec la Traduction de chaînes.

Comment enregistrer les textes saisis par l’utilisateur

Lorsqu’un utilisateur crée de nouvelles chaînes ou met à jour des chaînes existantes, elles doivent être enregistrées dans la table de chaînes de WPML.

Vous pouvez effectuer cet appel avec le hook d’action wpml_register_single_string :

do_action( 'wpml_register_single_string', string $context, string $name, string $value )
  • $context – Le nom de l’extension ou du thème, dans un format lisible par un humain.
  • $name – Le nom de la chaîne, qui aide le traducteur à comprendre ce qui est traduit.
  • $value – La chaîne qui doit être traduite.

Prenez cet exemple de widget personnalisé, qui inclut un title, un champ input d’une seule ligne et un textarea. Pour enregistrer ces champs pour la traduction lorsque les options du widget sont enregistrées ou mises à jour, nous utilisons la fonction update :

Utilisation du hook d’action wpml_register_single_string
function update($new_instance, $old_instance){
    $instance = $old_instance;
    $instance['title']      = strip_tags($new_instance['title']);
    $instance['custom_input']   = strip_tags($new_instance['custom_input']);
    $instance['custom_textarea']    = $new_instance['custom_textarea'];
 
    //WPML
    /**
     * register strings for translation
     */
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - input field', $instance['custom_input'] );
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - textarea field', $instance['custom_textarea'] );
    //WPML
 
    return $instance;
}

Dans cet exemple, nous indiquons à WPML qu’il doit traduire les textes saisis par l’utilisateur pour les champs input et textarea. Ces textes seront enregistrés sous le contexte de chaînes Widgets avec le nom Custom Widgetinput field et Custom Widget – textarea field respectivement.

Une fois que vous avez enregistré les textes, vous pouvez utiliser le hook d’action wpml_translate_single_string pour afficher les traductions sur l’interface publique.

Comment intégrer la Traduction de chaînes aux extensions et aux thèmes

Lors de l’intégration de la Traduction de chaînes avec des extensions ou des thèmes, il est important de s’assurer que les appels existent.

Implémentez des appels conditionnels

Enveloppez vos appels dans des instructions if_function_exists() afin que, si WPML est activé, il soit appelé, et sinon, le fonctionnement normal soit conservé.

Gérez l’activation tardive de WPML

En tant que développeur de thème ou d’extension, vous devez également envisager le cas où WPML est activé longtemps après que l’utilisateur a commencé à utiliser votre thème ou votre extension.

Dans ces cas, les chaînes ne seront pas traduites car l’appel à wpml_register_single_string n’est pas effectué lors de leur création. Pour y remédier, vous devez enregistrer toutes les chaînes de l’utilisateur à chaque fois que l’écran d’administration de l’extension est chargé.

Bien que cela ajoute un temps d’exécution négligeable, cela garantit que les chaînes sont toujours envoyées à la traduction et sont à jour.

Le code doit d’abord vérifier si la fonction wpml_register_single_string existe. Si c’est le cas, la fonction doit être appelée pour enregistrer tous les textes saisis par l’utilisateur. Voici comment cela fonctionne :

  • Si la fonction est appelée avec des valeurs vides ou NULL, WPML ignore ces appels.
  • Si une chaîne existe déjà et n’est pas modifiée, WPML ignore l’appel.
  • La fonction n’agit que si des chaînes nouvelles ou modifiées sont enregistrées.

L’ensemble de la table de traduction est mis en cache dans la mémoire, de sorte que l’appeler de manière répétée nécessite très peu de puissance de traitement.

Ressources supplémentaires

Pour enregistrer les textes codés en dur des thèmes et des extensions pour la traduction, consultez notre article sur la recherche de chaînes qui n’apparaissent pas sur la page Traduction de chaînes.

Pour enregistrer les options de thème ou d’extension pour la traduction, consultez notre guide sur l’utilisation du fichier de configuration de langue.

Pour traduire les éléments d’un thème ou d’une extension en tant que groupe, consultez notre Traduction de paquets de chaînes.

Écrit par Amir · Dernière mise à jour 7 juin 2024