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功能不會是相同的語言,因爲它們可以在運行頁面。

有辦法做到這一點,但它變得更加複雜。如果你在這方面更新你的問題,我會更新我的答案。