0

私はスペイン語にローカライズした英語のテーマを持っています。それはスペイン語で完璧に動作します。Wordpress admin-ajaxとユーザープロフィールのローカライゼーション

私のユーザープロファイル言語を英語に変更すると、ダッシュボードで英語が表示されるようになります。サイトのAJAX生成コンテンツは翻訳されていない英語になります。

ログアウトすると、AJAX生成コンテンツは再びスペイン語になります。

私の推測では、ユーザープロファイル言語が設定されている場合、admin-ajaxがテーマ言語の代わりにUSERプロファイル言語を読み込んでいると思います。

私の質問はです。どうすればadmin-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

どのように2つの異なる言語のコンテンツを扱っていますか?あなたのWP AJAX機能コードを表示してください – Junaid

+0

@Junaidコールを追加しました。 –

答えて

0

あなたはその理由について正しいです。その名前で示されるように、「admin-ajax」エンドポイントは管理領域の一部であるため、「ダッシュボード」言語が使用されます。

私は管理者以外の目的でAjaxエンドポイントを使用していると仮定しますが、Ajax経由でロードするコンテンツは何ですか?

最も簡単なケースは、テーマの翻訳のみを読み込むことです。この場合、あなたが言うように、「テーマ言語」を簡単に上書きすることができます。

あなたのテーマののfunctions.phpファイルにこれを追加してみてください:

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

しかし、あなたは管理者-AJAX を作る方法を尋ねる常には、サイトの言語を使用します。 これは本当にあなたが望むものですか?これは、ダッシュボードのどこでも使用されているajax関数は、実行中のページと同じ言語ではないことを意味します。

これを行う方法はありますが、複雑になります。あなたはその点であなたの質問を更新する場合、私は私の答えを更新します。

関連する問題