J'ai dans mon plugin:
Dans form.js , j'utilise un var (msg_must_match) à partir de js_lang.php
function inputsMatch( inputTypes, idInputReferring, idInputRepeat ){
var inputReferring = document.getElementById( idInputReferring );
var inputRepeat = document.getElementById( idInputRepeat );
var checkPasswordValidity = function() {
if (inputReferring.value != inputRepeat.value) {
inputRepeat.setCustomValidity( msg_must_match /*<-- here*/ );
} else {
inputRepeat.setCustomValidity('');
}
};
inputReferring.addEventListener('change', checkPasswordValidity, false);
inputRepeat.addEventListener('change', checkPasswordValidity, false);
}
Dans mon js_lang.php j'essaie de gérer la traduction en chargeant my-plugin-domain-fr_FR.po
$locale = "fr_FR";
putenv("LANG=".$locale);
setlocale('LC_ALL', $locale);
bindtextdomain("my-plugin-domain", "./locale/");
textdomain("my-plugin-domain");
$str = 'It is must match with the previous input';
?>
msg_must_match = "<?php echo gettext( $str ); ?>"
Je n'arrive pas à charger correctement le fichier .po. Quelqu'un pourrait m'aider? Existe-t-il un moyen wordpress plus simple pour faire cela?
La méthode WordPress pour ce faire est la fonction wp_localize_script()
.
Lorsque vous mettez un script en file d'attente, ajoutez également un appel à wp_localize_script()
:
wp_register_script( 'my-script', 'path/to/script.js' );
wp_localize_script( 'my-script', 'myScript', array(
'msg_must_match' => __( 'Message must match', 'my-plugin-domain' ),
) );
Cela crée un objet JavaScript global appelé myScript
qui contiendra les clés et les valeurs transmises sous forme de tableau dans le troisième argument. Vous pouvez donc passer des chaînes en utilisant les fonctions de traduction de WordPress, qui seront traduites comme n'importe quelle autre chaîne de votre plugin.
Ensuite, dans votre script, vous pouvez utiliser ces valeurs pour vos chaînes:
inputRepeat.setCustomValidity( myScript.msg_must_match );