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 :
ou
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.
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.
/**
* 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().
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.
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é