Formation PUB020 : WordPress, 2023 Internationalisation d'un site WordPress

22.2 Chargement du domaine de localisation


Pour que WordPress puisse les utiliser, les fichiers .mo doivent être placés dans un dossier spécifique et porter un nom spécifique.

Dans les exemples suivants, considérons que le code de localisation est fr_CA

Les deux configurations les plus fréquemment utilisées pour placer et nommer les fichiers de localisation sont :

  • www/monsite/wp-content/languages/themes/mon-domaine-de-localisation-fr_CA.mo

    ou

  • www/monsite/wp-content/themes/monthemeenfant/languages/fr_CA.mo

Rappel : le domaine de localisation est précisé dans le fichier style.css.

Si vous travaillez avec la première option, vous n'avez rien de spécial à faire. Le noyau WordPress s'occupera de charger le fichier .mo à condition qu'il porte le nom attendu.

Par contre, si vous travaillez avec un fichier placé sous le dossier du thème, vous devez indiquer à WordPress à quel endroit le fichier de localisation est situé.

Ceci sera fait à l'aide de la fonction load_theme_textdomain() ou load_plugin_textdomain(), selon que votre code fait partie d'un thème ou d'une extension.

Voyons d'abord la fonction load_theme_textdomain(), utilisée pour un thème.

  • Tout d'abord, si le code fait plusieurs appels à load_theme_textdomain(), la chaîne à localiser sera recherchée dans le premier. La recherche se poursuivra dans le second seulement si la chaîne n'a pas été trouvée dans le premier et ainsi de suite.
  • Le premier paramètre de load_theme_textdomain() est le domaine de localisation, tel que déclaré dans l'entête du thème ou de l'extension.
  • Le second paramètre indique à quel endroit WordPress recherchera le fichier .mo (version compilée de votre fichier .po) qui contiendra la localisation des chaînes. Pour un thème enfant, on utilisera la fonction get_stylesheet_directory(), qui retourne le chemin du dossier du thème enfant. On ajoutera le sous-dossier languages.

La fonction load_theme_textdomain() sera appelée dans le fichier functions.php. Pour que l'instruction soit exécutée au bon moment, elle sera placée dans la fonction de rappel du hook after_setup_theme.

PHP

/**

 * Fonction de rappel du hook after_setup_theme, exécutée après que le thème ait été initialisé.
 * @author Christiane Lagacé <christiane.lagace@hotmail.com>

 *

 * Utilisation : add_action( 'after_setup_theme', 'monprefixe_apres_initialisation_theme' );

 

 */

function monprefixe_apres_initialisation_theme() {
    load_theme_textdomain( 'mon-domaine-de-localisation', get_stylesheet_directory() . '/languages' );

}

 

add_action( 'after_setup_theme', 'monprefixe_apres_initialisation_theme' );

Dans le cas où vous procédez à l'internationalisation d'une extension, vous utiliserez plutôt la fonction load_plugin_textdomain().

  • Son premier paramètre sera ici encore le domaine de localisation.
  • Le second paramètre n'est plus utilisé. On laissera la valeur false.
  • Le troisième paramètre indique à quel endroit WordPress recherchera le fichier .mo. Pour une extension, on utilisera la fonction dirname( plugin_basename( __FILE__ ) qui se charge de retrouver le chemin du fichier actuel (le fichier de la classe de l'extension), auquel on ajoutera le sous-dossier languages.

Pour les extensions, l'instruction load_plugin_textdomain() sera placée dans un des fichiers de l'extension. Pour que l'instruction soit exécutée au moment opportun, elle sera placée dans la fonction de rappel du hook init lui-même placé dans le constructeur de la classe de l'extension.

PHP

class Monprefixe_Mon_Extension {

    ...

 

    /**

     * Constructeur.

     *

     * @return void

     */

    public function __construct() {

        ...

 

        add_action( 'init', array( $this, 'apres_chargement_theme_et_extensions' ) );

    }

    ...

 

    /**

     * Fonction de rappel du hook init.

     *

     * @return void

     */

    public function apres_chargement_theme_et_extensions() {

        ...

 

        load_plugin_textdomain( 'mon-domaine-de-localisation', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );

    }

}

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre