web-dev-qa-db-ja.com

私のプラグインのJavaScriptで翻訳を設定するにはどうすればいいですか?

私は自分のプラグインを持っています:

  • form.js:フォームフィールドのカスタム検証をするためのjsスクリプト
  • js_lang.php:これに基づいて stackoverflow post
  • my-plugin-domain-fr_FR.po

form.jsでは、js_lang.phpのvar(msg_must_match)を使います。

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);
}

私のjs_lang.php私は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 ); ?>"

.poファイルを正しく読み込めません。誰かが私を助けることができる?これを行う簡単なワードプレスの方法はありますか?

1
J.BizMai

これを行うためのWordPressの方法はwp_localize_script()関数です。

スクリプトをエンキューするときは、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' ),
) );

これは、3番目の引数で配列として渡されるキーと値を含むmyScriptというグローバルJavaScriptオブジェクトを作成します。だからあなたはWordPressの翻訳機能を使って文字列を渡すことができます。

それからあなたのスクリプトであなたの文字列のためにそれらの値を使うことができます:

inputRepeat.setCustomValidity( myScript.msg_must_match );
2
Jacob Peattie