Pour trouver la réponse à cette question, il vous suffit de regarder comment WordPress récupère les traductions. En fin de compte, c'est la load_textdomain()
fonction qui fait cela. Lorsque nous examinons sa source, nous constatons qu'il crée un MO
objet et y charge les traductions d'un .mo
fichier. Il stocke ensuite cet objet dans une variable globale appelée $l10n
, qui est un tableau indexé par domaine de texte.
Pour charger une locale différente pour un domaine particulier, nous avons juste besoin d'appeler load_textdomain()
avec le chemin d'accès au .mo
fichier pour cette locale:
$textdomain = 'your-textdomain';
// First, back up the default locale, so that we don't have to reload it.
global $l10n;
$backup = $l10n[ $textdomain ];
// Now load the .mo file for the locale that we want.
$locale = 'en_US';
$mo_file = $textdomain . '-' . $locale . '.mo';
load_textdomain( $textdomain, $mo_file );
// Translate to our heart's content!
_e( 'Hello World!', $textdomain );
// When we are done, restore the translations for the default locale.
$l10n[ $textdomain ] = $backup;
Pour savoir quelle logique WordPress utilise pour déterminer où rechercher le .mo
fichier d'un plugin (comme comment obtenir les paramètres régionaux actuels), jetez un œil à la source de load_plugin_textdomain()
.
load_plugin_textdomain()
.$l10n[$textdomain]
n'est pas réglé, même après avoir chargé le domaine de texte dans uneafter_setup_theme
action.Donc grâce à JD, je me suis finalement retrouvé avec ce code:
Maintenant, je sais que cela ne devrait pas l'être, selon ce célèbre article:
http://ottopress.com/2012/internationalization-youre-probably-doing-it-wrong/
Mais, je ne sais pas, ça marche ... Et en bonus: disons que tu veux l'utiliser en admin, parce que la langue d'administration est x, mais tu veux récupérer / sauvegarder des données en lang y, et tu utilises polylang . Donc, votre administrateur est anglais, mais vous êtes sur la traduction espagnole d'un article, et vous devez obtenir des données espagnoles à partir des paramètres régionaux de votre thème:
la source