Écrire directement « Enregistrer » en dur dans le code fonctionne parfaitement tant que le site reste en français, mais bloque toute traduction future. Cette étape préparatoire consiste à envelopper systématiquement chaque texte affiché dans une fonction dédiée, de sorte qu’un fichier de traduction externe puisse ensuite s’y substituer.
Les fonctions à connaître
WordPress fournit une famille de fonctions selon le contexte d’affichage : __() retourne une chaîne traduite, _e() l’affiche directement, et _n() gère les accords singulier/pluriel :
echo esc_html__( 'Article mis à jour.', 'mon-extension' );
printf(
esc_html( _n( '%d commentaire', '%d commentaires', $nombre, 'mon-extension' ) ),
$nombre
);
Le second paramètre, le domaine de traduction, doit toujours être une chaîne fixe identique à celle déclarée dans l’en-tête de l’extension, jamais une variable.
Pièges fréquents
- Concaténer des morceaux de phrase autour d’une variable casse souvent la grammaire dans d’autres langues ; il est préférable d’utiliser des espaces réservés avec
sprintf()ouprintf(). - Cette étape ne doit pas être confondue avec la localisation, qui consiste à fournir réellement les traductions une fois le code préparé pour les recevoir.
- Un texte destiné au JavaScript de l’éditeur, par exemple dans un bloc, s’internationalise différemment via
wp.i18n.__(), avec des chaînes extraites séparément par les outils de compilation. - Les fonctions préfixées
esc_html__()ouesc_attr__()combinent traduction et échappement en un seul appel, ce qui évite d’oublier l’un des deux lors de l’affichage d’un texte utilisateur.