# Internationalisation

> Pratique consistant à écrire le code d'une extension ou d'un thème de façon à ce que tous ses textes puissent être traduits ultérieurement sans modifier le code source.

- Auteur : Clément Hadrot
- Publié le : 2026-09-25
- Mis à jour le : 2026-09-25
- URL : https://wpmoderne.dev.wordpress-developpement.fr/lexique/internationalisation/

É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()` ou `printf()`.
- 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__()` ou `esc_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.
