在处理AJAX调用的PHP脚本中未加载.mo转换字符串

时间:2018-01-30 作者:Evan

使用标准__(\'some-string\', \'myplugin\') 对于翻译,除了我的AJAX函数之外,每个函数和脚本中都正确加载了日语(ja)语言环境的字符串。

my-plugin.php:

*Text Domain: myplugin
*Domain Path: /languages/
*/
add_action( \'init\', \'myplugin_load_textdomain\' );
function myplugin_load_textdomain() {
    load_plugin_textdomain( \'myplugin\', false, basename( dirname( __FILE__ ) ) . \'/languages\' ); 
}
require_once(basename( dirname( __FILE__)."/classes/myplugin_handler.class.php");
global $myplugin_handler;
$myplugin_handler = new myplugin_handler();

myplugin_handler.class.php:

class myplugin_handler
{
    public function __construct()
    {
        add_action(\'wp_ajax_myplugin_ajax\', array($this, \'myplugin_ajax_handler\'));
        add_action(\'wp_ajax_nopriv_myplugin_ajax\', array($this, \'myplugin_ajax_handler\'));
    }

    public function myplugin_ajax_handler() {
        if ($_POST[\'action\'] != \'myplugin_ajax\') {
            wp_die(0);
        }
        if (!check_ajax_referer(\'myplugin-ajax-nonce\', \'security\')) {
            wp_die(0);
        }

        $closemsg = __(\'Close\', \'myplugin\');
        wp_die($closemsg);
    }
}
关闭应转换为閉じる

来自主题的插件函数调用来自管理屏幕的插件函数调用_e()__() 在页脚中调用嵌入式js,似乎除了AJAX功能之外,其他任何地方都可以调用

2 个回复
最合适的回答,由SO网友:Evan 整理而成

事实证明,我在ajax函数中的每次调用的文本域中都有一个输入错误。例如,在我的问题中,我输入的文本域是“myplugin”,但真正的文本域是“asumil wishlist”。我无意中放了一个下划线,而不是连字符,所以__(\'somestring\', \'asumil-wishlist\')__(\'somestring\', \'asumil_wishlist\').

谢谢大家的建议。

SO网友:cybmeta

我认为您只需要更早地加载翻译,就可以将其用于ajax挂钩:

add_action( \'plugins_loaded\', \'myplugin_load_textdomain\' );
function myplugin_load_textdomain() {
    load_plugin_textdomain( \'myplugin\', false, basename( dirname( __FILE__ ) ) . \'/languages\' ); 
} 

结束

相关推荐

Ajax return code 400

我以前从未在wordpress中使用过ajax,我正试图通过在youtube上观看一些视频教程来发出一个简单的ajax请求,但它总是返回以下错误消息:加载资源失败:服务器响应状态为400(错误请求)我的javascript(在我自己的模板文件中):jQuery.ajax({ url: ajaxurl, type: \"POST\", dataType: \'json\',