日语文本替换不能在wordpress中使用javascript

时间:2015-11-30 06:21:09

标签: javascript php jquery wordpress

我正在使用" pricer主题"在wordpress中我需要将英文文本替换为日文文本。我替换了文本,发生了这个问题。

这是原始代码

<div class="box_content">    
    <script>
        jQuery(document).ready(function() {
            jQuery('.dd-submit-rating').click(function() {
                var id = jQuery(this).attr('rel');  
                var uprating = jQuery("#rating_me-" + id + " :selected").val();
                var reason = jQuery("#reason-" + id).val();
                if(reason.length < 10) { alert("<?php _e('Please input a longer description for your rating','PricerrTheme'); ?>"); return false; }
                jQuery.ajax({
                    type: "POST",
                    url: "<?php echo get_bloginfo('siteurl'); ?>/",
                    data: "rate_me=1&ids="+id+"&uprating="+uprating+"&reason="+reason,
                    success: function(msg){
                        jQuery("#post-" + id).hide('slow');
                    }
                });
                return false;
            });
//-------------------------
});
    </script>

原版英文弹出消息

this is the original english pop up msg

这里是替换的日语文本

<script>
    jQuery(document).ready(function() {
        jQuery('.dd-submit-rating').click(function() {
            var id = jQuery(this).attr('rel');  
            var uprating = jQuery("#rating_me-" + id + " :selected").val();
            var reason = jQuery("#reason-" + id).val();
            if(reason.length < 10) { alert("<?php _e('もう少し文字を多めに(詳細)に評価してください。','PricerrTheme'); ?>"); return false; }
            jQuery.ajax({
                type: "POST",
                url: "<?php echo get_bloginfo('siteurl'); ?>/",
                data: "rate_me=1&ids="+id+"&uprating="+uprating+"&reason="+reason,
                success: function(msg){
                    jQuery("#post-" + id).hide('slow');
                }
            });
            return false;
        });
//-------------------------
});
</script>

WHEN I REPLACED JAPANESE TEXT IT'S SHOWS THIS POP-UP BOX MSG IN BROWSER

当我替换日文文本时,它会在浏览器中显示此弹出框消息。 请帮忙。

1 个答案:

答案 0 :(得分:0)

以下是将Unicode NCR转换为JavaScript转义形式的解决方案:

var strNCR = '&#x3082;&#x3046;&#x5C11;&#x3057;&#x6587;&#x5B57;&#x3092;&#x591A;&#x3081;&#x306B;&#xFF08;&#x8A73;&#x7D30;&#xFF09;&#x306B;&#x8A55;&#x4FA1;&#x3057;&#x3066;&#x304F;&#x3060;&#x3055;&#x3044;&#x3002;'; // Original Text: もう少し文字を多めに(詳細)に評価してください。

alert(convertHexNCR2Char(strNCR));
// or, in your case:
alert(convertHexNCR2Char("<?php _e('もう少し文字を多めに(詳細)に評価してください。','PricerrTheme'); ?>"));

function convertHexNCR2Char(str) {
    // converts a string containing &#x...; escapes to a string of characters
    // str: string, the input

    // convert up to 6 digit escapes to characters
    str = str.replace(/&#x([A-Fa-f0-9]{1,6});/g,

    function (matchstr, parens) {
        return hex2char(parens);
    });
    return str;
}


// =====
// Helper functions
function hex2char(hex) {
    // converts a single hex number to a character
    // note that no checking is performed to ensure that this is just a hex number, eg. no spaces etc
    // hex: string, the hex codepoint to be converted
    var result = '';
    var n = parseInt(hex, 16);
    if (n <= 0xFFFF) {
        result += String.fromCharCode(n);
    } else if (n <= 0x10FFFF) {
        n -= 0x10000
        result += String.fromCharCode(0xD800 | (n >> 10)) + String.fromCharCode(0xDC00 | (n & 0x3FF));
    } else {
        result += 'hex2Char error: Code point out of range: ' + dec2hex(n);
    }
    return result;
}

function dec2hex(textString) {
    return (textString + 0).toString(16).toUpperCase();
}

工作JSFiddle

代码段改编自Unicode code converter,这是一种免费工具,可以转换为不同的Unicode格式。