gettext übersetzt nicht, wenn es in Ajax aufgerufen wird

Beim Laden von Inhalten in gettext-Aufrufe (__ (), _e () usw.) werden sie gut übersetzt, wenn ich die Seite im Browser normal rende (PHP liefert den Inhalt an den Browser), aber wenn ich AJAX-Aufrufe mache, funktioniert der gettext nicht übersetzen.

Ich dachte, vielleicht war es genau dieses Wort, aber wenn ich den gettext Aufruf in Inhalt verwende, der normalerweise vom Server geladen wird (nicht durch Ajax), übersetzt er. Ich verwende WPML, aber ich glaube nicht, dass das etwas damit zu tun hat?

Gibt es etwas Spezielles, das ich tun muss, oder füge den functionsaufruf load_plugin_textdomain einem bestimmten Aktionshaken hinzu?

Es ist jetzt zur Aktion “plugins_loaded” hinzugefügt. Ich benutze WordPress Ajax-Methoden wie in ihren Dokumenten beschrieben und ich bekomme alle Daten, nur Gettext-Übersetzungen.

Wie hier empfohlen, sind Auszüge des Codes, der das Problem hat. Ich habe die gettext .pot- und .mo-Dateien nicht installiert, da ich weiß, dass diese funktionieren (bc / anderer Text wird dort in den Rest des Plugins selbst übersetzt). Ich gebe nur an, was ihr Name ist und wo sie für das Plugin-Root relevant sind.

//gettext files // languages/my-plugin-fr_FR.pot // languages/my-plugin-fr_FR.mo //Javascript files // js/main.js (function($){ function getResources() { $.ajax({ type: "POST", url: ajax_object.ajaxurl, dataType: "json", data: { action: 'get_resources' } }) .done(function(data) { if (typeof data == "object" && data.hasOwnProperty("html")) { $(".my-selector").empty().html(data.html); } else { alert("error on server"); } }) .fail(function() { alert("error on server"); }); } $(document).ready(function() { getResources(); }); })(jQuery); // end js/main.js get_resources_html($posts); echo json_encode(array('html'=>$html)); die(); } public function add_scripts_styles() { wp_register_script('main-js', plugin_dir_url(__FILE__) . 'js/main.js', array('jquery'), '20131023' ); wp_enqueue_script('main-js' ); wp_localize_script('main-js', 'ajax_object', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); } public function get_resources_html($resources) { $load_more_text = __('Load more',MyPlugin::$theme_domain_name); //$html .=  $html .= <<<LOAD   {$load_more_text}   LOAD; return $html; } } ?> init(); ?> 

Solutions Collecting From Web of "gettext übersetzt nicht, wenn es in Ajax aufgerufen wird"

es ist zu spät, aber für die öffentliche Nutzung:

 /* if qTranslate is installed */ /* set front locale for ajax calls requested from front-end */ function set_locale_for_frontend_ajax_calls() { if ( is_admin() && defined( 'DOING_AJAX' ) && DOING_AJAX && substr( $_SERVER['HTTP_REFERER'], 0, strlen( admin_url() ) ) != admin_url() ) { load_theme_textdomain( 'your-theme-domain-name', get_template_directory() . '/languages' ); } } add_action( 'admin_init', 'set_locale_for_frontend_ajax_calls' ); add_action('wp_head','jsURLs'); function jsURLs(){ global $q_config; ?>< ?php } 

es funktioniert für mich, wenn qTranslate installiert ist, aber wenn nicht folgen vielleicht Arbeit:

 /* if qTranslate is not installed */ /* set front locale for ajax calls requested from front-end */ function set_locale_for_frontend_ajax_calls() { if ( is_admin() && defined( 'DOING_AJAX' ) && DOING_AJAX && substr( $_SERVER['HTTP_REFERER'], 0, strlen( admin_url() ) ) != admin_url() ) { setlocale(LC_ALL, $_GET['lang']); load_theme_textdomain( 'your-theme-domain-name', get_template_directory() . '/languages' ); } } add_action( 'admin_init', 'set_locale_for_frontend_ajax_calls' ); add_action('wp_head','jsURLs'); function jsURLs(){ global $q_config; ?>< ?php }