restore_previous_locale()
restore_previous_locale() annule la dernière bascule de langue enregistrée par le système de locales. Exemple : éviter qu'un traitement d'email modifie les traductions de la suite d'une requête.
À quoi cela sert ?
restore_previous_locale() annule la dernière bascule de langue enregistrée par le système de locales. L’enjeu est de savoir exactement quelle information entre dans l’API, quelle donnée ou quel état en ressort et ce qui dépend du contexte dans lequel elle est appelée. À la différence d’une description abstraite du domaine, cette fiche examine précisément le besoin suivant : éviter qu'un traitement d'email modifie les traductions de la suite d'une requête.
Fonctionnement technique
WordPress distingue la chaîne source, le domaine de traduction, le contexte et la locale active. Les pluriels sont résolus selon des règles propres aux langues, pas en ajoutant simplement la lettre « s ». Les fonctions d’échappement traduisent éventuellement puis sécurisent la sortie selon son emplacement dans le HTML; elles ne doivent pas être interchangées. Dans le cas de restore_previous_locale(), le rôle particulier est de annule la dernière bascule de langue enregistrée par le système de locales. Avant de l’employer, vérifier le type de paramètre, le moment où l’appel intervient et les retours possibles. Une réponse vide peut parfois être normale; elle doit être interprétée à partir de la signature de l’API et non d’une intuition.
Dans quel contexte l’utiliser ?
Mise en situation : éviter qu'un traitement d'email modifie les traductions de la suite d'une requête. Un plugin francophone peut être traduit sans mettre directement une phrase française dans chaque expression calculée. Pour préserver le travail des traducteurs, il faut conserver des chaînes stables, documenter les espaces réservés et charger les catalogues dans le cycle WordPress approprié. Les changements temporaires de langue concernent souvent les courriels ou les exports destinés à des destinataires particuliers. Préparer au préalable le périmètre autorisé et les données de démonstration, puis décider quelle preuve permettra de conclure que le mécanisme fonctionne. Le risque spécifique à traiter ici est le suivant : ne pas appeler sans bascule correspondante et tester les changements imbriqués.
Exemple technique commenté
Langage : PHP. Le fragment est un exemple documentaire, non un programme complet prêt à être déployé. À lire dans le contexte d’une installation WordPress déjà chargée; les variables de démonstration, données de test et autorisations doivent être définies avant exécution. Distinguer une vérification qui lit simplement un état d’une opération susceptible de modifier les données, la configuration ou le contenu rendu.
// Objectif : éviter qu'un traitement d'email modifie les traductions de la suite d'une requête.
// Point de vigilance : ne pas appeler sans bascule correspondante et tester les changements imbriqués.
if ( switch_to_locale( 'fr_FR' ) ) { $label = __( 'Rapport', 'atoolpha-demo' ); restore_previous_locale(); }
Explication de l’exemple
Le code illustre éviter qu'un traitement d'email modifie les traductions de la suite d'une requête. L’expression décisive mobilise restore_previous_locale(), dont la responsabilité est la suivante : annule la dernière bascule de langue enregistrée par le système de locales. Le fragment ne prouve pas à lui seul que le site dispose des données, capacités ou options nécessaires. Observer le type de retour documenté et interpréter explicitement les valeurs vides ou les erreurs.
Résultat attendu
Résultat à confirmer dans un environnement d’essai : éviter qu'un traitement d'email modifie les traductions de la suite d'une requête. Pour restore_previous_locale(), un test concluant doit également montrer que la limite suivante est respectée : ne pas appeler sans bascule correspondante et tester les changements imbriqués. L’absence d’erreur de syntaxe ne garantit ni ce résultat ni les droits nécessaires pour l’obtenir.
Exercice de vérification
Procédure de vérification : consigner l’état initial et les données utilisées; exécuter uniquement les lectures ou opérations autorisées; comparer ensuite la sortie à une valeur attendue. Comparer deux locales disponibles et au moins trois nombres pour les pluriels. Vérifier l’absence de catalogue, l’échappement de caractères spéciaux et le retour à la langue initiale après un traitement temporaire. Pour cette fiche, ajouter un cas d’échec lié à la condition suivante : ne pas appeler sans bascule correspondante et tester les changements imbriqués. Si un test concerne l’écriture ou la suppression, reprendre d’abord les mêmes étapes sur une copie isolée du site.
Erreurs, risques et limites
Point de vigilance propre à restore_previous_locale() : ne pas appeler sans bascule correspondante et tester les changements imbriqués. Une chaîne traduite n’est pas automatiquement sûre pour une insertion HTML. Éviter les fragments de balisage dans les traductions lorsque des fonctions d’échappement sont attendues. Distinguer une vérification qui lit simplement un état d’une opération susceptible de modifier les données, la configuration ou le contenu rendu. Une implémentation professionnelle doit prévoir des retours d’erreur compréhensibles et éviter tout affichage de données privées.
Diagnostic avancé
Si le résultat attendu pour « éviter qu'un traitement d'email modifie les traductions de la suite d'une requête » n’apparaît pas, commencer par vérifier le contexte WordPress et la disponibilité de la fonction ou commande. Inspecter ensuite la signature, les arguments et les données fournies; contrôler le comportement d’une entrée absente. L’hypothèse à tester en priorité est : ne pas appeler sans bascule correspondante et tester les changements imbriqués. Ne pas modifier globalement les permissions, les caches ou les fichiers pour masquer une erreur localisée.
À ne pas confondre
Traduction de chaîne, localisation du contexte et échappement de sortie ont des responsabilités distinctes. Pour cette notion, distinguer notamment son rôle concret — annule la dernière bascule de langue enregistrée par le système de locales — du résultat métier recherché : éviter qu'un traitement d'email modifie les traductions de la suite d'une requête. Une API peut être valide techniquement et pourtant constituer un mauvais choix architectural si elle intervient au mauvais niveau du cycle WordPress.
Architecture et maintenance
Lorsqu’une équipe réutilise restore_previous_locale(), préciser sa version WordPress minimale, le composant propriétaire du traitement et les effets de bord observés lors des essais. Un plugin francophone peut être traduit sans mettre directement une phrase française dans chaque expression calculée. Pour préserver le travail des traducteurs, il faut conserver des chaînes stables, documenter les espaces réservés et charger les catalogues dans le cycle WordPress approprié. Les changements temporaires de langue concernent souvent les courriels ou les exports destinés à des destinataires particuliers. Garder un exemple de référence qui n’inclut aucun secret et prévoir un test de non-régression lors des mises à jour du Core. La documentation de l’API doit être reconsultée pour les évolutions futures, particulièrement les statuts, arguments facultatifs et hooks associés.
