2017-07-25 136 views
0

所以我有一个英语的主题,我本地化为西班牙语。它在西班牙语中运行得很好。WordPress的管理AJAX和用户配置文件本地化

但是,如果我改变我的用户配置文件的语言为英语 - 让我可以看到仪表盘上的英语 - 在网站上的AJAX生成的内容变得翻译英语。

如果我退出时,AJAX生成的内容再次成为西班牙。

我在这里的猜测是,管理的Ajax加载用户配置文件语言而不是主题的语言,如果用户配置文件语言设置。

所以我的问题是:我怎么能解决这个问题,让管理员阿贾克斯总是使用主题的语言?


编辑:这是AJAX调用。我没有发送任何要翻译的文本。

$('#load_more').on('click', function() { 
    var offset = $('#main-ajax-container').data('offset'); 
    var prefix = $('#main-ajax-container').data('prefix'); 
    var blogid = $('#main-ajax-container').data('blogid'); 
    var fid = $('#main-ajax-container').data('fid'); 

$.ajax({ 
    type: "get", 
    url: "wp-admin/admin-ajax.php", 
    data: { 
    action: "home_load_more", 
    siteUrl: "<?php echo get_site_url();?>", 
    offset: offset, 
    prefix: prefix, 
    blogid: blogid, 
    fid: fid 
    }, 
    success: function(resp) { 
     $('#main-ajax-container').append(resp); 
     offset = parseInt(offset) + 3; 
     $('#main-ajax-container').data('offset', offset); 
     var max = $('#main-ajax-container').data('max'); 
     if (offset >= parseInt(max)) { 
     $('#load_more').addClass('done'); 
     } 
    } 
    }); 
}); 
+0

你如何处理两种不同语言的内容?向我们展示您的WP AJAX功能代码 – Junaid

+0

@Junaid添加了呼叫。 –

回答

0

你说得对。如其名称所示,“admin-ajax”端点是管理区域的一部分,因此将使用“仪表板”语言。

我假设你正在使用非管理员目的阿贾克斯终点,但问题是,你是通过Ajax加载哪些内容?

最简单的情况是,你只加载你的主题翻译。正如你所说,这种情况可以很容易地覆盖“主题语言”。

尝试加入到这个主题functions.php文件:

if(defined('DOING_AJAX') && DOING_AJAX && is_user_logged_in()){ 
    add_filter('theme_locale', function(){ 
    return get_locale(); 
    }); 
} 

但是,你问如何使管理阿贾克斯始终使用本网站的语言。 这真的是你想要的吗?这意味着被任何地方使用在仪表板的任何AJAX功能不会是相同的语言,因为它们可以在运行页面。

有办法做到这一点,但它变得更加复杂。如果你在这方面更新你的问题,我会更新我的答案。