我正在使用WooCommerce 对于我目前正在开发的网站。我正在为英语以外的语言创建它。我通过.po
文件
我遇到的问题是Checkout page. 有一张桌子order review 在加载页面时,似乎通过以下方式刷新AJAX call. 在call 这些文本都是翻译的。但在call 课文全部恢复到原来的语言(即英语)。
How do I retain the translation after the AJAX call?

我正在使用WooCommerce 对于我目前正在开发的网站。我正在为英语以外的语言创建它。我通过.po
文件
我遇到的问题是Checkout page. 有一张桌子order review 在加载页面时,似乎通过以下方式刷新AJAX call. 在call 这些文本都是翻译的。但在call 课文全部恢复到原来的语言(即英语)。
How do I retain the translation after the AJAX call?
我想我用插件中的以下扩展函数修复了这个问题:
function localize_backend( $locale ) {
// set langauge if user is in admin area
if( defined( \'WP_ADMIN\' ) || ( isset( $_REQUEST[\'pwd\'] ) && isset( $_REQUEST[\'kau-boys_backend_localization_language\'] ) ) ){
// ajax call from frontend
if ( \'admin-ajax.php\' == basename( $_SERVER[ \'SCRIPT_FILENAME\' ] ) && strpos( admin_url(), $_SERVER[ \'HTTP_REFERER\' ] ) === false ) {
// if lang request param was set, change locale for AJAX response, else, don\'t overwrite locale (use frontend locale)
if ( ! empty( $_REQUEST[ \'lang\' ] ) ) {
$locale = $_REQUEST[ \'lang\' ];
}
} else {
$locale = backend_localization_get_locale();
}
}
return $locale;
}
它将检查是否进行了AJAX调用。如果呼叫来自前端,它会检查lang
请求参数。如果能找到,那就是$locale
到该值。否则,它不会将区域设置更改为后端设置,因此它应该是在wp-config.php
文件请更新到插件的2.1版本,然后再次检查。
再次感谢@Rarst和@cybnet的提示。
您的站点中有不同的语言,虽然您的前端不是多语言的,但您在前端提供一种语言,在后端提供另一种语言。Wordpress中的Ajax是在“管理区域”(wp admin/admin Ajax.php)中处理的,因此Ajax请求的响应将使用管理区域中定义的语言。你的情况是“英语”。
我不知道插件“后端本地化”是如何工作的,但其他影响该语言的插件需要在ajax请求中提供一个语言参数。例如,要使qTranslate在ajax中工作,必须将lang参数添加到javascript中的ajaxurl值中,例如ajaxurl+\'?lang=es\'
. 您需要联系“后端本地化”的开发人员
另一种可能的修复方法是添加:
$is_ajax = true;
在line 11 在的替代版本中review-order.php
, 应复制自:wp-contents/plugins/woocommerce/template/checkout/
收件人:wp-contents/themes/{YOUR_THEME}/woocommerce/checkout/
我通过一些AJAX魔术发送HTML内容,虽然一切都如我所愿工作,但输出的内容与页面中的内容大致相同:\"http://permalink.comtitle\" 这就好像所有html标记(<;a>和<;p>)都被丢弃了一样。下面是函数中的PHP部分。php,我给$html赋值:if ($query->have_posts()){ while ($query->have_posts()){ $query-&g